List wallet transactions
curl --request GET \
--url https://api.cartevo.co/api/v1/wallet/transactions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cartevo.co/api/v1/wallet/transactions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cartevo.co/api/v1/wallet/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cartevo.co/api/v1/wallet/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.cartevo.co/api/v1/wallet/transactions"
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))
}HttpResponse<String> response = Unirest.get("https://api.cartevo.co/api/v1/wallet/transactions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cartevo.co/api/v1/wallet/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"statusCode": 200,
"message": "Data retrieved successfully",
"data": [
{
"id": "7d1cdfa3-9904-4a17-bce5-092554170c0e",
"amount": 5000,
"amount_with_fee": 5100,
"fee_amount": 100,
"net_amount": 5000,
"currency": "XAF",
"status": "PENDING",
"type": "FUND",
"category": "WALLET",
"operator": "mtn",
"phone_number": "650695112",
"reference": "<string>",
"order_id": "<string>",
"wallet_balance_before": 10000,
"wallet_balance_after": 15000,
"created_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 15,
"totalPages": 1
}
}Wallets
List All Wallet Transactions
Query wallet transactions across every wallet your company owns, with optional filters by transaction ID, wallet, customer, or status.
GET
/
wallet
/
transactions
List wallet transactions
curl --request GET \
--url https://api.cartevo.co/api/v1/wallet/transactions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cartevo.co/api/v1/wallet/transactions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cartevo.co/api/v1/wallet/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cartevo.co/api/v1/wallet/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.cartevo.co/api/v1/wallet/transactions"
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))
}HttpResponse<String> response = Unirest.get("https://api.cartevo.co/api/v1/wallet/transactions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cartevo.co/api/v1/wallet/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"statusCode": 200,
"message": "Data retrieved successfully",
"data": [
{
"id": "7d1cdfa3-9904-4a17-bce5-092554170c0e",
"amount": 5000,
"amount_with_fee": 5100,
"fee_amount": 100,
"net_amount": 5000,
"currency": "XAF",
"status": "PENDING",
"type": "FUND",
"category": "WALLET",
"operator": "mtn",
"phone_number": "650695112",
"reference": "<string>",
"order_id": "<string>",
"wallet_balance_before": 10000,
"wallet_balance_after": 15000,
"created_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 15,
"totalPages": 1
}
}Overview
GET /wallet/transactions returns wallet transactions across every wallet your company owns, with optional filtering. For a per-wallet view, use GET /wallet/transactions/wallet/{walletId} instead.
When to use it
- Render a global activity feed in your dashboard.
- Find a transaction by its ID without knowing which wallet it belongs to.
- Reconcile total wallet activity over a date range.
Prerequisites
- Authenticated as a company user.
Request
Headers
| Name | Required | Description |
|---|---|---|
Authorization | Yes | Bearer <access_token> |
Query parameters
| Name | Type | Default | Description |
|---|---|---|---|
transactionId | string | — | Filter to a single transaction by its UUID. Useful for support lookups. |
walletId | string | — | Filter to one wallet’s transactions. |
customerId | string | — | Filter to transactions tied to a specific customer (where applicable). |
status | string | — | One of PENDING, PROCESSING, SUCCESS, FAILED. |
limit | integer | 50 | Items per page. |
offset | integer | 0 | 0-indexed offset (number of items to skip). This endpoint uses offset-based pagination, not page. |
Pagination quirk: unlike most other list endpoints, this one useslimit/offset(notpage/limit). We are aligning this in a future release; meanwhile, computeoffset = (page - 1) * limitto translate.
Response
200 — Success
{
"success": true,
"statusCode": 200,
"message": "50 items retrieved successfully",
"data": [
{
"id": "txn_5b7c9d2e4f6a8b1c3d5e7f9a",
"wallet_id": "w1a2b3c4-d5e6-7890-abcd-ef1234567890",
"amount": 5000,
"currency": "XAF",
"category": "WALLET",
"type": "FUND",
"status": "SUCCESS",
"operator": "mtn",
"phone_number": "237670000000",
"wallet_balance_before": 120000,
"wallet_balance_after": 125000,
"created_at": "2026-05-09T10:15:00.000Z",
"completed_at": "2026-05-09T10:15:42.000Z"
}
],
"meta": {
"limit": 50,
"offset": 0,
"total": 1247
}
}
GET /wallet/transactions/wallet/{walletId} — see that page for the full field reference.
Error responses
| Status | Trigger |
|---|---|
400 | Invalid status or customerId value. |
Code examples
cURL
# Page 2 with limit 50: offset = (2 - 1) * 50 = 50
curl -G https://api.cartevo.co/api/v1/wallet/transactions \
-H "Authorization: Bearer $TOKEN" \
--data-urlencode "limit=50" \
--data-urlencode "offset=50" \
--data-urlencode "status=SUCCESS"
Related
GET /wallet/transactions/wallet/{walletId}— per-wallet view.GET /wallet/transactions/{id}— single transaction detail.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Filter by a specific transaction ID.
Filter by wallet ID.
Filter by customer ID.
Filter by transaction status (e.g. SUCCESS, PENDING, FAILED).
Maximum number of records to return.
Number of records to skip.