List your wallet's ledger
curl --request GET \
--url https://{host}/v1/wallet/transfers \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/v1/wallet/transfers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/v1/wallet/transfers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{host}/v1/wallet/transfers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"object": "list",
"has_more": true,
"next_cursor": "d3RyXzQ",
"data": [
{
"object": "wallet_transfer",
"id": "wtr_5",
"type": "post",
"amount_kobo": 5000000,
"available_change_kobo": 0,
"allocation": "alc_3k7qmz2w7xv4tn6pb6cd",
"account": "1000000001",
"bank_reference": null,
"created_at": "2026-09-25T06:20:11Z"
},
{
"object": "wallet_transfer",
"id": "wtr_4",
"type": "reserve",
"amount_kobo": 5000000,
"available_change_kobo": -5000000,
"allocation": "alc_3k7qmz2w7xv4tn6pb6cd",
"account": null,
"bank_reference": null,
"created_at": "2026-09-25T06:20:11Z"
}
]
}{
"error": {
"type": "invalid_request_error",
"code": "invalid_request",
"message": "The request could not be read.",
"doc_url": "https://docs.matambaintelligence.com/errors#invalid_request"
}
}{
"error": {
"type": "authentication_error",
"code": "unauthorized",
"message": "Invalid credentials.",
"doc_url": "https://docs.matambaintelligence.com/errors#unauthorized"
}
}{
"error": {
"type": "permission_error",
"code": "insufficient_scope",
"message": "This API key does not have the scope this request requires. Nothing was done.",
"doc_url": "https://docs.matambaintelligence.com/errors#insufficient_scope"
}
}{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Too many requests. Nothing was done. Send the same request again after the Retry-After interval.",
"doc_url": "https://docs.matambaintelligence.com/errors#rate_limited"
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "The gateway encountered an internal error. Send the same request again, exactly as you sent it.",
"doc_url": "https://docs.matambaintelligence.com/errors#internal_error"
}
}{
"error": {
"type": "api_error",
"code": "service_unavailable",
"message": "The gateway is temporarily unable to process this request. Send the same request again, with the same Idempotency-Key if it has one.",
"doc_url": "https://docs.matambaintelligence.com/errors#service_unavailable"
}
}List your wallet's ledger
Returns every entry in your wallet’s ledger, newest first: credits from your payments, and the reserve, booking or return of each allocation. Entries are never changed or removed, so a page never shifts.
GET
/
v1
/
wallet
/
transfers
List your wallet's ledger
curl --request GET \
--url https://{host}/v1/wallet/transfers \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/v1/wallet/transfers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/v1/wallet/transfers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{host}/v1/wallet/transfers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"object": "list",
"has_more": true,
"next_cursor": "d3RyXzQ",
"data": [
{
"object": "wallet_transfer",
"id": "wtr_5",
"type": "post",
"amount_kobo": 5000000,
"available_change_kobo": 0,
"allocation": "alc_3k7qmz2w7xv4tn6pb6cd",
"account": "1000000001",
"bank_reference": null,
"created_at": "2026-09-25T06:20:11Z"
},
{
"object": "wallet_transfer",
"id": "wtr_4",
"type": "reserve",
"amount_kobo": 5000000,
"available_change_kobo": -5000000,
"allocation": "alc_3k7qmz2w7xv4tn6pb6cd",
"account": null,
"bank_reference": null,
"created_at": "2026-09-25T06:20:11Z"
}
]
}{
"error": {
"type": "invalid_request_error",
"code": "invalid_request",
"message": "The request could not be read.",
"doc_url": "https://docs.matambaintelligence.com/errors#invalid_request"
}
}{
"error": {
"type": "authentication_error",
"code": "unauthorized",
"message": "Invalid credentials.",
"doc_url": "https://docs.matambaintelligence.com/errors#unauthorized"
}
}{
"error": {
"type": "permission_error",
"code": "insufficient_scope",
"message": "This API key does not have the scope this request requires. Nothing was done.",
"doc_url": "https://docs.matambaintelligence.com/errors#insufficient_scope"
}
}{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Too many requests. Nothing was done. Send the same request again after the Retry-After interval.",
"doc_url": "https://docs.matambaintelligence.com/errors#rate_limited"
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "The gateway encountered an internal error. Send the same request again, exactly as you sent it.",
"doc_url": "https://docs.matambaintelligence.com/errors#internal_error"
}
}{
"error": {
"type": "api_error",
"code": "service_unavailable",
"message": "The gateway is temporarily unable to process this request. Send the same request again, with the same Idempotency-Key if it has one.",
"doc_url": "https://docs.matambaintelligence.com/errors#service_unavailable"
}
}Authorizations
Authorization: Bearer <key>. Sandbox keys start with mgw_test_ and live keys start with mgw_live_. Each key works only in its own environment, and a live key works only from the IP addresses or ranges registered for it.
Query Parameters
The number of items to return.
Required range:
1 <= x <= 100The next_cursor from the previous page, unchanged.
Response
A page of your wallet's ledger, newest first.