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

# Create bank ramp-on

> Deposit fiat currency to a virtual wallet via bank transfer.

Creates and executes a bank ramp-on transaction to deposit fiat currency into a crypto wallet. The response contains the bank details and reference required to complete the deposit. Requires an API key with access level 2 or higher.

## Body

<ParamField body="wallet_id" type="string" required>
  Virtual wallet identifier.
</ParamField>

<ParamField body="amount" type="number" required>
  Amount to deposit in fiat currency.
</ParamField>

<ParamField body="source_currency" type="string" required>
  Source fiat currency. One of `USD`, `EUR`, `MXN`, `BRL`, `GBP`, `COP`.
</ParamField>

<ParamField body="payment_rail" type="string">
  Payment rail. Required when `source_currency` is `COP`; ignored otherwise. One of `co_bank_transfer`, `bre_b`.
</ParamField>

<ParamField body="redirect_url" type="string">
  URL to redirect the user to after the PSE flow completes. Required when `source_currency` is `COP` and `payment_rail` is `co_bank_transfer`; ignored otherwise.
</ParamField>

## Response

<ResponseField name="id" type="string">
  Unique ramp-on operation identifier.
</ResponseField>

<ResponseField name="state" type="string">
  Current state of the operation.
</ResponseField>

<ResponseField name="amount" type="number">
  Amount to be deposited.
</ResponseField>

<ResponseField name="currency" type="string">
  Currency for the deposit. One of `USD`, `EUR`, `MXN`, `BRL`, `GBP`, `COP`.
</ResponseField>

<ResponseField name="payment_rail" type="string">
  Payment rail method. One of `ACH`, `WIRE`, `SEPA`, `SPEI`, `PIX`, `FASTER_PAYMENTS`, `CO_BANK_TRANSFER`, `BRE_B`.
</ResponseField>

<ResponseField name="deposit_message" type="string">
  Message/reference to include in the deposit.
</ResponseField>

<ResponseField name="bank_number" type="string">
  Bank account number.
</ResponseField>

<ResponseField name="bank_code" type="string">
  Bank code or routing number.
</ResponseField>

<ResponseField name="bank_name" type="string">
  Bank name.
</ResponseField>

<ResponseField name="bank_address" type="string">
  Bank address.
</ResponseField>

<ResponseField name="bank_beneficiary_name" type="string">
  Beneficiary name.
</ResponseField>

<ResponseField name="bank_beneficiary_address" type="string">
  Beneficiary address.
</ResponseField>

<ResponseField name="br_code" type="string">
  BR code for PIX payments (Brazil only).
</ResponseField>

<ResponseField name="qr_code" type="string">
  Base64-encoded QR code image for the deposit.
</ResponseField>

<ResponseField name="start_url" type="string">
  PSE checkout URL. Only present when `payment_rail` is `CO_BANK_TRANSFER`. Redirect the user here to authorize the payment with their bank.
</ResponseField>

<ResponseField name="redirect_url" type="string">
  Echo of the `redirect_url` sent in the request. Only present when `payment_rail` is `CO_BANK_TRANSFER`.
</ResponseField>

<ResponseField name="bre_b_key" type="string">
  Destination Bre-B key to display to the user. Only present when `payment_rail` is `BRE_B`.
</ResponseField>

<RequestExample>
  ```bash cURL (USD) theme={null}
  curl -X POST "https://api.cryptomate.me/virtual-wallets/bank-ramps/ramp-on" \
    -H "x-api-key: $CRYPTOMATE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "wallet_id": "vw_a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
      "amount": 1000.00,
      "source_currency": "USD"
    }'
  ```

  ```bash cURL (COP / PSE) theme={null}
  curl -X POST "https://api.cryptomate.me/virtual-wallets/bank-ramps/ramp-on" \
    -H "x-api-key: $CRYPTOMATE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "wallet_id": "vw_a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
      "amount": 100000,
      "source_currency": "COP",
      "payment_rail": "co_bank_transfer",
      "redirect_url": "https://example.com/ramp-callback"
    }'
  ```

  ```bash cURL (COP / Bre-B) theme={null}
  curl -X POST "https://api.cryptomate.me/virtual-wallets/bank-ramps/ramp-on" \
    -H "x-api-key: $CRYPTOMATE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "wallet_id": "vw_a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
      "amount": 100000,
      "source_currency": "COP",
      "payment_rail": "bre_b"
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK (USD / WIRE) theme={null}
  {
    "id": "rampon_abc123",
    "state": "pending",
    "amount": 1000.00,
    "currency": "USD",
    "payment_rail": "WIRE",
    "deposit_message": "REF123456",
    "bank_number": "123456789",
    "bank_code": "001",
    "bank_name": "Example Bank",
    "bank_address": "123 Main Street",
    "bank_beneficiary_name": "Cryptomate Technologies",
    "bank_beneficiary_address": "456 Beneficiary Ave",
    "br_code": null,
    "qr_code": null
  }
  ```

  ```json 200 OK (COP / PSE) theme={null}
  {
    "id": "rampon_pse_abc123",
    "state": "pending",
    "amount": 100000,
    "currency": "COP",
    "payment_rail": "CO_BANK_TRANSFER",
    "start_url": "https://pse-checkout.bridge.xyz/sessions/abc123",
    "redirect_url": "https://example.com/ramp-callback"
  }
  ```

  ```json 200 OK (COP / Bre-B) theme={null}
  {
    "id": "rampon_breb_abc123",
    "state": "pending",
    "amount": 100000,
    "currency": "COP",
    "payment_rail": "BRE_B",
    "bre_b_key": "1234567890123456"
  }
  ```

  ```json 400 Missing Redirect URL theme={null}
  {
    "code": "VAL",
    "message": "redirectUrl is required for CO Bank Transfer (PSE) ramp-on"
  }
  ```

  ```json 400 Invalid Payment Rail theme={null}
  {
    "code": "VAL",
    "message": "paymentRail is required for COP ramp-on (must be 'co_bank_transfer' or 'bre_b')"
  }
  ```

  ```json 404 Not Found theme={null}
  {
    "code": "NOT_FOUND",
    "message": "Wallet not found"
  }
  ```
</ResponseExample>
