Accounts and balance
Balance ledger and holds Inspect the balance ledger, drill into individual records and payouts, and see what's on hold
Kashier keeps an immutable ledger of every balance-affecting event on your account — settlements, payouts, refunds, and adjustments each post a record. Use the balance ledger to reconcile your Kashier balance against your own books, and use the holds endpoint to see why your available balance can be lower than your total balance.
Ledger vs. account activity feed
This page covers the balance ledger under /v2/balance/* — immutable balance-affecting records (settlements, payouts, adjustments) plus holds. A separate, broader account activity feed also exists — see Get account records on the Accounts and payout methods page. Don't confuse the two — they return different record shapes for different purposes.
Returns a paginated list of balance-affecting records for an account — the core ledger.
Key Description page Page number for pagination. Example: 1 limit Records per page. Example: 10 dateFrom Start date for a date-range filter. Example: 2026-01-01 dateTo End date for a date-range filter. Example: 2026-06-30
curl --location 'https://test-api.kashier.io/v2/balance/records/:accountId?page=1&limit=10' \
--header 'Authorization: YOUR_TEST_SECRET_KEY'
Try it — get balance records GET /v2/balance/records/:accountId?page=1&limit=10
Key Description Authorization The Authorization is a secret key that is used to identify the merchant. You can obtain it from Kashier's dashboard. Learn more about Authorization .
{
"data" : [
{
"accountId" : "ACC-39550-436-01" ,
"amount" : 500 ,
"originalAmount" : 500 ,
"fees" : 0 ,
"operation" : "manualAdjustment" ,
"origin" : "operations team" ,
"originReference" : "REF-12345" ,
"comment" : "Manual adjustment" ,
"valueDate" : "2026-06-18" ,
"isReflected" : true ,
"totalBalanceBefore" : 12000 ,
"totalBalanceAfter" : 12500 ,
"createdAt" : "2026-06-18T15:30:00Z"
},
{
"accountId" : "ACC-39550-436-01" ,
"amount" : 1000 ,
"originalAmount" : 1015 ,
"fees" : 15 ,
"operation" : "settlement" ,
"origin" : "settlements" ,
"originReference" : "STW-88213" ,
"comment" : "Settlement" ,
"valueDate" : "2026-06-18" ,
"isReflected" : true ,
"totalBalanceBefore" : 11000 ,
"totalBalanceAfter" : 12000 ,
"createdAt" : "2026-06-18T14:00:00Z"
}
],
"total" : 2 ,
"page" : 1 ,
"limit" : 10
}
Field Description data[].accountIdThe account the record was posted against (ACC- format). data[].amountNet amount after fees — this is what moves the balance. data[].originalAmountGross amount before fees. data[].feesFees deducted from originalAmount. data[].operationWhat generated the record. Free text; values in use include refund, settlement, payout, deduct, transfer and manualAdjustment. data[].originThe service that posted it, e.g. settlements, transfers, instant settlement. data[].originReferenceThe originating reference (TRX-, STW-, STB-, ISR-, TRS-…). Together with accountId, operation and origin this forms the idempotency key. data[].commentFree-text description of what generated the record. data[].valueDateThe date the record is value-dated against. data[].isReflectedfalse while the entry is future-dated and not yet applied to the balance.data[].totalBalanceBefore / totalBalanceAfterBalance snapshots either side of the entry. data[].createdAtWhen the record was created. totalTotal number of records matching the filter. pageCurrent page number. limitRecords per page.
Fetch the full detail of a single ledger record by its ID — use the id returned from the list above.
curl --location 'https://test-api.kashier.io/v2/balance/record-details/:recordId' \
--header 'Authorization: YOUR_TEST_SECRET_KEY'
Try it — get balance record details GET /v2/balance/record-details/:recordId
Key Description Authorization The Authorization is a secret key that is used to identify the merchant. You can obtain it from Kashier's dashboard. Learn more about Authorization .
{
"accountId" : "ACC-39550-436-01" ,
"amount" : 500 ,
"originalAmount" : 500 ,
"fees" : 0 ,
"operation" : "manualAdjustment" ,
"origin" : "operations team" ,
"originReference" : "REF-12345" ,
"comment" : "Manual adjustment" ,
"valueDate" : "2026-06-18" ,
"totalBalanceBefore" : 12000 ,
"totalBalanceAfter" : 12500 ,
"metaData" : { "fees" : 0 , "vat" : 0 },
"createdAt" : "2026-06-18T15:30:00Z"
}
Fields match the ledger list above, plus metaData, which carries the fee/VAT breakdown for the record.
Given a ledger record that represents a payout, list the underlying transactions that were bundled into it.
Key Description page Page number for pagination. Example: 1 limit Records per page. Example: 10 sortBy Field to sort by. Example: transactionDate sortOrder Sort order, asc or desc. Example: desc status Filter transactions by status. Example: completed dateFrom Start date for a date-range filter. Example: 2026-01-01 dateTo End date for a date-range filter. Example: 2026-06-30
curl --location 'https://test-api.kashier.io/v2/balance/payout-details/:recordId?page=1&limit=10' \
--header 'Authorization: YOUR_TEST_SECRET_KEY'
Try it — get payout details GET /v2/balance/payout-details/:recordId?page=1&limit=10
Key Description Authorization The Authorization is a secret key that is used to identify the merchant. You can obtain it from Kashier's dashboard. Learn more about Authorization .
{
"recordId" : "507f1f77bcf86cd799439029" ,
"accountId" : "507f1f77bcf86cd799439012" ,
"amount" : 5000 ,
"status" : "processed" ,
"payoutDate" : "2026-06-18" ,
"transactions" : [
{
"transactionId" : "txn_001" ,
"amount" : 1000 ,
"status" : "settled" ,
"settleDate" : "2026-06-18"
}
],
"totalTransactions" : 5
}
The same underlying data is also available as a file download.
Key Description status Filter transactions by status. Example: completed dateFrom Start date for a date-range filter. Example: 2026-01-01 dateTo End date for a date-range filter. Example: 2026-06-30
curl --location 'https://test-api.kashier.io/v2/balance/payout-details/:recordId/export' \
--header 'Authorization: YOUR_TEST_SECRET_KEY' \
--output payout-details.xlsx
Returns holds placed on an account. Holds reduce your available balance without changing your total balance — this is why the amount you can withdraw or use can be less than your account's total balance.
Key Description page Page number for pagination. Example: 1 limit Records per page. Example: 10 status Filter by hold status: HELD, RELEASED or DEDUCTED
curl --location 'https://test-api.kashier.io/v2/hold/account/:accountId?page=1&limit=10' \
--header 'Authorization: YOUR_TEST_SECRET_KEY'
Try it — get account holds GET /v2/hold/account/:accountId?page=1&limit=10
Key Description Authorization The Authorization is a secret key that is used to identify the merchant. You can obtain it from Kashier's dashboard. Learn more about Authorization .
{
"data" : [
{
"holdId" : "HLD-39550-436-0007" ,
"accountId" : "ACC-39550-436-01" ,
"amount" : 1000 ,
"status" : "HELD" ,
"valueDate" : "2026-06-18" ,
"createdAt" : "2026-06-18T10:30:00Z"
}
],
"total" : 1 ,
"page" : 1 ,
"limit" : 10
}
Field Description data[].holdIdUnique identifier for the hold (HLD- format). data[].accountIdThe account the hold is placed against (ACC- format). data[].amountThe amount held. data[].statusHold lifecycle state: HELD, RELEASED or DEDUCTED. data[].valueDateThe date the hold is value-dated against. data[].createdAtWhen the hold was created.
Note
The status filter accepts the hold-lifecycle values HELD, RELEASED and DEDUCTED. A hold starts HELD; releasing it returns the amount to the available balance, deducting it removes the amount for good.