# Bank transfers and cash vouchers

To generate deposits for an **Alternative Payment Method** (e.g., bank transfer, cash voucher), your first step is to make a request to the OneShot endpoint with all **mandatory information**.

> For technical details of the OneShot integration please visit the API Reference<a href="https://app.gitbook.com/s/VNE8t2FopKfzgQzTjlBb/deposits-api/manage-payments/create-deposit" class="button primary" data-icon="pencil">Create deposit</a>

{% hint style="success" %}

### Payment methods

For available payment methods and its respective codes please check out our [Coverage](https://docs.pandablue.com/guides/deposits/payment-methods) section.
{% endhint %}

{% tabs %}
{% tab title="Example request" %}
This is a deposit request for a **Spei** bank transfer in :flag\_mx: Mexico.

<pre class="language-sh"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-17T13:13:15.442Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
<strong>    "invoice_id" : "1000000001",
</strong><strong>    "amount": "1000",
</strong><strong>    "country": "MX",
</strong><strong>    "currency": "MXN",
</strong><strong>    "payer": {
</strong>        "id": "11",
<strong>        "document": "CURP4321TEST",
</strong><strong>        "first_name": "Ricardo",
</strong><strong>        "last_name": "Carlos",
</strong><strong>        "email": "juanCarlos@hotmail.com"
</strong>    },
<strong>    "payment_method": "SE",
</strong>    "client_ip": "123.123.123.123",
    "back_url": "https://www.merchant.com/deposit_cancelled",
    "success_url": "https://www.merchant.com/deposit_completed",
    "error_url": "https://www.merchant.com/deposit_error",
    "notification_url": "https://www.merchant.com/pandablue/notify",
    "logo": "https://www.merchant.com/merchant-logo.png",
}'
</code></pre>

{% endtab %}

{% tab title="Example response" %}
Users have to make a bank transfer to a designated CLABE account (18-digit mexican bank account).

<pre class="language-json"><code class="lang-json">{
    "checkout_type": "ONE_SHOT",
<strong>    "redirect_url": "https://payment-stg.depositcheckout.com/v1/checkout/eyJhbGciOiJIUzM4NCJ9.eyJqdGkiOiI1NzIyODQwMyIsImlhdCI6MTc1MzM4NzA2MSwiZXhwIjoxNzU0NjgzMDYxLCJsYW5ndWFnZSI6ImVzIn0.0fxjjSUphMtOyT0hn-2Utp70MV7bbcNbJdKD7yJyR8xKq4twzs0LSTBw7zUAA2P4/MX/SE/265/31581",
</strong>    "iframe": true,
    "deposit_id": 301626485,
    "user_id": "11",
    "merchant_invoice_id": "postmanTest388400617",
    "payment_info": {
        "type": "VOUCHER",
        "payment_method": "SE",
        "payment_method_name": "Spei",
        "amount": 1000.00,
        "currency": "MXN",
        "expiration_date": "2025-07-27 19:57:40",
        "created_at": "2025-07-24 19:57:40",
<strong>        "metadata": {
</strong><strong>            "beneficiary_name": "PandaBlue S.A.",
</strong><strong>            "temporal_clabe": false,
</strong><strong>            "beneficiary_overridden": false,
</strong><strong>            "updated_clabe_flag": false,
</strong><strong>            "offline_payments_enabled": false,
</strong><strong>            "payer_name": "Ricardo Carlos",
</strong><strong>            "instructions_alert": true,
</strong><strong>            "clabe": "646180287500307711",
</strong><strong>            "legacy_view": false
</strong><strong>        }
</strong>    }
}
</code></pre>

{% endtab %}
{% endtabs %}

Once the deposit is successfully generated, the subsequent checkout process will depend on the payment method chosen and the data you provide.

There are **two** primary flows:

* Embedded checkout  (recommended)
* Redirect checkout

***

### **Embedded checkout (recommended)**

For a superior and more integrated user experience, you can build the checkout instructions directly into your site. This is ideal for payment methods that don't require leaving your page, such as displaying a reference number, QR codes or bar codes for an in-store cash payment.

* **How it works:** you will need interpret the **`metadata`** object from the API response. This object contains the necessary details (e.g., a voucher code, bank details) for you to render the next steps directly on your page.
* **Advantages:** This offers a seamless, frictionless flow that keeps the user on your website.
* **Important:** While this is the highly recommended option, its availability is **dependent on the specific payment method**. Not all methods support a fully embedded experience.

{% columns %}
{% column width="33.33333333333333%" %}

<figure><img src="https://content.gitbook.com/content/f92vedEnowdVWbjM4Cmd/blobs/kc50cFX8T940bjDUoyu3/pix%20voucher.png" alt=""><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}

<pre class="language-json"><code class="lang-json">{
  "checkout_type": "ONE_SHOT",
  "redirect_url": "https://pay-stg.checkoutogate.com/validate/W9H0knNO7iu14F2nMe1Dtv6eMKJw2yvx",
  "deposit_id": 300000025,
  "user_id": "11",
  "merchant_invoice_id": "postmanTest943044826",
  "payment_info\"": {
    "type": "BANK_TRANSFER",
    "payment_method": "IX",
    "payment_method_name": "Pix",
    "amount": 1506,
    "currency": "BRL",
    "expiration_date": "2020-06-17T07:04:16Z",
    "created_at": "2020-06-16T19:04:16Z",
<strong>    "metadata": {
</strong><strong>      "payer_document": "84932568207",
</strong><strong>      "reference": 1161706605,
</strong><strong>      "show_terms_conditions": true,
</strong><strong>      "payer_document_type": "CPF",
</strong><strong>      "qr_code": "data:image/png;base64,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",
</strong><strong>      "digitable_line": "00020126820014br.gov.bcb.pix2560pix.treeal.com/qr/v3/at/c2a771e8-da3e-4e2a-a830-99aa2517ba555204000053039865802BR5918ORBION_GAMING_LTDA6004BODO62070503***6304C69B"
</strong><strong>    }
</strong>  }
}
</code></pre>

{% endcolumn %}
{% endcolumns %}

### **Redirect Checkout**

This is the ideal flow if you prefer a integration without building a custom checkout UI. It's also the required process for payment methods that need user action on a third-party site (e.g., logging into a bank portal to authorize a transfer).

* **How it works:** Use the **`redirect_url`** returned in the API response to forward the user to the necessary page. This should be done in a new browser tab for the best experience.
* **User Experience:** The user is taken to a secure, external page (like their bank's website or a payment provider's portal) to complete the payment steps. At all times the user can decide to return to your site. Also right after the payment process ends, the user will be redirected to your site.

***

### **Hosted checkout**

{% hint style="warning" %}
Hosted flow is ***never*** recommended as a main deposit flow as it can impact directly on conversion rates.&#x20;
{% endhint %}

In the event that **not all mandatory data is sent** in the initial API call, the system will automatically trigger an intermediate flow known as the **Hosted Flow**. This ensures the payment can still be completed.

* **What happens:** The API will return the parameter  **`checkout_type`**  with value **`HOSTED`** and a  **`redirect_url`**.
* **Required action:** You must redirect the user to that URL. On our hosted page, we will collect the missing information from the user before presenting them with the final checkout instructions in the same tab.
