next_cursor back as cursor to get the next page.workspace_uid; the X-Workspace-Id header does not filter it.balance_after is your wallet balance right after the transaction. We work it out from your current balance in balance.available by going back through your transactions from newest to oldest, so the newest transaction always matches credits_remaining from GET /v1/api/billing/wallet. If a balance correction was ever made without a matching transaction, balances before that correction differ from what you had at the time by the corrected amount. Amounts are not affected. balance_after is null for pending top ups, and for a page where your balance was changing while we read it. The next page or a retry works it out again.limit, or none, while has_more is true, so keep paging until has_more is false. A cursor only works with the filters it was issued for. Free transactions, such as free inbox placement tests, are left out unless you set include_zero_amount to true. Top ups and some renewals belong to your whole team rather than a workspace, so they show workspace_uid as null and are not returned when you filter by workspace. Amounts are in USD, rounded to the cent. You can make 60 requests per minute per team.curl --location 'https://api.inboxkit.com/v1/api/billing/transactions?limit=50&cursor=q3Vx9ZkT1mExampleCursor0001&start_date=2026-01-01T00%3A00%3A00.000Z&end_date=2026-10-01T00%3A00%3A00.000Z&type=renewal%2Cpurchase&direction=debit&workspace_uid=c9a1e0f4-2b3d-4e5f-8a9b-0c1d2e3f4a5b&resource_uid=1d2e3f40-0000-4000-8000-000000000001&status=completed&include_zero_amount=false' \
--header 'Authorization: Bearer <token>'{
"error": false,
"balance": {
"available": 412.35,
"currency": "USD",
"as_of": "2026-10-14T12:00:00.000Z"
},
"data": [
{
"uid": "8f1c2b7e-0a4d-4c55-9a51-3e2d9b6f1a10",
"created_at": "2026-10-12T09:41:07.000Z",
"type": "renewal",
"product": "mailbox",
"direction": "debit",
"amount": 30,
"signed_amount": -30,
"currency": "USD",
"balance_after": 412.35,
"status": "completed",
"description": "Renewal: 10 mailboxes",
"workspace_uid": null,
"related": {
"mailbox_uids": [
"1d2e3f40-0000-4000-8000-000000000001",
"1d2e3f40-0000-4000-8000-000000000002"
],
"domain_uids": [],
"domain_names": [
"example.com"
],
"placement_test_codes": [],
"subscription_uids": [],
"order_uids": [],
"payment_uid": null
}
},
{
"uid": "3b7d9e21-5c4f-4a8b-9d6e-1f2a3b4c5d6e",
"created_at": "2026-10-11T16:20:00.000Z",
"type": "placement_test",
"product": "inbox_placement",
"direction": "debit",
"amount": 0.15,
"signed_amount": -0.15,
"currency": "USD",
"balance_after": 442.35,
"status": "completed",
"description": "Inbox placement test IPT-EXAMPLE-0001",
"workspace_uid": "c9a1e0f4-2b3d-4e5f-8a9b-0c1d2e3f4a5b",
"related": {
"mailbox_uids": [],
"domain_uids": [],
"domain_names": [],
"placement_test_codes": [
"IPT-EXAMPLE-0001"
],
"subscription_uids": [],
"order_uids": [],
"payment_uid": null
}
},
{
"uid": "6a2c4e8f-1b3d-4f5a-8c7e-9d0f1a2b3c4d",
"created_at": "2026-10-10T08:00:00.000Z",
"type": "top_up",
"product": "wallet",
"direction": "credit",
"amount": 100,
"signed_amount": 100,
"currency": "USD",
"balance_after": 442.5,
"status": "completed",
"description": "Automatic wallet top-up",
"workspace_uid": null,
"related": {
"mailbox_uids": [],
"domain_uids": [],
"domain_names": [],
"placement_test_codes": [],
"subscription_uids": [],
"order_uids": [],
"payment_uid": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b"
}
}
],
"pagination": {
"limit": 3,
"has_more": true,
"next_cursor": "q3Vx9ZkT1mExampleCursor0001"
}
}