Your account

Balance, deposit details, statement and exports. Routes are GET (except creating an export) on https://client.api.corpx.com, with the signing headers. {accountId} is the credential’s.

Balance

GET /v1/accounts/{accountId}/balance

curl -X GET "https://client.api.corpx.com/v1/accounts/$ACCOUNT_ID/balance" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Id: $TENANT_ID" \
-H "X-Request-Timestamp: $TS" \
-H "X-Content-SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" \
-H "X-Request-Signature: $SIG"
{
"accountId": "6ff57bc1-e4a9-403b-be62-42378b8aafd7",
"total": 18254.17,
"locked": 500.00,
"available": 17754.17,
"currency": "BRL",
"updatedAt": "2026-02-05T22:00:00Z"
}

available is what you can send. locked is held value (for example a MED dispute). Pass ?includeLocks=true to see each hold.

409 account_not_ready means the account has no counterpart at the settlement bank yet — it is not a zero balance. 409 account_not_entitled means the service was not enabled; retrying does not help, talk to the bank.

Bank details

GET /v1/accounts/{accountId}/bank-account returns COMPE, branch and number for TED deposits or internal transfers, without relying on a PIX key.

{
"accountId": "6ff57bc1-e4a9-403b-be62-42378b8aafd7",
"holderDocument": "62452650000125",
"holderName": "Example Company LTDA",
"bankCode": "681",
"bankIspb": "50871921",
"bankName": "MT Bank",
"branch": "0001",
"accountNumber": "8339086",
"status": "active"
}

To receive a TED, the counterparty types bank 681 (Compe), not the ISPB.

Statement

GET /v1/accounts/{accountId}/statement

The response is always a list: items, totalElements, totalPages, page, size, hasNext, hasPrevious. Pagination is zero-based (page=0 is the first page).

QueryUse
endToEndId0 or 1 PIX by E2E. Ignores filters and page
identifierEvery transaction with that reference. Ignores filters and page
startDate / endDateWindow (YYYY-MM-DD)
operationPIX, TED, BOLETO, INTERNAL_TRANSFER
orderasc or desc (default desc)
sizePage ceiling (max 500). items may be shorter

size is a ceiling, not a promise: advance with hasNext, do not assume len(items) == size.

Each item has a signed amount (negative = debit), direction (IN / OUT) and a payer/payee pair. This account’s side has name, document and bank; the counterparty has name and document — branch, account and the other side’s key usually do not appear. For the full outbound PIX payload, use GET /v1/accounts/{accountId}/pix/payments/lookup.

Advanced statement (expensive)

GET /v1/accounts/{accountId}/statement/advanced filters by PIX key, counterparty, amount range, direction and status — fields the settlement bank does not filter. Each call walks the statement page by page. It is for one-off investigation. Do not poll it. To track incoming PIX, subscribe to pix.in.completed.

Thousands of entries a day and you only want the end of it? Use order=desc with occurredAfter (RFC 3339 with offset): the scan starts from the newest and stops once it crosses the instant. Details and continuation by time in Advanced statement search.

Exports

POST /v1/accounts/{accountId}/exports queues CSV, XLSX or PDF. Response 202. Poll GET .../exports until COMPLETED and download at GET .../exports/{exportId}/download (pre-signed URL).

{
"type": "statement",
"startDate": "2026-05-01",
"endDate": "2026-05-07",
"format": "csv"
}

CSV/XLSX use the requested window in full. The last column is pixKey. Balance after each row is not included.

Daily balance

GET /v1/accounts/{accountId}/daily-balance?startDate=2026-06-04&endDate=2026-06-05 returns opening balances (total / blocked / available) and daily flows in Brasília time. Max window 30 days. Closings exist only from 2026-06-04.

Transaction timeline

Two paths:

  • GET /v1/accounts/{accountId}/transactions/timeline?endToEndId= (or identifier) — exactly one of the two
  • GET /v1/transactions/{transactionId}/timeline — by paymentId, partner id, E2E or QR txid

The timeline gathers confirmations, outbound webhooks, fees, refunds and QR lifecycle.