Transactions
2 API calls in this section.
Endpoints for retrieving wallet transaction history with pagination and filtering.
List Transactions
/wallets/transactionsList Wallet Transactions
Retrieves a paginated list of wallet transactions with full-ledger summary. data.wallet.balance is currently usable funds and data.wallet.reserved is the total held for draft deliveries. Reserving or releasing does not create a ledger transaction; capture on Execute creates the delivery-fee transaction. Currency is not returned; the frontend displays it from tenant configuration.
Requires Bearer Token authentication:
Authorization: Bearer {{access_token}}
Response Summary
data.summary.total_count— Total filtered transactions across all pages.data.summary.total_credited— Sum of all positive amounts (full filtered ledger).data.summary.total_debited— Sum of absolute negative amounts (full filtered ledger).
Stored transaction context
Each transaction also includes source: string | null and recorded_by: { id: string | null, name: string | null } | null. These values come only from saved transaction metadata (source, actor_user_id, actor_name), with empty or missing values returned as null. Historical names are not looked up or invented. Customer manual adjustment rows also include manual_transaction with saved type, reason, reference: string | null, notes: string | null, and actor: {id, name}. Reference and Notes are null for older records without those fields; non-manual rows omit this object. Existing permissions and query filters for this endpoint are unchanged. Source/Recorded By column filtering is available on GET /users/:userId/wallet/transactions using source and actor_name.
Path parameters
| Parameter | Type | Description |
|---|---|---|
walletIdRequired | string | UUID of the wallet to retrieve transactions for Example: |
Query parameters
| Parameter | Type | Description |
|---|---|---|
page | string | Page number for pagination (default: 1) Example: |
limit | string | Number of items per page (default: 20, max: 100) Example: |
type | string | Filter by transaction type: topup, transfer, payment, earning |
from_date | string | Filter from date (ISO format: 2024-01-01T00:00:00Z) |
to_date | string | Filter to date (ISO format: 2024-12-31T23:59:59Z) |
search | string | Search in description/reference fields and by exact amount when numeric |
languageOptional | string | Language code for response localization (Optional, default: en) . Example: |
Headers
| Parameter | Type | Description |
|---|---|---|
Authorization | string | Example: |
1curl --globoff --request GET "https://staging-api.ondi.io/functions/v1/wallets/transactions?page=1&limit=20&type=&from_date=&to_date=&search=&language=en" \2 --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}"Response examples
1{2 "success": true,3 "data": {4 "wallet": {5 "id": "550e8400-e29b-41d4-a716-446655440000",6 "balance": 1500.75,7 "reserved": 25.58 },9 "transactions": [10 {11 "id": "txn-550e8400-e29b-41d4-a716-446655440001",12 "type": "transfer",13 "amount": -50,14 "description": "Payment for services",15 "reference_id": "transfer-550e8400-e29b-41d4-a716-446655440002",16 "reference_type": "transfer",17 "created_at": "2024-01-02T14:30:00Z",18 "balance_snapshot": 1450.75,19 "transfer_details": {20 "transfer_id": "transfer-550e8400-e29b-41d4-a716-446655440002",21 "from_wallet_id": "550e8400-e29b-41d4-a716-446655440000",22 "to_wallet_id": "wallet-550e8400-e29b-41d4-a716-446655440003",23 "recipient_info": {24 "email": "recipient@example.com",25 "first_name": "John",26 "last_name": "Doe"27 }28 }29 },30 {31 "id": "txn-550e8400-e29b-41d4-a716-446655440004",32 "type": "topup",33 "amount": 100,34 "description": "Wallet top-up",35 "reference_id": null,36 "reference_type": null,37 "created_at": "2024-01-01T10:15:00Z",38 "balance_snapshot": 1500.7539 },40 {41 "id": "txn-550e8400-e29b-41d4-a716-446655440005",42 "type": "earning",43 "amount": 25.5,44 "description": "Delivery completion payment",45 "reference_id": "delivery-550e8400-e29b-41d4-a716-446655440006",46 "reference_type": "delivery",47 "created_at": "2023-12-30T16:45:00Z",48 "balance_snapshot": 1400.7549 }50 ],51 "summary": {52 "total_count": 45,53 "total_credited": 125.5,54 "total_debited": 5055 },56 "pagination": {57 "current_page": 1,58 "per_page": 20,59 "total_items": 45,60 "total_pages": 3,61 "has_next_page": true,62 "has_previous_page": false,63 "next_page": 2,64 "previous_page": null65 }66 }67}Export Transactions (CSV)
/wallets/transactions-export/{{user_id}}Export Wallet Transactions (CSV)
Streams a CSV export of wallet transactions for the user in the URL.
Requires Bearer Token authentication
Authorization
If you have
tenant:wallet:management, you can export any tenant user's transactionsOtherwise you can export only your own transactions (the
userIdmust match the authenticated user)
Response
Content-Type:text/csvContent-Disposition: attachment filenameX-Total-Rows: total export rowsX-Export-Tenant-Id,X-Export-Actor-User-Id,X-Export-Target-User-Id
CSV stream.
Path parameters
| Parameter | Type | Description |
|---|---|---|
user_idRequired | string | Variable used inside the request path. |
userIdRequired | string | (required) |
Query parameters
| Parameter | Type | Description |
|---|---|---|
type | string | Filter by transaction type: topup, transfer, payment, earning |
from_date | string | Filter from date (ISO format or YYYY-MM-DD) |
to_date | string | Filter to date (ISO format or YYYY-MM-DD) |
searchOptional | string | Search in description/reference fields and by exact amount when numeric (optional) |
languageOptional | string | Language code for response localization (Optional, default: en) (optional) Example: |
Headers
| Parameter | Type | Description |
|---|---|---|
Authorization | string | Example: |
Accept | string | Example: |
1curl --globoff --request GET "https://staging-api.ondi.io/functions/v1/wallets/transactions-export/${USER_ID}?type=&from_date=&to_date=&search=&language=en" \2 --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}" \3 --header "Accept: text/csv"Response examples
No saved response example. Use Try it to inspect a staging response.