Fiat Payments
Fiat payments are bank transfers into and out of a bank account. They post to the ledger and send webhooks as their status changes.
- Outgoing payments are created with
POST …/fiat_payments. If a four-eyes policy covers the amount, the payment waits inpending_approvaluntil enough users approve it. - Incoming payments appear when money arrives. A transfer that reaches a pooled bank
account without a recognised
referralarrives aspending; assign it to the right account with thelink_pendingendpoint. GET /vaults/{vault_id}/fiat_paymentslists payments across every account in a vault, for reconciliation.
Fiat payments are banking transfers. To pay out in local currency to Colombia, Mexico, China or the UAE, use Quotes & Payouts.
/accounts/{account_id}/bank_accounts/{bank_account_id}/fiat_paymentsReturns the incoming and outgoing transfers of a bank account, page by page. Filter by status.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidID of the bank account.
uuidQuery Parameters
Return only payments with this status.
Value in
- "blocked"
- "completed"
- "confirmed"
- "failed"
- "initiated"
- "pending"
- "pending_approval"
- "ready_to_release"
- "rejected"
- "sent"
Page number, starting at 1.
1 <= value1Number of results per page. Defaults to 80.
1 <= valueResponse Body
application/json
application/json
application/json
curl -X GET "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/bank_accounts/6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47/fiat_payments?page=1&per_page=80"{ "data": [ { "id": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74", "iban": "DE89370400440532013000", "description": "Invoice 2026-0142", "recipient": "Müller Bürobedarf GmbH", "amount": "1250.0", "currency": "EUR", "kind": "outgoing", "status": "sent", "card_bin": null, "last_four": null, "account_number": null, "fiat_payment_fee": 1.5, "created_at": 1772447756, "approval_progress": "1/2", "initiated_by": "maria@acme.example", "approved_by": [ "jon@acme.example" ], "rejected_by": null, "payment_rail": "sepa", "settlement_status": null, "refusal_description": null } ], "pagination": { "current_page": 1, "per_page": 80, "total_pages": 1, "total_count": 2 }}/accounts/{account_id}/bank_accounts/{bank_account_id}/fiat_paymentsSends a bank transfer from this bank account. kind tells the bank whether the beneficiary
is a Person or a Business; include swift for payments outside SEPA.
If a four-eyes policy covers the amount, the payment is created as pending_approval and
is sent once it's approved. Status changes are reported by webhook.
For local payouts in other currencies, use Quotes & Payouts.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidID of the bank account.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Beneficiary and amount of a bank transfer.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/bank_accounts/6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47/fiat_payments" \ -H "Content-Type: application/json" \ -d '{ "amount": 1250, "description": "Invoice 2026-0142", "recipient": "Müller Bürobedarf GmbH", "iban": "DE89370400440532013000", "address_line1": "Friedrichstraße 123", "city": "Berlin", "postal_code": "10117", "country": "DE", "kind": "Business" }'{ "data": { "id": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74", "iban": "DE89370400440532013000", "description": "Invoice 2026-0142", "recipient": "Müller Bürobedarf GmbH", "amount": "1250.0", "currency": "EUR", "kind": "outgoing", "status": "sent", "card_bin": null, "last_four": null, "account_number": null, "fiat_payment_fee": 1.5, "created_at": 1772447756, "approval_progress": "1/2", "initiated_by": "maria@acme.example", "approved_by": [ "jon@acme.example" ], "rejected_by": null, "payment_rail": "sepa", "settlement_status": null, "refusal_description": null }}/accounts/{account_id}/bank_accounts/{bank_account_id}/fiat_payments/{id}Returns a bank transfer and its current status.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidID of the bank account.
uuidID of the payment.
uuidResponse Body
application/json
application/json
application/json
curl -X GET "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/bank_accounts/6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47/fiat_payments/7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74"{ "data": { "id": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74", "iban": "DE89370400440532013000", "description": "Invoice 2026-0142", "recipient": "Müller Bürobedarf GmbH", "amount": "1250.0", "currency": "EUR", "kind": "outgoing", "status": "sent", "card_bin": null, "last_four": null, "account_number": null, "fiat_payment_fee": 1.5, "created_at": 1772447756, "approval_progress": "1/2", "initiated_by": "maria@acme.example", "approved_by": [ "jon@acme.example" ], "rejected_by": null, "payment_rail": "sepa", "settlement_status": null, "refusal_description": null }}/accounts/{account_id}/bank_accounts/{bank_account_id}/fiat_payments/{id}/approveApproves an outgoing payment that's waiting for four-eyes approval. Each user can approve a
payment once. When it has enough approvals it moves to ready_to_release and is sent
automatically.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidID of the bank account.
uuidID of the payment to approve.
uuidResponse Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/bank_accounts/6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47/fiat_payments/7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74/approve"{ "data": { "id": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74", "iban": "DE89370400440532013000", "description": "Invoice 2026-0142", "recipient": "Müller Bürobedarf GmbH", "amount": "1250.0", "currency": "EUR", "kind": "outgoing", "status": "sent", "card_bin": null, "last_four": null, "account_number": null, "fiat_payment_fee": 1.5, "created_at": 1772447756, "approval_progress": "1/2", "initiated_by": "maria@acme.example", "approved_by": [ "jon@acme.example" ], "rejected_by": null, "payment_rail": "sepa", "settlement_status": null, "refusal_description": null }}/accounts/{account_id}/bank_accounts/{bank_account_id}/fiat_payments/{id}/rejectRejects an outgoing payment that's waiting for four-eyes approval. It becomes rejected immediately and won't be sent. Each user can review a payment once.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidID of the bank account.
uuidID of the payment to reject.
uuidResponse Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/bank_accounts/6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47/fiat_payments/7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74/reject"{ "data": { "id": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74", "iban": "DE89370400440532013000", "description": "Invoice 2026-0142", "recipient": "Müller Bürobedarf GmbH", "amount": "1250.0", "currency": "EUR", "kind": "outgoing", "status": "sent", "card_bin": null, "last_four": null, "account_number": null, "fiat_payment_fee": 1.5, "created_at": 1772447756, "approval_progress": "1/2", "initiated_by": "maria@acme.example", "approved_by": [ "jon@acme.example" ], "rejected_by": null, "payment_rail": "sepa", "settlement_status": null, "refusal_description": null }}/accounts/{account_id}/bank_accounts/{bank_account_id}/fiat_payments/{id}/link_pendingAssigns an unmatched incoming payment to an account in the same vault. Incoming transfers
that reach a pooled bank account without a recognised referral arrive as pending. Once
you link one, it's confirmed, posted to the destination account's ledger, screened by
transaction monitoring, and reported by webhook.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account the payment currently sits under (the pooled or main account).
uuidID of the bank account.
uuidID of the pending payment.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/bank_accounts/6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47/fiat_payments/7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74/link_pending" \ -H "Content-Type: application/json" \ -d '{ "destination_account_uuid": "2b9e4f6a-1c3d-4a8b-b5e7-9f0c2d4e6a81" }'{ "data": { "id": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74", "iban": "DE89370400440532013000", "description": "Invoice 2026-0142", "recipient": "Müller Bürobedarf GmbH", "amount": "1250.0", "currency": "EUR", "kind": "outgoing", "status": "sent", "card_bin": null, "last_four": null, "account_number": null, "fiat_payment_fee": 1.5, "created_at": 1772447756, "approval_progress": "1/2", "initiated_by": "maria@acme.example", "approved_by": [ "jon@acme.example" ], "rejected_by": null, "payment_rail": "sepa", "settlement_status": null, "refusal_description": null }}/vaults/{vault_id}/fiat_paymentsReturns the incoming and outgoing transfers of every account in a vault, page by page, for reconciliation. Filter by creation time and status.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the vault. The vaults you can access are listed in the vaults claim of your token.
uuidQuery Parameters
Return payments created at or after this time (Unix seconds).
Return payments created before this time (Unix seconds).
Return only payments with this status.
Value in
- "blocked"
- "completed"
- "confirmed"
- "failed"
- "initiated"
- "pending"
- "pending_approval"
- "ready_to_release"
- "rejected"
- "sent"
Page number, starting at 1.
1 <= value1Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/vaults/3c8e1f5a-7b2d-4e9c-a6f1-0d4b8e2c7a95/fiat_payments?since=1772323200&until=1775001600&page=1"{ "data": [ { "id": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74", "iban": "DE89370400440532013000", "description": "Invoice 2026-0142", "recipient": "Müller Bürobedarf GmbH", "amount": "1250.0", "currency": "EUR", "kind": "outgoing", "status": "sent", "card_bin": null, "last_four": null, "account_number": null, "fiat_payment_fee": 1.5, "created_at": 1772447756, "approval_progress": "1/2", "initiated_by": "maria@acme.example", "approved_by": [ "jon@acme.example" ], "rejected_by": null, "payment_rail": "sepa", "settlement_status": null, "refusal_description": null } ], "pagination": { "current_page": 1, "per_page": 80, "total_pages": 1, "total_count": 2 }}