Banking API accounts

API 1.0.0

An MCP tool wraps this operation: Banking API (BaaS).

The Accounts group covers the account as a resource: validate a destination account before transferring, list accessible accounts, check balances and request statements.

POST /api/public/v1/accounts/validate
GET  /api/public/v1/accounts
GET  /api/public/v1/accounts/balances
GET  /api/public/v1/accounts/balance
POST /api/public/v1/accounts/statements
GET  /api/public/v1/accounts/statements/{request_id}

Resource rules#

Scope. The listing returns only the accounts the token authorizes; tenant_id and owner_id are never sent as parameters.

Validate first. Validate the destination account before creating a payment: the operation confirms the account exists and is eligible, and returns the holder data the service exposes.

Asynchronous statements. Generation is requested with a POST that accepts Idempotency-Key and returns a request_id; you then poll that request_id until the result is available. See safe retries.

Pagination. GET /api/public/v1/accounts and GET /api/public/v1/accounts/balances use limit and offset, and return pagination with limit, offset and total.

Operations#

List balances for accessible accounts

GET /api/public/v1/accounts/balances

Host: https://api-baas-sandbox.tilopay.com requires Authorization: Bearer <access_token>.

Returns paginated account balances (account, amounts, as_of). This endpoint checks the current balance in real time and may respond more slowly than GET /accounts. For account attributes without amounts, use GET /accounts.

Optional filters use the public account identification standard: type + value (identifier scheme + value). type is not the internal account classification.

Parameters

ParameterInTypeRequiredDescription
X-Correlation-IdheaderstringOptional client-supplied correlation id for end-to-end tracing. Echoed back as correlation_id in the response envelope. If omitted, the API generates one and still returns it.
limitqueryinteger
offsetqueryinteger
typequerystringOptional filter by account identifier scheme (e.g. IBAN). Not the internal account classification.
valuequerystringOptional filter by account identifier value (partial match supported for list endpoints).

Response 200

The request was processed successfully.

response_code: OK

FieldTypeRequiredDescription
itemsarray<object>yes
items[].accountobjectyes
items[].account.currencystring
items[].account.typestringyes
items[].account.valuestringyes
items[].amountsobjectyes
items[].amounts.availablestringyes
items[].amounts.inbound_in_transitstringyes
items[].amounts.outbound_in_transitstringyes
items[].amounts.postedstringyes
items[].as_ofstringyes
paginationobjectyes
pagination.limitintegeryes
pagination.offsetintegeryes
pagination.totalintegeryes

Error responses

HTTPresponse_codeDescription
400INVALID_REQUESTInvalid request. Check the required fields and try again.
401UNAUTHORIZEDUnauthorized. Verify your session or credentials.
403FORBIDDEN, ACCOUNT_ACCESS_DENIEDYou do not have permission to perform this action.
404NOT_FOUNDThe requested resource was not found.
429TOO_MANY_REQUESTSToo many requests. Please retry after a short delay.
500INTERNAL_ERRORAn unexpected error occurred. Please try again later.
502Dependency error
503SERVICE_UNAVAILABLEA required service is temporarily unavailable. Please try again later.

List accessible accounts without balances

GET /api/public/v1/accounts

Host: https://api-baas-sandbox.tilopay.com requires Authorization: Bearer <access_token>.

Returns paginated accessible accounts without querying current balances. Each item is account attributes only (account.type, account.value, account.currency). amounts and as_of are not included; use GET /accounts/balances or POST /accounts/balance.

Optional filters use the public account identification standard: type + value (identifier scheme + value). type is not the internal account classification.

Parameters

ParameterInTypeRequiredDescription
X-Correlation-IdheaderstringOptional client-supplied correlation id for end-to-end tracing. Echoed back as correlation_id in the response envelope. If omitted, the API generates one and still returns it.
limitqueryinteger
offsetqueryinteger
typequerystringOptional filter by account identifier scheme (e.g. IBAN). Not the internal account classification.
valuequerystringOptional filter by account identifier value (partial match supported for list endpoints).

Response 200

The request was processed successfully.

response_code: OK

FieldTypeRequiredDescription
itemsarray<object>yes
items[].accountobjectyes
items[].account.currencystring
items[].account.typestringyes
items[].account.valuestringyes
paginationobjectyes
pagination.limitintegeryes
pagination.offsetintegeryes
pagination.totalintegeryes

Error responses

HTTPresponse_codeDescription
400INVALID_REQUESTInvalid request. Check the required fields and try again.
401UNAUTHORIZEDUnauthorized. Verify your session or credentials.
403FORBIDDENYou do not have permission to perform this action.
404NOT_FOUNDThe requested resource was not found.
429TOO_MANY_REQUESTSToo many requests. Please retry after a short delay.
500INTERNAL_ERRORAn unexpected error occurred. Please try again later.
502Dependency error
503SERVICE_UNAVAILABLEA required service is temporarily unavailable. Please try again later.

Get account balance

POST /api/public/v1/accounts/balance

Host: https://api-baas-sandbox.tilopay.com requires Authorization: Bearer <access_token>.

Returns a single account snapshot with amounts and as_of. For account attributes without balances, use GET /accounts.

Parameters

ParameterInTypeRequiredDescription
X-Correlation-IdheaderstringOptional client-supplied correlation id for end-to-end tracing. Echoed back as correlation_id in the response envelope. If omitted, the API generates one and still returns it.

Request body

FieldTypeRequiredDescription
accountobjectyes
account.typestringyesAccount identifier scheme. Only IBAN is supported here. This is not the internal account classification (e.g. operational).Values: IBAN
account.valuestringyesIBAN (spaces allowed; normalized server-side)

Response 200

The request was processed successfully.

response_code: OK

FieldTypeRequiredDescription
accountobjectyes
account.currencystring
account.typestringyes
account.valuestringyes
amountsobjectyes
amounts.availablestringyes
amounts.inbound_in_transitstringyes
amounts.outbound_in_transitstringyes
amounts.postedstringyes
as_ofstringyes

Error responses

HTTPresponse_codeDescription
400INVALID_REQUESTInvalid request. Check the required fields and try again.
401UNAUTHORIZEDUnauthorized. Verify your session or credentials.
403FORBIDDEN, ACCOUNT_ACCESS_DENIEDYou do not have permission to perform this action.
404ACCOUNT_NOT_FOUNDAccount not found.
422ACCOUNT_NOT_CONFIGURED, UNPROCESSABLE_ENTITYThis account is not mapped in the system. Please contact support to configure it correctly.
429TOO_MANY_REQUESTSToo many requests. Please retry after a short delay.
500INTERNAL_ERRORAn unexpected error occurred. Please try again later.
502PROVIDER_ERRORUnable to complete the request with the payment provider. Please try again later.
503SERVICE_UNAVAILABLEA required service is temporarily unavailable. Please try again later.

Request account statement generation

POST /api/public/v1/accounts/statements

Host: https://api-baas-sandbox.tilopay.com requires Authorization: Bearer <access_token>. Accepts Idempotency-Key.

Creates an asynchronous account statement request for a date range (max 60 days). Identify the account with account.type + account.value (identifier scheme + value, e.g. IBAN). This follows the public account identification standard. account.type is not the internal account classification. Returns {request_id, status: PENDING} immediately. Poll GET /accounts/statements/{request_id} for status; when DONE, the response includes a signed download_url.

Parameters

ParameterInTypeRequiredDescription
X-Correlation-IdheaderstringOptional client-supplied correlation id for end-to-end tracing. Echoed back as correlation_id in the response envelope. If omitted, the API generates one and still returns it.
Idempotency-Keyheaderstring

Request body

FieldTypeRequiredDescription
accountobjectyes
account.typestringyesAccount identifier scheme. Only IBAN is supported here. This is not the internal account classification (e.g. operational).Values: IBAN
account.valuestringyesIBAN (spaces allowed; normalized server-side)
date_fromstring (date-time)yesRFC 3339 timestamp accepted on requests. UTC Z or a numeric offset is allowed. Optional fractional seconds are accepted and truncated to seconds.
date_tostringyesRFC 3339 (max 60 days after date_from)
notify_emailboolean

Response 200

The request was processed successfully.

response_code: OK

FieldTypeRequiredDescription
request_idstringyes
statusstringyes

Response 202

Statement request accepted.

FieldTypeRequiredDescription
request_idstring (uuid)yes
statusstringyesValues: PENDING, PROCESSING, DONE, ERROR

Error responses

HTTPresponse_codeDescription
400INVALID_REQUESTInvalid request. Check the required fields and try again.
401UNAUTHORIZEDUnauthorized. Verify your session or credentials.
403FORBIDDEN, ACCOUNT_ACCESS_DENIEDYou do not have permission to perform this action.
404NOT_FOUNDThe requested resource was not found.
409IDEMPOTENCY_CONFLICTIdempotency conflict: the same Idempotency-Key was reused with a different request body, or a previous request is still in progress.
429TOO_MANY_REQUESTSToo many requests. Please retry after a short delay.
500INTERNAL_ERRORAn unexpected error occurred. Please try again later.
502Dependency error
503SERVICE_UNAVAILABLEA required service is temporarily unavailable. Please try again later.

Get account statement request status

GET /api/public/v1/accounts/statements/{request_id}

Host: https://api-baas-sandbox.tilopay.com requires Authorization: Bearer <access_token>.

Returns request status. When DONE, includes a GCS signed download_url (48h from generation) and expires_at. When ERROR, includes a generic message without internal details. Unknown or unauthorized request_id returns 404.

Parameters

ParameterInTypeRequiredDescription
X-Correlation-IdheaderstringOptional client-supplied correlation id for end-to-end tracing. Echoed back as correlation_id in the response envelope. If omitted, the API generates one and still returns it.
request_idpathstring (uuid)yes

Response 200

The request was processed successfully.

response_code: OK

FieldTypeRequiredDescription
download_urlstring
expires_atstring
messagestring
request_idstringyes
statusstringyes

Error responses

HTTPresponse_codeDescription
401UNAUTHORIZEDUnauthorized. Verify your session or credentials.
403FORBIDDENYou do not have permission to perform this action.
404NOT_FOUNDThe requested resource was not found.
429TOO_MANY_REQUESTSToo many requests. Please retry after a short delay.
500INTERNAL_ERRORAn unexpected error occurred. Please try again later.
503SERVICE_UNAVAILABLEA required service is temporarily unavailable. Please try again later.

Last verified: 2026-09-02 · Owner: equipo-integraciones

View as raw Markdown