Skip to main content
Projects enabled for bank transfers can fund the master collateral account with a wire instead of an on-chain deposit. The money reaches Reap through the banking system, and the balance is credited once the bank has settled it. Applies to Program-Funded projects only. Talk to Reap to have it enabled on yours.

Getting the bank details

Call GET /fiat-deposits/bank-details. The response carries the beneficiary name and address, the account number, the bank name and address, the SWIFT code, and the domestic bank and branch codes.
Always quote the returned reference on the transfer. Unless your business holds a dedicated account, the one you are given is shared with other Reap customers, and the reference is the only thing that identifies the transfer as yours. A transfer without it may be delayed or returned.
The reference belongs to your business rather than to a single transfer, so it is the same every time. Send the transfer in the billing currency of your card program. That is the currency the master account is credited in. Read the bank details fresh before each transfer rather than storing them. A bank can close an account, and a transfer sent to a closed account has to be recalled. FIAT_DEPOSITS_NOT_ENABLED means the capability is off for the project; talk to Reap to have it turned on.

What happens after you send

The bank settles the transfer, and Reap credits the master account balance. You then receive a FIAT_DEPOSIT_CREATED webhook, and the balance endpoint reflects the new amount. A bank transfer carries no deposit fee. Timing depends on the rail and the sending bank. A domestic transfer usually settles the same day. An international one can take two or three business days.
Unlike a crypto deposit, a bank transfer becomes visible to you only once it is settled and credited. There is no earlier status to poll for, so a transfer you have sent but not yet seen a webhook for is still with the banks.

Reading a deposit

Look one up with GET /fiat-deposits/:id, or list them alongside your other activity through the activities endpoint with type=FIAT_DEPOSIT. Each deposit reports the transfer twice. amount and currency are what reached your balance. originalAmount and originalCurrency are what the bank recorded receiving. transactionId is the bank’s own identifier for the transfer. Use it to reconcile a deposit against a bank statement.

Testing in sandbox

Bank transfers cannot be sent end to end in sandbox, so use POST /simulation/fiat-deposits to create one. It returns the deposit it recorded, credits the balance, and fires the same webhook a real transfer would.
Sandbox serves placeholder bank details. The account is not real and no wire can reach it, so the endpoint is there to build your integration against, not to send money to. Only the details returned in production identify a live account.
Pass the amount to credit and the currency you are sending. A currency your project does not accept is rejected with SIMULATION_UNSUPPORTED_CURRENCY, listing the ones it does. A sender name is generated unless you pass one, and the reference is left off unless you pass it.