Balance Transactions
Balance transactions record how funds flow from customer payments into your available balance. Each transaction captures the lifecycle of a payment's funds: when they're recognized, when they settle and become available, and when they're included in a payout. Think of them as ledger entries that bridge the gap between a successful payment and money you can actually move—essential for reconciliation, financial reporting, and understanding your cash flow in real time.
The Balance Transaction object
Every transaction is born when a payment succeeds. It records the payment amount that cleared settlement and links back to its originating payment and order. The transaction carries timestamps for creation and availability, and gets tagged with payout information once those funds leave your balance. This structure lets you trace every dollar from customer checkout through to bank transfer.
Properties
Look up a balance transaction
Fetch the current state of a specific balance transaction. You'll typically use this after receiving a transaction ID from an order or payment response, or when reconciling your books against platform records. The lookup requires all three identifiers—transaction, payment, and order—to ensure you're retrieving the exact record you expect, even in edge cases where IDs might collide across different contexts.
Request attributes
Request
curl https://api.zebo.dev/balance_transactions/lookup \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"transaction_id": "bt_Md9cV6cRWj2W8dS5wU7fQxBb",
"payment_id": "py_Qs1sYW5nJXw4QjV8EJr0FDAs",
"order_id": "or_Jc5Tm1YkQq9n3Pb8Ls2F0Dhz"
}'
Response
{
"transaction": {
"id": "bt_Md9cV6cRWj2W8dS5wU7fQxBb",
"payment_id": "py_Qs1sYW5nJXw4QjV8EJr0FDAs",
"payout_id": null,
"order_id": "or_Jc5Tm1YkQq9n3Pb8Ls2F0Dhz",
"amount": {
"currency": "ghs",
"value": 22000
},
"created_at": "2025-04-10T12:02:45.000Z",
"available_at": "2025-04-10T12:03:17.000Z",
"paid_at": null
}
}
Page through balance transactions
Iterate through all balance transactions in your Commerce account, ordered from newest to oldest. This is your workhorse for building internal dashboards, running nightly reconciliation jobs, or exporting transaction history for accounting systems. Transactions are returned in reverse chronological order by created_at, so page 1 always shows your most recent activity. Use reasonable page sizes (10–50 for UI, 100+ for batch processing) to balance response time against number of round trips.
Request attributes
Request
curl https://api.zebo.dev/balance_transactions/page \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"page_number": 1,
"page_size": 2
}'
Response
{
"page": {
"number": 0,
"size": 2,
"transactions": [
{
"id": "bt_Za2bL9kPxV1c4Gs7Ju0DrQhn",
"payment_id": "py_mJ2nP8dLs4Rj7Xc1Bv6ThQw",
"payout_id": "po_Xr8kQ4nLs2Fv9Mh1Pc6DtGjb",
"order_id": "or_Lp9Fc4VsQm2n7Gx0Hd3WaTjy",
"amount": {
"currency": "ghs",
"value": 12200
},
"created_at": "2025-04-11T09:34:40.000Z",
"available_at": "2025-04-11T09:35:02.000Z",
"paid_at": "2025-04-18T10:00:15.000Z"
},
{
"id": "bt_Ps8wC1nDf5m9Qh2Vt6YkRgLb",
"payment_id": "py_xR4kN1sDf7Lh2Pw9Vm3CtGb",
"payout_id": null,
"order_id": "or_Qs6Xv2NaLp9Fz1Md4KgRtBhj",
"amount": {
"currency": "ghs",
"value": 8800
},
"created_at": "2025-04-10T21:17:05.000Z",
"available_at": "2025-04-10T21:18:20.000Z",
"paid_at": null
}
]
}
}