Skip to main content

Accounts, Balances & Transactions

This guide covers three related areas:

  • Balances — how much each client holds, per currency.
  • Virtual accounts — the account details shared to receive funds.
  • Transactions — the ledger of every balance change.
clientId scope

On the endpoints below, clientId always refers to the Client's ID — the entity you manage as a Program Manager:

  • As a query parameter — pass a Client's clientId to scope the results to that Client. Omit it to query across all clients you manage.
  • In response objects — the clientId field identifies which Client the record belongs to.

See Understanding Your Role for the full model.

Balances

Retrieve available balances with GET /accounts/balances. Deposits are added to the available balance once processed, including any settled conversion bought in that currency.

curl "https://api.sandbox.capay.com.au/accounts/balances?currencyCodes=AUD,USD&clientId=401f4647-8372-495f-8de0-aafb3e1eaf93" \
-H "Authorization: Bearer <token>"

Query parameters

ParameterRequiredDescription
currencyCodesNoComma-separated ISO 4217 codes, e.g. AUD,USD
clientIdNoClient's clientId — scope results to that Client; omit to query across all clients
skip / limitNoPagination (defaults 0 / 10)

Balance object

Each currency a client holds is returned as a single balance figure.

FieldTypeDescription
idstringBalance record ID
clientIdstringClient the balance belongs to
currencyCodestringISO 4217 currency code
balancenumberAvailable balance in that currency
createdTimestringISO 8601 timestamp
info

Balances are a single available figure per currency—there is no separate pending or total breakdown. Funds in flight are reflected once they settle.

Virtual accounts

A virtual account is a set of real bank account details (account number, routing information, and optionally a PayID) given to a payer so they can send funds to a client. Incoming money credited to a virtual account becomes a deposit.

List virtual accounts

curl "https://api.sandbox.capay.com.au/accounts/virtual" \
-H "Authorization: Bearer <token>"

Virtual account object

FieldTypeDescription
idstringVirtual account ID
clientIdstringThe Client this virtual account belongs to
currencyCodestring | nullISO 4217 code; null for a multi-currency account
accountNamestringAccount holder name
bankName / bankCountryCode / bankAddressBank details
bankTypeenumSWIFT or LOCAL
routingNoTypeenumRouting identifier type (e.g. BSB, IBAN, SWIFT)
accountNumber / routingNumberstringAccount and routing numbers
payIdstring | nullPayID, if assigned
statusenumACTIVE or INACTIVE
createdTimestringISO 8601 timestamp

Create a virtual account

curl -X POST "https://api.sandbox.capay.com.au/accounts/virtual" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"clientId": "401f4647-8372-495f-8de0-aafb3e1eaf93",
"currencyCode": "AUD",
"payidEmail": "collections@yourcompany.com"
}'
FieldRequiredDescription
clientIdYesClient the virtual account belongs to
currencyCodeYesCollection currency (ISO 4217)
payidEmailNoPayID email to assign at creation

Manage a virtual account

ActionEndpoint
Assign / update PayIDPATCH /accounts/virtual/{id}/payid
Disable (stop collecting)PATCH /accounts/virtual/{id}/disable
ActivatePATCH /accounts/virtual/{id}/activate
PayID setup

To use PayID, the client's domain must first be reviewed and verified by CA. Once approved, all PayIDs issued to that client's virtual accounts will be generated under that verified domain. CA currently supports email-type PayIDs only (e.g. collections@clientdomain.com). Contact your Account Manager to initiate the domain verification process.

Transactions

The transaction ledger (GET /transactions) records every movement that changes a balance—payments, deposits, conversions, fees, and internal transfers. Use it to reconcile a client's account and to trace how a balance reached its current value.

curl "https://api.sandbox.capay.com.au/transactions?clientId=401f4647-8372-495f-8de0-aafb3e1eaf93&transactionType=PAYMENT" \
-H "Authorization: Bearer <token>"

Query parameters

ParameterDescription
currencyCodeFilter by ISO 4217 currency
clientIdClient's clientId — scope results to that Client; omit to query across all clients
transactionTypeOne of the types below
transactionTimeFrom / transactionTimeToISO 8601 time range
skip / limitPagination (defaults 0 / 10)

Transaction types

TypeMeaning
PAYMENTAn outbound payment
DEPOSITAn inbound deposit
CONVERSIONA currency conversion (FX)
TRANSFERAn internal transfer between accounts
ACCOUNT FEEA fee charged to the account
DRAWDOWNA drawdown movement
TRADE CLOSE OUTA trade close-out
Deprecated

OPTION CLOSE OUT and DRAWDOWN REPAYMENT are deprecated and should not be relied upon for new integrations.

Transaction object

FieldTypeDescription
transactionTypeenumSee types above
currencyCodestringISO 4217 currency code
clientIdstringClient the transaction belongs to
amountnumberMovement amount—positive or negative
balancenumberBalance after this transaction
relatedTransactionIdstringCAPAY reference to the source record (e.g. the payment or deposit)
relatedTransactionReferenceNostringHuman-readable reference of the related record
referenceIdstring | nullYour external reference, if supplied
transactionTimestringISO 8601 time the balance was updated
Reconciliation

Use relatedTransactionId / relatedTransactionReferenceNo to jump from a ledger line back to the underlying payment or deposit that caused it. The balance field lets you verify the running balance at each step.