> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reap.global/llms.txt
> Use this file to discover all available pages before exploring further.

# Funding via Bank Transfer

> How to top up the master collateral account by wire.

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](/program-configuration/funding-models#program-funded) projects only. Talk to Reap to have it enabled on yours.

## Getting the bank details

Call [`GET /fiat-deposits/bank-details`](/api-reference/fiat-deposits/get-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.

<Warning>
  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.
</Warning>

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](/api-reference/fiat-deposit-created) webhook, and the [balance endpoint](/api-reference/accounts/get-account-balance) 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.

<Note>
  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.
</Note>

## Reading a deposit

Look one up with [`GET /fiat-deposits/:id`](/api-reference/fiat-deposits/get-fiat-deposit), or list them alongside your other activity through the [activities endpoint](/api-reference/activities/list-activities) 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`](/api-reference/simulation/simulate-a-fiat-deposit) to create one. It returns the deposit it recorded, credits the balance, and fires the same webhook a real transfer would.

<Warning>
  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.
</Warning>

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.
