Skip to main content
With Banking as a Service (BaaS), each of your users gets a fiat account in their name — for example a CVU in Argentina or a CLABE in Mexico. They fund it with a bank transfer, and you can send their fiat out to their own bank accounts. For request and response details, follow the endpoint link in each step.
Banking as a Service must be enabled for your account. If it is not, these endpoints answer 403 with code 40003 — contact the Ripio team.

Common setup

1

Create the end user and approve their KYC

A fiat account is opened in the user’s name with their KYC data, so the user needs an approved KYC first. See Identity verification (KYC).→ Create End User · Create KYC Submission
2

Create the fiat account

Send the payment_method_type (e.g. bank_transfer). The account is created asynchronously: the response comes back with status: PROCESSING, and you receive a FIAT_ACCOUNT.ENABLED webhook when it is ready, with the account details in fiat_payment_instructions (e.g. the cvu). Calling it again for the same user and payment method returns the same account.→ Create Fiat Account · Retrieve Fiat Account · BaaS Webhooks

Receive fiat deposits

1

The user transfers to their fiat account

Show the user the details from fiat_payment_instructions. Any transfer they make to that account is credited to their fiat balance.
2

Follow the deposit

You receive a FIAT_DEPOSIT.COMPLETED webhook when the deposit is credited. A deposit that exceeds the user’s limits is notified as FIAT_DEPOSIT.BLOCKED_LIMIT_EXCEEDED, and one that is returned to the sender as FIAT_DEPOSIT.CANCELLED.→ List Fiat Deposits · Retrieve Fiat Deposit
With balance in fiat, the user can buy crypto.

Send fiat withdrawals

1

Register a beneficiary fiat account

A beneficiary fiat account is the user’s external bank account, where the withdrawals go. Send the payment_method_type, the currency and the account_fields of the destination — in Argentina, alias_or_cvu_destination; in Mexico, clabe_destination. Ripio checks that the destination exists, and you receive a BENEFICIARY_FIAT_ACCOUNT.ENABLED webhook when it can be used.→ Create Beneficiary Fiat Account · List Beneficiary Fiat Accounts
2

Create the fiat withdrawal

Send the end_user_id, the beneficiary_fiat_account_id, the amount and an external_ref. The balance is debited right away and the withdrawal starts as PENDING. Retrying with the same external_ref returns the withdrawal already created.→ Create Fiat Withdrawal
3

Follow the withdrawal

You receive a FIAT_WITHDRAWAL webhook on each status change: FIAT_WITHDRAWAL.COMPLETED when the transfer is done, or FIAT_WITHDRAWAL.CANCELLED when it could not be sent — in that case the balance is returned to the user.→ Retrieve Fiat Withdrawal · List Fiat Withdrawals

Common errors

The full list is in Error handling.

Testing in sandbox

Simulate an incoming transfer with Simulate Fiat Deposit: send the payment_method_type, the amount and the user’s account identifier — the cvu from fiat_payment_instructions in Argentina, or the clabe in Mexico. The deposit then goes through the same flow as a real one, including the FIAT_DEPOSIT.COMPLETED webhook.