Skip to main content

Transactions

2 API calls in this section.

Endpoints for retrieving wallet transaction history with pagination and filtering.

List Transactions​

Billing & Subscriptions / Wallets / Transactions
GET/wallets/transactions

List 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

ParameterTypeDescription
walletIdRequiredstring

UUID of the wallet to retrieve transactions for

Example: uuid

Query parameters

ParameterTypeDescription
pagestring

Page number for pagination (default: 1)

Example: 1

limitstring

Number of items per page (default: 20, max: 100)

Example: 20

typestring

Filter by transaction type: topup, transfer, payment, earning

from_datestring

Filter from date (ISO format: 2024-01-01T00:00:00Z)

to_datestring

Filter to date (ISO format: 2024-12-31T23:59:59Z)

searchstring

Search in description/reference fields and by exact amount when numeric

languageOptionalstring

Language code for response localization (Optional, default: en) .

Example: en

Headers

ParameterTypeDescription
Authorizationstring

Example: Bearer {{access_token}}

Staging
Request
curl
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

200OK
Response body
json
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": "[email protected]",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)​

Billing & Subscriptions / Wallets / Transactions
GET/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 transactions

  • Otherwise you can export only your own transactions (the userId must match the authenticated user)

Response

  • Content-Type: text/csv

  • Content-Disposition: attachment filename

  • X-Total-Rows: total export rows

  • X-Export-Tenant-Id, X-Export-Actor-User-Id, X-Export-Target-User-Id

CSV stream.

Path parameters

ParameterTypeDescription
user_idRequiredstring

Variable used inside the request path.

userIdRequiredstring

(required)

Query parameters

ParameterTypeDescription
typestring

Filter by transaction type: topup, transfer, payment, earning

from_datestring

Filter from date (ISO format or YYYY-MM-DD)

to_datestring

Filter to date (ISO format or YYYY-MM-DD)

searchOptionalstring

Search in description/reference fields and by exact amount when numeric (optional)

languageOptionalstring

Language code for response localization (Optional, default: en) (optional)

Example: en

Headers

ParameterTypeDescription
Authorizationstring

Example: Bearer {{access_token}}

Acceptstring

Example: text/csv

Staging
Request
curl
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.