# Welcome to PandaBlue

We're excited to introduce our **newly redesigned documentation**, built to help you integrate with PandaBlue more effectively and efficiently.\
Whether you're a onboarding or a long-time merchant, this guide is your central resource for understanding how our platform works.

### How to navigate this Guide

We've structured the guide to follow a logical path from initial setup to advanced features. Based on the main sections in the navigation panel, here’s a quick overview of what you'll find:

* **Getting started**: This is your essential first stop. It covers the basics of starting your onboarding, authentication, environments, and the fundamental concepts you'll need to start making calls.
* **Deposits**: This section covers everything related to receiving payments. You'll find detailed explanations on:
  * Our payment method Coverage and available Solutions.
  * Step-by-step guides to Create deposits and understanding the payment Status flow.
  * Information on Refunding a deposit.
* **Cashouts**: Here you'll learn how to send payouts.&#x20;
  * This section includes guides on Countries validations.
  * How to Create cashouts.
  * And the Status flow for payouts.
* **Platforms Booster**: For our partners offering platform based services, this section details the
  * Onboarding process
  * and how to Manage Submerchants payments

We recommend starting with the <a href="/pages/ym38tpTXOsvSnMAmZ6nz" class="button primary">Getting started</a> section and then moving on to the product you wish to integrate first.

{% hint style="success" %}

#### &#x20;Navigation tips

Through out this site you will find a lot of <a href="/spaces/MbWhFDLCv8vhFXJO5nrL" class="button primary">Buttons</a> pointing you to useful resources!
{% endhint %}


# Getting started

### Explore our products

**Payments solutions**

<table><thead><tr><th width="168.6875" align="center" valign="middle">Solution</th><th width="556.8984375">Description</th></tr></thead><tbody><tr><td align="center" valign="middle"><strong>Deposits</strong></td><td>This is our solution to help you collect payments, with worldwide coverage and local expertise.<br>Payment methods of all varieties: credit cards, bank transfers, cash vouchers and wallets.<br>You will find different types of integrations and tools to achieve your perfect integration.<br>This technical solutions scopes all sort of deposit flows: one-type payments, subscriptions, card-on-file, and more.</td></tr><tr><td align="center" valign="middle"><strong>Cashouts</strong></td><td>With this solution you will have the capability of generating local cashouts in all our coverage.<br>Payout methods can take shake of bank transfers, cash vouchers and payouts to wallets.</td></tr><tr><td align="center" valign="middle"><strong>Platforms Booster</strong></td><td>This is the solution for clients that have a platform-alike solution and need to create transaction on behalf of Submerchant accounts, acting as technology partner for them.</td></tr></tbody></table>

{% hint style="info" %}

#### Other solutions

Besides payments processing we provide high-value API integrations to fulfill  technological and business requirements to safely operate and smoothly incorporate our solutions in your day-to-day.

* [**Know Your Customer API**](https://docs.d24.com/api-reference/know-your-customer-api/security-aspects): very useful to retrieve information about your client.
* [**Reconciliation API**](https://docs.d24.com/api-reference/reconciliation-api/security-aspects): to blend the information accessible from Merchant Panel within your internal systems.
* [**Bank Account Validation API**](https://docs.d24.com/api-reference/cashouts-api/validate-bank-accounts): validate if a bank account exists and check the correct format
  {% endhint %}

### Create a merchant account

By filling this  <a href="https://www.d24.com/contact" class="button primary" data-icon="memo-circle-check">Form</a> our Sales team will get in touch with you and guide you through our **onboarding process**.

Meanwhile, our team will create your **merchant account** in order to start your integration on a parallel track.

### Access the Merchant Panel

Once your merchant account is created, you will have access to the Merchant Panel within the Staging environment: <https://merchants-stg.d24.com/login>&#x20;

{% hint style="success" %}

#### :e-mail: Activation email

Once your application is approved, we will send an activation email to your registered address.

* From: **`merchants@d24.com`**
* Subject: **Activate your account**

Please click the **activation link** inside this email to set your password and log in for the first time.

🗓️ The email is usually sent within **one business day** of your account approval.

:question:What if I don't receive the email?

1. Check your spam/junk folder
2. Add `merchants@d24.com` to your email contacts to ensure delivery.
3. Get in touch: if you still haven't received it after 48 hours, please reach out to our commercial team.

❗️ **Important security note**: For your protection, only trust emails sent from the `merchants@d24.com` address. We will never ask for your password or financial details via email.
{% endhint %}

Follow this guide to learn our integration concepts and quickstart your integration.&#x20;

***

## Next steps

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Get your API Keys</strong></td><td><a href="/files/esqDqZp7iAfwosCOl9Lx">/files/esqDqZp7iAfwosCOl9Lx</a></td><td><a href="/pages/d4l0zreZpwI6Zi6Fy698">/pages/d4l0zreZpwI6Zi6Fy698</a></td></tr><tr><td align="center"><strong>Important configurations</strong></td><td><a href="/files/tOa5g56bQndMKWonK8SN">/files/tOa5g56bQndMKWonK8SN</a></td><td><a href="/pages/P7oMGpV6Xi7D036wjQAl">/pages/P7oMGpV6Xi7D036wjQAl</a></td></tr><tr><td align="center"><strong>Start testing</strong></td><td><a href="/files/XrLRqw9kViwOfyvSNKq8">/files/XrLRqw9kViwOfyvSNKq8</a></td><td><a href="/pages/aYIMOMJGpu8QwQgRXfcF">/pages/aYIMOMJGpu8QwQgRXfcF</a></td></tr><tr><td align="center"><strong>Go Live</strong></td><td><a href="/files/n7zXId3E9t6Svl76XSQu">/files/n7zXId3E9t6Svl76XSQu</a></td><td><a href="/pages/dqCJX57Mjf33jNTMvGGq">/pages/dqCJX57Mjf33jNTMvGGq</a></td></tr></tbody></table>


# Get your API Keys

### Environments

We will provide access to our **Staging environment** and when your integration is ready, we will grant you access to **Production environment**. \
Still, you will keep your Staging account for you to test whatever you need.

In each environment you will have your own Merchant account. Each with its own set of credentials and Merchant Panel access.

Within the Merchant Panel you will easily distinguish the environments by the page logo.

<div data-full-width="false"><figure><img src="/files/UgTaPX39RI8jsvybbFhq" alt=""><figcaption></figcaption></figure> <figure><img src="/files/DWX4GCvjNo9Ltwyn1mVP" alt=""><figcaption></figcaption></figure></div>

#### **URLs**

<table><thead><tr><th width="144.00390625">Environment</th><th width="307.25390625">URL</th></tr></thead><tbody><tr><td>Staging</td><td><code>https://api-stg.pandablue.com</code></td></tr><tr><td>Production</td><td><code>https://api.pandablue.com</code></td></tr></tbody></table>

### API Credentials

#### **Deposits**

<table><thead><tr><th width="183.30859375">Application</th><th>Name as in the Merchant Panel</th><th>API Reference</th></tr></thead><tbody><tr><td>Deposits API</td><td>API Key</td><td><code>X-Login</code></td></tr><tr><td>Deposits API</td><td>API Signature</td><td><code>Signature</code></td></tr><tr><td>Fragments SDK</td><td>API Public Key</td><td><code>publicKey</code></td></tr><tr><td>Read Only Endpoints</td><td>Read Only API Keys</td><td></td></tr></tbody></table>

#### **Cashouts**

<table><thead><tr><th width="183.30859375">Application</th><th>Name as in the Merchant Panel</th><th>API Reference</th></tr></thead><tbody><tr><td>Cashouts API</td><td>API Key</td><td><code>login</code></td></tr><tr><td>Cashouts API</td><td>API Passphrase</td><td><code>pass</code></td></tr><tr><td>Cashouts API</td><td>API Signature</td><td><code>Payload-Signature</code></td></tr><tr><td>Read Only Endpoints</td><td>Read Only API Keys</td><td></td></tr></tbody></table>

### Retrieve your credentials

You can access and manage your API Keys within the Staging and Production Merchant Panels.

After logging in, go to ***Settings*** :arrow\_right: ***API access.***

<figure><img src="/files/C0xNPN2oPwUmtgVR0sWJ" alt=""><figcaption></figcaption></figure>


# Important configurations

### &#x20;Whitelist IPs

Remember to ***include your IPs*** within the correct API's IP list, by simply entering the addresses manually.

{% hint style="success" %}
Pro-tip: you can insert an IP range if needed, like `192.168.1.0/24` and we will whitelist the whole range.
{% endhint %}

<figure><img src="/files/C0xNPN2oPwUmtgVR0sWJ" alt=""><figcaption></figcaption></figure>

### Configure default URLs

Is the section right below, you will find the default URL section. Please configure your default URLs for&#x20;

<figure><img src="/files/Vv8P3kpJtcYXzAwhdQh2" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="147.6796875">URL</th><th>Description</th></tr></thead><tbody><tr><td>Return URL</td><td>The Return URL is the address to which the user or system is redirected after completing the payment process in case of being redirected to one of checkout pages.</td></tr><tr><td>Refund URL</td><td>Whenever the status of a refund changes, we will send you an asynchronous notification to this URL.</td></tr><tr><td>Confirm URL</td><td>Whenever the status of a deposit changes, we will send you an asynchronous notification to this URL.</td></tr><tr><td>Withdrawal URL</td><td>Whenever the status of a payout changes, we will send you an asynchronous notification to this URL.</td></tr></tbody></table>

{% hint style="success" %}
Have in mind that this are default URLs and all of them can be overriden with specific URLs that can be included in the JSON request of the transaction. The default URLs will be used if no URL is declared in the API request.
{% endhint %}


# Start testing

### Steps to test a payment

1. Set up authentication headers.
2. Build the API request you want to simulate using test data.
3. Send the request to the Staging endpoint and simulate different responses.
4. Check the response and your webhook notification.
5. Get the transaction status.

### Integration checklist

Make sure to test the following points in order to ensure that your integration is ready.

{% columns %}
{% column %}

<h4 align="center">Deposits</h4>

* [x] Create deposits
* [x] Manually approve and cancel (at least) one deposit from the STG Merchant Panel
* [x] Make sure you are receiving and handling our notifications correctly in your site
* [x] Retrieve the deposit status endpoint accordingly
* [x] Use the Payment Methods endpoint to retrieve payment methods availability
  {% endcolumn %}

{% column %}

<h4 align="center">Cashouts</h4>

* [x] Create payouts
* [x] Manually complete and reject (at least) one cashout from the STG Merchant Panel
* [x] Make sure you are receiving and handling our notifications correctly in your site
* [x] Retrieve the cashout status endpoint accordingly
* [x] Use the Cashout Banks endpoint to check the local banks availability
  {% endcolumn %}
  {% endcolumns %}

#### Testing cards

When testing deposits with credit cards, you can use the following card numbers for testing to match the desired transaction outcome.

<table><thead><tr><th width="172.38411458333331">Brand</th><th width="211.3046875">Card Number</th><th>Result</th></tr></thead><tbody><tr><td>Visa</td><td>4222222222222220</td><td>Card Rejected.</td></tr><tr><td>Visa</td><td>4000000000000060</td><td>Card Expired.</td></tr><tr><td>Visa</td><td>4444444444444440</td><td>Insufficient funds.</td></tr><tr><td>Visa</td><td>4000000000000110</td><td>Card reported as stolen.</td></tr><tr><td>Visa</td><td>4000000000000040</td><td>The card issuer rejected the payment because of their anti-fraud rules.</td></tr><tr><td>Mastercard</td><td>5454545454545450</td><td>Card Rejected.</td></tr><tr><td>Mastercard</td><td>5555555555554440</td><td>Card Expired. </td></tr><tr><td>Mastercard</td><td>5105105105105100</td><td>Insufficient funds. </td></tr><tr><td>Mastercard</td><td>5451951574925480</td><td>Card reported as stolen.</td></tr><tr><td>Mastercard</td><td>5406251139676600</td><td>The card issuer rejected the payment because of their anti-fraud rules. </td></tr><tr><td>American Express</td><td>340000000000009</td><td>Card Rejected.</td></tr><tr><td>American Express</td><td>373737373737374</td><td>Card Expired. </td></tr><tr><td>American Express</td><td>370000000000002</td><td>Insufficient funds. </td></tr><tr><td>American Express</td><td>343434343434343</td><td>Card reported as stolen. </td></tr><tr><td>American Express</td><td>341111111111111</td><td>The card issuer rejected the payment because of their anti-fraud rules. </td></tr><tr><td>JCB</td><td>3530185156387080</td><td>Card Rejected. </td></tr><tr><td>JCB</td><td>3566002020360500</td><td>Card Expired. </td></tr><tr><td>JCB</td><td>3555555555555552</td><td>Insufficient funds.</td></tr><tr><td>JCB</td><td>3539189698635270</td><td>Card reported as stolen. </td></tr><tr><td>JCB</td><td>3588430314874690</td><td>The card issuer rejected the payment because of their anti-fraud rules. </td></tr></tbody></table>

### Manually approve transactions in Staging

In order to test the full flow you can manually change deposits and withdrawals statuses.

Login into the [STG Merchant Panel](https://merchants-stg.pandablue.com/login) and going to Transactions :arrow\_forward: Deposits/Withdrawals and you will be capable of updating the status from the Grid view, or by going into the transaction details!\
&#x20;\
After performing the status change of the transaction, we will be **sending the respective notification to your `notification_url` after a few minutes**.

<div><figure><img src="/files/nuVELrydS543wMy8JSrp" alt=""><figcaption></figcaption></figure> <figure><img src="/files/b1XYRl1FpPU765irjvAD" alt=""><figcaption></figcaption></figure></div>


# Go live

### Ready to go live?

When your integration is complete, click "**Request go live**" button in the STG Merchant Panel.&#x20;

<figure><img src="/files/iiG71AHzsYdYboCZj4RF" alt="" width="375"><figcaption><p>It will appear in the Homepage, within the top right corner.</p></figcaption></figure>

To ensure a seamless launch, our team will then carefully review your test transactions to confirm a correct setup. Once approved, we will promptly email the activation link for your production account.

### Configure your production account

Your account is approved and ready for its final setup. Complete the following technical steps to enable live transaction processing.

* [x] [Configure production domain URL](/getting-started/get-your-api-keys#urls)
* [x] [Retrieve production API Keys](/getting-started/get-your-api-keys#retrieve-your-credentials)
* [x] [Whitelist your production servers IPs](/getting-started/important-configurations#whitelist-ips)
* [x] [Set up default webhook URLs](/getting-started/important-configurations#configure-default-urls)


# Using LLMs with PandaBlue

Leverage LLMs for intelligent PandaBlue API integration.

To help you integrate with PandaBlue more efficiently, we have made our documentation accessible to **Large Language Models (LLMs)** and AI-powered development tools. By providing our content in machine-readable formats, you can easily build, query, and automate tasks using the PandaBlue platform.

This guide covers the resources we provide: a high-level discovery file (**`llms.txt`**), a bulk content file (**`llms-full.txt`**),  granular access to our guides in plain text **Markdown** (**`.md`**) and a powerful feature to let you **ask your favorite LLMs** effortless through specific page content.

### **The `llms-full.txt` File**

For efficient bulk ingestion, the `/llms-full.txt` file provides the entire content of our documentation consolidated into a single Markdown file. This is the most effective way to feed all of our documentation into a system at once.

PandaBlue `llms-full.txt` Location:

```
https://docs.PandaBlue.com/llms-full.txt
```

### **Markdown guides**

For direct access to specific pages, every guide in our documentation is available in a raw **Markdown (`.md`)** format. This removes all complex web formatting (HTML, CSS), making it trivial for a script or LLM to parse the text. To retrieve the Markdown source for any guide, simply append `.md` to its URL.

**Example:**

* **Standard URL:** `https://docs.pandablue.com/docs/using-llms-with-pandablue`
* **Markdown URL:** `https://docs.pandablue.com/docs/using-llms-with-pandablue.md`

### Ask your LLM

{% columns %}
{% column width="66.66666666666666%" %}
All pages within the documentation allow users to:

* copy the whole content in Markdown
* view the page in markdown format straight in the web browser
* open a conversation with your favorite LLMs with all the page content, for you to ask, troubleshoot or understand deeper!

You will find this interactive button (shown in the image) in the top right corner of the page.
{% endcolumn %}

{% column width="33.33333333333334%" %}

<figure><img src="/files/30PNeBhrNlALlRaY63QQ" alt="" width="375"><figcaption></figcaption></figure>

{% endcolumn %}
{% endcolumns %}


# Overview

Our deposits solution enable merchants to collect payments from their users all around the globe with their favorite and local payment methods.&#x20;

<figure><img src="/files/zfMTWr07ODXzvkN1PVR1" alt=""><figcaption></figcaption></figure>

### Choose the best solution for your needs

<table data-full-width="false"><thead><tr><th width="156.37109375" align="center"></th><th width="136.44921875" align="center">Server2Server</th><th width="151.70703125" align="center">Fragments (Lite)</th><th width="173.6640625" align="center">Fragments (all-in-one)</th><th width="139.89453125" align="center">OneShot</th></tr></thead><tbody><tr><td align="center"><strong>Integration effort</strong></td><td align="center">+++</td><td align="center">+++</td><td align="center">++</td><td align="center">+</td></tr><tr><td align="center"><strong>UI customization</strong></td><td align="center">Fully customizable</td><td align="center">Fully customizable</td><td align="center">Highly customizable</td><td align="center">Customize branding</td></tr><tr><td align="center"><strong>Payment flow</strong></td><td align="center">Synchronous</td><td align="center">Synchronous</td><td align="center">Asynchronous</td><td align="center">Asynchronous</td></tr><tr><td align="center"><strong>PCI Compliance</strong></td><td align="center">PCI DSS</td><td align="center">N/A</td><td align="center">N/A</td><td align="center">N/A</td></tr><tr><td align="center"><strong>Subscriptions</strong></td><td align="center">Yes</td><td align="center">Yes</td><td align="center">No</td><td align="center">Yes</td></tr><tr><td align="center"><strong>Installments</strong></td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr><tr><td align="center"><strong>Payment types</strong></td><td align="center">Credit cards</td><td align="center">Credit cards</td><td align="center">Credit cards</td><td align="center">Credit cards<br><strong>APMs</strong><mark style="color:green;"><strong>*</strong></mark></td></tr></tbody></table>

<mark style="color:green;">**\***</mark>APMs stands for Alternative Payment Methods, they are very popular in emerging markets. These can be bank transfer solutions, wallets, or even cash vouchers.

### Our solutions for collecting  deposits

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Fragments (Lite)</strong></td><td><a href="/files/MrA8kIJ0gk2eeNbkYrCV">/files/MrA8kIJ0gk2eeNbkYrCV</a></td><td><a href="/pages/TDXlFHUt60mGiPkIlLdj">/pages/TDXlFHUt60mGiPkIlLdj</a></td></tr><tr><td align="center"><strong>Fragments (all-in-one)</strong></td><td><a href="/files/adMHSetIh5np4iBtewti">/files/adMHSetIh5np4iBtewti</a></td><td><a href="/pages/9Wohm1fjxN0NLAFHRfWw">/pages/9Wohm1fjxN0NLAFHRfWw</a></td></tr><tr><td align="center"><strong>OneShot</strong></td><td><a href="/files/UzBJKF5wc1BgUGy9mYnr">/files/UzBJKF5wc1BgUGy9mYnr</a></td><td><a href="/pages/1ush0LxXjwVzd1SoscR5">/pages/1ush0LxXjwVzd1SoscR5</a></td></tr><tr><td align="center"><strong>Plugins</strong></td><td><a href="/files/0AkTr1zedpG4JinDlLtb">/files/0AkTr1zedpG4JinDlLtb</a></td><td><a href="/pages/VtlG5vErwHPWLFiSKOQu">/pages/VtlG5vErwHPWLFiSKOQu</a></td></tr><tr><td align="center">Server2Server</td><td><a href="/files/PRbMJ4YYEhkQwpCgSoJg">/files/PRbMJ4YYEhkQwpCgSoJg</a></td><td></td></tr></tbody></table>

### Payment types

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Credit cards</strong></td><td><a href="/files/WPXfLsVWEPZBGFM1XHhV">/files/WPXfLsVWEPZBGFM1XHhV</a></td></tr><tr><td align="center"><strong>Bank transfers</strong></td><td><a href="/files/Oiqm986HlmkitunQx17s">/files/Oiqm986HlmkitunQx17s</a></td></tr><tr><td align="center"><strong>Cash vouchers</strong></td><td><a href="/files/W5oajwjWoqc0LSjseBOi">/files/W5oajwjWoqc0LSjseBOi</a></td></tr></tbody></table>


# Coverage

### Explore our regional coverages

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>America</strong></td><td><a href="/pages/-M7EywIJjqpFs68bKk5l">/pages/-M7EywIJjqpFs68bKk5l</a></td><td><a href="/files/LdC9Mkg63WRTVyQ9CkrR">/files/LdC9Mkg63WRTVyQ9CkrR</a></td></tr><tr><td align="center"><strong>Africa</strong></td><td><a href="/pages/-M7EzpcNUPkNApVJ8G46">/pages/-M7EzpcNUPkNApVJ8G46</a></td><td><a href="/files/aFEDNSdervEiZ80slxIO">/files/aFEDNSdervEiZ80slxIO</a></td></tr><tr><td align="center"><strong>Asia</strong></td><td><a href="/pages/-MB7PYkuT6VUcSne0hnQ">/pages/-MB7PYkuT6VUcSne0hnQ</a></td><td><a href="/files/yMJHn4gxqjEIlcVLqlTN">/files/yMJHn4gxqjEIlcVLqlTN</a></td></tr></tbody></table>

{% hint style="success" %}
Check with your commercial representative regarding other countries and payment methods not in these lists.
{% endhint %}

### Availability

{% columns %}
{% column width="58.333333333333336%" %}
You can retrieve the payment methods your account has enabled by using the <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/jUFbvDt3tPst1DRV1jAv" class="button primary" data-icon="magnifying-glass">Get payment methods</a> endpoint.

On the Merchant Panel you can check what Payment Methods your account has enabled by going to the "Payment Methods" section on the left menu. The Payment Method availability is real time updated on the panel.&#x20;
{% endcolumn %}

{% column %}

<figure><img src="/files/KbM2scZFb1zvjhbjtVln" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% hint style="success" %}

### Can't find the payment method you are looking for?

No worries, get in touch with you commercial representative and we will enable it right away.
{% endhint %}

### Considerations

1. Notice that not every payment method is available in Staging.
2. Some methods may not be available within an iframe due to our processor's security requirements. In those cases, we will ask the customer to open the payment page on a new window.
3. The checkout sites may differ in styles between Staging and Production.

### Flows

<table><thead><tr><th width="167.2578125">Flow<select multiple><option value="964eL2vT1O6N" label="Embbeded" color="blue"></option><option value="7BlsObX7MgZ5" label="Redirect" color="blue"></option></select></th><th>Description</th></tr></thead><tbody><tr><td><span data-option="964eL2vT1O6N">Embbeded</span></td><td>In the <mark style="background-color:$success;">Embbeded</mark> flow, you will receive all the details needed to build a payment page on your own website.<br>For example, the Pix's QR Code, digitable line, expiration, amount, payment link, etc.</td></tr><tr><td><span data-option="7BlsObX7MgZ5">Redirect</span></td><td>In the <mark style="background-color:$success;">Redirect</mark> flow, we will respond you with a link you should use to redirect your customers so they can pay.</td></tr></tbody></table>


# Template country page

This is a template page, while copy/pasting please remove all that do not apply.

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th>document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>AR</code></td><td align="center"><code>ARS</code> and <code>USD</code></td><td align="center">2</td><td>DNI, CUIT, or CUIL</td><td>Between 7 to 9, or 11 digits</td><td align="center">Yes</td></tr></tbody></table>

### Card features

<table><thead><tr><th data-type="checkbox">Card-on-file</th><th width="129.93359375" data-type="checkbox">Subscriptions</th><th width="129.515625" data-type="checkbox">3DS</th><th width="130.22265625" data-type="checkbox">Installments</th><th width="205.6328125" data-type="checkbox">Authorization and Capture</th></tr></thead><tbody><tr><td>true</td><td>true</td><td>true</td><td>true</td><td>false</td></tr></tbody></table>

***

### Brands available

{% hint style="success" %}

### `payment_method` code `CC`

As the payers will be capable to input any card in the displayed checkout form ,the OneShot and Fragments all-in-one solution, we recommend using the payment method code **`CC`**  in the API requests, which is a generic code.

After the payment is attempted, merchants will be capable to know with which card the user paid.
{% endhint %}

<table><thead><tr><th width="95.140625" align="center">Logo</th><th width="160.26171875" align="center">payment_method</th><th width="188.76171875">Name</th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VI.svg" alt="" data-size="original"></td><td align="center"><code>VI</code></td><td>Visa</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VD.svg" alt="" data-size="original"></td><td align="center"><code>VD</code></td><td>Visa Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MC.svg" alt="" data-size="original"></td><td align="center"><code>MC</code></td><td>Mastercard</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MD.svg" alt="" data-size="original"></td><td align="center"><code>MD</code></td><td>Mastercard Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/AE.svg" alt="" data-size="original"></td><td align="center"><code>AE</code></td><td>American Express</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/CL.svg" alt="" data-size="original"></td><td align="center"><code>CL</code></td><td>Cabal ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/EL.svg" alt="" data-size="original"></td><td align="center"><code>EL</code></td><td>Elo</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/ELD.svg" alt="" data-size="original"></td><td align="center"><code>ELD</code></td><td>Elo Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/JC.svg" alt="" data-size="original"></td><td align="center"><code>JC</code></td><td>JCB</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/DC.svg" alt="" data-size="original"></td><td align="center"><code>DC</code></td><td>Diners Club</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/HI.svg" alt="" data-size="original"></td><td align="center"><code>HI</code></td><td>Hipercard</td></tr></tbody></table>

### Alternative Payment Methods available

<table><thead><tr><th width="95.33203125" align="center">Logo</th><th width="159.81640625" align="center">payment_method</th><th width="188.73046875">Name</th><th width="175.2578125">payment_type</th><th width="150.5234375">Flows<select multiple><option value="ytukalPghMG2" label="Embbeded" color="blue"></option><option value="2Fni2DPCUEhv" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/IX.svg" alt="" data-size="original"></td><td align="center"><code>IX</code></td><td>Pix</td><td><code>BANK_TRANSFER</code></td><td><span data-option="ytukalPghMG2">Embbeded, </span><span data-option="2Fni2DPCUEhv">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/PC.svg" alt="" data-size="original"></td><td align="center"><code>PC</code></td><td>PSE</td><td><code>BANK_TRANSFER</code></td><td><span data-option="2Fni2DPCUEhv">Redirect</span></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}

***

### User Interface tips

#### `BANK_TRANSFER`s

Skeleton spei

Skeleton codi

### `VOUCHER`s

Skeleton Oxxo

### Payment flows

#### Transferencias SPEI

<figure><img src="/files/X73h7vfofdO1q0YskY5D" alt=""><figcaption></figcaption></figure>

The user selects **SPEI** as the payment method. A **CLABE** number (bank account code) appears on the screen. The user copies it, opens their banking app, selects “transfer,” pastes the CLABE, and completes the payment. Once confirmed, the funds are sent in real time.

#### CoDi

<figure><img src="/files/EDr8QvsYX325kWXo2wtq" alt=""><figcaption></figcaption></figure>

After selecting **CoDi**, the user provides basic info, and a **QR code** appears on screen. They open their bank’s mobile app, select the CoDi scan option, upload the code, and confirm the transaction. The payment is completed in seconds.

#### `VOUCHER`s

<figure><img src="/files/UxkiGovNa02E7QM4BDMC" alt=""><figcaption></figcaption></figure>

After choosing **7-Eleven (for example)** as the payment method, the user fills in their personal info and receives a reference number. They take this number to any **7-Eleven** store, give it to the cashier, and pay in cash. The system updates the payment automatically once it’s received.

{% hint style="success" %}

#### `VOUCHER` type payment methods

Note that, even though the example provided is from 7Eleven, the flow described above applies for all the payment methods with type `VOUCHER`.

It applies for Oxxo, Bodega Aurrera, Circulo K, Walmart ... and more.

Cash vouchers are very popular in Mexico.
{% endhint %}


# America


# Argentina

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th>document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>AR</code></td><td align="center"><code>ARS</code> and <code>USD</code></td><td align="center">2</td><td>DNI or CUIL</td><td>Between 7 to 9, or 11 digits</td><td align="center">Yes</td></tr></tbody></table>

### Card features

<table><thead><tr><th data-type="checkbox">Card-on-file</th><th width="129.93359375" data-type="checkbox">Subscriptions</th><th width="129.515625" data-type="checkbox">3DS</th><th width="130.22265625" data-type="checkbox">Installments</th><th width="205.6328125" data-type="checkbox">Authorization and Capture</th></tr></thead><tbody><tr><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td></tr></tbody></table>

***

### Brands available

{% hint style="success" %}

### `payment_method` code `CC`

As the payers will be capable to input any card in the displayed checkout form ,the OneShot and Fragments all-in-one solution, we recommend using the payment method code **`CC`**  in the API requests, which is a generic code.

After the payment is attempted, merchants will be capable to know with which card the user paid.
{% endhint %}

<table><thead><tr><th width="95.140625" align="center">Logo</th><th width="160.26171875" align="center">payment_method</th><th width="188.76171875">Name</th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VI.svg" alt="" data-size="original"></td><td align="center"><code>VI</code></td><td>Visa</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VD.svg" alt="" data-size="original"></td><td align="center"><code>VD</code></td><td>Visa Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MC.svg" alt="" data-size="original"></td><td align="center"><code>MC</code></td><td>Mastercard</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MD.svg" alt="" data-size="original"></td><td align="center"><code>MD</code></td><td>Mastercard Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/AE.svg" alt="" data-size="original"></td><td align="center"><code>AE</code></td><td>American Express</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/CL.svg" alt="" data-size="original"></td><td align="center"><code>CL</code></td><td>Cabal ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/DC.svg" alt="" data-size="original"></td><td align="center"><code>DC</code></td><td>Diners Club</td></tr></tbody></table>

### Alternative Payment Methods available

<table><thead><tr><th width="95.33203125" align="center">Logo</th><th width="159.81640625" align="center">payment_method</th><th width="188.73046875">Name</th><th width="175.2578125">payment_type</th><th width="150.5234375">Allowed Flows<select multiple><option value="ytukalPghMG2" label="Embbeded" color="blue"></option><option value="2Fni2DPCUEhv" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/CVU.svg" alt="" data-size="original"></td><td align="center"><code>CVU</code></td><td>Transferencia bancaria</td><td><code>BANK_TRANSFER</code></td><td><span data-option="ytukalPghMG2">Embbeded, </span><span data-option="2Fni2DPCUEhv">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/ME.svg" alt="" data-size="original"></td><td align="center"><code>ME</code></td><td>MercadoPago</td><td><code>BANK_TRANSFER</code></td><td><span data-option="2Fni2DPCUEhv">Redirect</span></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}

***

### Payment flows

#### Transferencias bancarias

<figure><img src="/files/nN2wBWAyrEEyOiMuDTRo" alt=""><figcaption></figcaption></figure>

Upon selecting **bank transfer**, a voucher with a **CVU** (bank account number) is displayed. The user copies the CVU, opens their banking app, selects the option to pay by CVU, pastes the number, and confirms. The transaction is finalized in real time.


# Bolivia

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th>document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>BO</code></td><td align="center"><code>BOB</code> and <code>USD</code></td><td align="center">2</td><td>NIT</td><td>Numeric. Length 12</td><td align="center">Yes</td></tr></tbody></table>

### Card features

<table><thead><tr><th data-type="checkbox">Card-on-file</th><th width="129.93359375" data-type="checkbox">Subscriptions</th><th width="129.515625" data-type="checkbox">3DS</th><th width="130.22265625" data-type="checkbox">Installments</th><th width="205.6328125" data-type="checkbox">Authorization and Capture</th></tr></thead><tbody><tr><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td></tr></tbody></table>

***

### Brands available

{% hint style="success" %}

### `payment_method` code `CC`

As the payers will be capable to input any card in the displayed checkout form ,the OneShot and Fragments all-in-one solution, we recommend using the payment method code **`CC`**  in the API requests, which is a generic code.

After the payment is attempted, merchants will be capable to know with which card the user paid.
{% endhint %}

<table><thead><tr><th width="95.140625" align="center">Logo</th><th width="160.26171875" align="center">payment_method</th><th width="188.76171875">Name</th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VI.svg" alt="" data-size="original"></td><td align="center"><code>VI</code></td><td>Visa</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VD.svg" alt="" data-size="original"></td><td align="center"><code>VD</code></td><td>Visa Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MC.svg" alt="" data-size="original"></td><td align="center"><code>MC</code></td><td>Mastercard</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MD.svg" alt="" data-size="original"></td><td align="center"><code>MD</code></td><td>Mastercard Debit ​</td></tr></tbody></table>

### Alternative Payment Methods available

<table><thead><tr><th width="94.84765625" align="center">Icon</th><th width="159.64453125" align="center">payment_method</th><th width="188.62890625">Name</th><th width="177.74609375" align="center">Payment Type</th><th>Flows<select multiple><option value="kXJNiFGjQ635" label="Embbeded" color="blue"></option><option value="J3mHa8LXMWCM" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td align="center"><img src="/files/mCkdgRc5kaCFjS0zlnjK" alt=""></td><td align="center"><code>TMO</code></td><td>Tigo</td><td align="center"><code>VOUCHER</code></td><td><span data-option="J3mHa8LXMWCM">Redirect, </span><span data-option="kXJNiFGjQ635">Embbeded</span></td></tr><tr><td align="center"><div><figure><img src="/files/a0gwKgYkEydMhvlUGnaD" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>YP</code></td><td>Yape</td><td align="center"><code>VOUCHER</code></td><td><span data-option="J3mHa8LXMWCM">Redirect, </span><span data-option="kXJNiFGjQ635">Embbeded</span></td></tr><tr><td align="center"><img src="/files/q0zuwhBm7W7oxg0CyDju" alt=""></td><td align="center"><code>SMPL</code></td><td>Simple</td><td align="center"><code>VOUCHER</code></td><td><span data-option="kXJNiFGjQ635">Embbeded, </span><span data-option="J3mHa8LXMWCM">Redirect</span></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}

***


# Brazil

{% hint style="warning" %}
*Effective December 23, the payment method Boleto is no longer available due to updated Brazilian regulations set to take effect on January 1, 2025. We apologize for any inconvenience and appreciate your understanding.*
{% endhint %}

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th width="161.69921875">document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>BR</code></td><td align="center"><code>BRL</code> and <code>USD</code></td><td align="center">2</td><td>CPF</td><td><p>Numeric.</p><p>Length 11</p><p>(Validate verifier-digits)</p></td><td align="center">Yes</td></tr></tbody></table>

### Card features

<table><thead><tr><th data-type="checkbox">Card-on-file</th><th width="129.93359375" data-type="checkbox">Subscriptions</th><th width="129.515625" data-type="checkbox">3DS</th><th width="130.22265625" data-type="checkbox">Installments</th><th width="205.6328125" data-type="checkbox">Authorization and Capture</th></tr></thead><tbody><tr><td>true</td><td>true</td><td>true</td><td>true</td><td>false</td></tr></tbody></table>

***

### Multiplo cards

Some Brazilian bank cards, called "*Multiplo*" cards, can be used for both credit and debit.

#### &#x20;   Server2Server

Within our **Server2Server** integration, by default, we treat them as credit cards.\
However, you can use the **`credit_card.payment_mode`** setting to force a transaction to be **`DEBIT`** or **`CREDIT`**. This lets you give customers a choice, like using debit for a one-time payment or credit to pay in installments.

#### &#x20;   Card-on-file

For cards you have saved:

* If you don't specify the type, it will use the type you originally saved (credit or debit).
* If you use **`credit_card.payment_mode`**, it will use whatever you specify for that single transaction.

### Brands available

{% hint style="success" %}

### `payment_method` code `CC`

As the payers will be capable to input any card in the displayed checkout form ,the OneShot and Fragments all-in-one solution, we recommend using the payment method code **`CC`**  in the API requests, which is a generic code.

After the payment is attempted, merchants will be capable to know with which card the user paid.
{% endhint %}

<table><thead><tr><th width="95.140625" align="center">Logo</th><th width="160.26171875" align="center">payment_method</th><th width="188.76171875">Name</th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VI.svg" alt="" data-size="original"></td><td align="center"><code>VI</code></td><td>Visa</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VD.svg" alt="" data-size="original"></td><td align="center"><code>VD</code></td><td>Visa Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MC.svg" alt="" data-size="original"></td><td align="center"><code>MC</code></td><td>Mastercard</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MD.svg" alt="" data-size="original"></td><td align="center"><code>MD</code></td><td>Mastercard Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/AE.svg" alt="" data-size="original"></td><td align="center"><code>AE</code></td><td>American Express</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/CL.svg" alt="" data-size="original"></td><td align="center"><code>CL</code></td><td>Cabal ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/EL.svg" alt="" data-size="original"></td><td align="center"><code>EL</code></td><td>Elo</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/ELD.svg" alt="" data-size="original"></td><td align="center"><code>ELD</code></td><td>Elo Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/DC.svg" alt="" data-size="original"></td><td align="center"><code>DC</code></td><td>Diners Club</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/HI.svg" alt="" data-size="original"></td><td align="center"><code>HI</code></td><td>Hipercard</td></tr></tbody></table>

### Alternative Payment Methods available

<table><thead><tr><th width="95.11328125" align="center">Logo</th><th width="159.64453125" align="center">payment_method</th><th width="189.01171875">Name</th><th width="174.55859375" align="center">payment_type</th><th>Available for test<select multiple><option value="sVBifMnv2IJ7" label="Embbeded" color="blue"></option><option value="OyC88jhrT0iT" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td align="center"><img src="/files/-MMHRfERknM5YVc6YO0m" alt="" data-size="original"></td><td align="center"><code>IX</code></td><td>Pix</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/-M9Qqyg2VItkjp29e95z" alt="" data-size="original"></td><td align="center"><code>PP</code></td><td>PicPay</td><td align="center"><code>VOUCHER</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/-M9Qqv6i9BA24IaB-6fW" alt="" data-size="original"></td><td align="center"><code>BB</code></td><td>Banco do Brasil</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/-M9QqsRIiDAe0R8cN1RE" alt="" data-size="original"></td><td align="center"><code>CA</code></td><td>Caixa</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/-M9QqqfXoWTW47hjfAzr" alt="" data-size="original"></td><td align="center"><code>I</code></td><td>Itaú</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/-M9Qr7fvYIIRDxI9WDvw" alt="" data-size="original"></td><td align="center"><code>B</code></td><td>Bradesco</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/-M9QrAXe6OQO1Qx63kAi" alt="" data-size="original"></td><td align="center"><code>SB</code></td><td>Santander</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><div><figure><img src="/files/1esGnK76yA2VDO93YS1F" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>BZ</code></td><td>Banco Original</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><div><figure><img src="/files/QXA3zUrqzkWqDZvNnSq4" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>SF</code></td><td>Banco Safra</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/-M9Qqm0jS1RS8_B7JP4a" alt="" data-size="original"></td><td align="center"><code>UL</code></td><td>Banrisul</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/Q5UzQYcqgeiKKZNGT0ll" alt="" data-size="original"></td><td align="center"><code>NU</code></td><td>Nubank</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/GqEbQ2otRTWbJT4G0dk5" alt="" data-size="original"></td><td align="center"><code>ME</code></td><td>MercadoPago</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/kzzfgErd40hAgyBc92hC" alt="" data-size="original"></td><td align="center"><code>ICSH</code></td><td>iCash</td><td align="center"><code>VOUCHER</code></td><td><span data-option="sVBifMnv2IJ7">Embbeded, </span><span data-option="OyC88jhrT0iT">Redirect</span></td></tr><tr><td align="center"><img src="/files/p0I3SSMjAkseIEifOsgX" alt="" data-size="original"></td><td align="center">SUA</td><td>SUAPI</td><td align="center"><code>WALLET</code></td><td><span data-option="OyC88jhrT0iT">Redirect</span></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.73828125">Payment Method Name</th><th width="100.0625" align="center">document</th><th width="138.87109375" align="center">email</th><th width="132.234375" align="center">first_name</th><th align="center">last_name</th><th align="center">phone</th><th align="center">address[]</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td><td align="center"><strong><code>phone</code></strong></td><td align="center"><strong><code>address[]</code></strong></td></tr><tr><td>Boleto</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">No</td><td align="center">Yes</td></tr><tr><td>Banco do Brasil</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">No</td><td align="center">Yes</td></tr><tr><td>Itaú</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">No</td><td align="center">Yes</td></tr><tr><td>PicPay</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">No</td></tr><tr><td>All the other payment methods</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">No</td><td align="center">No</td></tr></tbody></table>

#### `address[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th>Payment Method Name</th><th width="150">Required for deposits above</th><th width="150" align="center">street</th><th width="150" align="center">city</th><th width="150" align="center">state</th><th align="center">zip_code</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td><strong>Required for deposits above</strong></td><td align="center"><strong><code>street</code></strong></td><td align="center"><strong><code>city</code></strong></td><td align="center"><strong><code>state</code></strong></td><td align="center"><strong><code>zip_code</code></strong></td></tr><tr><td>Boleto</td><td>USD 3000</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr><tr><td>Banco do Brasil</td><td>USD 200</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr><tr><td>Itaú</td><td>USD 200</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}

***

### Payment flows

#### Pix

<figure><img src="/files/hLR7fAVnEfjH2FB3w37u" alt=""><figcaption></figcaption></figure>

The user selects **Pix** and chooses the option “**Copia e Cola**.” A payment code is generated, which they copy and paste into their bank app under the Pix section. After confirming the transaction, the payment is completed instantly.


# Chile

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th>document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>CL</code></td><td align="center"><code>CLP</code> and <code>USD</code></td><td align="center">2</td><td>ID, RUN or RUT</td><td>Length 8 or 9</td><td align="center">Yes</td></tr></tbody></table>

### Card features

<table><thead><tr><th data-type="checkbox">Card-on-file</th><th width="129.93359375" data-type="checkbox">Subscriptions</th><th width="129.515625" data-type="checkbox">3DS</th><th width="130.22265625" data-type="checkbox">Installments</th><th width="205.6328125" data-type="checkbox">Authorization and Capture</th></tr></thead><tbody><tr><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td></tr></tbody></table>

***

### Brands available

{% hint style="success" %}

### `payment_method` code `CC`

As the payers will be capable to input any card in the displayed checkout form ,the OneShot and Fragments all-in-one solution, we recommend using the payment method code **`CC`**  in the API requests, which is a generic code.

After the payment is attempted, merchants will be capable to know with which card the user paid.
{% endhint %}

<table><thead><tr><th width="95.140625" align="center">Logo</th><th width="160.26171875" align="center">payment_method</th><th width="188.76171875">Name</th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VI.svg" alt="" data-size="original"></td><td align="center"><code>VI</code></td><td>Visa</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VD.svg" alt="" data-size="original"></td><td align="center"><code>VD</code></td><td>Visa Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MC.svg" alt="" data-size="original"></td><td align="center"><code>MC</code></td><td>Mastercard</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MD.svg" alt="" data-size="original"></td><td align="center"><code>MD</code></td><td>Mastercard Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/AE.svg" alt="" data-size="original"></td><td align="center"><code>AE</code></td><td>American Express</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/DC.svg" alt="" data-size="original"></td><td align="center"><code>DC</code></td><td>Diners Club</td></tr></tbody></table>

### Alternative Payment Methods available

<table><thead><tr><th width="95.48828125" align="center">Icon</th><th width="160.3984375" align="center">payment_method</th><th width="189.17578125">Name</th><th width="174.8515625" align="center">payment_type</th><th>Flows<select><option value="ybVGn2V1mDjw" label="Embbeded" color="blue"></option><option value="1a4s1sqvEudY" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td align="center"><img src="/files/-M9QsT-wBFQbN09mb0W7" alt="" data-size="original"> </td><td align="center"><code>WP</code></td><td>WebPay</td><td align="center"><code>CREDIT_CARD</code> <mark style="color:red;"><strong>*</strong></mark></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><div><figure><img src="/files/DMqe32Ef8MelGAxmyHya" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>BE</code></td><td>Banco Estado</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/BX.svg" alt=""></td><td align="center"><code>BX</code></td><td>Banco de Chile</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><div><figure><img src="/files/9RiKOyEZ9l8CNzfiZTT1" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>CI</code></td><td>Banco BCI</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><div><figure><img src="/files/cE4zN7K7SO9qr73f3yFD" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>LE</code></td><td>Banco CrediChile</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><div><figure><img src="/files/L05MXgsieEdvOVlPkGIY" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>LL</code></td><td>Banco Falabella</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><img src="/files/-M9Qs7xcaAXrUwPtBZQf" alt="" data-size="original"> </td><td align="center"><code>IA</code></td><td>Itaú</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><img src="/files/-M9Qs9fW0KZ0ydH9S8PA" alt="" data-size="original"> </td><td align="center"><code>SC</code></td><td>Banco Santander</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><img src="/files/toVYQ1b79GbPvHZ7RJbk" alt="" data-size="original"></td><td align="center"><code>ST</code></td><td>Scotiabank</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><img src="/files/7s2xDvCGNSB6LUZYXQE6" alt="" data-size="original"></td><td align="center"><code>MAC</code></td><td>Mach</td><td align="center"><code>WALLET</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><img src="/files/RgxLU7T1GXtKFcp0a2rz" alt="" data-size="original"></td><td align="center"><code>KH</code></td><td>Khipu</td><td align="center"><code>WALLET</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr><tr><td align="center"><div><figure><img src="/files/K5qWbIFFJ0EOAOcw1LOv" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>TAPP</code></td><td>Tapp</td><td align="center"><code>WALLET</code></td><td><span data-option="1a4s1sqvEudY">Redirect</span></td></tr></tbody></table>

&#x20;<mark style="color:red;">**\***</mark> Even though WebPay is a `CREDIT_CARD` type solution, it must be used with the regular <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/z3VIARIvaaLqEvndBdGt" class="button primary" data-icon="pencil">Create deposit</a> endpoint as it requires to redirect the user.

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}

***


# Canada

{% hint style="danger" %}
Please be aware that our service is currently unavailable in this Country. We are working to restore service as quickly as possible. Thank you for your patience.
{% endhint %}

## Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th width="154.734375">document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>CA</code></td><td align="center"><code>CAD</code> and <code>USD</code></td><td align="center">2</td><td>DL (Drivers Licence)</td><td><p>Numeric. Length between 6 and 9 inclusive,</p><p>Or alphanumeric between 10 and 15 inclusive</p></td><td align="center">Yes</td></tr></tbody></table>

***

### Alternative Payment Methods available

<table><thead><tr><th width="95.484375" align="center">Logo</th><th width="159.83984375" align="center">payment_method</th><th width="188.66796875">Name</th><th width="175.16796875" align="center">payment_type</th><th>Flows<select><option value="JkSHqXYQT987" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td align="center"><img src="/files/-MU9k7zm7e_IvMoNryQC" alt="" data-size="original"> </td><td align="center"><code>IF</code></td><td>Interac Etransfer</td><td align="center"><code>VOUCHER</code></td><td><span data-option="JkSHqXYQT987">Redirect</span></td></tr><tr><td align="center"><img src="/files/-MT2wAzTj_HJ7lOI079c" alt="" data-size="original"> </td><td align="center"><code>IR</code></td><td>Interac Online</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="JkSHqXYQT987">Redirect</span></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}


# Colombia

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th width="145.94140625">document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>CO</code></td><td align="center"><code>COP</code> and <code>USD</code></td><td align="center">2</td><td>NIT</td><td>Numeric. Length between 8 and 15.</td><td align="center">Yes</td></tr></tbody></table>

### Card features

<table><thead><tr><th data-type="checkbox">Card-on-file</th><th width="129.93359375" data-type="checkbox">Subscriptions</th><th width="129.515625" data-type="checkbox">3DS</th><th width="130.22265625" data-type="checkbox">Installments</th><th width="205.6328125" data-type="checkbox">Authorization and Capture</th></tr></thead><tbody><tr><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td></tr></tbody></table>

***

### Brands available

{% hint style="success" %}

### `payment_method` code `CC`

As the payers will be capable to input any card in the displayed checkout form ,the OneShot and Fragments all-in-one solution, we recommend using the payment method code **`CC`**  in the API requests, which is a generic code.

After the payment is attempted, merchants will be capable to know with which card the user paid.
{% endhint %}

<table><thead><tr><th width="95.140625" align="center">Logo</th><th width="160.26171875" align="center">payment_method</th><th width="188.76171875">Name</th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VI.svg" alt="" data-size="original"></td><td align="center"><code>VI</code></td><td>Visa</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VD.svg" alt="" data-size="original"></td><td align="center"><code>VD</code></td><td>Visa Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MC.svg" alt="" data-size="original"></td><td align="center"><code>MC</code></td><td>Mastercard</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MD.svg" alt="" data-size="original"></td><td align="center"><code>MD</code></td><td>Mastercard Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/AE.svg" alt="" data-size="original"></td><td align="center"><code>AE</code></td><td>American Express</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/CL.svg" alt="" data-size="original"></td><td align="center"><code>CL</code></td><td>Cabal ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/DC.svg" alt="" data-size="original"></td><td align="center"><code>DC</code></td><td>Diners Club</td></tr></tbody></table>

### Alternative Payment Methods available

<table><thead><tr><th width="94.6640625" align="center">Logo</th><th width="160.046875" align="center">payment_method</th><th width="189.09765625">Name</th><th width="175.171875" align="center">Payment Type</th><th>Flows<select multiple><option value="LIOcwzyGDuFo" label="Embbeded" color="blue"></option><option value="ktJwcQfbvqut" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td align="center"><img src="/files/Fa6IKG6eZuoacQUQkLnU" alt=""></td><td align="center"><code>BREB</code></td><td>BREB</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="ktJwcQfbvqut">Redirect, </span><span data-option="LIOcwzyGDuFo">Embbeded</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/ME.svg" alt="" data-size="original"></td><td align="center"><code>ME</code></td><td>MercadoPago</td><td align="center"><code>WALLET</code></td><td><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/EY.svg" alt="" data-size="original"></td><td align="center"><code>EY</code></td><td>Efecty</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/PC.svg" alt="" data-size="original"></td><td align="center"><code>PC</code></td><td>PSE</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="/files/ROIunVdHULjbdKAbHgza" alt="" data-size="original"></td><td align="center"><code>NQ</code></td><td>Nequi</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/JE.svg" alt="" data-size="original"></td><td align="center"><code>JE</code></td><td>JER</td><td align="center"><code>VOUCHER</code></td><td><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/CX.svg" alt="" data-size="original"></td><td align="center"><code>CX</code></td><td>Su Chance</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/XU.svg" alt="" data-size="original"></td><td align="center"><code>XU</code></td><td>Con Suerte</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/XC.svg" alt="" data-size="original"></td><td align="center"><code>XC</code></td><td>Coopenessa</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/DQ.svg" alt="" data-size="original"></td><td align="center"><code>DQ</code></td><td>Edeq</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/DX.svg" alt="" data-size="original"></td><td align="center"><code>DX</code></td><td>Dimonex</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/FG.svg" alt="" data-size="original"></td><td align="center"><code>FG</code></td><td>FullCarga</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MR.svg" alt="" data-size="original"></td><td align="center"><code>MR</code></td><td>Moviired</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/SR.svg" alt="" data-size="original"></td><td align="center"><code>SR</code></td><td>Su Suerte</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/SZ.svg" alt="" data-size="original"></td><td align="center"><code>SZ</code></td><td>Surti Mayorista</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/RD.svg" alt=""><img src="https://resources.directa24.com/cashin/payment_method/square/RD.svg" alt="" data-size="line"></td><td align="center"><code>RD</code></td><td>Su Red</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="/files/q9AAOLOS5ERy5Vw7hMpQ" alt="" data-size="original"></td><td align="center"><code>TRYA</code></td><td>TransFiYa</td><td align="center"><code>VOUCHER</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr><tr><td align="center"><img src="/files/ILdIU8aEY31sHCoRlc6Z" alt="" data-size="original"></td><td align="center"><code>TP</code></td><td>TPAGA</td><td align="center"><code>WALLET</code></td><td><span data-option="LIOcwzyGDuFo">Embbeded, </span><span data-option="ktJwcQfbvqut">Redirect</span></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}

***

### Payment flows

#### PSE

<figure><img src="/files/rjKxer42PN7O4IcrovN0" alt=""><figcaption></figcaption></figure>

After choosing **PSE**, the user completes a basic form and **selects their bank**<mark style="color:red;">**\***</mark> from a list. They are securely **redirected** to their online banking environment to review and authorize the payment. Once confirmed, the transaction is processed immediately.

&#x20;<mark style="color:red;">**\***</mark> Merchants can avoid the first redirection to our checkout where the user needs to select their bank. \
In order to do so, merchants should display on their checkout a dropdown/scrollable list for the users to select their bank and afterwards add the **`sub_payment_method`** field to the deposit request to use this flow.  \
Below you will find the list of banks:

<details>

<summary>PSE <code>sub_payment_method</code> bank list and codes.</summary>

<table><thead><tr><th width="225.9453125">Bank name</th><th width="203.79296875" align="center">sub_payment_method</th></tr></thead><tbody><tr><td>Rappipay</td><td align="center"><code>RPP</code></td></tr><tr><td>Bancamia</td><td align="center"><code>BMI</code></td></tr><tr><td>Banco de Bogotá</td><td align="center"><code>BDB</code></td></tr><tr><td>Banco Popular</td><td align="center"><code>BPC</code></td></tr><tr><td>Banco GNB Sudameris</td><td align="center"><code>GNB</code></td></tr><tr><td>Banco Caja Social</td><td align="center"><code>BCJ</code></td></tr><tr><td>Banco Agrario</td><td align="center"><code>AGR</code></td></tr><tr><td>Banco Davivienda</td><td align="center"><code>BDA</code></td></tr><tr><td>Bancolombia</td><td align="center"><code>BN</code></td></tr><tr><td>Banco AV Villas</td><td align="center"><code>BAV</code></td></tr><tr><td>Bancoomeva</td><td align="center"><code>BCM</code></td></tr><tr><td>Banco Finandina</td><td align="center"><code>BFB</code></td></tr><tr><td>Banco Cooperativo Coopcentral</td><td align="center"><code>BCC</code></td></tr><tr><td>Banco Santander Colombia</td><td align="center"><code>SC</code></td></tr><tr><td>Banco Serfinanza</td><td align="center"><code>BSF</code></td></tr><tr><td>BBVA Colombia</td><td align="center"><code>AV</code></td></tr><tr><td>Lulo Bank</td><td align="center"><code>BLU</code></td></tr><tr><td>Dale</td><td align="center"><code>DAL</code></td></tr><tr><td>CFA Cooperativa Financiera</td><td align="center"><code>CFA</code></td></tr><tr><td>Citibank</td><td align="center"><code>CK</code></td></tr><tr><td>Cotrafa</td><td align="center"><code>COT</code></td></tr><tr><td>Coofinep Cooperativa Financiera</td><td align="center"><code>CCF</code></td></tr><tr><td>Confiar Cooperativa Financiera</td><td align="center"><code>CON</code></td></tr><tr><td>Banco Union antes giros</td><td align="center"><code>BUG</code></td></tr><tr><td>Coltefinanciera</td><td align="center"><code>COL</code></td></tr><tr><td>Daviplata</td><td align="center"><code>DVP</code></td></tr><tr><td>Falabella</td><td align="center"><code>LL</code></td></tr><tr><td>BAN100 (formerly Banco Credifinanciera)</td><td align="center"><code>BCR</code></td></tr><tr><td>Itau</td><td align="center"><code>I</code></td></tr><tr><td>Iris</td><td align="center"><code>IRS</code></td></tr><tr><td>Movii S.A.</td><td align="center"><code>MR</code></td></tr><tr><td>Nequi</td><td align="center"><code>NQ</code></td></tr><tr><td>Banco de occidente</td><td align="center"><code>OC</code></td></tr><tr><td>Pichincha</td><td align="center"><code>IX</code></td></tr><tr><td>Scotiabank Colpatria</td><td align="center"><code>ST</code></td></tr></tbody></table>

</details>

#### Nequi

<figure><img src="/files/hG9HUdSqrHUSzOrJXFlB" alt=""><figcaption></figcaption></figure>

The user selects **Nequi**, enters required personal information, and a **QR code** is generated. They download or scan it using their Nequi app, confirm the transaction within the app, and the payment is instantly processed.

<br>


# Costa Rica

Check the list of Payment Methods available on Costa Rica

{% hint style="warning" %}
*PayPal is currently down due to operational issues. We’re working to resolve this and appreciate your patience.*
{% endhint %}

## Payment Methods

|                               Icon                              | payment\_method | Name           |                          Flow                          |  Payment Type | Available for test | Supports iFrame |
| :-------------------------------------------------------------: | :-------------: | -------------- | :----------------------------------------------------: | :-----------: | :----------------: | :-------------: |
| <img src="/files/ClucFswAslUQjI2LZg5u" alt="" data-size="line"> |      `PPL`      | PayPal         | <p><code>REDIRECT</code><br><code>ONE\_SHOT</code></p> |    VOUCHER    |         Yes        |       Yes       |
| <img src="/files/PQQriG2s97OPEjae2AIn" alt="" data-size="line"> |      `PTH`      | Punto Hey      |                       `REDIRECT`                       |    VOUCHER    |         Yes        |       Yes       |
| <img src="/files/sfK6t3nVmfVqrif4iMqw" alt="" data-size="line"> |      `BNA`      | Banco Nacional |                       `REDIRECT`                       | BANK\_DEPOSIT |         Yes        |       Yes       |

{% hint style="success" %}
Use the [Payment Methods Endpoint](broken://pages/-M7hYgDIPRyR1p3XGmws) to retrieve the Payment Methods' types, logos and more details.
{% endhint %}

### Fields required for the [OneShot Experience](broken://pages/-M7hYU7T42-pbXYXjrnh#oneshot-experience)

| Payment Method Name | country | amount | payer\[] | payment\_method |
| ------------------- | :-----: | :----: | :------: | :-------------: |
| All                 |   Yes   |   Yes  |    Yes   |       Yes       |

###

### Payer object requirements

| Payment Method Name | document | email | first\_name | last\_name |
| ------------------- | :------: | :---: | :---------: | :--------: |
| All                 |    Yes   |  Yes  |     Yes     |     Yes    |

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}


# Dominican Republic

Check the list of Payment Methods available on Dominican Republic

<br>

### Payment Methods <a href="#payment-methods" id="payment-methods"></a>

| Icon                                                                | payment\_method | Name          | Flow     | Payment Type  | Available for test | Iframe supported |
| ------------------------------------------------------------------- | --------------- | ------------- | -------- | ------------- | ------------------ | ---------------- |
| <img src="/files/r7mKprD7UavFTozkqUYW" alt="" data-size="original"> | BPRD            | Banco Popular | REDIRECT | BANK\_DEPOSIT | Yes                | Yes              |

{% hint style="success" %}
Use the [Payment Methods Endpoint](broken://pages/-M7hYgDIPRyR1p3XGmws) to retrieve the Payment Methods' types, logos and more details.
{% endhint %}

### Fields required for the [OneShot Experience](broken://pages/-M7hYU7T42-pbXYXjrnh#oneshot-experience)

| Payment Method Name | country | amount | payer\[] | payment\_method |
| ------------------- | :-----: | :----: | :------: | :-------------: |
| All                 |   Yes   |   Yes  |    Yes   |       Yes       |

###

### Payer object requirements

| Payment Method Name | document | email | first\_name | last\_name |
| ------------------- | :------: | :---: | :---------: | :--------: |
| All                 |    Yes   |  Yes  |     Yes     |     Yes    |

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}


# Ecuador

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th width="149.94921875">document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>EC</code></td><td align="center"><code>USD</code></td><td align="center">2</td><td>CC</td><td>Numeric. Length between 9 and 10 inclusive</td><td align="center">Yes</td></tr></tbody></table>

### Alternative Payment Methods available

<table><thead><tr><th width="94.8828125" align="center">Logo</th><th width="159.86328125" align="center">payment_method</th><th width="189.375">Name</th><th width="174.8515625" align="center">payment_type</th><th>Flows<select multiple><option value="qtFbZuBem0Sp" label="Embbeded" color="blue"></option><option value="TYBBl8oPrxxq" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td align="center"><img src="/files/-M9R9td8SX6c6tMwop7g" alt="" data-size="original"></td><td align="center"><code>FO</code></td><td>Facilito</td><td align="center"><code>VOUCHER</code></td><td><span data-option="qtFbZuBem0Sp">Embbeded, </span><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/-MAgnG0WSCEI89-T881W" alt="" data-size="original"> </td><td align="center"><code>GB</code></td><td>Banco Guayaquil</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/-MAgnI4eG7WZyQ7l5J42" alt="" data-size="original"> </td><td align="center"><code>PX</code></td><td>Banco Pichincha</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/-MVrkzr-y02ntwf6LZ_f" alt="" data-size="original"> </td><td align="center"><code>MV</code></td><td>Pichincha MiVecino</td><td align="center"><code>VOUCHER</code></td><td><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/-Ma06FExYspr77ouMZMy" alt="" data-size="original"> </td><td align="center"><code>PJ</code></td><td>Pago Ágil</td><td align="center"><code>VOUCHER</code></td><td><span data-option="qtFbZuBem0Sp">Embbeded, </span><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/-Ma06MbnCb0W89qUOLAt" alt="" data-size="original"> </td><td align="center"><code>ES</code></td><td>ServiPagos</td><td align="center"><code>VOUCHER</code></td><td><span data-option="qtFbZuBem0Sp">Embbeded, </span><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/BR.svg" alt="" data-size="original"></td><td align="center"><code>BR</code></td><td>Banco Del Barrio</td><td align="center"><code>VOUCHER</code></td><td><span data-option="qtFbZuBem0Sp">Embbeded, </span><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/ypNSMtorgzrnlI5iW3sQ" alt="" data-size="original"></td><td align="center"><code>BBO</code></td><td>Banco Bolivariano</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/-McFGMoxkxvyURk7RVoz" alt="" data-size="original"> </td><td align="center"><code>TE</code></td><td>Tia</td><td align="center"><code>VOUCHER</code></td><td><span data-option="qtFbZuBem0Sp">Embbeded, </span><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/-McyXJXJSa4oINsofwU8" alt="" data-size="original"> </td><td align="center"><code>AW</code></td><td>Activa WesternUnion</td><td align="center"><code>VOUCHER</code></td><td><span data-option="qtFbZuBem0Sp">Embbeded, </span><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/IE.svg" alt="" data-size="original"></td><td align="center"><code>IE</code></td><td>Banco Internacional</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/WU.svg" alt="" data-size="original"><img src="https://resources.directa24.com/cashin/payment_method/square/WU.svg" alt="" data-size="line"></td><td align="center"><code>WU</code></td><td>Western Union</td><td align="center"><code>VOUCHER</code></td><td><span data-option="qtFbZuBem0Sp">Embbeded, </span><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/-McykkZm3ormxQ6V1KYi" alt="" data-size="original"> </td><td align="center"><code>FD</code></td><td>Farmacias911</td><td align="center"><code>VOUCHER</code></td><td><span data-option="qtFbZuBem0Sp">Embbeded, </span><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/aydVifMQR3HIaSS829xd" alt="" data-size="original"></td><td align="center"><code>PPH</code></td><td>Payphone</td><td align="center"><code>WALLET</code></td><td><span data-option="qtFbZuBem0Sp">Embbeded, </span><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr><tr><td align="center"><img src="/files/uJsHDnhoYHYegEG5Zjuj" alt="" data-size="original"></td><td align="center"><code>DU</code></td><td>De Una!</td><td align="center"><code>VOUCHER</code></td><td><span data-option="TYBBl8oPrxxq">Redirect</span></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}


# El Salvador

Check the list of Payment Methods available on El Salvador

{% hint style="warning" %}
*PayPal is currently down due to operational issues. We’re working to resolve this and appreciate your patience.*
{% endhint %}

## Payment Methods

| Icon                                                            | Payment Method | Name   | Flow                | Available for testing | Supports iFrame |
| --------------------------------------------------------------- | -------------- | ------ | ------------------- | --------------------- | --------------- |
| <img src="/files/EgONNgLFRFu3xs3wtAYg" alt="" data-size="line"> | `PPL`          | PayPal | `REDIRECT ONE_SHOT` | Yes                   | Yes             |

{% hint style="success" %}
Use the [Payment Methods Endpoint](broken://pages/-M7hYgDIPRyR1p3XGmws) to retrieve the Payment Methods' types, logos and more details.
{% endhint %}

### Fields required for the [OneShot Experience](broken://pages/-M7hYU7T42-pbXYXjrnh#oneshot-experience)

| Payment Method Name | country | amount | payer\[] | payment\_method |
| ------------------- | :-----: | :----: | :------: | :-------------: |
| All                 |   Yes   |   Yes  |    Yes   |       Yes       |

###

### Payer object requirements

| Payment Method Name | document | email | first\_name | last\_name |
| ------------------- | :------: | :---: | :---------: | :--------: |
| All                 |    Yes   |  Yes  |     Yes     |     Yes    |

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}


# Guatemala

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th width="149.94921875">document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>GT</code></td><td align="center"><code>GTQ</code> and <code>USD</code></td><td align="center">2</td><td>DPI</td><td>Length between 6 and 18 inclusive</td><td align="center">Yes</td></tr></tbody></table>

### Alternative Payment Methods available

<table><thead><tr><th width="95.43359375">Logo</th><th width="160.4453125" align="center">payment_method</th><th width="188.9140625">Name</th><th width="174.7421875">Payment Type		</th><th>Flows<select multiple><option value="pCbcnZH46RBX" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td><img src="/files/EMv3akJdnqywQp1IdS0Z" alt="" data-size="original"></td><td align="center"><code>AH</code></td><td>Akisipuedo</td><td><code>VOUCHER</code></td><td><span data-option="pCbcnZH46RBX">Redirect</span></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}


# Honduras

Check the list of Payment Methods available on Honduras

{% hint style="warning" %}
*At the moment, the payment methods listed for Honduras are only available for certain industries. Please contact your Account Manager to learn more about eligibility and available options for your business.*\
\
*Additionally, please note that PayPal is currently down due to operational issues. We’re working to resolve this and appreciate your patience.*
{% endhint %}

## Payment Methods

<table><thead><tr><th>Icon</th><th width="171">payment_method</th><th>Name</th><th width="142">Flow</th><th width="146">payment_type</th><th width="180">Available for test</th><th>iFrame supported</th></tr></thead><tbody><tr><td><img src="/files/ZFWbnSAqyG0Z9XrFGuVe" alt="" data-size="line"></td><td><code>PPL</code></td><td>PayPal</td><td><code>REDIRECT</code><br><code>ONE_SHOT</code></td><td>VOUCHER</td><td>Yes</td><td>Yes</td></tr><tr><td><img src="/files/9SAaa4k4KD5Ly6tixOMy" alt="" data-size="original"></td><td><code>TMO</code></td><td>Tigo Money</td><td><code>REDIRECT</code></td><td>WALLET</td><td>Yes</td><td>Yes</td></tr><tr><td><img src="/files/6rIlkGzaESeCzoSPIcSY" alt="" data-size="original"></td><td><code>FIC</code></td><td>Ficohsa</td><td><code>REDIRECT</code></td><td>VOUCHER</td><td>Yes</td><td>Yes</td></tr></tbody></table>

{% hint style="success" %}
Use the [Payment Methods Endpoint](broken://pages/-M7hYgDIPRyR1p3XGmws) to retrieve the Payment Methods' types, logos and more details.
{% endhint %}

### Fields required for the OneShot Experience

| Payment Method Name | country | amount | payer\[] | payment\_method |
| ------------------- | :-----: | :----: | :------: | :-------------: |
| All                 |   Yes   |   Yes  |    Yes   |       Yes       |

###

### Payer object requirements

| Payment Method Name | document | email | first\_name | last\_name |
| ------------------- | :------: | :---: | :---------: | :--------: |
| All                 |    Yes   |  Yes  |     Yes     |     Yes    |

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}


# Mexico

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th width="135.4921875">document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>MX</code></td><td align="center"><code>MXN</code> and <code>USD</code></td><td align="center">2</td><td>CURP</td><td><p>Alphanumeric.</p><p>Length between 7 and 18 inclusive</p></td><td align="center">Yes</td></tr></tbody></table>

### Card features

<table><thead><tr><th data-type="checkbox">Card-on-file</th><th width="129.93359375" data-type="checkbox">Subscriptions</th><th width="129.515625" data-type="checkbox">3DS</th><th width="130.22265625" data-type="checkbox">Installments</th><th width="205.6328125" data-type="checkbox">Authorization and Capture</th></tr></thead><tbody><tr><td>true</td><td>true</td><td>true</td><td>true</td><td>false</td></tr></tbody></table>

***

### Brands available

{% hint style="success" %}

### `payment_method` code `CC`

As the payers will be capable to input any card in the displayed checkout form ,the OneShot and Fragments all-in-one solution, we recommend using the payment method code **`CC`**  in the API requests, which is a generic code.

After the payment is attempted, merchants will be capable to know with which card the user paid.
{% endhint %}

<table><thead><tr><th width="95.140625" align="center">Logo</th><th width="160.26171875" align="center">payment_method</th><th width="188.76171875">Name</th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VI.svg" alt="" data-size="original"></td><td align="center"><code>VI</code></td><td>Visa</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VD.svg" alt="" data-size="original"></td><td align="center"><code>VD</code></td><td>Visa Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MC.svg" alt="" data-size="original"></td><td align="center"><code>MC</code></td><td>Mastercard</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MD.svg" alt="" data-size="original"></td><td align="center"><code>MD</code></td><td>Mastercard Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/AE.svg" alt="" data-size="original"></td><td align="center"><code>AE</code></td><td>American Express</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/CL.svg" alt="" data-size="original"></td><td align="center"><code>CL</code></td><td>Cabal ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/DC.svg" alt="" data-size="original"></td><td align="center"><code>DC</code></td><td>Diners Club</td></tr></tbody></table>

### Alternative Payment Methods available

<table><thead><tr><th width="94.875" align="center">Logo</th><th width="159.55859375" align="center">payment_method</th><th width="189.19140625">Name</th><th width="175.0390625" align="center">payment_type</th><th>Flows<select multiple><option value="jlcqaXRW160S" label="Embbeded" color="blue"></option><option value="5X34WAoZrPXY" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/ME.svg" alt="" data-size="original"></td><td align="center"><code>ME</code></td><td>MercadoPago</td><td align="center"><code>WALLET</code></td><td><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/SE.svg" alt=""></td><td align="center"><code>SE</code></td><td>Spei</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/OX.svg" alt="" data-size="original"></td><td align="center"><code>OX</code></td><td>OXXO</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="/files/0ItPryMG76d70wUhq5PC" alt="" data-size="original"></td><td align="center"><code>OXP</code></td><td>OXXOPay</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/COD.svg" alt="" data-size="original"></td><td align="center"><code>COD</code></td><td>CoDi</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/AZ.svg" alt="" data-size="original"></td><td align="center"><code>AZ</code></td><td>Banco Azteca</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/BV.svg" alt="" data-size="original"></td><td align="center"><code>BV</code></td><td>BBVA Bancomer</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="/files/xTLyrXTIKNN9tfq9JKVb" alt="" data-size="original"></td><td align="center"><code>BM</code></td><td>Banamex</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/STS.svg" alt="" data-size="original"></td><td align="center"><code>STS</code></td><td>Santander SuperNet</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/SM.svg" alt="" data-size="original"></td><td align="center"><code>SM</code></td><td>Santander</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/AF.svg" alt="" data-size="original"><img src="https://resources.directa24.com/cashin/payment_method/square/AF.svg" alt="" data-size="line"></td><td align="center"><code>AF</code></td><td>Afirme online banking</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="/files/cx2cq8Jf2XdficnhTbiy" alt="" data-size="original"></td><td align="center"><code>TC</code></td><td>Todito</td><td align="center"><code>WALLET</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/PN.svg" alt="" data-size="original"></td><td align="center"><code>PN</code></td><td>PayNet</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/FA.svg" alt="" data-size="original"></td><td align="center"><code>FA</code></td><td>Farmacia del Ahorro</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"> <img src="https://resources.directa24.com/cashin/payment_method/square/EA.svg" alt="" data-size="original"></td><td align="center"><code>EA</code></td><td>Extra</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"> <img src="https://resources.directa24.com/cashin/payment_method/square/CLX.svg" alt="" data-size="original"></td><td align="center"><code>CLX</code></td><td>Calimax</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/BW.svg" alt="" data-size="original"></td><td align="center"><code>BW</code></td><td>Bodega Aurrera</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/CU.svg" alt="" data-size="original"></td><td align="center"><code>CU</code></td><td>Circulo K</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/EN.svg" alt="" data-size="original"></td><td align="center"><code>EN</code></td><td>7 Eleven</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"> <img src="https://resources.directa24.com/cashin/payment_method/square/FL.svg" alt="" data-size="original"></td><td align="center"><code>FL</code></td><td>Farmacia la mas barata</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"> <img src="https://resources.directa24.com/cashin/payment_method/square/RO.svg" alt="" data-size="original"></td><td align="center"><code>RO</code></td><td>Roma</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"> <img src="https://resources.directa24.com/cashin/payment_method/square/SQ.svg" alt="" data-size="original"></td><td align="center"><code>SQ</code></td><td>Soriana</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/WE.svg" alt="" data-size="original"></td><td align="center"><code>WE</code></td><td>Walmart Express</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="/files/C5vBNxzNGOqwrjIZ0Xzr" alt="" data-size="original"><img src="https://resources.directa24.com/cashin/payment_method/square/WA.svg" alt="" data-size="line"><img src="https://resources.directa24.com/cashin/payment_method/square/WA.svg" alt="" data-size="line"></td><td align="center"><code>WA</code></td><td>Walmart</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/BQL.svg" alt="" data-size="original"></td><td align="center"><code>BQL</code></td><td>Banorte online banking</td><td align="center"><code>BANK_TRANSFER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="/files/lPB8scs6Yz7vIyXcdtKz" alt="" data-size="original"></td><td align="center"><code>SW</code></td><td>SuperCity</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr><tr><td align="center"><img src="/files/iSUwNQfMgqqZDhH8VzeE" alt="" data-size="original"></td><td align="center"><code>SS</code></td><td>Sams Club</td><td align="center"><code>VOUCHER</code></td><td><span data-option="jlcqaXRW160S">Embbeded, </span><span data-option="5X34WAoZrPXY">Redirect</span></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}

***

### Payment flows

#### Transferencias SPEI

<figure><img src="/files/X73h7vfofdO1q0YskY5D" alt=""><figcaption></figcaption></figure>

The user selects **SPEI** as the payment method. A **CLABE** number (bank account code) appears on the screen. The user copies it, opens their banking app, selects “transfer,” pastes the CLABE, and completes the payment. Once confirmed, the funds are sent in real time.

{% hint style="success" %}

#### SPEI Offline

Additionally to the standard SPEI flow described above, we offer a different way in processing SPEI deposits.\
To learn more about this flow, please visit <a href="/pages/dgA1YFgMAKPNJv541CGX" class="button primary">SPEI Offline</a>
{% endhint %}

&#x20;   :art:**User interface tips**

If you are using our **`payment_info[]`** object to display the checkout natively in your website, follow this tips to boost conversion rates!

<figure><picture><source srcset="/files/1MPfFK2HDgRuFnwIcF0z" media="(prefers-color-scheme: dark)"><img src="/files/ahTGm5VL40GGeWnazvSO" alt="" width="563"></picture><figcaption></figcaption></figure>

#### CoDi

<figure><img src="/files/EDr8QvsYX325kWXo2wtq" alt=""><figcaption></figcaption></figure>

After selecting **CoDi**, the user provides basic info, and a **QR code** appears on screen. They open their bank’s mobile app, select the CoDi scan option, upload the code, and confirm the transaction. The payment is completed in seconds.

#### `VOUCHER`s

<figure><img src="/files/UxkiGovNa02E7QM4BDMC" alt=""><figcaption></figcaption></figure>

After choosing **7-Eleven (for example)** as the payment method, the user fills in their personal info and receives a reference number. They take this number to any **7-Eleven** store, give it to the cashier, and pay in cash. The system updates the payment automatically once it’s received.

{% hint style="success" %}

#### `VOUCHER` type payment methods

Note that, even though the example provided is from 7Eleven, the flow described above applies for all the payment methods with type `VOUCHER`.

It applies for Oxxo, Bodega Aurrera, Circulo K, Walmart ... and more.

Cash vouchers are very popular in Mexico.
{% endhint %}


# Nicaragua

Check the list of Payment Methods available on Nicaragua

{% hint style="warning" %}
*PayPal is currently down due to operational issues. We’re working to resolve this and appreciate your patience.*
{% endhint %}

## Payment Methods

| Icon                                                            | Payment Method | Name   | Flow                | Available for testing | Supports iFrame |
| --------------------------------------------------------------- | -------------- | ------ | ------------------- | --------------------- | --------------- |
| <img src="/files/EgONNgLFRFu3xs3wtAYg" alt="" data-size="line"> | `PPL`          | PayPal | `REDIRECT ONE_SHOT` | Yes                   | Yes             |

{% hint style="success" %}
Use the [Payment Methods Endpoint](broken://pages/-M7hYgDIPRyR1p3XGmws) to retrieve the Payment Methods' types, logos and more details.
{% endhint %}

### Fields required for the [OneShot Experience](broken://pages/-M7hYU7T42-pbXYXjrnh#oneshot-experience)

| Payment Method Name | country | amount | payer\[] | payment\_method |
| ------------------- | :-----: | :----: | :------: | :-------------: |
| All                 |   Yes   |   Yes  |    Yes   |       Yes       |

###

### Payer object requirements

| Payment Method Name | document | email | first\_name | last\_name |
| ------------------- | :------: | :---: | :---------: | :--------: |
| All                 |    Yes   |  Yes  |     Yes     |     Yes    |

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}


# Panama

Check the list of Payment Methods available on Panama

## Payment Methods

<br>

| Icon                                                                | payment\_method | Name       | Flow     | Payment Type | Available for Test | Iframe supported |
| ------------------------------------------------------------------- | --------------- | ---------- | -------- | ------------ | ------------------ | ---------------- |
| <img src="/files/Xl5yiy5jpgg4xsce9ejP" alt="" data-size="original"> | PTP             | Punto Pago | REDIRECT | VOUCHER      | Yes                | Yes              |

{% hint style="success" %}
Use the [Payment Methods Endpoint](broken://pages/-M7hYgDIPRyR1p3XGmws) to retrieve the Payment Methods' types, logos and more details.
{% endhint %}

## Fields required for the [OneShot Experience](broken://pages/-M7hYU7T42-pbXYXjrnh#oneshot-experience)

| Payment Method Name | country | amount | payer\[] | payment\_method |
| ------------------- | :-----: | :----: | :------: | :-------------: |
| All                 |   Yes   |   Yes  |    Yes   |       Yes       |

###

### Payer object requirements

| Payment Method Name | document | email | first\_name | last\_name |
| ------------------- | :------: | :---: | :---------: | :--------: |
| All                 |    Yes   |  Yes  |     Yes     |     Yes    |

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}


# Paraguay

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th width="149.94921875">document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>PY</code></td><td align="center"><code>PYG</code> and <code>USD</code></td><td align="center">2</td><td>CIC</td><td>Length between 6 to 8 characters</td><td align="center">Yes</td></tr></tbody></table>

***

### Payment Methods available

<table><thead><tr><th width="95.43359375">Logo</th><th width="160.4453125" align="center">payment_method</th><th width="188.9140625">Name</th><th width="174.7421875">Payment Type		</th><th>Flows<select multiple><option value="pCbcnZH46RBX" label="Redirect" color="blue"></option><option value="YQGi1FrfU92Q" label="Embedded" color="blue"></option></select></th></tr></thead><tbody><tr><td><div><figure><img src="/files/gdwfvfubRsBW3TBKejI7" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>VI</code></td><td>Visa</td><td><code>CREDIT_CARD</code></td><td></td></tr><tr><td><div><figure><img src="/files/kFcv4aKJ7rzHzgZ5jzYo" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>VD</code></td><td>Visa Debito</td><td> <code>DEBIT_CARD</code></td><td></td></tr><tr><td><div><figure><img src="/files/2sesADdSWmJUo1L9yxXt" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>MC</code></td><td>Mastercard </td><td><code>CREDIT_CARD</code></td><td></td></tr><tr><td><div><figure><img src="/files/3gskxQoT7XxknszGE8Cy" alt=""><figcaption></figcaption></figure></div></td><td align="center"><code>MD</code></td><td>Mastercard Debito</td><td><code>DEBIT_CARD</code></td><td></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}


# Peru

### Country specifications

<table><thead><tr><th align="center">country code</th><th align="center">currency code</th><th width="137.60546875" align="center">amount decimals</th><th>document name</th><th width="149.94921875">document format</th><th align="center">document required?</th></tr></thead><tbody><tr><td align="center"><code>PE</code></td><td align="center"><code>PEN</code> and <code>USD</code></td><td align="center">2</td><td>CE and CPP</td><td>Numeric.<br>Length 9.</td><td align="center">Yes</td></tr></tbody></table>

### Card features

<table><thead><tr><th data-type="checkbox">Card-on-file</th><th width="129.93359375" data-type="checkbox">Subscriptions</th><th width="129.515625" data-type="checkbox">3DS</th><th width="130.22265625" data-type="checkbox">Installments</th><th width="205.6328125" data-type="checkbox">Authorization and Capture</th></tr></thead><tbody><tr><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td></tr></tbody></table>

***

### Brands available

{% hint style="success" %}

### `payment_method` code `CC`

As the payers will be capable to input any card in the displayed checkout form ,the OneShot and Fragments all-in-one solution, we recommend using the payment method code **`CC`**  in the API requests, which is a generic code.

After the payment is attempted, merchants will be capable to know with which card the user paid.
{% endhint %}

<table><thead><tr><th width="95.140625" align="center">Logo</th><th width="160.26171875" align="center">payment_method</th><th width="188.76171875">Name</th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VI.svg" alt="" data-size="original"></td><td align="center"><code>VI</code></td><td>Visa</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/VD.svg" alt="" data-size="original"></td><td align="center"><code>VD</code></td><td>Visa Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MC.svg" alt="" data-size="original"></td><td align="center"><code>MC</code></td><td>Mastercard</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/MD.svg" alt="" data-size="original"></td><td align="center"><code>MD</code></td><td>Mastercard Debit ​</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/AE.svg" alt="" data-size="original"></td><td align="center"><code>AE</code></td><td>American Express</td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/DC.svg" alt="" data-size="original"></td><td align="center"><code>DC</code></td><td>Diners Club</td></tr></tbody></table>

***

### Alternative Payment Methods available

<table><thead><tr><th width="95.125" align="center">Logo</th><th width="160" align="center">payment_method</th><th width="188.59765625">Name</th><th width="175.5625" align="center">payment_type</th><th>Flows<select multiple><option value="MlxRo3RqkuE7" label="Embbeded" color="blue"></option><option value="5krIwkKCYq2Q" label="Redirect" color="blue"></option></select></th></tr></thead><tbody><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/XA.svg" alt="" data-size="original"></td><td align="center"><code>XA</code></td><td>Tupay</td><td align="center"><code>VOUCHER</code></td><td><span data-option="MlxRo3RqkuE7">Embbeded, </span><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="/files/Mq9ujTcPI02LxiK8CnXU" alt="" data-size="original"></td><td align="center"><code>XAQR</code></td><td>Tupay QR</td><td align="center"><code>VOUCHER</code></td><td><span data-option="MlxRo3RqkuE7">Embbeded, </span><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="/files/M3z7Jz8ZcAyKQBevINrc" alt="" data-size="original"></td><td align="center"><code>XABT</code></td><td>Tupay Bank Transfers</td><td align="center"><code>VOUCHER</code></td><td><span data-option="MlxRo3RqkuE7">Embbeded, </span><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="/files/nh1kM7zzY2L9nXEa2Fod" alt="" data-size="original"></td><td align="center"><code>XACC</code></td><td>Credit Cards by Tupay</td><td align="center"><code>VOUCHER</code></td><td><span data-option="MlxRo3RqkuE7">Embbeded, </span><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/EF.svg" alt="" data-size="original"></td><td align="center"><code>EF</code></td><td>Pago Efectivo</td><td align="center"><code>VOUCHER</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="/files/3jfnhFWEfjBUEesxvBtw" alt="" data-size="original"></td><td align="center"><code>YP</code></td><td>Yape</td><td align="center"><code>WALLET</code></td><td><span data-option="MlxRo3RqkuE7">Embbeded, </span><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/IB.svg" alt="" data-size="original"></td><td align="center"><code>IB</code></td><td>Interbank</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/BC.svg" alt="" data-size="original"></td><td align="center"><code>BC</code></td><td>BCP</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="MlxRo3RqkuE7">Embbeded, </span><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/ST.svg" alt="" data-size="original"><a href="https://resources.directa24.com/cashin/payment_method/square/ST.svg"><img src="https://resources.directa24.com/cashin/payment_method/square/ST.svg" alt="" data-size="line"></a></td><td align="center"><code>ST</code></td><td>Scotia</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"> <img src="https://resources.directa24.com/cashin/payment_method/square/BAB.svg" alt="" data-size="original"></td><td align="center"><code>BAB</code></td><td>Banbif</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="MlxRo3RqkuE7">Embbeded, </span><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"> <img src="https://resources.directa24.com/cashin/payment_method/square/RY.svg" alt="" data-size="original"></td><td align="center"><code>RY</code></td><td>Banco Ripley</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/NAG.svg" alt="" data-size="original"></td><td align="center"><code>NAG</code></td><td>Niubiz Agents Payment</td><td align="center"><code>VOUCHER</code></td><td><span data-option="MlxRo3RqkuE7">Embbeded, </span><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/RDP.svg" alt="" data-size="original"><img src="https://resources.directa24.com/cashin/payment_method/square/RDP.svg" alt="" data-size="line"></td><td align="center"><code>RDP</code></td><td>Red Digital</td><td align="center"><code>VOUCHER</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><a href="https://resources.directa24.com/cashin/payment_method/square/WU.svg"><img src="https://resources.directa24.com/cashin/payment_method/square/WU.svg" alt="" data-size="line"></a><img src="https://resources.directa24.com/cashin/payment_method/square/WU.svg" alt=""></td><td align="center"><code>WU</code></td><td>Western Union</td><td align="center"><code>VOUCHER</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/BP.svg" alt="" data-size="original"></td><td align="center"><code>BP</code></td><td>BBVA</td><td align="center"><code>BANK_DEPOSIT</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="/files/-MOIFHTPuX5vGhzRfeFs" alt="" data-size="original"></td><td align="center"><code>KE</code></td><td>Kasnet</td><td align="center"><code>VOUCHER</code></td><td><span data-option="MlxRo3RqkuE7">Embbeded, </span><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="/files/-MihQsINrvDjm1yQIrnP" alt="" data-size="original"> </td><td align="center"><code>TM</code></td><td>Tambo</td><td align="center"><code>VOUCHER</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/HC.svg" alt="" data-size="original"></td><td align="center"><code>HC</code></td><td>Caja Huancayo</td><td align="center"><code>VOUCHER</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><a href="https://resources.directa24.com/cashin/payment_method/square/US.svg"><img src="https://resources.directa24.com/cashin/payment_method/square/US.svg" alt="" data-size="line"></a><img src="https://resources.directa24.com/cashin/payment_method/square/US.svg" alt="" data-size="original"></td><td align="center"><code>US</code></td><td>Caja Cusco</td><td align="center"><code>VOUCHER</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/JA.svg" alt="" data-size="original"></td><td align="center"><code>JA</code></td><td>Caja Arequipa</td><td align="center"><code>VOUCHER</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/JI.svg" alt="" data-size="original"></td><td align="center"><code>JI</code></td><td>Caja ICA</td><td align="center"><code>VOUCHER</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/JP.svg" alt="" data-size="original"></td><td align="center"><code>JP</code></td><td>Caja Piura</td><td align="center"><code>VOUCHER</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr><tr><td align="center"><img src="https://resources.directa24.com/cashin/payment_method/square/JT.svg" alt="" data-size="original"></td><td align="center"><code>JT</code></td><td>Caja Tacna</td><td align="center"><code>VOUCHER</code></td><td><span data-option="5krIwkKCYq2Q">Redirect</span></td></tr></tbody></table>

#### Fields required for the [OneShot](/deposits/solutions/oneshot) solution <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

<table data-header-hidden><thead><tr><th width="230.625">Payment Method Name</th><th width="99.52734375" align="center">country</th><th width="109.91796875" align="center">amount</th><th width="109.78515625" align="center">payer[]</th><th width="150.27734375" align="center">payment_method</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>country</code></strong></td><td align="center"><strong><code>amount</code></strong></td><td align="center"><strong><code>payer[]</code></strong></td><td align="center"><strong><code>payment_method</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

#### `payer[]` object requirements <a href="#payer-object-requirements" id="payer-object-requirements"></a>

<table data-header-hidden><thead><tr><th width="230.6015625">Payment Method Name</th><th width="100.12109375" align="center">document</th><th align="center">email</th><th align="center">first_name</th><th align="center">last_name</th></tr></thead><tbody><tr><td><strong>Payment method name</strong></td><td align="center"><strong><code>document</code></strong></td><td align="center"><strong><code>email</code></strong></td><td align="center"><strong><code>first_name</code></strong></td><td align="center"><strong><code>last_name</code></strong></td></tr><tr><td>All</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td><td align="center">Yes</td></tr></tbody></table>

{% hint style="success" %}
Other fields not in these lists are optional.
{% endhint %}

{% hint style="info" %}

### If any of the required fields are missing the `HOSTED` flow will be triggered

In that case you will receive the `HOSTED` value in the `checkout_type` parameter.\
You will have to redirect the user to the `redirect_url`
{% endhint %}

### <img src="https://resources.directa24.com/cashin/payment_method/square/XA.svg" alt="" data-size="line"> Tupay methods description

Tupay is peruvian payment solution that allow users to pay with their all their preffered local solutions, within a single checkout.

Merchants can opt to use the payment methods contained within Tupay as standalone by itself, different payment methods include:

<table data-header-hidden><thead><tr><th width="126.2265625" align="center"></th><th width="77.421875" align="center"></th><th></th><th data-hidden data-type="files"></th></tr></thead><tbody><tr><td align="center"><strong>Tupay voucher</strong></td><td align="center"><strong><code>XA</code></strong></td><td>The payment method Tupay, includes all the payment methods available via this channel, including digital wallets, bank transfers, credit cards, and cash methods.<br><br>The customer can choose whatever method they want to complete the transaction.</td><td><a href="/files/biQjtnaSVi4nZ3DDEyi1">/files/biQjtnaSVi4nZ3DDEyi1</a></td></tr><tr><td align="center"><strong>Tupay QR</strong></td><td align="center"><strong><code>XAQR</code></strong></td><td>This payment method includes both Yape and Plin, which are the most used digital wallets in Peru, together with other smaller digital wallets. The QR code within can be used to pay with any of these digital wallets.<br></td><td><a href="/files/ThAcNkU3gCgyyRaURYTd">/files/ThAcNkU3gCgyyRaURYTd</a></td></tr><tr><td align="center"><strong>Tupay Bank Transfers</strong></td><td align="center"><strong><code>XABT</code></strong></td><td>Tupay Bank Transfers lets the final customer utilize whatever bank that they have, in order to make a bank transfer as a payment.</td><td></td></tr><tr><td align="center"><strong>Tupay Credit Cards</strong></td><td align="center"><strong><code>XACC</code></strong></td><td>This allows customers to pay with a credit card, Visa or MasterCard. Also, it can include debit cards.</td><td></td></tr></tbody></table>


# Africa

### Countries available

{% columns %}
{% column width="50%" %}
🇧🇯 Benin

🇧🇼 Botswana

🇨🇲 Cameroon

🇨🇬 Congo Brazzaville

🇨🇩 Congo DRC

🇪🇬 Egypt

🇬🇦 Gabon

🇬🇭 Ghana

🇨🇮 Ivory Coast
{% endcolumn %}

{% column width="50%" %}
🇰🇪 Kenya

🇳🇬 Nigeria

🇲🇼 Malawi

🇲🇱 Mali

🇷🇼 Rwanda

🇿🇦 South Africa

🇹🇬 Togo

🇺🇬 Uganda

🇿🇲 Zambia

{% endcolumn %}
{% endcolumns %}

{% hint style="success" %}

#### Interested in expanding to :earth\_africa: Africa?

Please get in touch with your commercial representative, we can guide you through!
{% endhint %}


# Asia

### Countries available

{% columns %}
{% column %}
🇧🇩 Bangladesh

🇨🇳 China

🇭🇰 Hong Kong

🇮🇳 India

🇮🇩 Indonesia

🇯🇵 Japan

{% endcolumn %}

{% column %}
🇲🇾 Malaysia

🇵🇰 Pakistan

🇹🇭 Thailand

🇹🇷 Turkey

🇻🇳 Vietnam

{% endcolumn %}
{% endcolumns %}

{% hint style="success" %}

#### Interested in expanding to :earth\_asia: Asia?

Please get in touch with your commercial representative, we can guide you through!
{% endhint %}


# Solutions


# Server2Server

{% hint style="info" %}

#### PCI DSS Compliance

A direct API integration places the responsibility of handling cardholder data on your servers. Therefore, achieving and maintaining compliance with the **Payment Card Industry Data Security Standard (PCI DSS)** is mandatory. This ensures that sensitive payment information is protected according to the highest industry security standards.

For detailed requirements, please consult the official PCI Security Standards Council documentation.
{% endhint %}

## Design your payment experience

Our Server-to-Server API empowers you to process card payments directly on your website or application. This solution provides maximum control, allowing you to design a fully integrated and seamless checkout experience that lives entirely within your platform.

## Core advantages

A direct API integration offers several key benefits:

* **Total brand control:** Craft a payment journey that perfectly mirrors your brand. You control the entire user experience, ensuring a consistent and personalized interaction from start to finish.
* **Enhanced customer trust:** Maintain customer confidence by keeping users on your site throughout the payment process. A familiar environment assures customers that their sensitive data is being handled securely by a brand they trust.
* **Optimized for conversion:** Take full ownership of your checkout flow. By removing redirects and controlling every step, you can minimize friction and optimize your way to higher conversion rates.

### Build the solution

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Guide</strong></td><td>Follow detailed, step-by-step instructions and use our code examples to launch your integration with ease.</td><td><a href="/pages/ayZzbNIXiD03s7KwgfsV">Create a deposit</a></td><td><a href="/pages/9764OJAf1USkcfAXeZ2f#id-3ds-in-server2server-solution">3DS</a></td><td><a href="/pages/9764OJAf1USkcfAXeZ2f#third-party-3ds-server2server">Third party 3DS</a></td><td><a href="/pages/8gAoMoveLCikW6QHhYqn#server2server">Installments</a></td><td><a href="/pages/WeqM6sxKrDXzBBjdSmvC#server2server">Card-on-file</a></td><td><a href="/pages/C8mEb41uxhRHFTpHYPYK#server2server">Subscriptions</a></td><td><a href="/files/t7pVgrDx3eVmppE0dwbP">/files/t7pVgrDx3eVmppE0dwbP</a></td><td><a href="/pages/a2UAZ88e0UVPrwfPh7B5">/pages/a2UAZ88e0UVPrwfPh7B5</a></td></tr><tr><td><strong>API Reference</strong></td><td>Dive into the complete technical specifications for every API endpoint, including all parameters and response formats.</td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/pSHgkZe7eBBzhdL0jNnY">Security aspects</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/Q2BSX5hfiRUtssRpQWOH">Create a deposit</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/BXZLVWJq2BSxqmUcpD3G">Create a subscription</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/BUssFbc5OnkF1NKz3Zmf">Store a card</a></td><td><a href="/spaces/LE4hWa7gzfBT3uKyCBvO/pages/D2b1Et1tDALyYHhAsNUf">Payment methods</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/FUSaa9ongxd6nRknLl4Z">Currency exchange</a></td><td><a href="/files/i7nTPS25IojkETyG8eLc">/files/i7nTPS25IojkETyG8eLc</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/Q2BSX5hfiRUtssRpQWOH">/spaces/VNE8t2FopKfzgQzTjlBb/pages/Q2BSX5hfiRUtssRpQWOH</a></td></tr></tbody></table>


# Fragments (SDK)

Fragments is our ultimate toolkit to enable merchants to offer world-class credit card checkout experience.

### Fragments all-in-one

you can use our Fragments all-in-one version to display your checkout directly in your website with very low effort required. Fragments will handle the whole experience with all the possible scenarios: displaying installments, handling 3DS challenges, remembering payer's card and performing card validations.

Additionally, you can highly customize the frontend elements to math your site's styles, blending our frontend component naturally in your website.\
All this perks will remaining a fully PCI compliant integration.

<figure><img src="/files/TQ7sT5i8w0F6ae8J5jWX" alt="" width="375"><figcaption></figcaption></figure>

### Fragments Lite

In case you want to **build your own credit card checkout components in the frontend**, but without being PCI Compliant you can still opt for our Fragments SDK.&#x20;

You will need to send to our frontend component the card details in order to generate a token.

That token will contain encrypted information about the credit card that only our side can decrypt.\
You should use the token to charge that deposit.

<figure><img src="/files/capeOwOhraSxIo31tMdI" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}

## `card_token` expiration

Please note that the token created by the Fragments SDK will expire after 10 minutes.
{% endhint %}


# Fragments (Lite)

Simplify your PCI compliance by using our headless JavaScript SDK. It securely captures credit card details within your application and exchanges them for a safe, single-use token. You then use this token to process payments via our backend API, ensuring sensitive data never transits or is stored on your servers.

{% stepper %}
{% step %}

### Installation

Before you can use the SDK, you need to add it to your project. You have two options:

&#x20;**Using npm (Recommended for modern web development)**

If you are using a package manager like npm or yarn, you can add the SDK to your project's dependencies.

```sh
npm install @pandablue/sdk-minimal
```

**Or you can perform a manual script installation**

For simpler projects or direct HTML integration, you can include the SDK using a `<script>` tag in your HTML file. Make sure to place it in the `<head>` section of your document.

{% code overflow="wrap" %}

```html
<script type="module" src="https://pandabluesdk.s3.amazonaws.com/releases/pandablue-minimal-1.0.19.es.js"></script>
```

{% endcode %}

{% hint style="success" %}

#### Ensure to install the latest version in this [link](https://www.npmjs.com/package/@d24/sdk-minimal)!

{% endhint %}
{% endstep %}

{% step %}

### Initializing the SDK

Once installed, you must initialize the SDK with your unique public key and specify the environment you are working in. This step is mandatory and must be completed before you can call any other methods.

You will receive your public key from PandaBlue. The environment should be set to **`'stg'`** for testing and development, and **`'prod'`** for your live application.

**If you installed via npm:**

```javascript
import SDK from '@pandablue/sdk-minimal';

// Initialize the SDK once when your application loads.
new SDK('YOUR_PUBLIC_KEY', { environment: 'stg' });

```

**If you are using the manual script:**

```javascript
// The SDK will be available on the global window object.
new window.pandablue.SDK('YOUR_PUBLIC_KEY', { environment: 'stg' });

```

> **Important:** The SDK is designed to be a singleton, meaning it should only be instantiated once during your application's lifecycle. Attempting to initialize it more than once will result in an error.
> {% endstep %}

{% step %}

### Generate a secure card token

The primary purpose of this SDK is to convert raw credit card data into a single-use, secure token.

You will first collect the card information from your user through a form on your application. Then, you pass this data to the **`generateToken`** method. The SDK will validate the data and communicate with PandaBlue servers to create the token.

The **`creditCard[]`** object requires the following fields:

* **`number`**: The credit card number.
* **`holder`**: The cardholder's full name.
* **`cvv`**: The 3 or 4-digit security code.
* **`expirationMonth`**: The two-digit expiration month (e.g., '05').
* **`expirationYear`**: The two-digit expiration year (e.g., '28').

Here is how you generate a token:

```javascript
// This is an asynchronous function, so you'll need to use async/await or .then()

async function processPayment(cardDetails) {
  try {
    // Assuming 'cardDetails' is an object with the required card fields
    const response = await window.pandablue.generateToken({ card: cardDetails });

    // The secure token
    const token = response.token;

    // Now, send this token to your backend server to make the API call
    // to finalize the deposit.
    console.log('Token created:', token);
    // sendTokenToServer(token);

  } catch (error) {
    // Handle any validation or network errors
    console.error('Error generating token:', error.message);
  }
}

// Example usage:
const myCardInfo = {
  number: '4509953566233704',
  holder: 'Juan Perez',
  cvv: '123',
  expirationMonth: '11',
  expirationYear: '25',
};

processPayment(myCardInfo);

```

{% endstep %}
{% endstepper %}

### Build the solution

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th></th><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Guide</strong></td><td>Follow detailed, step-by-step instructions and use our code examples to launch your integration with ease.</td><td><a href="/pages/L9avZ558MIGp6Fw0a3cl">Create a deposit</a></td><td><a href="/pages/9764OJAf1USkcfAXeZ2f#fragments-lite">3DS</a></td><td><a href="/pages/8gAoMoveLCikW6QHhYqn#fragments-lite">Installments</a></td><td><a href="/pages/WeqM6sxKrDXzBBjdSmvC#fragments-lite">Card-on-file</a></td><td><a href="/files/t7pVgrDx3eVmppE0dwbP">/files/t7pVgrDx3eVmppE0dwbP</a></td><td><a href="/pages/TDXlFHUt60mGiPkIlLdj">/pages/TDXlFHUt60mGiPkIlLdj</a></td></tr><tr><td><strong>API Reference</strong></td><td>Dive into the complete technical specifications for every API endpoint, including all parameters and response formats.</td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/epkvqkMvjGY2k02ooOVc">Technical details</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/jUFbvDt3tPst1DRV1jAv">Payment methods</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/FUSaa9ongxd6nRknLl4Z">Currency exchange</a></td><td></td><td><a href="/files/i7nTPS25IojkETyG8eLc">/files/i7nTPS25IojkETyG8eLc</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/epkvqkMvjGY2k02ooOVc">/spaces/VNE8t2FopKfzgQzTjlBb/pages/epkvqkMvjGY2k02ooOVc</a></td></tr></tbody></table>


# Fragments (all-in-one)

This guide will provide you with everything you need to integrate our powerful, all-in-one payment solution into your application for a seamless native checkout experience.

### Getting Started

Integrating the Fragments SDK is a straightforward process.\
Follow these initial steps to get up and running.

{% stepper %}
{% step %}

### Installation

You can add the PandaBlue SDK to your project in two ways:

**Using NPM (Recommended)**

For projects using a package manager, install the SDK from the npm public registry.

```sh
npm install @pandablue/sdk
```

**Or you can perform a manual script installation**

Alternatively, you can add the PandaBlue.js module directly to your HTML file. Place this script tag in the `<head>` of your document.

```html
<script
  type="module"
  src="https://pandabluesdk.s3.amazonaws.com/releases/pandablue-1.0.21.es.js"
></script>
```

{% hint style="success" %}

#### Ensure to install the latest version on this [link](https://www.npmjs.com/package/@d24/sdk)!

{% endhint %}
{% endstep %}

{% step %}

### Initialization

Before you can use any of the SDK's features, you must instantiate it. This step configures the SDK for your specific account and environment.

**Important:** The SDK should only be instantiated once when your application loads.

To instantiate, you'll need your `publicKey` and the desired `environment`.

{% hint style="info" %}

## **How to find your `publicKey`**

1. Log into your **Merchant Panel**.
2. Navigate to **Settings > API Access**.
3. Under **Read Only Credentials**, you will find your **API Public key**.
   {% endhint %}

Here’s how to instantiate the SDK in your code:

**If you used NPM:**

{% code overflow="wrap" %}

```javascript
import SDK from '@pandablue/sdk';

// Instantiate the SDK
const pandablue = new SDK('YOUR_PUBLIC_KEY', { environment: 'stg', locale: 'en' });

```

{% endcode %}

**If you used the manual script:**

{% code overflow="wrap" %}

```javascript
// Instantiate the SDK from the global window object
const pandablue = new window.pandablue.SDK('YOUR_PUBLIC_KEY', { environment: 'stg', locale: 'en' });

```

{% endcode %}

**Environments:**

* `stg`: Use for testing and development (Staging).
* `prod`: Use for your live application (Production).

{% endstep %}

{% step %}

### Implementing the Credit Card Form

Once the SDK is instantiated, you can render the `CreditCardForm` component. This component handles the entire card input and payment submission process securely.

The component requires a few key properties to function:

* `authToken`: A unique token generated from your backend by the Deposit Creation Endpoint.
* `country`: The two-letter country iso-code (e.g., "BR").
* Callback functions to handle different outcomes of the payment process.

#### Basic Example

Here is a simple example of how to render the form:

```javascript
// Make sure you have instantiated the SDK before this step
<CreditCardForm
  authToken="YOUR_CHECKOUT_TOKEN"
  country="BR"
  onSuccess={handlePaymentSuccess}
  onError={handlePaymentError}
  onBack={handleGoBack}
  onTokenGenerationError={handleTokenError}
  messages={handleMessages}
/>
```

{% endstep %}

{% step %}

### Handling Callbacks

Callbacks are essential for managing the payment flow and providing feedback to your users.

**`onSuccess`**

This function is called when a payment is completed successfully.

```javascript
function handlePaymentSuccess() {
  console.log('Payment was successful!');
  // e.g., Redirect to a success page or show a success message
}

```

**`onError`**

This function is called if an error occurs during the payment process.

```javascript
function handlePaymentError(error) {
  console.error('Payment failed:', error);
  // e.g., Display an error message to the user
}

```

**`onBack`**

This function is executed when the user clicks the "Go Back" button within the form.

```javascript
function handleGoBack() {
  console.log('User clicked go back.');
  // e.g., Navigate to the previous step in your checkout flow
}

```

**`onTokenGenerationError`**

This function is called if there's an issue with generating the secure token before the payment is attempted.

```javascript
function handleTokenError(error) {
  console.error('Could not generate token:', error);
  // This is often a configuration or setup issue.
}

```

{% endstep %}

{% step %}

### Message customization

You can customize the messages displayed on the final payment screens using the `messages` property.

#### Example

```javascript
<CreditCardForm
  // ... other properties
  messages={{
    paymentComplete: {
      success: {
        title: "Payment Received!",
        description: "Thank you for your purchase."
      },
      error: {
        title: "Payment Failed",
        description: "Something went wrong. Please try again."
      }
    }
  }}
/>

```

This concludes the API Guide.\
For a detailed list of all parameters, properties, and error codes, please consult the **API Reference** document :arrow\_right: <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/E1bX77ZsTLXFYmt0BrFx" class="button primary">Fragments (all-in-one)</a>

{% endstep %}

{% step %}

### Customize the look and feel

You fully customize the credit card form to match you website's user interface!\
Visit the API Reference to learn how to setup the **`colorSchema`**`[]` :arrow\_right: <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/Ptxk6ijp2D7ixRrremYQ" class="button primary" data-icon="paintbrush">Customize the UI</a>
{% endstep %}
{% endstepper %}

### Build the solution

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Guide</strong></td><td>Follow detailed, step-by-step instructions and use our code examples to launch your integration with ease.</td><td><a href="/pages/SCJv7pS5vWwtJJB0WpZw">Create a deposit</a></td><td><a href="/pages/9764OJAf1USkcfAXeZ2f#fragments-all-in-one">3DS</a></td><td><a href="/pages/8gAoMoveLCikW6QHhYqn#fragments-all-in-one">Installments</a></td><td><a href="/pages/WeqM6sxKrDXzBBjdSmvC#fragments-all-in-one">Card-on-file</a></td><td></td><td><a href="/files/t7pVgrDx3eVmppE0dwbP">/files/t7pVgrDx3eVmppE0dwbP</a></td><td><a href="/pages/a2UAZ88e0UVPrwfPh7B5#deposits-with-fragments-all-in-one">/pages/a2UAZ88e0UVPrwfPh7B5#deposits-with-fragments-all-in-one</a></td></tr><tr><td><strong>API Reference</strong></td><td>Dive into the complete technical specifications for every API endpoint, including all parameters and response formats.</td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/E1bX77ZsTLXFYmt0BrFx">Technical details</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/Ptxk6ijp2D7ixRrremYQ">Customize the UI</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/jUFbvDt3tPst1DRV1jAv">Payment methods</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/FUSaa9ongxd6nRknLl4Z">Currency exchange</a></td><td></td><td><a href="/files/i7nTPS25IojkETyG8eLc">/files/i7nTPS25IojkETyG8eLc</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/E1bX77ZsTLXFYmt0BrFx">/spaces/VNE8t2FopKfzgQzTjlBb/pages/E1bX77ZsTLXFYmt0BrFx</a></td></tr></tbody></table>


# OneShot

Our OneShot solution will enable you to redirect the user to our checkout page where the user will see all the details for completing the deposit, and also will enable you to render the checkout page on your website (in the case of using Alternative Payment Methods).

<div align="center"><figure><img src="/files/4NgLGPyJhAzzfh1my7C8" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="/files/yeEPxghSNwnpRHtecGNi" alt="" width="188"><figcaption></figcaption></figure></div>

### Alternative Payment Methods world-class integration

Our OneShot integration allows you to render the checkout information on your website.

We will always send you the **`redirect_url`** parameter with the checkout hosted in our end.

But if you are looking for the best user experience, you can display the checkout in your site with your own custom design.\
You will receive in the response the required information in the **`metadata[]`**  object within the **`payment_info[]`**, such as QR codes, bar codes, banking copy/paste addresses, bank transfer details and more!

{% tabs %}
{% tab title="Example of a Pix deposit" %}

<pre class="language-json" data-title="QR code and Digitable Line"><code class="lang-json">{
    "checkout_type": "ONE_SHOT",
<strong>    "redirect_url": "https://payment-stg.depositcheckout.com/v1/checkout/eyJhbGciOiJIUzM4NCJ9.eyJqdGkiOiI1NzIyNjAwMiIsImlhdCI6MTc1MjUyMDk1NywiZXhwIjoxNzUzODE2OTU3LCJsYW5ndWFnZSI6InB0In0.50XjLnTTgaPowAHG7v8jP5jsXsUu6pp7mn5InR3UC-uFofNKVMOl9CEFNmH1FOOw/BR/IX/0341/31581",
</strong>    "iframe": true,
    "deposit_id": 301621986,
    "merchant_invoice_id": "postmanTest410953016",
    "payment_info": {
        "type": "VOUCHER",
        "payment_method": "IX",
        "payment_method_name": "Pix",
        "amount": 50.00,
        "currency": "BRL",
        "expiration_date": "2025-07-14 22:22:36",
        "created_at": "2025-07-14 19:22:36",
<strong>        "metadata": {
</strong><strong>            "payer_document": "84721238045",
</strong><strong>            "reference": 57226002,
</strong><strong>            "show_terms_conditions": true,
</strong><strong>            "payer_document_type": "CPF",
</strong><strong>            "qr_code": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAB9AQAAAACn+1GIAAACN0lEQVR4Xt3UMZL3EBgHYJq4QjRxtaSJKySN0MQVopGrScMVaFjfX/abWewFVpV5Zoj39QOkn8ODPwUeTERa6oTfOexCSNdEwokiFXfog9D4tnvg5LnwL5CnXPCWhv4KmroIAPLHb5CUJuqW7iLf+6jAA6ze8V1LBXlY6ok6d/m/Hz/BQz7uHCD5+JV2IfFFnGwx0Dl9dCHcUjhz3MJOrLSwhuTsdKT0eJR4WbQGPxPlLhyHRSTVhfxlNnaYPO/6TGkgPfdtoB+pPI/PlBac3XDcsN4j2PuQz3lRfBiW3KU+hORuu83/yi+/rSFuYAbIIL0B9lm0hZXmnVHh2QSWLvgJcSSUO7FKogtJOmGPeHBGpeuCHwH2B8ePumAJTA1JBT5NRE/L40v5NXh4oRzqWz5ClXNpwc8TI+cwL/5NUA0jlEnxnH//vY8K4rpuM4Nmj4yVFtbgV6yCEMmZ3IQ+oLitDHqwru+UGiI55xWZPSmlcRdCvlzwJJrRWA6qAT8OKAgXh10+5bc1JL6NA5tHHOmbjxo81YAoS6VfrrJoDRE9UulhUXFinyvWwqIMFuq2AJbyGwjBYMvANrL3tw1ENkB3R5qunP8+oKAiG4nN5b/7qMCT/BRcYEL5xSk5rSHfj+dcicbPU+LQQH62Qhyx0Ayqko8aQtIb1URw9kaqBXFhCwBxgsNSfgvKHrdeZA7o53r0ICWz7UmeU3nYGkjXOgzbSu1eGtRA3ro0gB3Or0fpRw0/x9+GL70BgIv6XzUUAAAAAElFTkSuQmCC",
</strong><strong>            "digitable_line": "00020101021226850014br.gov.bcb.pix2563qrcodepix.bb.com.br/pix/v2/0a7702b2-c6b6-439a-9fd5-cc70c0c2353c5204000053039865802BR5925SOLAPA SERVICOS ADMINISTR6008CURITIBA62070503***6304AD87"
</strong><strong>        }
</strong>    }
}
</code></pre>

{% endtab %}

{% tab title="Example of a Spei deposit" %}

<pre class="language-json" data-title="CLABE reference"><code class="lang-json">{
    "checkout_type": "ONE_SHOT",
<strong>    "redirect_url": "https://payment-stg.depositcheckout.com/v1/checkout/eyJhbGciOiJIUzM4NCJ9.eyJqdGkiOiI1NzIyNjAxNiIsImlhdCI6MTc1MjUyMzgyOSwiZXhwIjoxNzUzODE5ODI5LCJsYW5ndWFnZSI6ImVzIn0.OKk8MNr5wGe6mt095nncss3Sbp1EC5rWhepaf4hjOetowsfc228dftfdcZJr5jHq/MX/SE/265/31581",
</strong>    "iframe": true,
    "deposit_id": 301622000,
    "merchant_invoice_id": "postmanTest43854702",
    "payment_info": {
        "type": "VOUCHER",
        "payment_method": "SE",
        "payment_method_name": "Spei",
        "amount": 945.84,
        "currency": "MXN",
        "expiration_date": "2025-07-17 20:10:29",
        "created_at": "2025-07-14 20:10:29",
<strong>        "metadata": {
</strong><strong>            "beneficiary_name": "D24",
</strong><strong>            "clabe": "646180287500315457",
</strong><strong>            "temporal_clabe": false,
</strong><strong>            "updated_clabe_flag": false,
</strong><strong>            "payer_name": "John Doe",
</strong><strong>            "instructions_alert": true
</strong>        }
    }
}
</code></pre>

{% endtab %}
{% endtabs %}

### **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.

### Build the solution

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Guide</strong></td><td>Follow detailed, step-by-step instructions and use our code examples to launch your integration with ease.</td><td><a href="/pages/aGsfqV5piYaW5sFMfq8j#deposit-with-oneshot-redirect">Create a deposit (credit cards)</a></td><td><a href="/pages/6PIT5YTujEIUBRFgBkmy">Create a deposit (APMs)</a></td><td><a href="/pages/9764OJAf1USkcfAXeZ2f#oneshot-redirect">3DS</a></td><td><a href="/pages/8gAoMoveLCikW6QHhYqn#oneshot">Installments</a></td><td><a href="/pages/WeqM6sxKrDXzBBjdSmvC#oneshot">Card-on-file</a></td><td><a href="/pages/C8mEb41uxhRHFTpHYPYK#oneshot">Subscriptions</a></td><td><a href="/files/t7pVgrDx3eVmppE0dwbP">/files/t7pVgrDx3eVmppE0dwbP</a></td><td><a href="/pages/9Wohm1fjxN0NLAFHRfWw">/pages/9Wohm1fjxN0NLAFHRfWw</a></td></tr><tr><td><strong>API Reference</strong></td><td>Dive into the complete technical specifications for every API endpoint, including all parameters and response formats.</td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/pSHgkZe7eBBzhdL0jNnY">Security aspects</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/z3VIARIvaaLqEvndBdGt">Create a deposit</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/jUFbvDt3tPst1DRV1jAv">Payment methods</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/FUSaa9ongxd6nRknLl4Z">Currency exchange</a></td><td></td><td></td><td><a href="/files/i7nTPS25IojkETyG8eLc">/files/i7nTPS25IojkETyG8eLc</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/E1bX77ZsTLXFYmt0BrFx">/spaces/VNE8t2FopKfzgQzTjlBb/pages/E1bX77ZsTLXFYmt0BrFx</a></td></tr></tbody></table>


# Plugins


# Shopify

Integrate D24 into your store to accept payments from your users.

## Description

This application allows you to connect D24 as a payment method in your Shopify. With the following documentation, you will get the necessary information to install and configure D24.

## Next steps

Click in the cards below to see the details in how to install and configure the app.

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f9d1-1f4bb">🧑‍💻</span></td><td align="center"><strong>Installation</strong></td><td><a href="/pages/Cv34JaenIL3J9wibbGA9">/pages/Cv34JaenIL3J9wibbGA9</a></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="2699">⚙️</span></td><td align="center"><strong>Onboarding</strong></td><td><a href="/pages/zEFG7tIGeA4A5M4Jgpvu">/pages/zEFG7tIGeA4A5M4Jgpvu</a></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f6cd">🛍️</span></td><td align="center"><strong>Customer flow</strong></td><td><a href="/pages/pu1i9mOJVDGVLOiZOHKk">/pages/pu1i9mOJVDGVLOiZOHKk</a></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f6d2">🛒</span></td><td align="center"><strong>Admin Flow</strong></td><td><a href="/pages/thonmjCvemFiUHY5ptKQ">/pages/thonmjCvemFiUHY5ptKQ</a></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f4f9">📹</span></td><td align="center"><strong>Tutorials</strong></td><td><a href="/pages/3SYdhCVjhHIEc7UHzEmj">/pages/3SYdhCVjhHIEc7UHzEmj</a></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="2753">❓</span></td><td align="center"><strong>FAQ</strong></td><td><a href="/pages/u1urBl0prJCpBg4FbIkm">/pages/u1urBl0prJCpBg4FbIkm</a></td></tr></tbody></table>


# Installation

First of all, in order to install D24, you must enter the following link:

[➡️ https://apps.shopify.com/d24](https://apps.shopify.com/d24)

![](https://d24-shopify-docs.vercel.app/images/installation/D24-Installation-addapp.png)

Log with your Shopify credentials.

![](https://d24-shopify-docs.vercel.app/images/installation/D24-Installation-credentials.png)

Or in case you don't have credentials, you can register at Shopify to access the D24 app.

![](https://d24-shopify-docs.vercel.app/images/installation/D24-Installation-signup.png)

Once you have successfully logged in, you will be prompted to select your Shopify store.

![](https://d24-shopify-docs.vercel.app/images/installation/D24-Installation-stores.png)

After selecting the store, you will be able to open the D24 app, and you will be redirected to the onboarding page.

![](https://d24-shopify-docs.vercel.app/images/installation/D24-Installation-Onboarding.png)


# Onboarding

In this section you will have to configure D24 in your Shopify in a simple way.

1\. On this screen you must click on the 'LOG IN' button. If you do not have an account, you can create one by clicking on the 'Create it here' button.

![](https://d24-shopify-docs.vercel.app/images/onboarding/D24-onboarding-login.png)

***

2\. In the next screen you must enter the Api Key, and Api Signature. Do not forget to upload the logo!

![](https://d24-shopify-docs.vercel.app/images/onboarding/D24-onboar-insertarapi.png)

After uploading the credentials, press the 'LOGIN' button.

![](https://d24-shopify-docs.vercel.app/images/onboarding/D24-onboarding-apis.png)

3\. If they are wrong or incorrect, you will see the corresponding validation message.

![](https://d24-shopify-docs.vercel.app/images/onboarding/D24-onboarding-invalid.png)

***

4\. If they are correct, a success message will be displayed and you will enter the administrative panel of your store.

![](https://d24-shopify-docs.vercel.app/images/onboarding/D24-onboarding-succes.png)

5\. It is important that you activate the payment methods you wish to use in order to operate with D24.

![](https://d24-shopify-docs.vercel.app/images/onboarding/D24-onboarding-tarjetas.png)

In this same screen you can activate the test mode if you want to simulate transactions before making real transactions.

![](https://d24-shopify-docs.vercel.app/images/onboarding/D24-onboarding-testmode.png)

***

6\. Once you have finished the configuration, press the 'Activate D24' button. Done! The configuration process will have finished successfully and you will be offering D24 as a means of payment to your customers.

![](https://d24-shopify-docs.vercel.app/images/onboarding/D24-onboarding-active.png)

![](https://d24-shopify-docs.vercel.app/images/onboarding/D24-onboarding-d24activated.png)


# Customer flow

In just a few steps, your customers will be able to pay with D24 in your store. In the following quick guide we show you how:

When adding products to the cart and going to checkout, the consumer will see D24 as a payment option.

<figure><img src="/files/zfmVBo9vRlpenmUGqmbF" alt=""><figcaption></figcaption></figure>

Clicking it will allow you to make a payment with D24.

Select which payment institution you want to pay with D24.

![](https://d24-shopify-docs.vercel.app/images/customer-flow/directa24-shopify-customer-flow-2.png)

![](https://d24-shopify-docs.vercel.app/images/customer-flow/directa24-shopify-customer-flow-3.png)

Enter the data correctly.

![](https://d24-shopify-docs.vercel.app/images/customer-flow/directa24-shopify-customer-flow-4.png)

![](https://d24-shopify-docs.vercel.app/images/customer-flow/directa24-shopify-customer-flow-5.png)

![](https://d24-shopify-docs.vercel.app/images/customer-flow/directa24-shopify-customer-flow-6.png)

Upon successful payment, you will return to Shopify to see the status of your order.

![](https://d24-shopify-docs.vercel.app/images/customer-flow/directa24-shopify-customer-flow-7.png)

<figure><img src="/files/4gkocnTQ7uZQF6tqq3eI" alt=""><figcaption></figcaption></figure>


# Admin Flow

### Order and detail view <a href="#order-and-detail-view" id="order-and-detail-view"></a>

From the Shopify admin menu select 'Orders'.

And then you will be able to see all the received orders.

<figure><img src="/files/GddhcvAKMFSdHs0rYthp" alt=""><figcaption></figcaption></figure>

By clicking on the number of the order you want to see, you will be able to see the order details.

<figure><img src="/files/t8PfegMw5dqrAdhikHwG" alt=""><figcaption></figcaption></figure>

Once you enter the order details, at the bottom of this screen you will see the payment method used to pay for the order, in this case D24.

<figure><img src="/files/PvNdzEZ33Qn8z2zsBhcO" alt=""><figcaption></figcaption></figure>

***

### Transaction view from D24 <a href="#transaction-view-from-d24" id="transaction-view-from-d24"></a>

From the D24 dashboard you will be able to view the transactions made from your store, by clicking on the 'Transactions' menu you will be able to view the detail of the payment made.

![](https://d24-shopify-docs.vercel.app/images/admin-flow/directa24-shopify-admin-flow-4.png)

![](https://d24-shopify-docs.vercel.app/images/admin-flow/directa24-shopify-admin-flow-5.png)


# Tutorials

### How to find your credentials in D24 account

In this video we show you how you can obtain the necessary credentials for the integration from your D24 account.

{% embed url="<https://www.loom.com/share/5d79e9c5c4574789afeebd2a5e1d296e>" %}

### Installation and onboarding <a href="#installation-and-onboarding" id="installation-and-onboarding"></a>

In the following video we will show you how you can easily install and onboard the app to integrate D24 to your Shopify store.

{% embed url="<https://www.loom.com/share/bc0d513720fb4c198e7a9961dbcefb31>" %}

### Purchase by paying with D24 <a href="#installation-and-onboarding" id="installation-and-onboarding"></a>

In this video we will detail the steps that your customers must follow to make their purchases in your store paying with D24.

{% embed url="<https://www.loom.com/share/8076544f110c4a17877717a97cbc05d2>" %}

### Exploring orders, refunds and deposits with D24 <a href="#installation-and-onboarding" id="installation-and-onboarding"></a>

In the following videos we show you how you can view paid orders with D24 from your store's administrative panel, how to make returns if necessary and how to view deposits from your D24 account.

{% embed url="<https://www.loom.com/share/90d5a0fbd52e42c79bce890329a714f9>" %}

{% embed url="<https://www.loom.com/share/ad3649837c75440e84c851c85e5d12f6>" %}


# FAQ

### Why is D24 not shown as a payment method in my store? <a href="#why-is-d24-not-shown-as-a-payment-method-in-my-store" id="why-is-d24-not-shown-as-a-payment-method-in-my-store"></a>

The credentials used in the setup process are not correct. Although it is very difficult for this to happen since there are the corresponding validations, it is a possibility that you should keep in mind, if it happens, verify that all steps have been completed correctly. If the problem persists, contact support.

### How can I visualize more information about my transactions? <a href="#how-can-i-visualize-more-information-about-my-transactions" id="how-can-i-visualize-more-information-about-my-transactions"></a>

From the [D24 panel](https://merchants.d24.com/login), you will be able to get more details about your transactions.

### Can I refund transactions? <a href="#can-i-refund-transactions" id="can-i-refund-transactions"></a>

From your Shopify store, in the order detail, you will have the **Refund** option with which you can return a transaction to your customer when required.

### Is the status of the payment made through D24 updated in Shopify? <a href="#is-the-status-of-the-payment-made-through-d24-updated-in-shopify" id="is-the-status-of-the-payment-made-through-d24-updated-in-shopify"></a>

If the payment is in status: **pending**, **approved** or **canceled**, this status will be updated in your store.

### Can I stop offering D24 as a payment method? <a href="#can-i-stop-offering-d24-as-a-payment-method" id="can-i-stop-offering-d24-as-a-payment-method"></a>

If you no longer wish to offer D24 as a means of payment in your store, go to **Applications** from Shopify and in the D24 app select the **Uninstall** option. Remember that when you want to offer the payment method again, you just have to reinstall the app.


# WooCommerce

Here you will find all the information and resources needed in order to install our WooCommerce plugin!

<details>

<summary>Details</summary>

**Contributors:** directa24\
**Requires at least:** 7.0 \
**Tested up to:** 7.4.0 \
**Stable tag:** 1.0.0 \
**License:** GPLv3 \
**License URI:** <http://www.gnu.org/licenses/gpl-3.0.html>

</details>

## Description

This plugin adds D24 Payment Gateway to your WooCommerce store, allowing customers to pay with multiple local payment methods:

### **We support:**

<table data-view="cards"><thead><tr><th align="center"></th><th align="center"></th></tr></thead><tbody><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f4b3">💳</span> </td><td align="center"><em>Credit and Debit cards</em></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f3e6">🏦</span></td><td align="center"><em>Online bank transfers</em> </td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f4b5">💵</span></td><td align="center"> <em>Cash methods</em> </td></tr></tbody></table>

### Translations

<table data-view="cards"><thead><tr><th align="center"></th><th align="center"></th></tr></thead><tbody><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1ec-1f1e7">🇬🇧</span> </td><td align="center"><em>English</em></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1e7-1f1f7">🇧🇷</span></td><td align="center">Portuguese</td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1ea-1f1f8">🇪🇸</span></td><td align="center"><em>Español</em></td></tr></tbody></table>

## Download

{% file src="/files/N3KI3IKLE5MHjlp7Vc7o" %}
v 1.0.0
{% endfile %}

## Next steps

Click in the cards below to see the details in how to install and configure the plugin.

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f9d1-1f4bb">🧑‍💻</span></td><td align="center"><strong>Installation</strong></td><td><a href="/pages/k49LguvBs3jyrpMzKxSI">/pages/k49LguvBs3jyrpMzKxSI</a></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="2699">⚙️</span></td><td align="center"><strong>Configuration</strong></td><td><a href="/pages/ZKicRMbGf3zOyA3taAU1">/pages/ZKicRMbGf3zOyA3taAU1</a></td></tr></tbody></table>

### Changelog

* 1.0.0 (2023-03-01): Initial plugin release


# Installation

## **Minimum Requirements**

* WooCommerce 7.0 or greater

## Manual installation uploading files to the server

Extract the zip file and just drop the contents in the wp-content/plugins/ directory of your WordPress installation and then activate the Plugin from Plugins page.

## Manual installation uploading zip file from WordPress Admin

1. Sign in to your **WordPress Admin.**\ <img src="/files/nAJMLqRjAJojSPUsKOXu" alt="" data-size="original"><br>
2. In the left-hand menu, select: **Plugins** > **Add New**.\
   ![](/files/LMFXufm6B4vtrE9Jl6r7)
3. Select **Upload Plugin**.\
   ![](/files/loefyPDTotzCL70u7kCF)
4. Select **Choose File**.\
   ![](/files/XTuKfNx2BQvJrZVYZaFG)
5. Locate and select the plugin .zip file on your local computer and then select **Open**.
6. Select **Install Now**.\
   ![](/files/1wjra7jM2qI9SHW6WEmw)
7. *Optional*: Select Activate Plugin if you want the plugin to be active after the installation. If not, you can always activate it later.


# Configuration

If you have installed the plugin, follow this steps and tips to have it up and running!

#### Brief explanation

In D24 we provide two environments to our clients, **Staging** and **Production**. Each one with its own set of credentials.

* With your **Staging** credentials you will be able to test the different payment methods and flows with mocked information that simulates real payments, risk free.
* With your **Production** credentials, you will be using real-life gateways and payment information, therefore users will be capable to pay!

## Step-by-step

1. &#x20;In the left-hand menu go to **Woocommerce** > **Settings**.\
   ![](/files/lZubVd6GmvAqNnatpkFD)

2. Then go to **Payments** and you will see **Directa24 Checkout** on the method list. Click it to configure :smile:<br>

   <figure><img src="/files/JZhhrZfL1CfdiB7xcNgs" alt=""><figcaption></figcaption></figure>

3. In the plugin configuration you will find four sections: ***Environment selection***, ***Staging credentials***, ***Production credentials*** and ***Configuration.***
   * ***Environment selection:*** in this section you will be capable to select which environment you want to use at your checkout.\
     :warning:Please use Staging for testing purposes ***only***.
   * ***Staging credentials***: this are your Staging environment keys, you can fetch them by logging into the [STG Merchant Panel](https://merchants-stg.directa24.com/), and going into **Settings** >**API Access** > **Deposit credentials** \
     :information\_source:*Make sure to whitelist the IPs in which your WooCommerce site is hosted. You can do so by adding the IPs in the list that is below the credentials.*
   * ***Production credentials***: instructions are the same as for *Staging credentials* but in our production environment.
   * ***Configuration***: finally in this section you get to choose if you want to enable/disable the plugins and the auto-complete functionality.

4. Lastly, make sure to **Save changes** and yo are good to start using D24's plugin! :rocket:

<figure><img src="/files/RCbeecEzjD5kAvsdK7wu" alt=""><figcaption></figcaption></figure>


# Create deposits


# Credit cards

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

## Processing card payments

This documentation is structured to guide you through our payment system step-by-step. \
We will begin with the most **basic deposit** flows and then introduce additional features as separate components.\
This approach ensures you can build a solid foundation first and add more complex functionality only as it is needed.
{% endcolumn %}

{% column %}

<figure><img src="/files/Lk6imDw7SI3UEppRmRof" alt=""><figcaption></figcaption></figure>

{% endcolumn %}
{% endcolumns %}

### Basic deposit

All payment integrations begin with a Basic deposit. This guide covers a simple, one-time charge, which is the core of our payment processing system.

We recommend completing this guide first, as all other features are built on top of this primary transaction.

### Add features to your integration

After you are familiar with the basic deposit, you can incorporate additional capabilities into your integration.&#x20;

Each feature is explained in its own dedicated guide.

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>3DS</strong></td><td><a href="/files/YBjLbaPJKS5Q1qUtGdjO">/files/YBjLbaPJKS5Q1qUtGdjO</a></td><td><a href="/pages/9764OJAf1USkcfAXeZ2f">/pages/9764OJAf1USkcfAXeZ2f</a></td></tr><tr><td align="center"><strong>Installments</strong></td><td><a href="/files/DKJYuzfhrCRo3D0k8yJb">/files/DKJYuzfhrCRo3D0k8yJb</a></td><td><a href="/pages/8gAoMoveLCikW6QHhYqn">/pages/8gAoMoveLCikW6QHhYqn</a></td></tr><tr><td align="center"><strong>Card-on-file</strong></td><td><a href="/files/LrWm4oZH8LcmrB5fAUrV">/files/LrWm4oZH8LcmrB5fAUrV</a></td><td><a href="/pages/WeqM6sxKrDXzBBjdSmvC">/pages/WeqM6sxKrDXzBBjdSmvC</a></td></tr><tr><td align="center"><strong>Subscriptions</strong></td><td><a href="/files/wqlNCcOP1JCLM7Qx3ZVO">/files/wqlNCcOP1JCLM7Qx3ZVO</a></td><td><a href="/pages/bKaJjefhQmDQd5sTP7KP">/pages/bKaJjefhQmDQd5sTP7KP</a></td></tr></tbody></table>


# Basic deposits


# Server2Server

### **Deposit with card information (Server2Server)**

{% stepper %}
{% step %}

#### Create a deposit request to our PCI endpoint

The deposit request must include the **`credit_card[]`** object containing all the card details.

Note that the default response of this endpoint in synchronous.

{% tabs %}
{% tab title="Example request" %}

<pre class="language-javascript"><code class="lang-javascript">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith"
    },
<strong>    "credit_card": {
</strong><strong>      "cvv": "123",
</strong><strong>      "number": "4111111111111111",
</strong><strong>      "expiration_month": "10",
</strong><strong>      "expiration_year": "25",
</strong><strong>      "holder_name": "JOHN SMITH"
</strong>    },
    "client_ip": "123.123.123.123"
  }'
</code></pre>

{% endtab %}

{% tab title="Example response" %}

```json
{
  "deposit_id": 300604089,
  "user_id": "80000001",
  "merchant_invoice_id": "800000001",
  "payment_info": {
    "type": "CREDIT_CARD",
    "result": "SUCCESS",
    "payment_method": "VI",
    "payment_method_name": "Visa",
    "amount": 1000,
    "currency": "BRL",
    "created_at": "2025-07-15T12:57:14.936Z"
  }
}
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

#### Retrieve the Deposit final status

Even though that this endpoint is mostly synchronous, we may eventually send webhooks to notify changes within a deposit.&#x20;

These webhook notifications contain the **`deposit_id`** for you to retrieve the status.

```json
{
  "deposit_id": 300604089
}
```

{% hint style="info" %}

### For more information on this point visit <a href="/pages/4J1W8bBUsf3m6C60jdyS" class="button primary" data-icon="message-medical">Notifications</a>.

{% endhint %}
{% endstep %}
{% endstepper %}


# Fragments Lite

### **Deposit with Fragments Lite**

{% stepper %}
{% step %}

#### Create a deposit request to our PCI endpoint

The deposit request must include the **`card_token[]`** object containing all the card details.

Note that the default response of this endpoint in synchronous.

{% tabs %}
{% tab title="Example request" %}

<pre class="language-sh"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith"
    },
<strong>    "card_token": "C4RD_T0K3N_G3N3R4T3D_W1TH_FR4GM3N7S_L1T3",
</strong>    "client_ip": "123.123.123.123"
  }'
</code></pre>

{% endtab %}

{% tab title="Example response" %}

```json
{
  "deposit_id": 300604089,
  "user_id": "80000001",
  "merchant_invoice_id": "test766106146",
  "payment_info": {
    "type": "CREDIT_CARD",
    "result": "SUCCESS",
    "payment_method": "VI",
    "payment_method_name": "Visa",
    "amount": 505.95,
    "currency": "MXN",
    "created_at": "2021-02-05T22:10:45Z"
  }
}
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

#### Retrieve the Deposit final status

Even though that this endpoint is mostly synchronous, we may eventually send webhooks to notify changes within a deposit.&#x20;

These webhook notifications contain the **`deposit_id`** for you to retrieve the status.

```json
{
  "deposit_id": 300604089
}
```

{% hint style="info" %}

### For more information on this point visit <a href="/pages/4J1W8bBUsf3m6C60jdyS" class="button primary" data-icon="message-medical">Notifications</a>.

{% endhint %}
{% endstep %}
{% endstepper %}


# Fragments all-in-one

### Deposits with Fragments all-in-one

{% stepper %}
{% step %}

#### Create a deposit request

You will need to create a deposit request to our OneShot API, taking into care the following considerations:

* [x] sending all the mandatory payer information
* [x] indicating that is a credit/debit card payment by sending `CC` as `payment_method`&#x20;
* [x] send the parameter **`token_requested`** with value **`true` .**

{% tabs %}
{% tab title="Example Request" %}

<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 '{
    "invoice_id" : "1000000001",
    "amount": "1000",
    "country": "MX",
    "currency": "MXN",
    "payer": {
        "id": "11",
        "document": "CURP4321TEST",
        "first_name": "Ricardo",
        "last_name": "Carlos",
        "email": "juanCarlos@hotmail.com"
    },
<strong>    "payment_method": "CC",
</strong><strong>    "token_requested":true
</strong>    "client_ip": "123.123.123.123",
    "back_url": "https://www.mercahnt.com/deposit_cancelled",
    "success_url": "https://www.merchant.com/deposit_completed",
    "error_url": "https://www.merchant.com/deposit_error",
    "notification_url": "https://www.pandablue.com/pandablue/notify"
}'
</code></pre>

{% endtab %}

{% tab title="Example response" %}

<pre class="language-json"><code class="lang-json">{
    "checkout_type": "ONE_SHOT",
    "redirect_url": "https://pay-stg.depositcheckout.com/validate/W9H0knNO7iu14F2nMe1Dtv6eMKJw2yvx",
    "deposit_id": 301623200,
    "user_id": "11",
    "merchant_invoice_id": "1000000001",
    "payment_info": {
        "type": "CREDIT_CARD",
        "payment_method": "CC",
        "payment_method_name": "Generic CC payment method",
        "amount": 1000.0,
        "currency": "MXN",
        "expiration_date": "2025-07-17 18:02:28",
        "created_at": "2025-07-17 17:42:26"
    },
<strong>    "checkout_token": "W9H0knNO7iu14F2nMe1Dtv6eMKJw2yvx"
</strong>}
</code></pre>

{% endtab %}
{% endtabs %}

In the response you will receive the **`checkout_token`** associated to the transaction that was just generated.
{% endstep %}

{% step %}

#### Instantiate Fragments SDK

At this point you have to instantiate Fragments, which you already have installed in your site.\
For more information about instantiation go to this [link](/deposits/solutions/fragments-sdk/fragments-all-in-one#build-the-solution).\
Remember to retrieve your **`publicKey`** from the Merchant Panel, and define the proper **`environment`**.
{% endstep %}

{% step %}

#### Render Fragments all-in-one component

Now you can display the **CreditCardForm**.\
The component requires a few key properties to function:

* `authToken`: A unique token generated from your backend by the Deposit Creation Endpoint.
* `country`: The two-letter country iso-code (e.g., "BR").
* Callback functions to handle different outcomes of the payment process.

**Basic example**

Here is a simple example of how to render the form:

```html
<CreditCardForm
  authToken="YOUR_CHECKOUT_TOKEN"
  country="MX"
  onSuccess={handlePaymentSuccess}
  onError={handlePaymentError}
  onBack={handleGoBack}
  onTokenGenerationError={handleTokenError}
  messages={handleMessages}
/>
```

And Fragments will be displayed.&#x20;

<figure><img src="/files/TQ7sT5i8w0F6ae8J5jWX" alt="" width="375"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Retrieve the Deposit final status

Everytime that the deposit changes it's status, you will receive a webhook notification with the **`deposit_id`** for you to retrieve the status.

```json
{
  "deposit_id": 301623200
}
```

Once the user clicks in the Complete button, we will process the transaction and you will receive such webhook.

{% hint style="info" %}

### For more information on this point visit <a href="/pages/4J1W8bBUsf3m6C60jdyS" class="button primary" data-icon="message-medical">Notifications</a>.

{% endhint %}
{% endstep %}
{% endstepper %}


# OneShot

### Deposit with OneShot redirect

{% stepper %}
{% step %}

#### Create a deposit request

You will need to create a deposit request to our OneShot API, taking into care the following considerations:

* [x] sending all the mandatory payer information
* [x] indicating that is a credit/debit card payment by sending **`CC`** as `payment_method`&#x20;

{% tabs %}
{% tab title="Example request" %}

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

{% endtab %}

{% tab title="Example response" %}

<pre class="language-json"><code class="lang-json">{
    "checkout_type": "ONE_SHOT",
<strong>    "redirect_url": "https://pay-stg.depositcheckout.com/validate/W9H0knNO7iu14F2nMe1Dtv6eMKJw2yvx",
</strong>    "deposit_id": 301623200,
    "user_id": "11",
    "merchant_invoice_id": "1000000001",
    "payment_info": {
        "type": "CREDIT_CARD",
        "payment_method": "CC",
        "payment_method_name": "Generic CC payment method",
        "amount": 1000.0,
        "currency": "MXN",
        "expiration_date": "2025-07-17 18:02:28",
        "created_at": "2025-07-17 17:42:26"
    }
}
</code></pre>

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

#### Open the `redirect_url` in a new tab

In the response you will receive the redirect\_url where the user should be sent in order to visualize the credit card checkout hosted on our systems.

{% hint style="success" %}

### Note that you can include your brand logo in our checkout!

You can either send it via API or define it statically within the Merchant Panel.
{% endhint %}

<figure><img src="/files/4NgLGPyJhAzzfh1my7C8" alt="" width="188"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Retrieve the Deposit final status

Everytime that the deposit changes it's status, you will receive a webhook notification with the **`deposit_id`** for you to retrieve the status.

```json
{
  "deposit_id": 301623200
}
```

{% hint style="info" %}

### For more information on this point visit <a href="/pages/4J1W8bBUsf3m6C60jdyS" class="button primary" data-icon="message-medical">Notifications</a>.

{% endhint %}
{% endstep %}
{% endstepper %}


# 3DS

<details>

<summary>3DS in Server2Server solution</summary>

The Deposits that are subject to the 3DS Authentication flow, will receive as Response of the PCI Deposit Endpoint a **`payment_info.result`** with value **`PENDING_AUTHENTICATION`**.

{% hint style="success" %}
Deposits that are **not** subject to 3DS Authentication are synchronically approved or rejected with **`payment_info.result`**  with values **`SUCCESS`** and **`REJECTED`**.
{% endhint %}

#### &#x20;   Example response

<pre class="language-json" data-title="Response in the Server2Server integration"><code class="lang-json">{ 
  "deposit_id": 300854027,
  "merchant_invoice_id": "postmanTest488131304", 
  "payment_info": { 
    "type": "CREDIT_CARD", 
<strong>    "result": "PENDING_AUTHENTICATION", 
</strong><strong>    "reason": "Require 3DS Authentication", 
</strong><strong>    "reason_code": "PENDING_AUTHENTICATION", 
</strong>    "payment_method": "VI", 
    "payment_method_name": "Visa", 
    "created_at": "2023-10-19 16:57:55", 
<strong>    "authentication_url": "https://checkout.cc-stg.pandablue.net/authentication/MM15BgQjHVjGEpQLCYZQ1dBoMOcJuDAc" 
</strong>  } 
}
</code></pre>

### &#x20; `authentication_url`&#x20;

This parameter contains a URL with the 3DS Authentication challenge to be displayed to the end-user. In order to do so, you can:

#### &#x20;     Open the `authentication_url` within an iframe

The challenge can be displayed within an iframe in the case you want to keep the user on the same webpage.

The iframe can be opened with a JavaScript method `EventListener` that will communicate whenever the iframe can be closed and the result of the transaction.

&#x20;          **JavaScript** **Method**

```javascript
window.addEventListener('message', handler);
```

&#x20;Additionally the EventListener will include whether the transaction was successful or error within the `payment_result` object.

```json
{  "payment_result": "success"}
```

```json
{  "payment_result": "error"}
```

#### &#x20;     Or, you can redirect the user into a new tab

The `authentication_url` can also be opened in a new tab to the end-user. In case of opting for this flow, please make sure of including the following parameters in the Deposit request:

<table><thead><tr><th width="153.60546875">Parameter</th><th width="92.85286458333331">Format</th><th>Description</th></tr></thead><tbody><tr><td><code>back_url</code></td><td>URL</td><td>URL to redirect the user in case of willing to withdraw from the payment flow.</td></tr><tr><td><code>success_url</code></td><td>URL</td><td>URL to redirect the user after the Deposit flow came to an end.</td></tr><tr><td><code>error_url</code></td><td>URL</td><td>URL to redirect the user in case that an error occur.</td></tr></tbody></table>

### Webhooks

As you may notice, if a 3DS challenge is needed on your Server2Server integration, the response **will not be synchronous**. \
Therefore, after the authentication and payment processing, a webhook notification will be sent in order to check the deposit and retrieve the status of the transaction.

:information\_source: For more information regarding webhooks please go to the [API Reference](broken://spaces/VNE8t2FopKfzgQzTjlBb/pages/282oVrSIyWM7W7ecKR7T).

</details>

<details>

<summary>Third party 3DS Server2Server</summary>

It is possible to create a deposit submitting information from a third-party 3DS provider.

{% hint style="success" %}
Please check regional availability with your account manager as not all countries may scope this functionality :earth\_americas:
{% endhint %}

In order to do so, you need to include the **`three_domain_secure[]`** Object  in the Server2Server integration request.

### &#x20; `three_domain_secure[]` Object

```json
"three_domain_secure":{
      "cavv": "3q4+33t+ur5erb7vyv53vv\/\/\/\/9=",
      "eci": "05",
      "transaction_id": "HMUzFWRzOTcwOKG7PzY3Rw==",
      "specification_version": "2.0.0"
      }
```

<table><thead><tr><th width="228.36328125">Field</th><th width="102.109375">Format</th><th>Description</th></tr></thead><tbody><tr><td><code>cavv</code></td><td>String</td><td>The cardholder authentication value for the 3D Secure authentication session. The returned value is a base64-encoded 20-byte array.</td></tr><tr><td><code>eci</code></td><td>String</td><td>The electronic commerce indicator.</td></tr><tr><td><code>transaction_id</code></td><td>String</td><td>The transaction identifier assigned by the 3DS Server for v2 authentication (36 characters, commonly in UUID format).</td></tr><tr><td><code>specification_version</code></td><td>String</td><td>The 3DS Authentication version.<br>Accepted from <code>2.0.0</code> onwards.</td></tr></tbody></table>

#### Allowed `eci` codes for Third Party 3DS flow, are:&#x20;

* 01 and 02 for Mastercard&#x20;
* 05 and 06 for Visa and Amex.

#### &#x20;   Example PCI Deposit Creation request with third-party 3DS&#x20;

```json
{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
    "payer": {
        "id": "11111",
        "document": "84932568207",
        "document_type": "CPF",
        "email": "johnSmith12@hotmail.com",
        "first_name": "John",
        "last_name": "Smith",
        "phone": "+233852662222",
        "birth_date": "19880910",
        "address": {
            "street": "Calle 13",
            "city": "bahia",
            "state": "SP",
            "zip_code": "12345-678"
        }
    },
    "credit_card": {
        "cvv": "123",
        "card_number": "4111111111111111",
        "expiration_month": "10",
        "expiration_year": "25",
        "holder_name": "JOHN SMITH"
    },
    "three_domain_secure":{
      "cavv": "AJkBARglcgAAAAPohABHdQAAAAA=",
      "eci": "05",
      "transaction_id": "7e76d057-100a-4d0d-9683-5eb0ce0ee3a4",
      "specification_version": "2.0.0"
      },
    "description": "Test transaction",
    "client_ip": "123.123.123.123",
    "device_id": "knakvuejffkiebyab",
    "fee_on_payer": false
}
```

</details>

<details>

<summary>Fragments Lite</summary>

Our Fragments Lite integration can scope both scenarios described above:

1. Using PandaBlue's 3DS challenge.
2. You can also send the output of your 3DS MPI (`three_domain_secure[]` object)

#### Using PandaBlue's 3DS challenge

The only difference with the Server2Server 3DS flow is that **instead** of sending the `credit_card[]` object, you will be sending the **`card_token`** generated with the SDK.

From there, the flow is the same: you will receive the **`PENDING_AUTHENTICATION`** response with the **`authentication_url`** containing the 3DS challenge.

#### Using a third party 3DS

The only difference with the Server2Server 3DS flow is that instead of sending the `credit_card[]` object, you will be sending the **`card_token`** generated with the SDK.

In the request you should also include the **`three_domain_secure[]`** object.

</details>

<details>

<summary>Fragments all-in-one</summary>

The Fragments all-in-one integration will take care of handling the 3DS Challenge within your website.\
You won't need to make any adjustments on those terms.

</details>

<details>

<summary>OneShot redirect</summary>

As the OneShot credit card integration consist in you redirecting the user to our card form checkout, we will handle the challenge experience from there.\
No changes from your end are required.

</details>


# Installments

{% hint style="success" %}
Please check-in with your Sales contact for the corresponding configuration and eligibility of this functionality.
{% endhint %}

<details>

<summary>Server2Server</summary>

To create a deposit with installments through our Server2Server solution, the parameter **`installments`** should be sent in the request with a valid amount of installments.

The deposit will be synchronously processed, and charged with installments to the cardholder with the amount detailed in the **`installments`** parameter.

<pre class="language-javascript" data-title="Example request"><code class="lang-javascript">curl -L \
  --request POST \
  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
<strong>    "installments":3,
</strong>    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith",
    },
    "credit_card": {
      "cvv": "123",
      "card_number": "4111111111111111",
      "expiration_month": "10",
      "expiration_year": "25",
      "holder_name": "JOHN SMITH"
    }

  }'
</code></pre>

</details>

<details>

<summary>Fragments Lite</summary>

Fragments Lite is similar to our Server2Server solution in regards of charging deposits with Installments.\
Remember, that in this solution you should send the **`card_token`** instead of the `credit_card[]` object alongside with **`installments`** parameter.

<pre class="language-json" data-title="Example request"><code class="lang-json">curl -L \
  --request POST \
  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
<strong>    "installments":3,
</strong>    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith",
    },
<strong>   "card_token": "C4RD_T0K3N_G3N3R4T3D_W1TH_FR4GM3N7S_L1T3"
</strong>
  }'
</code></pre>

</details>

<details>

<summary>Fragments all-in-one</summary>

</details>

<details>

<summary>OneShot</summary>

</details>


# Card-on-file

<details>

<summary>Server2Server with additional card-on-file integration </summary>

PCI Compliant merchants willing to stored their client´s cards on PandaBlue´s vault,  have to generate a request to our API for storing cards.

> Visit the API Reference for more information on card-on-file API. <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/aDsEtAKUsOPWZhXaQt9f" class="button primary">Saving card</a>\
> Card-on-file API allows merchants to create, retrieve and delete card tokens. form PandaBlue Vault.

<pre class="language-sh" data-title="Example request to card-on-file API"><code class="lang-sh"> curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/tokenization' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-22T19:04:34.730Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
<strong>    "credit_card": {
</strong><strong>      "holder_name": "Luis Perez",
</strong><strong>      "expiration_month": 10,
</strong><strong>      "expiration_year": 2028,
</strong><strong>      "number": "4111111111111111",
</strong><strong>      "cvv": "123"
</strong>    },
    "payer": {
      "country": "BR",
      "first_name": "John",
      "last_name": "Smith",
      "document_type": "CPF",
      "document": "84932568207"
    },
<strong>    "micro_deposit_enabled": false
</strong>  }'
</code></pre>

{% hint style="info" %}

#### `micro_deposit_enabled` parameter

This parameter allows you to create a small amount transaction on the card (which is immediately refunded) prior storing it. This can be a done as a mechanism for only storing valid cards.\
Note that if the microdeposit fails, the card won't be stored.

{% endhint %}

<pre class="language-json" data-title="Example response of card-on-file API"><code class="lang-json">{
  "holder_name": "Luis Perez",
  "expiration_month": 10,
  "expiration_year": 2028,
  "last_four_digits": "1111",
<strong>  "card_identifier": "CID-2210908e-6d8e-468d-9eb3-d551e8b541a0"
</strong>}
</code></pre>

In the response you will receive the **`card_identifier`** parameter, which later can be used for creating transactions on that client's card.

<pre class="language-sh" data-title="Example request of Server2Server with card_identifier"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith"
    },
<strong>    "card_identifier": "CID-2210908e-6d8e-468d-9eb3-d551e8b541a0",
</strong>    "client_ip": "123.123.123.123"
  }'
</code></pre>

</details>

<details>

<summary>Server2Server saving the card used in the deposit</summary>

Merchants using our Server2Server solution can opt to save the card used within the deposit request.

In order to do so, they can send the parameter **`tokenize_card`** with value **`true`** in the deposit request.

<pre class="language-sh" data-title="Server2Server example request with tokenize_card"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith"
    },
<strong>    "credit_card": {
</strong><strong>      "cvv": "123",
</strong><strong>      "number": "4111111111111111",
</strong><strong>      "expiration_month": "10",
</strong><strong>      "expiration_year": "25",
</strong><strong>      "holder_name": "JOHN SMITH"
</strong><strong>    },
</strong><strong>    "tokenize_card":true,
</strong>    "client_ip": "123.123.123.123"
  }'
</code></pre>

In the synchronous response you will receive the card\_identifier generated for that card.

<pre class="language-json" data-title="Example response with the card_identifier"><code class="lang-json">{
  "deposit_id": 300604089,
  "user_id": "80000001",
  "merchant_invoice_id": "800000001",
  "payment_info": {
    "type": "CREDIT_CARD",
    "result": "SUCCESS",
    "payment_method": "VI",
    "payment_method_name": "Visa",
    "amount": 1000,
    "currency": "BRL",
    "created_at": "2025-07-15T12:57:14.936Z"
  },
<strong>  "card_identifier": "d0d9207b-395e-4742-95bc-66d4caf1037a"
</strong>}
</code></pre>

<pre class="language-sh" data-title="Example request of Server2Server with card_identifier"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith"
    },
<strong>    "card_identifier": "CID-2210908e-6d8e-468d-9eb3-d551e8b541a0",
</strong>    "client_ip": "123.123.123.123"
  }'
</code></pre>

</details>

<details>

<summary>Fragments Lite</summary>

Merchants using our Fragments Lite solution can opt to save the card used within the deposit request.

In order to do so, they can send the parameter **`tokenize_card`** with value **`true`** in the deposit request.\
In the response they will receive the **`card_identifier`** which can be used for creating subsequent charges on that user's card.

<pre class="language-sh" data-title="Example request Fragments Lite with tokenize_card"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith"
    },
<strong>    "card_token": "C4RD_T0K3N_G3N3R4T3D_W1TH_FR4GM3N7S_L1T3",
</strong><strong>    "tokenize_card": true,
</strong>    "client_ip": "123.123.123.123"
  }'
</code></pre>

<pre class="language-json" data-title="Example response with the card_identifier"><code class="lang-json">{
  "deposit_id": 300604089,
  "user_id": "80000001",
  "merchant_invoice_id": "800000001",
  "payment_info": {
    "type": "CREDIT_CARD",
    "result": "SUCCESS",
    "payment_method": "VI",
    "payment_method_name": "Visa",
    "amount": 1000,
    "currency": "BRL",
    "created_at": "2025-07-15T12:57:14.936Z"
  },
<strong>  "card_identifier": "d0d9207b-395e-4742-95bc-66d4caf1037a"
</strong>}
</code></pre>

<pre class="language-sh" data-title="Example request of Fragments Lite with card_identifier"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith"
    },
<strong>    "card_identifier": "CID-2210908e-6d8e-468d-9eb3-d551e8b541a0",
</strong>    "client_ip": "123.123.123.123"
  }'
</code></pre>

</details>

<details>

<summary>Fragments all-in-one</summary>

To implement card-on-file with the Fragments all-in-one, follow the same client-side flow as described for the **OneShot solution below**. The distinction for card-on-file is handled on the backend.

</details>

<details>

<summary>OneShot</summary>

Merchants willing to use our OneShot solution can also make use of card-on-file for generating deposits on their clients' cards.

The parameter **`tokenize_card`** should be sent in the deposit request as **`true`**.

<pre class="language-sh" data-title="Example OneShot request"><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 '{
    "invoice_id" : "1000000001",
    "amount": "1000",
    "country": "MX",
    "currency": "MXN",
    "payer": {
        "id": "11",
        "document": "CURP4321TEST",
        "first_name": "Ricardo",
        "last_name": "Carlos",
        "email": "juanCarlos@hotmail.com"
    },
<strong>    "payment_method": "CC",
</strong><strong>    "tokenize_card":true,
</strong>    "client_ip": "123.123.123.123",
    "back_url": "https://www.mercahnt.com/deposit_cancelled",
    "success_url": "https://www.merchant.com/deposit_completed",
    "error_url": "https://www.merchant.com/deposit_error",
    "notification_url": "https://www.pandablue.com/pandablue/notify"
    "logo": "https://www.merchant.com/merchant-logo.png",
}'
</code></pre>

After the deposit is completed by the user you will receive a webhook notifying that the deposit status changed.\
When retrieving the deposit status you will obtain the **`card_identifier`**.&#x20;

<pre class="language-json" data-title="Response of the status retrieve endpoint"><code class="lang-json">{
  "user_id": "11",
  "deposit_id": 300004285,
  "invoice_id": "1000000001",
  "country": "MX",
  "currency": "MXN",
  "local_amount": 1000,
  "usd_amount": 53.22,
  "bonus_amount": 00.00,
  "bonus_relative": false,
  "payment_method": "VI",
  "payment_type": "CREDIT_CARD",
  "status": "COMPLETED",
  "payer": {
    "document": "CURP4321TEST",
    "document_type": "CPF",
    "email": "juanCarlos@hotmail.com",
    "first_name": "Ricardo",
    "last_name": "Carlos"
  },
  "fee_amount": 2.5,
  "fee_currency": "USD",
  "refunded": false,
  "current_payer_verification": "UNMATCHED",
  "card_detail": {
    "card_holder": "Ricardo Carlos",
    "brand": "Visa",
    "masked_card": "1234 56** **** 6789",
    "expiration": "2028-12",
    "card_type": "DEBIT",
    "transaction_result": "Transaction Approved",
    "authorization_code": "000000",
<strong>    "card_identifier": "d0d9207b-395e-4742-95bc-66d4caf1037a"
</strong>  }
}
</code></pre>

The **`card_identifier`** :

* is the token associated to the card that the user selected to pay.
* it can be used unlimited times, until the card expires.

For creating deposits with the **`card_identifier`**, you just need to include it in the deposit request.

<pre class="language-sh" data-title="Example request OneShot with card_identifier"><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 '{
    "invoice_id" : "1000000001",
    "amount": "1000",
    "country": "MX",
    "currency": "MXN",
    "payer": {
        "id": "11",
        "document": "CURP4321TEST",
        "first_name": "Ricardo",
        "last_name": "Carlos",
        "email": "juanCarlos@hotmail.com"
    },
    "payment_method": "CC",
<strong>    "card_identifier": "CID-2210908e-6d8e-468d-9eb3-d551e8b541a0",
</strong>    "client_ip": "123.123.123.123",
    "back_url": "https://www.mercahnt.com/deposit_cancelled",
    "success_url": "https://www.merchant.com/deposit_completed",
    "error_url": "https://www.merchant.com/deposit_error",
    "notification_url": "https://www.pandablue.com/pandablue/notify"
    "logo": "https://www.merchant.com/merchant-logo.png",
}'
</code></pre>

As a response you will directly receive the final status of the payment. You can also retrieve the additional details by using the deposit status endpoint.

{% code title="Example response OneShot with card\_identifier" %}

```json
{
  "deposit_id": 1324874939,
  "payment_status": "APPROVED",
  "success": true
}
```

{% endcode %}

</details>


# Subscriptions

<details>

<summary>Server2Server</summary>

{% hint style="success" %}
The endpoints described in this solution are restricted for usage of PCI compliant merchants that can securely handle credit card information.
{% endhint %}

#### Subscription creation

The Server2Server solution can handle subscriptions, the integration should scope the endpoint **`v3/subscriptions`**  and sending the subscription details within the **`subscription[]`** object such as:

* **`start_date`** for when the charges should start (e.g.: 2025-07-23)
  * Note that when the `start_date` is within the same day that the subscription is being created, the first charge will be created immediately.
* **`plan`** indicating the frequency with which the charges shoud occur (e.g.: **`MONTHLY`**)
* **`plan_unit`**" indicating how many times the **`plan`** should be charged (e.g: **`3`**)
* **`auto_renewal`** indicating if the subscription should autorenew when it finishes.

<pre class="language-sh"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/subscriptions' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-23T13:15:37.549Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "INV123456",
    "amount": 70,
    "currency": "BRL",
    "country": "BR",
    "payer": {
      "id": "PAYER123",
      "document": 123456789,
      "document_type": "CPF",
      "email": "robertocarlos@example.com",
      "first_name": "Roberto",
      "last_name": "Carlos"
    },
    "description": "Premium Subscription",
<strong>    "subscription": {
</strong><strong>      "start_date": "2025-07-23",
</strong><strong>      "plan": "MONTHLY",
</strong><strong>      "plan_unit": 3,
</strong><strong>      "auto_renewal": false
</strong><strong>    },
</strong><strong>    "credit_card": {
</strong><strong>      "cvv": "123",
</strong><strong>      "card_number": "4111111111111111",
</strong><strong>      "expiration_month": "12",
</strong><strong>      "expiration_year": "25",
</strong><strong>      "holder_name": "John Doe"
</strong><strong>    },
</strong>    "client_ip": "192.168.1.1",
    "back_url": "https://example.com/back",
    "success_url": "https://example.com/success",
    "error_url": "https://example.com/error",
    "notification_url": "https://example.com/notify"
  }'
</code></pre>

You will receive the identifier of the created subscription (**`subscription_id`**) as a response.

{% code title="Response of the Server2Server subscription endpoint" %}

```json
{
  "subscription_id": 358
}
```

{% endcode %}

We will take care of doing all the subsequent charges based on the **`subscription[]`** information provided.

You will receive webhook notifications each time that a deposit was charged in concept of a subscription, in order for you to retrieve the status and matching it to the **`subscription_id` :**&#x20;

{% code title="Example webhook notification" %}

```json
{
    "deposit_id": 3000000001
}
```

{% endcode %}

> For more information regarding webhooks, visit the [API Reference](/deposits/create-deposits/notifications).

#### Retrieve the deposit status

When you retrieve the status of a deposit, you will know to which **`subscription_id`** correspond.

<pre class="language-json" data-title="Example response deposit status retrieve with subscription_id"><code class="lang-json">{
  "user_id": "11",
  "deposit_id": 3000000001,
<strong>  "subscription_id":358,
</strong>  "invoice_id": "989409592",
  "country": "BR",
  "currency": "BRL",
  "local_amount": 70,
  "usd_amount": 12.60,
  "bonus_amount": 00.00,
  "bonus_relative": false,
  "payment_method": "VI",
  "payment_type": "CREDIT_CARD",
<strong>  "status": "COMPLETED",
</strong>  "payer": {
    "id": "PAYER123",
    "document": 123456789,
    "document_type": "CPF",
    "email": "robertocarlos@example.com",
    "first_name": "Roberto",
    "last_name": "Carlos"
  },
  "fee_amount": 2.5,
  "fee_currency": "USD",
  "refunded": false,
  "current_payer_verification": "UNMATCHED",
  "card_detail": {
    "card_holder": "Roberto Carlos",
    "brand": "Visa",
    "masked_card": "4111 11** **** 1111",
    "expiration": "2025-12",
    "card_type": "CREDIT",
    "transaction_result": "Transaction Approved"
  }
}
</code></pre>

> For more information regarding deposit status retrieval, visit the [API Reference](https://docs.d24.com/api-reference/deposits-api/manage-payments/get-deposit-status).

#### Retrieve the Subscription details

You can then retrieve the status of the subscription with the **`subscription_id`** for further details.

```json
{
  "id": 219,
  "status": "PENDING",
  "start_date": "2025-07-23",
  "end_date": "2025-10-23",
  "last_renovation_date": null,
  "creation_date": "2025-07-23T13:15:37.54",
  "subscription_plan": "MONTHLY",
  "plan_unit": 3,
  "amount": 70,
  "auto_renewal": false,
  "last_modified_date": "2025-07-23T13:15:37.54",
  "renewals": 0,
  "cancellation_date": null,
  "currency": "BRL",
  "last_charge_date": "2020-10-03",
  "payment_method": "VI",
  "invoice_id": "INV123456",
  "error_url": "https://example.com/error",
  "success_url": "https://example.com/success",
  "back_url": "https://example.com/back",
  "description": "Premium Subscription",
  "country": "BR",
  "deposits": [
    {
      "deposit_id": "3000000001",
      "status": "COMPLETED"
    }
  ]
}
```

> For more information regarding the Subscription details endpoint, visit the [API Reference](https://docs.d24.com/api-reference/deposits-api/manage-subscriptions/get-a-subscription).

#### Reattempts logic

Note that if by any means, a deposit within a subscription fails, in the spirit of maximizing the success scenario we will reattempt the transaction **twice**.\
One attempt each subsequent day will be performed.

</details>

<details>

<summary>Server2Server with an external billing engine</summary>

{% hint style="success" %}
The endpoints described in this solution are restricted for usage of PCI compliant merchants that can securely handle credit card information.
{% endhint %}

#### Tokenize the customer's card

Our card-on-file API lets you securely store customer payment information and charge recurring payments without handling sensitive card data after the initial tokenization.

1. Collect the customer's card information securely via your PCI-compliant form
2. Call our [card-on-file API](https://docs.d24.com/api-reference/deposits-api/saving-cards-card-on-file) to store the card
3. Receive a **`card_identifier`** token that represents the stored card

<pre class="language-json" data-title="Example response of card-on-file API"><code class="lang-json">{
  "holder_name": "Luis Perez",
  "expiration_month": 10,
  "expiration_year": 2028,
  "last_four_digits": "1111",
<strong>  "card_identifier": "CID-2210908e-6d8e-468d-9eb3-d551e8b541a0"
</strong>}
</code></pre>

#### Create a subscription

1. Associate the **`card_identifier`** with your internal subscription record
2. Generate a unique **`external_subscription_id`** in your system
3. Store both identifiers for future transactions

#### Process recurring charges

When it's time to charge the customer:

1. Call our Server2Server deposit endpoint
2. Instead of sending full card details, send:
   * The **`card_identifier`** token
   * Your **`external_subscription_id`**

<pre class="language-sh" data-title="Example request Server2Server with an external billing engine" data-overflow="wrap"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith"
    },
<strong>    "card_identifier": "CID-2210908e-6d8e-468d-9eb3-d551e8b541a0",
</strong><strong>     "external_subscription_id": "ABC1234",
</strong>    "client_ip": "123.123.123.123"
  }'
</code></pre>

{% hint style="info" %}

#### Subscription endpoints

Note that as this solution handles all the subscription on the merchant's end, no subscription entity is created on our end. Therefore the subscription endpoints should be used.
{% endhint %}

</details>

<details>

<summary>OneShot with card-on-file</summary>

#### Subscription creation

The OneShot solution can create subscriptions in cards that were previously stored on file.

{% hint style="success" %}
Note that this subscription flow has a pre-requisite to have a card stored on file.\
Please visit [Card-on-file](/deposits/create-deposits/credit-cards/card-on-file) section to explore the ways in which this can be done.
{% endhint %}

The integration should scope the endpoint **`v3/subscriptions`** , while sending the **`card_identifier`** and the subscription details within the **`subscription[]`** object such as:

* **`start_date`** for when the charges should start (e.g.: 2025-07-23)
  * Note that when the `start_date` is within the same day that the subscription is being created, the first charge will be created immediately.
* **`plan`** indicating the frequency with which the charges shoud occur (e.g.: **`MONTHLY`**)
* **`plan_unit`**" indicating how many times the **`plan`** should be charged (e.g: **`3`**)
* **`auto_renewal`** indicating if the subscription should autorenew when it finishes.

<pre class="language-sh"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://api-stg.pandablue.com/v3/subscriptions' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-23T13:15:37.549Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "INV123456",
    "amount": 70,
    "currency": "BRL",
    "country": "BR",
    "payer": {
      "id": "PAYER123",
      "document": 123456789,
      "document_type": "CPF",
      "email": "robertocarlos@example.com",
      "first_name": "Roberto",
      "last_name": "Carlos"
    },
    "description": "Premium Subscription",
<strong>    "subscription": {
</strong><strong>      "start_date": "2025-07-23",
</strong><strong>      "plan": "MONTHLY",
</strong><strong>      "plan_unit": 3,
</strong><strong>      "auto_renewal": false
</strong><strong>    },
</strong><strong>    
</strong><strong>,
</strong>    "client_ip": "192.168.1.1",
    "back_url": "https://example.com/back",
    "success_url": "https://example.com/success",
    "error_url": "https://example.com/error",
    "notification_url": "https://example.com/notify"
  }'
</code></pre>

You will receive the identifier of the created subscription (**`subscription_id`**) as a response.

{% code title="Response of the Server2Server subscription endpoint" %}

```json
{
  "subscription_id": 358
}
```

{% endcode %}

We will take care of doing all the subsequent charges based on the **`subscription[]`** information provided.

You will receive webhook notifications each time that a deposit was charged in concept of a subscription, in order for you to retrieve the status and matching it to the **`subscription_id` :**&#x20;

{% code title="Example webhook notification" %}

```json
{
    "deposit_id": 3000000001
}
```

{% endcode %}

> For more information regarding webhooks, visit the [API Reference](/deposits/create-deposits/notifications).

#### Retrieve the deposit status

When you retrieve the status of a deposit, you will know to which **`subscription_id`** correspond.

<pre class="language-json" data-title="Example response deposit status retrieve with subscription_id"><code class="lang-json">{
  "user_id": "11",
  "deposit_id": 3000000001,
<strong>  "subscription_id":358,
</strong>  "invoice_id": "989409592",
  "country": "BR",
  "currency": "BRL",
  "local_amount": 70,
  "usd_amount": 12.60,
  "bonus_amount": 00.00,
  "bonus_relative": false,
  "payment_method": "VI",
  "payment_type": "CREDIT_CARD",
<strong>  "status": "COMPLETED",
</strong>  "payer": {
    "id": "PAYER123",
    "document": 123456789,
    "document_type": "CPF",
    "email": "robertocarlos@example.com",
    "first_name": "Roberto",
    "last_name": "Carlos"
  },
  "fee_amount": 2.5,
  "fee_currency": "USD",
  "refunded": false,
  "current_payer_verification": "UNMATCHED",
  "card_detail": {
    "card_holder": "Roberto Carlos",
    "brand": "Visa",
    "masked_card": "4111 11** **** 1111",
    "expiration": "2025-12",
    "card_type": "CREDIT",
    "transaction_result": "Transaction Approved"
  }
}
</code></pre>

> For more information regarding deposit status retrieval, visit the [API Reference](https://docs.d24.com/api-reference/deposits-api/manage-payments/get-deposit-status).

#### Retrieve the Subscription details

You can then retrieve the status of the subscription with the **`subscription_id`** for further details.

<pre class="language-json"><code class="lang-json">{
  "id": 219,
  "status": "PENDING",
  "start_date": "2025-07-23",
  "end_date": "2025-10-23",
  "last_renovation_date": null,
  "creation_date": "2025-07-23T13:15:37.54",
  "subscription_plan": "MONTHLY",
  "plan_unit": 3,
  "amount": 70,
  "auto_renewal": false,
  "last_modified_date": "2025-07-23T13:15:37.54",
  "renewals": 0,
  "cancellation_date": null,
  "currency": "BRL",
  "last_charge_date": "2020-10-03",
  "payment_method": "VI",
  "invoice_id": "INV123456",
  "error_url": "https://example.com/error",
  "success_url": "https://example.com/success",
  "back_url": "https://example.com/back",
  "description": "Premium Subscription",
  "country": "BR",
<strong>  "deposits": [
</strong><strong>    {
</strong><strong>      "deposit_id": "3000000001",
</strong><strong>      "status": "COMPLETED"
</strong><strong>    }
</strong><strong>  ]
</strong>}
</code></pre>

> For more information regarding the Subscription details endpoint, visit the [API Reference](https://docs.d24.com/api-reference/deposits-api/manage-subscriptions/get-a-subscription).

#### Reattempts logic

Note that if by any means, a deposit within a subscription fails, in the spirit of maximizing the success scenario we will reattempt the transaction **twice**.\
One attempt each subsequent day will be performed.

</details>

<details>

<summary>OneShot with redirect</summary>

#### Subscription creation

The OneShot solution can handle subscriptions, the integration should scope the endpoint **`v3/subscriptions`**  and sending the subscription details within the **`subscription[]`** object such as:

* **`start_date`** for when the charges should start (e.g.: 2025-07-23)
  * Note that when the `start_date` is within the same day that the subscription is being created, the first charge will be created immediately.
* **`plan`** indicating the frequency with which the charges shoud occur (e.g.: **`MONTHLY`**)
* **`plan_unit`**" indicating how many times the **`plan`** should be charged (e.g: **`3`**)
* **`auto_renewal`** indicating if the subscription should auto-renew when it finishes.

<pre class="language-sh" data-title="Example request OneShot for Subscriptions"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://api-stg.pandablue.com/v3/subscriptions' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-24T13:44:21.195Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "INV123456",
    "amount": 50,
    "currency": "BRL",
    "country": "BR",
    "payer": {
      "id": "PAYER123",
      "document": 123456789,
      "document_type": "CPF",
      "email": "robertocarlos@example.com",
      "first_name": "Roberto",
      "last_name": "Carlos"
    },
    "description": "Premium Subscription",
<strong>    "subscription": {
</strong><strong>      "start_date": "2025-01-01",
</strong><strong>      "plan": "MONTHLY",
</strong><strong>      "plan_unit": 1,
</strong><strong>      "auto_renewal": false
</strong><strong>    },
</strong>    "client_ip": "192.168.1.1",
    "back_url": "https://example.com/back",
    "success_url": "https://example.com/success",
    "error_url": "https://example.com/error",
    "notification_url": "https://example.com/notify"
  }'
</code></pre>

We will take care of doing all the subsequent charges based on the **`subscription[]`** information provided.

In the response you will receive:

* the **`subscription_id`** &#x20;
* the **`redirect_url`** containing the credit card form for the user to input their card details.

<pre class="language-json" data-title="Example response subscriptions OneShot "><code class="lang-json">{
<strong>  "subscription_id": 358,
</strong><strong>  "redirect_url": "https://checkout.cc-stg.checkoutogate.net/validate/6mIsesbbmvYn2hzAOwuYQSMAYIyISUgl?subscriptionId=513",
</strong>  "expiration_date": "2025-03-06 15:58:02",
  "payment_amount": 50,
  "redirect": true
}
</code></pre>

<figure><img src="/files/0LYkvej1NSV2cQvOl8Hi" alt="" width="166"><figcaption></figcaption></figure>

{% hint style="success" %}
Note that we will perform micro deposit charges to the card prior accepting it as. payment method for the subscription billing.
{% endhint %}

&#x20;Webhook notifications will be sent each time that changes occured within a deposit, such as status changes to completed, in order for you to retrieve the status and matching it to the **`subscription_id` :**&#x20;

{% code title="Example webhook notification" %}

```json
{
    "deposit_id": 3000000001
}
```

{% endcode %}

> For more information regarding webhooks, visit the [API Reference](broken://spaces/VNE8t2FopKfzgQzTjlBb/pages/282oVrSIyWM7W7ecKR7T).

#### Retrieve the deposit status

When you retrieve the status of a deposit, you will know to which **`subscription_id`** correspond.

<pre class="language-json" data-title="Example response deposit status retrieve with subscription_id"><code class="lang-json">{
  "user_id": "11",
<strong>  "deposit_id": 3000000001,
</strong><strong>  "subscription_id":358,
</strong>  "invoice_id": "989409592",
  "country": "BR",
  "currency": "BRL",
  "local_amount": 50,
  "usd_amount": 12.60,
  "bonus_amount": 00.00,
  "bonus_relative": false,
  "payment_method": "VI",
  "payment_type": "CREDIT_CARD",
<strong>  "status": "COMPLETED",
</strong>  "payer": {
    "id": "PAYER123",
    "document": 123456789,
    "document_type": "CPF",
    "email": "robertocarlos@example.com",
    "first_name": "Roberto",
    "last_name": "Carlos"
  },
  "fee_amount": 2.5,
  "fee_currency": "USD",
  "refunded": false,
  "current_payer_verification": "UNMATCHED",
  "card_detail": {
    "card_holder": "Roberto Carlos",
    "brand": "Visa",
    "masked_card": "4111 11** **** 1111",
    "expiration": "2025-12",
    "card_type": "CREDIT",
    "transaction_result": "Transaction Approved"
  }
}
</code></pre>

> For more information regarding deposit status retrieval, visit the [API Reference](https://docs.d24.com/api-reference/deposits-api/manage-payments/get-deposit-status).

#### Retrieve the Subscription details

You can then retrieve the status of the subscription with the **`subscription_id`** for further details.

```json
{
  "id": 219,
  "status": "PENDING",
  "start_date": "2025-07-23",
  "end_date": "2025-10-23",
  "last_renovation_date": null,
  "creation_date": "2025-07-23T13:15:37.54",
  "subscription_plan": "MONTHLY",
  "plan_unit": 3,
  "amount": 70,
  "auto_renewal": false,
  "last_modified_date": "2025-07-23T13:15:37.54",
  "renewals": 0,
  "cancellation_date": null,
  "currency": "BRL",
  "last_charge_date": "2020-10-03",
  "payment_method": "VI",
  "invoice_id": "INV123456",
  "error_url": "https://example.com/error",
  "success_url": "https://example.com/success",
  "back_url": "https://example.com/back",
  "description": "Premium Subscription",
  "country": "BR",
  "deposits": [
    {
      "deposit_id": "3000000001",
      "status": "COMPLETED"
    }
  ]
}
```

> For more information regarding the Subscription details endpoint, visit the [API Reference](https://docs.d24.com/api-reference/deposits-api/manage-subscriptions/get-a-subscription).

#### Reattempts logic

Note that if by any means, a deposit within a subscription fails, in the spirit of maximizing the success scenario we will reattempt the transaction **twice**.\
One attempt each subsequent day will be performed.

</details>


# Authorization and capture


# 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="/spaces/VNE8t2FopKfzgQzTjlBb/pages/z3VIARIvaaLqEvndBdGt" 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](/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="/files/8A7KKH5CriPChELEeavG" 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,iVBORw0KGgoAAAANSUhEUgAAAOQAAADkCAYAAACIV4iNAAAAAklEQVR4AewaftIAAAx3SURBVO3BQa7DVhLAQFLw/a/MybJXDxBk/yiDrrJ/sNZ6hYu11mtcrLVe42Kt9RoXa63XuFhrvcbFWus1LtZar3Gx1nqNi7XWa1ystV7jYq31Ghdrrde4WGu9xsVa6zUu1lqv8eEhlb9UMalMFU+oTBV/SeWk4gmVqWJSmSomlTsqJpU7Kk5UpopJ5S9VPHGx1nqNi7XWa1ystV7jw5dVfJPKHSpTxaQyVXyTylQxqZxUTConKk+o3FFxojKpTBWTylQxqXxTxTepfNPFWus1LtZar3Gx1nqNDz+mckfFN6lMFZPKicoTKneoTBV/qWJSOam4Q2WqmFSmiknlm1TuqPili7XWa1ystV7jYq31Gh/+4yomlanipGJSOamYVO6omFROVE4qJpWpYlI5UTmpmFROKk5Unqj4f3Kx1nqNi7XWa1ystV7jw3+cyi9VTConFZPKpDJVnKicqJyonFRMKlPFpPJvqvh/drHWeo2LtdZrXKy1XuPDj1X8UsWJyhMqU8WJyknFpHJHxR0qd1RMKicVk8qk8oTKVPFNFW9ysdZ6jYu11mtcrLVe48OXqfwllanipGJSmSomlROVqWJSuaNiUjlRmSpOKiaVqeKkYlKZKiaVqWJSmSomlROVqeJE5c0u1lqvcbHWeo2LtdZrfHio4t9UMancUXGHylRxUnFS8UTFX1KZKu5QmSomlanipOKk4r/kYq31Ghdrrde4WGu9xoeHVKaKE5VfqphU7lCZKk5UpopJZaqYVO5QeULlRGWqmFSeqDipmFSeqDhRmSomlTsqnrhYa73GxVrrNS7WWq9h/+ABlZOKO1SmikllqphUpooTlaliUjmpuENlqphUTipOVKaKSWWqOFE5qbhD5aTiROWkYlKZKiaVqeLfdLHWeo2LtdZrXKy1XuPDQxUnKicVU8WkcqJyonJScUfFHSonKicVd1RMKneonFTcoXJS8UTFpDJVPKEyVUwqU8UTF2ut17hYa73GxVrrNT48pDJVPKEyVdyhMlXcoTJVTCpTxaRyR8WJylTxRMWkMlU8oTJVnKhMFXeoTBWTyi9VfNPFWus1LtZar3Gx1nqNDw9V3FExqUwVk8pUMancoTJVTBUnFU9UTCpTxR0qU8UTKlPFN6ncoTJV3FExqUwVk8qJylTxTRdrrde4WGu9xsVa6zU+PKQyVZyo3FFxUjGpPKFyR8UdKndU3KEyVUwqJxXfpHJS8YTKVDGpTBWTyh0Vk8pU8cTFWus1LtZar3Gx1nqND1+mMlVMKlPFpPJExUnFExWTylTxTSp3VPySyhMVk8pUMVVMKlPFScWk8mYXa63XuFhrvcbFWus1PjxUMancoTJVnKhMFd9UMalMKlPFEypTxUnFpDKpTBVPqPybVKaKSWWquKNiUpkq/tLFWus1LtZar3Gx1nqNDz+mclIxqdyhckfFicpUMalMKk9UnFRMKt9UMak8UTGpnFTcoTJVPKFyovKXLtZar3Gx1nqNi7XWa3x4SGWquENlqrhDZaqYVCaVqeJE5aTiDpUnKk5U7lC5o+IvVZyonFScVJyoTBW/dLHWeo2LtdZrXKy1XsP+wRepTBWTyknFpHJHxYnKX6qYVE4qTlSmiknllyomlTsqJpU7Kp5QOak4UZkqvulirfUaF2ut17hYa73Ghy+rOKmYVCaVqeIJlaniRGWqeEJlqphUnlC5o+IOlUnlpGJSOamYVO5QmSr+yy7WWq9xsdZ6jYu11mt8+DKVb1KZKiaVk4oTlaniCZWpYlKZKiaVqWKqeELlmypOKu6omFTuUJkqTiomlaniL12stV7jYq31Ghdrrdf48JDKVHGiMlVMKlPFX1K5o2KqeKJiUjmpOFGZKiaVqeJEZVKZKiaVqeKbKk5UpoqTipOKSWWqeOJirfUaF2ut17hYa73Ghx9TmSomlROVX6qYVP6SyhMqd6hMFZPKVDFVTConFScqJxUnKneonFScqPzSxVrrNS7WWq9xsdZ6jQ8PVUwqJyonFXeoTBUnKlPFHRUnKicVk8odFXeoTBX/JpWTihOVk4o7VCaVk4pfulhrvcbFWus1LtZar/HhIZWTihOVE5Wp4kRlqpgqJpU7VO6oOKk4UTlRmSpOVKaKqWJSmSruUHlC5QmVqeKk4kRlqvimi7XWa1ystV7jYq31Gh8eqviliidUTipOVKaKSWWqmFSmikllqrij4pcqfqnijopJ5aTiCZW/dLHWeo2LtdZrXKy1XsP+wQMqb1Jxh8pUMamcVEwqU8UdKn+pYlK5o2JSOamYVKaKSeUvVUwqd1Q8cbHWeo2LtdZrXKy1XsP+wQ+pTBUnKlPFicpJxaRyUjGpPFFxojJV3KFyR8WkMlVMKlPFpDJVTConFXeoPFExqUwVJypTxTddrLVe42Kt9RoXa63X+PCQylTxTSpTxUnFScWkclLxl1ROKk4qJpVJ5UTlROWJiknliYpJ5b/sYq31Ghdrrde4WGu9xoeHKiaVb6qYVJ5QuUPlpGJS+SWVE5WpYlKZKk5Unqi4o2JSmSruqLhD5Q6VqeKJi7XWa1ystV7jYq31Gh8eUpkqJpUTlaliUpkqTlROKiaVOyruqJhUpopJZao4UZkqJpUTlZOKSeUOlV9SOVGZKqaKSeWOim+6WGu9xsVa6zUu1lqv8eGhijtUpoqTijsqJpVJZaqYVKaKE5UTlaniDpWp4o6KO1R+qWJSmVTuqDhRmVROKiaVv3Sx1nqNi7XWa1ystV7jw49V3KFyUvFExUnFpPJExaRyUnGiMlVMKlPFHRV3VEwqT1RMKicqU8UdFZPKVHGiMlU8cbHWeo2LtdZrXKy1XuPDQyonFScqJxXfpDJVnFScqEwVd1RMKv8mlaliqphUpopvqnii4gmVqeKXLtZar3Gx1nqNi7XWa3x4qGJSmVSmipOKSeWk4qRiUrlDZao4UTmpmFTuqJhUpopJZaqYVE5UpoqpYlKZKiaVO1SmijtU7qg4Ufmli7XWa1ystV7jYq31Gh/+mMpUMalMFScqU8UdKneoTBWTyonKVDGpfFPFpHJHxaRyUjGpfJPKVDGpTBUnKicqJxXfdLHWeo2LtdZrXKy1XuPDl1VMKk+oTBVTxaRyUnGiMlVMKpPKVDGp3FExqUwqU8WkclJxh8q/qWJSuUNlqjhRuUNlqnjiYq31Ghdrrde4WGu9xoc/VnFHxR0VJyonFXdUTConFZPKVHGHyi9VTConKlPFicqJylTxhMpUcaIyVUwq33Sx1nqNi7XWa1ystV7jw5epTBVPqEwVJypTxVRxh8pUMalMFXdUTCp/SeWk4qTiTSruUJkqpopJZar4pou11mtcrLVe42Kt9Rr2D75I5Y6KJ1SmiknljopJ5Y6KO1TuqLhDZar4JpWp4kTlpOIOlTsqnlA5qXjiYq31Ghdrrde4WGu9xoeHVO6ouENlqvimipOKSWWqmFROKqaKSeVE5d+kMlWcqJxUTCpTxaTyhModFScV33Sx1nqNi7XWa1ystV7jw0MVv1TxTRWTylRxh8pJxaQyVUwVk8pUcYfKpPJvqphUpoonKu5QmSomlaliUpkqnrhYa73GxVrrNS7WWq/x4SGVv1RxojJVnFScqJxUnKhMFd+kMlXcUTGpTBWTyonKVDGpTBUnKlPFpHKiMlU8ofJLF2ut17hYa73GxVrrNT58WcU3qdxRMalMFScqJxUnKicqU8WkckfFHRUnFXeoTBVPqEwVT1T8UsU3Xay1XuNirfUaF2ut1/jwYyp3VDyhcofKVHGHylTxSypPqEwVk8pU8YTKVPGEyonKEypTxYnKVPHExVrrNS7WWq9xsdZ6jQ//5yomlaliUvlLKlPFpDJVnKhMFZPKpDJVTConFXeoTBVTxaQyVUwqU8WkclIxqUwqU8UvXay1XuNirfUaF2ut1/jwH1cxqdyhckfFpDKpTBWTyh0Vk8pUMVXcUXFHxaQyVUwVk8o3VZxUnKjcofJLF2ut17hYa73GxVrrNewfPKAyVXyTylRxonJScaIyVfybVKaKE5W/VDGpnFRMKlPFicpUMamcVJyonFRMKlPFExdrrde4WGu9xsVa6zU+fJnKX1L5pooTlZOKSWWqmFROKiaVX6qYVE5UpoonVE4qJpW/pPJLF2ut17hYa73GxVrrNewfrLVe4WKt9RoXa63XuFhrvcbFWus1LtZar3Gx1nqNi7XWa1ystV7jYq31Ghdrrde4WGu9xsVa6zUu1lqvcbHWeo2LtdZr/A8mtr5RV4v+HAAAAABJRU5ErkJggg==",
</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.


# Notifications

Every time a deposit changes its status, we will send you an asynchronous notification containing the ID of the deposit.\
The webhooks are sent to:

1. the **`notification_url`**  you sent in the request, or&#x20;
2. to the one you have configured under the section: ***Settings***  :arrow\_right:  ***API Access*** :arrow\_right: ***Confirm URL.***

**Once received the notification, you should check its new status with the** <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/MnOupu9QK2t0rd0FElSw" class="button primary" data-icon="magnifying-glass">Get deposit status</a> **endpoint** **and update it on your end accordingly.**

{% hint style="success" %}

### Firewall configurations

Bear in mind we will only connect through ports 80 and 443. \
Make sure your **`notification_url`** has one of those ports open accepting connections from us.
{% endhint %}

#### Example notification

```javascript
{
    "deposit_id": 3000000001
}
```

<table><thead><tr><th width="148.98567708333331">Field</th><th width="155.37109375">Format</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>deposit_id</code></strong></td><td>Number</td><td>ID of the deposit. Use this ID to <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/MnOupu9QK2t0rd0FElSw">check the status of the deposit.</a></td></tr></tbody></table>

### Testing notification in Staging

Receiving notifications accordingly is part of our [integration requirements checklist](/getting-started/start-testing#integration-checklist).

In the <mark style="color:$danger;background-color:red;">**Staging**</mark> environment, in order to test the full flow you can manually set a deposit to **COMPLETED** or **CANCELLED** status by: Logging in into the [STG Merchant Panel](https://merchants-stg.d24.com/login)  :arrow\_right:  Transactions :arrow\_right:  Deposits.

Those options will change the status of the deposit, therefore **sending the respective notification to your `notification_url` after a few minutes**.

![Approve/Cancel from the Deposits view.](/files/w7rmnFQ3haDv6hIaZjtx) ![You can also Approve/Cancel deposits from the Transaction details](/files/nCMumYAuZpEjbMPZ4S0K)

## Retry logic

Every time a deposit changes its status, we will send you a notification so you can check its status back.

In case that for some reason your server was unable to handle our notification and you returned an HTTP code different than **2XX**, we will retry the notification **up to 5 more times** **or until you respond with HTTP 2XX**, whatever comes first.

{% hint style="success" %}
In case of errors while handling the notification, make sure you will answer with an HTTP code distinct than 2XX, that way we will retry the notification.
{% endhint %}

The time between each of the 5 notifications attempts will be exponential: **5, 25, 125 and 625  minutes** accordingly.

When a notification failed to be sent, it will be shown like this in our Merchant Panel:

![](/files/-M9_UqvQBGblaqYL1-oD)

If you see the errors from the screenshot above, it means the payment was successfully completed and the money was credited to your account but suddenly **were not properly received**. Keep reading to know how to resend the notifications.

#### Resend Notifications

In case your system was unable to handle the notification in any of the 5 attempts, you can always check its status with the  <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/MnOupu9QK2t0rd0FElSw" class="button primary" data-icon="magnifying-glass">Get deposit status</a> endpoint.

If you need to trigger the check status by receiving our notification, once the issue preventing you from receiving our notifications was fixed, you can go to the Merchant Panel, locate the deposit (Transactions  :arrow\_right: Deposits) and click on the three dotted button under the <img src="/files/OFTK38OfNWn7MKEKdQYS" alt="" data-size="line"> section and then "**Resend notification**"  to force a new notification to be sent.

![](/files/-M9zU27QNwGCCPG-JJEq)

{% hint style="success" %}
:clock1: **It can take up to 1 minute for the notification to be resent.**
{% endhint %}


# Status flow

### Understanding the deposit lifecycle

<figure><img src="/files/dmQKNyiMYFekCgWRq85G" alt=""><figcaption></figcaption></figure>

<details>

<summary>Hosted checkout status flow</summary>

<figure><img src="/files/4mrFSHFlxSyDe84IBasr" alt=""><figcaption></figcaption></figure>

Note that the Hosted flow **does not create deposits in PENDING** status as required payer information is missing in the request.

</details>

#### Status diagram explanation

<table><thead><tr><th width="170.83203125" align="center">Status</th><th>Description</th></tr></thead><tbody><tr><td align="center"><strong>DECLINED</strong></td><td>The DECLINED status is not a status by itself. It means the transaction couldn't be created because of an error with the data, the customer or the merchant configuration. No transaction will change its status from <strong>DECLINED</strong>.</td></tr><tr><td align="center"><strong>PENDING</strong></td><td>Once the deposit is in <strong>PENDING</strong> status, it means it was successfully created and we are waiting for the user to complete the transaction.</td></tr><tr><td align="center"><strong>FOR_REVIEW</strong></td><td><strong>FOR REVIEW</strong> is a transient status we use to specify that the deposit is under revision.</td></tr><tr><td align="center"><strong>EARLY_RELEASED</strong></td><td><strong>EARLY</strong> <strong>RELEASED</strong> will only be used if you specified it in the deposit request</td></tr><tr><td align="center"><strong>EXPIRED</strong></td><td>The deposit reached it's expiration date and the user did not pay, then the status will change to <strong>EXPIRED</strong>.<mark style="color:$danger;"><strong>*</strong></mark></td></tr><tr><td align="center"><strong>CANCELLED</strong></td><td>If the user doesn't pays, the transaction will be marked as <strong>EXPIRED</strong>.<br>After 7 days the status will change to <strong>CANCELLED</strong>.<br><strong>Final status</strong>.<mark style="color:$danger;"><strong>*</strong></mark></td></tr><tr><td align="center"><strong>COMPLETED</strong></td><td>If the deposit was successfully completed, its status will be set to <strong>COMPLETED</strong>.<br><strong>Final status.</strong></td></tr></tbody></table>

&#x20;<mark style="color:$danger;">**\***</mark> There are cases in which the users pays after the deposit expired, or paid an incorrect amount and the deposit gets expired. When that happens manual intervention is required to approve the deposit hence a deposit could change its status from EXPIRED or CANCELLED to COMPLETED.

## Deposits status Codes

The **`status`** of the deposits are separated into different and very specific categories for you to better handle and know the behavior of your customers.

<table><thead><tr><th width="163.59765625" align="center">Status</th><th>Description</th></tr></thead><tbody><tr><td align="center"><img src="/files/-MDBHnzNY05ffYAzGwV_" alt="" data-size="original"> </td><td>The deposit is created but the customer hasn't opened the link yet.</td></tr><tr><td align="center"><img src="/files/-MDBHD__gsa_CT3H-8Z2" alt="" data-size="original"> </td><td>The deposit is created and the customer has opened the link but he/she didn't complete the payment flow (select payment method, complete personal details, confirm details) or the provider was unable to process the request.</td></tr><tr><td align="center"><img src="/files/-MDBIKAz8rS9s0p0oaai" alt="" data-size="original"> </td><td>The deposit is created with all the information required and it is awaiting on customer's payment. It has been marked by you to release it earlier. Please note that the customer hasn't paid yet and the money won't be credited to your balance until the customer's payment is detected.</td></tr><tr><td align="center"><img src="/files/-M9Uq6hh3MZ301JtlBh4" alt="" data-size="original"> </td><td>The deposit is created with all the information required and it is awaiting on customer's payment.</td></tr><tr><td align="center"><img src="/files/-M9Usf-KMOsFfbQJ_ZoQ" alt="" data-size="original"> </td><td>The deposit didn't pass our anti-fraud systems and will be retained until manual review.</td></tr><tr><td align="center"><img src="/files/-MDBH_7RIHxUC25-qIS1" alt="" data-size="original"> </td><td>The deposit has reached its expiration time and the user didn't pay.</td></tr><tr><td align="center"><img src="/files/-M9UsJ4Co_cg-RzJZT6c" alt="" data-size="original"> </td><td>The deposit has been cancelled by the customer or it has been 7 days after the expiration.</td></tr><tr><td align="center"><img src="/files/-M9UsDlL5PDQXBDL5CUD" alt="" data-size="original"> </td><td>The deposit has been completed and the money was credited to your account or to the payer's crypto wallet.</td></tr></tbody></table>

> Learn more about how to correctly retrieve deposit status in the API Reference <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/MnOupu9QK2t0rd0FElSw" class="button primary" data-icon="magnifying-glass">Get deposit status</a>


# Countries specialization


# SPEI Offline

### What is SPEI Offline?

The **SPEI Offline** feature offers a streamlined deposit process for your customers in Mexico. It allows them to make payments by directly transferring funds to a previously used unique CLABE account, completely bypassing the standard checkout flow.

When a customer makes a transfer, our system is instantly notified. We then analyze the transaction details to create a formal deposit record, which is sent to you for approval or rejection. This provides a faster, more convenient payment experience for repeat customers.

### How It Works

1. A customer transfers money to their unique CLABE account number.
2. We receive a notification of the incoming transfer.
3. We send a `POST` request to a webhook URL that you provide, containing all the transaction details.
4. Your system receives the request and returns a response to either **approve** or **reject** the deposit.

### Getting started

{% stepper %}
{% step %}

#### Contact your account manager

To enable this feature, please reach out to your designated Account Manager or Technical Account Manager.
{% endstep %}

{% step %}

#### Provide a webhook URL

You must provide us with a secure URL endpoint that can accept `POST` requests from our system. This URL will be used to notify you of every new SPEI Offline transaction.

When we detect a new deposit, we will send a `POST` request to your URL with the following JSON body:

```json
{
  "deposit_id": 123456789,
  "payer_account_number": "123456789123456789",
  "country": "MX",
  "document": "84932568207",
  "full_name": "John Doe",
  "date_of_birth": "19871027",
  "address": "Ruta 13, Mexico",
  "email": "jon.doe@example.com",
  "amount": 200,
  "currency": "MXN",
  "payment_method": "SEOF"
}

```

<table><thead><tr><th width="223.3359375">Field</th><th width="102.53125">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>deposit_id</code></td><td>Integer</td><td>Our unique identifier for the payment deposit.</td></tr><tr><td><code>payer_account_number</code></td><td>String</td><td>The CLABE of the customer who made the payment.</td></tr><tr><td><code>country</code></td><td>String</td><td>The country of the transaction. Always "MX".</td></tr><tr><td><code>document</code></td><td>String</td><td>The identification document of the payer.</td></tr><tr><td><code>full_name</code></td><td>String</td><td>The full name of the payer.</td></tr><tr><td><code>date_of_birth</code></td><td>String</td><td>The payer's date of birth in <code>YYYYMMDD</code> format.</td></tr><tr><td><code>address</code></td><td>String</td><td>The address of the payer.</td></tr><tr><td><code>email</code></td><td>String</td><td>The email address of the payer.</td></tr><tr><td><code>amount</code></td><td>Number</td><td>The transaction amount.</td></tr><tr><td><code>currency</code></td><td>String</td><td>The currency of the payment. Always "MXN".</td></tr><tr><td><code>payment_method</code></td><td>String</td><td>The payment method used. Always "SEOF" for SPEI Offline.</td></tr></tbody></table>

{% endstep %}

{% step %}

#### Handle deposit notifications

Your webhook URL must be configured to handle our requests and send back a response indicating your decision.

**Approving or rejecting a deposit**

Your system's response determines the status of the payment:

* **To Approve:** Return an <mark style="color:$success;">**HTTP**</mark><mark style="color:$success;">**&#x20;**</mark><mark style="color:$success;">**`200`**</mark> status code.
* **To Reject:** Return an <mark style="color:$danger;">**HTTP**</mark><mark style="color:$danger;">**&#x20;**</mark><mark style="color:$danger;">**`400`**</mark> status code.

{% hint style="danger" %}
*Any other HTTP status code will be treated as a rejection.*
{% endhint %}

{% endstep %}

{% step %}
***(Optional)*****&#x20;Overriding default information**

By default, we generate a random **`invoice_id`** and use your account's default notification URL for these deposits. However, you can override these values by including them in the body of your `200` (Approve) response.

If you wish to provide your own identifiers, your response body should look like this:

```json
{
   "invoice_id" : "YOUR_CUSTOM_INVOICE_ID",
   "notification_url" : "https://merchant.com/notifications/deposit/YOUR_ID"
}
```

If this body is returned, we will use the `invoice_id` and `notification_url` you provide instead of our defaults.
{% endstep %}
{% endstepper %}


# Quickpay

**Quickpay** is a powerful feature designed to streamline user onboarding through a single, simple transaction. It allows you to create a deposit and sign up a new customer without collecting their personal details upfront.

The merchant initiate a payment with minimal information, and once the user pays, their full details (like name and document number) can be obtained via API.

{% hint style="success" %}

### Quickpay coverage

This product is currently only available for:

* Transferencias **SPEI** in Mexico
* **Pix** bank transfers in Brazil
  {% endhint %}

***

### How It Works

{% stepper %}
{% step %}

#### **Create a deposit**

You send a request to our standard **`POST`** **`/deposits`** endpoint.\
The key difference is that you provide minimal or no information in the **`payer[]`** object.

> For more information regarding the deposit creation endpoint, please visit the API Reference <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/z3VIARIvaaLqEvndBdGt" class="button primary" data-icon="pencil">Create deposit</a>

{% tabs %}
{% tab title="Example request" %}

```json
{
    "invoice_id" : "1000000001",
    "amount": "10",
    "country": "BR",
    "currency": "BRL",
    "payment_method": "IX",
    "description": "test description",
    "client_ip": "123.123.123.123",
    "device_id": "00000000-00000000-01234567-89ABCDEF",
    "notification_url": "https://www.merchant.com/pandablue/notify",
    "test": false,
    "mobile": true,
    "language": "pt"
}
```

{% endtab %}

{% tab title="Example response" %}

```json
{
  "checkout_type": "ONE_SHOT",
  "redirect_url": "https://checkout-stg.pandablue.com/v1/gateway/show?id_payment=56578849&signature=fff0e0a6a98066c19caf",
  "deposit_id": 300000025,
  "user_id": "11",
  "merchant_invoice_id": "1000000001",
  "payment_info\"": {
    "type": "BANK_TRANSFER",
    "payment_method": "IX",
    "payment_method_name": "Pix",
    "amount": 10,
    "currency": "BRL",
    "expiration_date": "2020-06-17T07:04:16Z",
    "created_at": "2020-06-16T19:04:16Z",
    "metadata": {
      "digitable_line": "00190.00009 03141.056030 01870.806179 8 83180000016564",
      "qr_code": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAB9AQAAAACn+1GIAAACMUlEQVR4Xt3UMZKsIBAGYEjkCkOCV1sTuQIkioleQRK4miRyhSahH6Uzr2qRucASflXa0Pw0wd8LyJ8CIEKwUwentKFNSGi3tLlu3haf2rB4mHqjlAw7/wI2Rsc9HvIreKeoefFz/gZozWC9Rev/7+M3AOH2vT5nqQAxMyD9TtF++lEBUMOSIZ0gapRNSOeQGYZohui+AV9fMwjphLq3XgOuetmyXHaJRjcBRtEJac+Rm942IW0Jo5tGnuW77AOMGLJMIVMzXT99AIZDdUInM2fShpQp/NC4uaG0uwlZSfRYKsu4XmWfwFYdfHTzTtT10wckGF9TJ0HJ8122BhjsVgLjSlz80oaXUorazI9J3DdXQzI0hJKEg+7vKjVgSE6R3hpp4Qske+rFrtOPttfxH5BsCuvst/1Hw132ASVTYiQMLdDUBOgz3UI49Bbyffwa0kpI+UT0dqV32RowphDdi3nM9/EfUK4y4WYk8O0O3RPW+RyFtscM7wTVkBXzaZ8YmmG5yj4A95F0E7U263zvowbQPqZVsQhjx5uQ1ZCnjsJwknFuAhpmSxzwLB26y9ZQHnqnSKcYzD62YXr1B3caBLsHyhNYeX8h2kPC9I52BdCbrowtloeD+iaUMcM39Isv2brKPqCMLScm7oHbe/Q9IKEbbPJliCYY2rDYQ0jDYgB6PY8WlAbJoz+0+XzygKU0aSzZxWvrT8BdSY/p4NHd+agByEsMRskYYrqfaQ2/19+GfwmGnDkcom5PAAAAAElFTkSuQmCC"
    }
  }
}
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

#### **User completes the payment**

Your customer uses the generated payment instructions (e.g., a PIX QR code or SPEI transfer details) to complete the transaction
{% endstep %}

{% step %}

#### Obtain payer information

Once the payment is confirmed, you'll receive a webhook notification to your **`notification_url`**.

> For more information on this point, please visit <a href="/pages/4J1W8bBUsf3m6C60jdyS" class="button primary" data-icon="message-medical">Notifications</a>

This notification is your signal to query the deposit status endpoint .\
The response from this endpoint will be enriched with the payer's full details (name, document number, etc.).

> For more information on retrieving deposit status please visit the API Reference <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/MnOupu9QK2t0rd0FElSw" class="button primary" data-icon="magnifying-glass">Get deposit status</a>

You can then use this data to create or update their account in your system.
{% endstep %}
{% endstepper %}

***

### **Country specific requirements**

* **Pix** ( :flag\_br: Brazil): The **`payer`** object is not required and should be completely omitted from the request body.
* **SPEI** (🇲🇽 Mexico): The **`payer`** object is required, but it only needs one field: **`payer.id`**.\
  This `id` must be a unique reference for the user within your system, not the customer's official document number (e.g., CURP).

#### Example requests

{% tabs %}
{% tab title="PIx (Brazil)" %}

```json
{
    "invoice_id": "1000000001",
    "amount": "10.00",
    "country": "BR",
    "currency": "BRL",
    "payment_method": "IX",
    "description": "Onboarding deposit",
    "client_ip": "123.123.123.123",
    "device_id": "00000000-00000000-01234567-89ABCDEF",
    "notification_url": "https://your-domain.com/notifications",
    "test": false
}
```

{% endtab %}

{% tab title="SPEI (Mexico)" %}

<pre class="language-json"><code class="lang-json">{
    "invoice_id": "1000000001",
    "payer": {
<strong>        "id": "USR-74662347"
</strong>    },
    "amount": "100.00",
    "country": "MX",
    "currency": "MXN",
    "payment_method": "SE",
    "description": "Onboarding deposit",
    "client_ip": "123.123.123.123",
    "device_id": "00000000-00000000-01234567-89ABCDEF",
    "notification_url": "https://your-domain.com/notifications",
    "test": false
}
</code></pre>

{% endtab %}
{% endtabs %}


# Biometric Pix


# Automatic Pix


# Refund a deposit

This service enables you to issue and view refunds for completed payments.

* For **card deposits**: The original charge is reversed, returning funds to the cardholder.
* For **alternative payment methods**: The customer receives a refund via a bank transfer.

Please note, a processing fee may apply to refunds.

***

> For technical details please visit the API Reference <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/UsntX8HSyiFzR3B4c15R" class="button primary" data-icon="pencil">Create refunds</a>&#x20;

### Card deposits

{% tabs %}
{% tab title="Example request" %}

#### Total refund

```json
curl -L \
  --request POST \
  --url 'https://api-stg.pandablue.com/v3/refunds' \
  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-25T13:13:08.220Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "deposit_id": 300533647,
    "invoice_id": "newIUnit45328732",
    "comments": "Test refund",
    "notification_url": "https://merchant.com/webhooks/d24/refunds"
  }'
```

#### Partial refund

<pre class="language-json"><code class="lang-json">curl -L \
--request POST \
  --url 'https://api-stg.pandablue.com/v3/refunds' \
  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-25T13:13:08.220Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "deposit_id": 300533647,
    "invoice_id": "newIUnit45328732",
<strong>    "amount": 50,
</strong>    "comments": "Test refund",
    "notification_url": "https://merchant.com/webhooks/d24/refunds"
  }'
</code></pre>

{% endtab %}

{% tab title="Example response" %}

#### Synchronous response

```json
{
  "refund_id": "80000001",
  "deposit_id": 300533647,
  "merchant_invoice_id": "newIUnit45328732",
  "refund_info": {
    "type": "CREDIT_CARD",
    "result": "SUCCESS",
    "payment_method": "AE",
    "payment_method_name": "American Express",
    "amount": 505.95,
    "currency": "MXN",
    "created_at": "2021-02-05 22:10:45"
  }
}
```

#### Asynchronous response

In case of receiving **`IN_PROGRESS`** status for a card deposit refund, we will notify to the **`notification_url`** when the refund status change. \
Afterwards you should perform an additional Refund status check

> For more information please visit the API Reference <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/wa4sd1C6ifl9kpeokfPO" class="button primary" data-icon="magnifying-glass">Get refund status</a>

```json
{
  "refund_id": "80000001",
  "deposit_id": 300533647,
  "merchant_invoice_id": "newIUnit45328732",
  "refund_info": {
    "type": "CREDIT_CARD",
    "result": "IN_PROGRESS",
    "reason": "Check refund status or await its notification",
    "payment_method": "AE",
    "payment_method_name": "American Express",
    "amount": 505.95,
    "currency": "MXN",
    "created_at": "2021-02-05 22:10:45"
  }
}
```

{% endtab %}
{% endtabs %}

### Alternative payment methods

{% tabs %}
{% tab title="Example request" %}

```sh
curl -L \
  --request POST \
  --url 'https://api-stg.pandablue.com/v3/refunds' \
  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-25T13:13:08.220Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "deposit_id": 300533646,
    "invoice_id": "newIUnit45328731",
    "amount": 100,
    "bank_account": {
      "beneficiary": "Carlos Ramirez",
      "bank_code": "1",
      "branch": "9283",
      "account_number": "18293435",
      "account_type": "SAVING"
    },
    "comments": "Test refund over v3",
    "notification_url": "https://webhook.site/url"
  }'
```

{% endtab %}

{% tab title="Example response" %}

```json
{
  "refund_id": "80000001"
}
```

{% endtab %}
{% endtabs %}

***

### Refund status

Each time that a refund changes its status we will send a webhook notification

<pre class="language-json" data-title="Example refund webhook notification"><code class="lang-json">{
<strong>    "refund_id": 80000001
</strong>}
</code></pre>

Then, you will know that you should retrieve the status of the refund

{% tabs %}
{% tab title="Example request" %}

<pre class="language-sh"><code class="lang-sh">curl -L \
<strong>  --url 'https://api-stg.pandablue.com/v3/refunds/80000001' \
</strong>  --header 'Content-Type: text' \
  --header 'X-Date: 2023-05-27T10:30:00Z' \
  --header 'X-Login: your-x-login-key' \
  --header 'Authorization: D24-HMAC-SHA256 SignedHeaders=x-date;x-login, Signature=your_signature_hash' \
  --header 'Accept: */*'
</code></pre>

{% endtab %}

{% tab title="Example response" %}

```json
{
  "deposit_id": 80000001,
  "merchant_invoice_id": "newIUnit45328732",
  "status": "COMPLETED",
  "amount": 505.95
}
```

{% endtab %}
{% endtabs %}

> For technical details regarding refunds status retrieval, please visit the **API Reference** <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/wa4sd1C6ifl9kpeokfPO" class="button primary" data-icon="magnifying-glass">Get refund status</a>


# Status flow

## Understanding the refund lifecycle

<figure><img src="/files/B5uVFwC7FKaMFaiwLZkt" alt=""><figcaption></figcaption></figure>

#### Status diagram explanation

<table><thead><tr><th width="197.921875" align="center">Status</th><th>Description</th></tr></thead><tbody><tr><td align="center"><strong>DECLINED</strong></td><td><strong>DECLINED</strong> is not a status by itself. It means the refund failed to be created.</td></tr><tr><td align="center"><strong>PENDING</strong></td><td>As soon as the refund request is created, its status will be PENDING.</td></tr><tr><td align="center"><strong>INCORRECT_DETAILS</strong></td><td>In case we need more information to complete the request or any of the details were incorrect, we will change the status to <strong>INCORRECT_DETAILS</strong> and you will need to provide the correct details. Once the details have been provided, its status will be <strong>PENDING</strong> again.</td></tr><tr><td align="center"><strong>CANCELLED</strong></td><td>The status <strong>CANCELLED</strong> means the refund was manually cancelled by you. Only refunds in PENDING or INCORRECT_DETAILS can be cancelled.<br><strong>Final status.</strong></td></tr><tr><td align="center"><strong>DELIVERED</strong></td><td>If everything is fine we will send the refund for processing and the status will be marked as <strong>DELIVERED</strong>. It can't be cancelled at this point.</td></tr><tr><td align="center"><strong>REJECTED</strong></td><td>As soon as the processor/bank confirms the refund, it will be marked as COMPLETED or <strong>REJECTED</strong> (by the bank)<mark style="color:red;"><strong>*</strong></mark></td></tr><tr><td align="center"><strong>COMPLETED</strong></td><td>As soon as the processor/bank confirms the refund, it will be marked as <strong>COMPLETED</strong> or REJECTED (by the bank) <mark style="color:red;"><strong>*</strong></mark></td></tr></tbody></table>

&#x20; <mark style="color:red;">**\***</mark> There are some **corner cases** in which the receiver's bank tell us that the refund was completed but days after it gets rejected. In those cases the status changes from COMPLETED to REJECTED.

### Refunds Status Codes

<table><thead><tr><th width="193.08203125" align="center">Status</th><th>Description</th></tr></thead><tbody><tr><td align="center"><img src="/files/-M9Uq6hh3MZ301JtlBh4" alt="" data-size="original"> </td><td>The refund is created and is pending to be processed. It can still be cancelled.</td></tr><tr><td align="center"><img src="/files/-ME_izqMi9S4uIPsWPjR" alt="" data-size="original"> </td><td>The refund is pending for you to provide more information. It can still be cancelled.</td></tr><tr><td align="center"><img src="/files/-MDQyQCx2cX3EhoAitEv" alt="" data-size="original"> </td><td>The refund has been sent to the bank for processing. It can't be cancelled anymore.</td></tr><tr><td align="center"><img src="/files/-M9UsJ4Co_cg-RzJZT6c" alt="" data-size="original"> </td><td>The refund has been manually cancelled. Final status.</td></tr><tr><td align="center"><img src="/files/-MDNZ67x7s7LgmAyG4YI" alt="" data-size="original"> </td><td>The refund has been rejected by the bank. Final status.</td></tr><tr><td align="center"><img src="/files/-M9UsDlL5PDQXBDL5CUD" alt="" data-size="original"> </td><td>The refund has been completed. Final status.</td></tr></tbody></table>

> For technical details regarding refunds status retrieval, please visit the **API Reference** <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/wa4sd1C6ifl9kpeokfPO" class="button primary" data-icon="magnifying-glass">Get refund status</a>


# Chargebacks


# Overview

Our cashouts solution enable merchants to disperse payments to their users all around the globe.

<figure><img src="/files/fF5HuijeVCHGdoU6gGsr" alt=""><figcaption></figcaption></figure>

### Regular cashout process

{% stepper %}
{% step %}

#### Top up your account

Ensure your merchant account has sufficient balance to cover the payouts you want to issue.\
You can either collect deposits or top-up your account.
{% endstep %}

{% step %}

#### Create a payout request

Instruct PandaBlue to send money by creating a payout request via our API **or** through the Merchant Dashboard.
{% endstep %}

{% step %}

#### Users get paid

PandaBlue processes the instruction and moves the funds from your merchant account to the end-user's bank account.
{% endstep %}

{% step %}

#### Merchant gets notified

We send a webhook notification to your system as soon as the payout is confirmed as `COMPLETED` or `REJECTED`, giving you the final status.
{% endstep %}
{% endstepper %}

### Manage cashouts

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Cashout solutions</strong></td><td><a href="/files/PRbMJ4YYEhkQwpCgSoJg">/files/PRbMJ4YYEhkQwpCgSoJg</a></td><td><a href="/pages/Gq0IiRG6cuJy5ayvwf65">/pages/Gq0IiRG6cuJy5ayvwf65</a></td></tr><tr><td align="center"><strong>Countries validations</strong></td><td><a href="/files/keF6NipyzsKZdrPyYNSS">/files/keF6NipyzsKZdrPyYNSS</a></td><td><a href="/pages/-MA9W0JDYr7ewGa7xDTk">/pages/-MA9W0JDYr7ewGa7xDTk</a></td></tr><tr><td align="center"><strong>Understand the cashout status flows</strong></td><td><a href="/files/vw1q7KibJdOIBgARohxN">/files/vw1q7KibJdOIBgARohxN</a></td><td><a href="/pages/M0hPMNs7uaCI6Dbi76RG">/pages/M0hPMNs7uaCI6Dbi76RG</a></td></tr></tbody></table>


# Countries validations

## Introduction

Check the cashouts requirements and validations made over **each country** in which we operate on.

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>America</strong></td><td><a href="/files/LdC9Mkg63WRTVyQ9CkrR">/files/LdC9Mkg63WRTVyQ9CkrR</a></td><td><a href="/pages/-MB7PUhzp9lAA9fdkFP9">/pages/-MB7PUhzp9lAA9fdkFP9</a></td></tr><tr><td align="center"><strong>Africa</strong></td><td><a href="/files/aFEDNSdervEiZ80slxIO">/files/aFEDNSdervEiZ80slxIO</a></td><td><a href="/pages/-MB7PYXof9ddP4AqFANg">/pages/-MB7PYXof9ddP4AqFANg</a></td></tr><tr><td align="center"><strong>Asia</strong></td><td><a href="/files/yMJHn4gxqjEIlcVLqlTN">/files/yMJHn4gxqjEIlcVLqlTN</a></td><td><a href="/pages/-MB7PYkuT6VUcSne0hnQ">/pages/-MB7PYkuT6VUcSne0hnQ</a></td></tr><tr><td align="center"><strong>Oceania</strong></td><td><a href="/files/S2tY0Bb2Ej0InkQ3tNXa">/files/S2tY0Bb2Ej0InkQ3tNXa</a></td><td><a href="/pages/sh7Z5EdvSrv3jEMO95Oh">/pages/sh7Z5EdvSrv3jEMO95Oh</a></td></tr></tbody></table>


# America

Learn about the cashouts validations of the American countries


# Argentina

Check the requirements and validations made over the cashouts on Argentina

{% hint style="success" %}
**New Feature** (May 2025): \
\
**Cashouts in Argentina** now **support** both **CBU** (traditional bank accounts) and **CVU** (virtual accounts)
{% endhint %}

### Required fields <a href="#required-fields" id="required-fields"></a>

| Field                  | Format                                                                 | Description                                         |
| ---------------------- | ---------------------------------------------------------------------- | --------------------------------------------------- |
| `login`                | String                                                                 | Cashouts login                                      |
| `pass`                 | String                                                                 | Cashouts pass                                       |
| `external_id`          | String (max length: 100)                                               | Transaction's ID on your end                        |
| `document_id`          | See [document validations](#document_type-and-document_id-validations) | Beneficiary's document ID                           |
| `country`              | `AR`                                                                   | The country codes are in ISO 3166-1 alpha-2 format. |
| `currency`             | `ARS` / `USD`                                                          | The currencies are in ISO 4217 format.              |
| `amount`               | Number with up to 2 decimals                                           | Cashout amount                                      |
| `bank_account`         | See [bank accounts validations](#bank-account-validations)             | Beneficiary's bank account                          |
| `beneficiary_name`     | String (max length: 100)                                               | Beneficiary's name                                  |
| `beneficiary_lastname` | String (max length: 100)                                               | Beneficiary's last name                             |

### `bank_account` validations <a href="#bank-account-validations" id="bank-account-validations"></a>

Use the Regex below to validate the bank accounts on your end.

<table><thead><tr><th width="125.12890625">Bank name</th><th>bank_account Description</th><th>Format</th></tr></thead><tbody><tr><td>All</td><td>CBU - <a href="https://es.wikipedia.org/wiki/Clave_Bancaria_Uniforme">Clave Bancaria Uniforme</a></td><td>Numeric, Length 22</td></tr><tr><td>All</td><td>CVU - <a href="https://es.wikipedia.org/wiki/Clave_virtual_uniforme">Clave Virtual Uniforme</a></td><td>Numeric, Length 22</td></tr></tbody></table>

<figure><img src="/files/UkHlLv5GlEJ2uf4ED1qn" alt=""><figcaption><p>CBU - Bank accounts format</p></figcaption></figure>

#### CBU Validation Algorithm <a href="#email-validations" id="email-validations"></a>

Since the first three digits of the CBU are the bank code, it is not mandatory to send the bank\_code field.

```java
public class Validations {
    static Integer CBU_LENGTH = 22;

    public static Boolean verifyCBU(String cbu) {
        return cbuLengthValidation(cbu) && bankCodeValidation(cbu) && accountValidation(cbu);
    }

    public static Boolean cbuLengthValidation(String cbu) {
        return cbu.length() == 22 && ValidationsUtils.validateOnlyNumbers(cbu);
    }

    public static Boolean bankCodeValidation(String cbu) {
        if (cbu.length() == CBU_LENGTH && ValidationsUtils.validateOnlyNumbers(cbu)) {
            String shortCbu = StringUtils.left(cbu, 8);
            String bankCode = shortCbu.substring(0, 3);
            String branchCode = shortCbu.substring(4, 7);
            int firstCheckDigit = charToInt(shortCbu.toCharArray()[3]);
            int secondCheckDigit = charToInt(shortCbu.toCharArray()[7]);
            int sum = charToInt(bankCode.charAt(0)) * 7 + charToInt(bankCode.charAt(1)) * 1 + charToInt(bankCode.charAt(2)) * 3 + firstCheckDigit * 9 + charToInt(branchCode.charAt(0)) * 7 + charToInt(branchCode.charAt(1)) * 1 + charToInt(branchCode.charAt(2)) * 3;
            int diference = (10 - sum % 10) % 10;
            return diference == secondCheckDigit;
        } else {
            return false;
        }
    }

    public static Boolean accountValidation(String cbu) {
        String account = cbu.substring(8, 22);
        int sum = 0;
        int j = 0;
        int[] weighter = new int[]{3, 9, 7, 1};
        char[] arrayAccount = account.toCharArray();
        int checkDigit = charToInt(account.toCharArray()[13]);

        for(int i = 0; i < 13; ++i) {
            sum += charToInt(arrayAccount[i]) * weighter[j % 4];
            ++j;
        }

        int diference = (10 - sum % 10) % 10;
        return diference == checkDigit;
    }

    private static int charToInt(char ch) {
        return Integer.parseInt(String.valueOf(ch));
    }
}
```

### `document_type`  and `document_id` validations

<table><thead><tr><th width="166.68359375">document_type</th><th>document_id format</th></tr></thead><tbody><tr><td><code>DNI</code></td><td>Numeric. Length 7-9</td></tr><tr><td><code>CUIL</code></td><td>Numeric. Length between 7 and 9 inclusive or equal to 11</td></tr></tbody></table>

### Example request <a href="#example-request" id="example-request"></a>

```json
{
    "login": "xxxxxxxx",
    "pass": "xxxxxxxx",
    "external_id": "30000000001",
    "country": "AR",
    "currency": "ARS",
    "amount": 10000,
    "document_id": "5676586998",
    "bank_account": "0000003100000098476521",
    "email": "johnSmith@gmail.com",
    "beneficiary_name": "John",
    "beneficiary_lastname": "Smith",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% hint style="success" %}
Notice that the bank code is not mandatory for Argentina as it's part of the bank account.
{% endhint %}

### Bank codes <a href="#bank-codes" id="bank-codes"></a>

{% hint style="success" %}

### Bank code retrieval via API

For the full and most up-to-date list of banks and its codes, please check this endpoint <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kD1eu0r7kuzS2nEDm1N9" class="button primary">Get bank codes</a>
{% endhint %}

| Bank Name                                      | Code |
| ---------------------------------------------- | ---- |
| A.B.N Amro Bank                                | 005  |
| Banco de Galicia Y Buenos Aires                | 007  |
| Lloyds Tsb Bank                                | 010  |
| Banco de La Nación Argentina                   | 011  |
| Banco de La Provincia de Buenos Aires          | 014  |
| Industrial and Commercial Bank of China (ICBC) | 015  |
| Citibank                                       | 016  |
| BBVA Banco Frances                             | 017  |
| The Bank Of Tokyo - Mitsubishi                 | 018  |
| Banco de La Provincia de Cordoba               | 020  |
| Superville Bank                                | 027  |
| Banco de La Ciudad de Buenos Aires             | 029  |
| Banco Patagonia Sudameris                      | 034  |
| Banco Hipotecario                              | 044  |
| Banco de San Juan                              | 045  |
| Banco Do Brasil                                | 046  |
| Banco Del Tucuman                              | 060  |
| Banco Municipal de Rosario                     | 065  |
| Santander Río                                  | 072  |
| Banco Regional de Cuyo                         | 079  |
| Banco Del Chubut                               | 083  |
| Banco de Santa Cruz                            | 086  |
| Banco de La Pampa                              | 093  |
| Banco de Corrientes                            | 094  |
| Banco Provincia Del Neuquen                    | 097  |
| Banco Empresario de Tucuman Coop.              | 137  |
| Banco B. I. Creditanstalt                      | 147  |
| HSBC Bank Argentina                            | 150  |
| J P Morgan Chase Bank Sucursal Buenos Aires    | 165  |
| Banco Credicoop Coop.                          | 191  |
| Banco de Valores                               | 198  |
| Banco Roela                                    | 247  |
| Banco Mariva                                   | 254  |
| Banco Itau Buen Ayre                           | 259  |
| Bank Of America                                | 262  |
| Banca Nazionale Del Lavoro                     | 265  |
| Bnp Paribas                                    | 266  |
| Banco Provincia de Tierra Del Fuego            | 268  |
| Banco de La República Oriental Del Uruguay     | 269  |
| Banco Saenz                                    | 277  |
| Banco Meridian                                 | 281  |
| Banco Macro Bansud                             | 285  |
| Banco Mercurio                                 | 293  |
| Ing Bank                                       | 294  |
| American Express Bank Ltd.                     | 295  |
| Banco Banex                                    | 297  |
| Banco Comafi                                   | 299  |
| Banco de Inversión Y Comercio Exterior         | 300  |
| Banco Piano                                    | 301  |
| Banco Finansur                                 | 303  |
| Banco Julio                                    | 305  |
| Banco Privado de Inversiones                   | 306  |
| Nuevo Banco de La Rioja                        | 309  |
| Banco Del Sol                                  | 310  |
| Nuevo Banco Del Chaco                          | 311  |
| M. B. A. Banco de Inversiones                  | 312  |
| Banco de Formosa                               | 315  |
| Banco CMF                                      | 319  |
| Banco de Santiago Del Estero                   | 321  |
| Nuevo Banco Industrial de Azul                 | 322  |
| Deutsche Bank                                  | 325  |
| Nuevo Banco de Santa Fe                        | 330  |
| Banco Cetelem Argentina                        | 331  |
| Banco de Servicios Financieros                 | 332  |
| Banco Cofidis                                  | 335  |
| Banco Bradesco Argentina                       | 336  |
| Banco de Servicios Y Transacciones             | 338  |
| Rci Ba                                         | 339  |
| Bacs Banco de Crédito Y Securitización         | 340  |
| Nuevo Banco de Entre Rios                      | 386  |
| Nuevo Banco Suquia                             | 387  |
| Nuevo Banco Bisel                              | 388  |
| Banco Columbia                                 | 389  |
| Mercado Pago                                   | 031  |


# Bolivia

Check the requirements and validations made over the cashouts on Bolivia

### Required fields

<table><thead><tr><th>Field</th><th>Format</th><th width="249.33333333333331">Description</th></tr></thead><tbody><tr><td><code>login</code></td><td>String</td><td>Cashouts login</td></tr><tr><td><code>pass</code></td><td>String</td><td>Cashouts pass</td></tr><tr><td><code>external_id</code></td><td>String (max length: 100)</td><td>Transaction's ID on your end</td></tr><tr><td><code>document_type</code></td><td>See <a href="#document_type-and-document_id-validations">document validations</a></td><td>Beneficiary's document type.</td></tr><tr><td><code>document_id</code></td><td>See <a href="#document_type-and-document_id-validations">document validations</a></td><td>Beneficiary's document ID.</td></tr><tr><td><code>country</code></td><td><code>BO</code></td><td>The country codes are in ISO 3166-1 alpha-2 format. </td></tr><tr><td><code>currency</code></td><td><code>BOB</code> / <code>USD</code></td><td>The currencies are in ISO 4217 format.</td></tr><tr><td><code>amount</code></td><td>Number with up to 2 decimals</td><td>Cashout amount</td></tr><tr><td><code>bank_code</code></td><td>See <a href="#bank-codes">bank codes</a></td><td>Code specifying the beneficiary's bank</td></tr><tr><td><code>bank_account</code></td><td>See <a href="#bank-account-validations">validations below</a></td><td>Beneficiary's bank account</td></tr><tr><td><code>account_type</code></td><td>See <a href="#account-types">account type codes</a></td><td>Beneficiary's bank account type</td></tr><tr><td><code>beneficiary_name</code></td><td>String (max length: 100)</td><td>Beneficiary's name</td></tr></tbody></table>

### `bank_account` validations

Use the Regex below to validate the bank accounts on your end.

| Bank name | Format                                | Regex        | Example    |
| --------- | ------------------------------------- | ------------ | ---------- |
| All       | Numeric. Between 4 and 30 characters. | `^\d{4,30}$` | 1234567890 |

### `account_type`

The `account_type` is specified with only one character described below.

| account\_type | Description       |
| :-----------: | ----------------- |
|    **`C`**    | Checkings account |
|    **`S`**    | Savings account   |

### `document_type`  and `document_id` validations

<table><thead><tr><th width="166.68359375">document_type</th><th>document_id format</th></tr></thead><tbody><tr><td><code>CI</code></td><td>Numeric. Length: 7</td></tr><tr><td><code>CIE</code></td><td>Alphanumeric. One character followed by 8 digits</td></tr><tr><td><code>NIT</code></td><td>Alphanumeric. One character followed by 6 digits</td></tr><tr><td><code>PASS</code></td><td>Numeric. Length: 12</td></tr></tbody></table>

### Example request

```java
{
    "login": "xxxxxxx",
    "pass": "xxxxxxx",
    "external_id": "30000000001",
    "country": "BO",
    "currency": "BOB",
    "amount": 100,
    "document_type": "PASS",
    "document_id": "B225255",
    "beneficiary_name": "User",
    "bank_account": "1234567890",
    "bank_code": "001",
    "account_type": "C",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

### Bank codes

{% hint style="success" %}

### Bank code retrieval via API

For the full and most up-to-date list of banks and its codes, please check this endpoint <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kD1eu0r7kuzS2nEDm1N9" class="button primary">Get bank codes</a>
{% endhint %}

| Bank                                                 | Code |
| ---------------------------------------------------- | ---- |
| Banco Nacional de Bolivia S.A.                       | 001  |
| Banco PYME Ecofuturo S.A.                            | 002  |
| Banco Mercantil Santa Cruz S.A.                      | 003  |
| Almacenes Internacionales S.A.                       | 004  |
| Banco de Crédito de Bolivia S.A.                    | 005  |
| Warrant Mercantil Santa Cruz S.A.                    | 006  |
| Banco de la Nación Argentina S. A.                  | 007  |
| Banco Do Brasil S.A.- Sucursal Bolivia               | 008  |
| Banco BISA S.A.                                      | 009  |
| E-fectivo ESPM S.A.                                  | 010  |
| Banco Unión S.A.                                    | 014  |
| Banco Económico S.A.                                | 016  |
| Banco Solidario S.A.                                 | 017  |
| Banco Ganadero S.A.                                  | 018  |
| Banco PYME de la Comunidad S.A.                      | 032  |
| Banco para el Fomento a Iniciativas Económicas S.A. | 033  |
| Banco Fortaleza S.A.                                 | 034  |
| Banco Fassil S.A.                                    | 035  |
| Banco Prodem S.A.                                    | 036  |


# Brazil

Check the requirements and validations made over the cashouts on Brazil

### Required fields

| Field              | Format                                                                                                      | Description                                                |
| ------------------ | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| `login`            | String                                                                                                      | Cashouts login                                             |
| `pass`             | String                                                                                                      | Cashouts pass                                              |
| `external_id`      | String (max length: 100)                                                                                    | Transaction's ID on your end                               |
| `document_id`      | Numeric. Length 11 (Validate verifier-digits)                                                               | Beneficiary's CPF.                                         |
| `country`          | `BR`                                                                                                        | The country codes are in ISO 3166-1 alpha-2 format.        |
| `currency`         | `BRL` / `USD`                                                                                               | The currencies are in ISO 4217 format.                     |
| `amount`           | Number with up to 2 decimals                                                                                | Cashout amount                                             |
| `bank_code`        | See [bank codes](/cashouts/countries-validations/american-countries/brazil#bank-codes)                      | Code specifying the beneficiary's bank                     |
| `bank_account`     | See [validations below](/cashouts/countries-validations/american-countries/brazil#bank-account-validations) | Beneficiary's bank account                                 |
| `bank_branch`      | See [validations below](#bank-branch-validations)                                                           | Beneficiary's bank branch                                  |
| `account_type`     | See [account type codes](/cashouts/countries-validations/american-countries/brazil#account-types)           | Beneficiary's bank account type                            |
| `beneficiary_name` | String (max length: 100)                                                                                    | Beneficiary's name                                         |
| `phone`            | String (max length: 20 characters - up to 15 digits)                                                        | Beneficiary's phone - Optional unless using PIX key phone. |
| `email`            | String (max length: 100)                                                                                    | Beneficiary's email - Optional unless using PIX key email. |

### `bank_account` validations

Use the Regex below to validate the bank accounts on your end.

<table><thead><tr><th width="162.87890625">Bank name</th><th width="115.65234375" align="center">Bank code</th><th width="236.79296875">Format</th><th>Regex</th><th>Example</th></tr></thead><tbody><tr><td>Banco do Brasil</td><td align="center">001</td><td>Format: DDDDDDDDD-X or DDDDDDDDDX where D are digits and X is a digit or the letter 'X'. The number of digits may change, but can't exceed 10 digits</td><td><code>^\d{1,9}(-)?[\dxX]$</code></td><td>1234567890, 123456789-0, 123456789-X, 123456789X</td></tr><tr><td>Santander</td><td align="center">033</td><td>Format: DDDDDDDDD, DDDDDDDDDD, DDDDDDDDD-D, DDDDDDDDD-D where D are digits. The number of digits has to be from 9 to 10</td><td><code>^\d{7,10} (-)?[\d]$</code></td><td>12345678, 12345678-9</td></tr><tr><td>Banrisul</td><td align="center">041</td><td>Format: DDDDDDDDD-D or DDDDDDDDDD where D are digits. The number of digits has to be 10</td><td><code>^\d{9}(-)?[\d]$</code></td><td>1234567890, 123456789-0</td></tr><tr><td>Caixa</td><td align="center">104</td><td>Format: DDDDDDDDD-D or DDDDDDDDDDDDDD-D where D are digits. The number of digits has to be between 1 and 15</td><td><code>^\d{1,14}(-)?[\d]$</code></td><td><p>1234567890,</p><p>123456789-0, 12345678901234-5</p></td></tr><tr><td>Bradesco</td><td align="center">237</td><td>Format: DDDDDDD-D or DDDDDDDD where D are digits. The number of digits may change, but can't exceed 8 digits</td><td><code>^\d{1,7}(-)?[\d]$</code></td><td>12345678, 1234567-8</td></tr><tr><td>Mercado Pago</td><td align="center">323</td><td>Format: DDDDDDDDDD-D or DDDDDDDDDDD where D are digits. The number of digits may change, but can't exceed 11 digits</td><td><code>^\d{1,9}(-)?[\d]$</code></td><td>12345678910, 1234567891-0</td></tr><tr><td>Itaú</td><td align="center">341</td><td>Format: DDDDDD-D or DDDDDDD where D are digits. The number of digits may change but ranges from 6 to 7</td><td><code>^\d{1,7} (-)?[\d]$</code></td><td>123456, 12345-6</td></tr><tr><td>Pix Key Phone</td><td align="center">10000</td><td>Empty string</td><td><code>^$</code></td><td></td></tr><tr><td>Pix Key Email</td><td align="center">10001</td><td>Empty string</td><td><code>^$</code></td><td></td></tr><tr><td>Pix Key Document</td><td align="center">10002</td><td>Empty string</td><td><code>^$</code></td><td>""</td></tr><tr><td>Others</td><td align="center">-</td><td>Format: DDDDDDDDDD-D or DDDDDDDDDDD where D are digits. The number of digits may change, but can't exceed 11 digits</td><td><code>^\d{1,9}(-)?[\d]$</code></td><td>123456789, 123456789-0</td></tr></tbody></table>

### `bank_branch` validations

Use the Regex below to validate the valid (and invalid) bank branches on your end.

<table><thead><tr><th width="158.87109375">Bank name</th><th width="115.14453125" align="center">Bank code</th><th width="246.1328125">Format</th><th width="216">Regex</th><th>Exceptions</th><th></th></tr></thead><tbody><tr><td>Banco do Brasil</td><td align="center">001</td><td>Format: DDDD-X or DDDDX where D are digits and X is a digit or the letter 'X'. The number of digits may change, but can't exceed 5 digits</td><td><code>^\d{1,4}(-)?[\dxX]$</code></td><td><p>Can't have 4 zeros and a digit.</p><p></p><p><code>^0{0,4}(-)?[\dxX]$</code></p></td><td>1234-1, 1234-X, 12341, 1234X</td></tr><tr><td>Santander</td><td align="center">033</td><td>Format: DDDD where D are digits. The number of digits may change, but can't exceed 4 digits</td><td><code>^\d{1,4}$</code></td><td><p>Can't be 033</p><p></p><p><code>^033$</code></p></td><td>1234</td></tr><tr><td>Banrisul</td><td align="center">041</td><td>Format: DDDD-X or DDDDX where D are digits and X is a digit or the letter 'X'. The number of digits may change, but can't exceed 5 digits</td><td><code>^\d{1,4}(-)?[\dxX]$</code></td><td>N/A</td><td>1234-1, 1234-X, 12341, 1234X</td></tr><tr><td>Banco Inter</td><td align="center">077</td><td>Format: DDDD-D or DDDDD where D are digits. The number of digits may change, but can't exceed 5 digits</td><td><code>^\d{1,4}(-)?[\d]$</code></td><td><p>Can't start with zeros followed by 77 </p><p></p><p><code>^0{0,3}77$</code></p></td><td>1234-1,  12341</td></tr><tr><td>Caixa</td><td align="center">104</td><td>Format: DDDD-D or DDDDD where D are digits. The number of digits may change, but can't exceed 5 digits</td><td><code>^\d{1,4}(-)?[\d]$</code></td><td><p>Can't be: 001/013/023/104</p><p></p><p><code>^001$|^013$|^023$|^104$</code></p></td><td>1234-1, 12341</td></tr><tr><td>Banco Original</td><td align="center">212</td><td>Format: DDDDD-D or DDDDDD where D are digits. The number of digits may change, but can't exceed 5 digits</td><td><code>^\d{1,4}(-)?[\d]$</code></td><td><p>Can't start with zeros followed by 212</p><p></p><p><code>^0{0,2}212$</code></p></td><td>1234-1, 12341</td></tr><tr><td>Bradesco</td><td align="center">237</td><td>Format: DDDD-D or DDDDD where D are digits. The number of digits may change, but can't exceed 5 digits</td><td><code>^\d{1,4}(-)?[\d]$</code></td><td><p>Can't be 237</p><p></p><p><code>^237$</code></p></td><td>1234-1, 12341</td></tr><tr><td>Banco Nu Pagamento</td><td align="center">260</td><td>Format: DDDD-D or DDDDD where D are digits. The number of digits may change, but can't exceed 5 digits</td><td><code>^\d{1,4}(-)?[\d]$</code></td><td><p>Can't start with zeros followed by 260</p><p></p><p><code>^0{0,2}260$</code></p></td><td>1234-1, 12341</td></tr><tr><td>PagSeguro</td><td align="center">290</td><td>Format: DDD-D or DDDD where D are digits. The number of digits may change, but can't exceed 4 digits</td><td><code>^\d{3}(-)?[\d]$</code></td><td><p>Can't start with zeros followed by 290</p><p></p><p><code>^0{0,2}290$</code></p></td><td>123-4, 1234</td></tr><tr><td>Mercado Pago</td><td align="center">323</td><td><code>N/A</code></td><td><code>N/A</code></td><td><code>N/A</code></td><td>0001</td></tr><tr><td>Itau</td><td align="center">341</td><td>Format: DDDD-D or DDDDD where D are digits. The number of digits may change, but can't exceed 5 digits</td><td><code>^\d{1,4}(-)?[\d]$</code></td><td><p>Can't be 314</p><p></p><p><code>^341$</code></p></td><td>1234-1, 12341</td></tr><tr><td>Pix Key Phone</td><td align="center">10000</td><td>Format: "+55 012 92345-1234"</td><td><code>^([+55]{3})([(]?[0]?[1-9]{2}[)]?)[9]?([1-9]{4})-?([0-9]{4})$</code></td><td>N/A</td><td>+55 66 666666666</td></tr><tr><td>Pix Key Email</td><td align="center">10001</td><td><code>N/A</code></td><td><code>^$</code></td><td>N/A</td><td>testuser@gmail.com</td></tr><tr><td>Pix Key Document</td><td align="center">10002</td><td><code>N/A</code></td><td><code>^$</code></td><td>N/A</td><td>N/A</td></tr><tr><td>Others</td><td align="center">-</td><td>Format: DDDD-D or DDDDD where D are digits. The number of digits may change, but can't exceed 5 digits</td><td><code>^\d{1,4}(-)?[\d]$</code></td><td>N/A</td><td>1234-1, 12341</td></tr></tbody></table>

### `email` validations <a href="#email-validations" id="email-validations"></a>

<table><thead><tr><th width="132.43359375">Bank name</th><th width="150.703125">Bank code</th><th width="138.96484375">Required</th><th>Example</th></tr></thead><tbody><tr><td>iCash</td><td>998</td><td>Yes</td><td>johnSmith1@gmail.com</td></tr></tbody></table>

### `account_type`

The `account_type` is specified with only one character described below.

| account\_type | Description           |
| :-----------: | --------------------- |
|    **`C`**    | Checkings account     |
|    **`S`**    | Savings account       |
|    **`O`**    | Joint checkings       |
|    **`P`**    | Joint savings account |

### Example request

{% tabs %}
{% tab title="Pix Key Phone" %}

```json
{    
    "login": "xxxxxxx",
    "pass": "xxxxxxx",
    "external_id": "30000000001",
    "country": "BR",
    "currency": "BRL",
    "amount": 100,
    "document_id": "01716001340",
    "beneficiary_name": "User",
    "phone": "+5511666666666"
    "bank_code": "10000",
    "bank_account": "",
    "bank_branch": "",
    "account_type": "C",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% endtab %}

{% tab title="Pix Key Email" %}

```json
{    
    "login": "xxxxxxx",
    "pass": "xxxxxxx",
    "external_id": "30000000001",
    "country": "BR",
    "currency": "BRL",
    "amount": 100,
    "document_id": "01716001340",
    "email": "testuser@gmail.com",
    "beneficiary_name": "User",
    "bank_code": "10001",
    "bank_account": "",
    "bank_branch": "",
    "account_type": "C",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% endtab %}

{% tab title="Pix Key Document" %}

```json
{    
    "login": "xxxxxxx",
    "pass": "xxxxxxx",
    "external_id": "30000000001",
    "country": "BR",
    "currency": "BRL",
    "amount": 100,
    "document_id": "01716001340",
    "beneficiary_name": "User",
    "bank_code": "10002",
    "bank_account": "",
    "bank_branch": "",
    "account_type": "C",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% endtab %}

{% tab title="Banks" %}

```json
{
    "login": "xxxxxxx",
    "pass": "xxxxxxx",
    "external_id": "30000000001",
    "country": "BR",
    "currency": "BRL",
    "amount": 100,
    "document_id": "01716001340",
    "beneficiary_name": "User",
    "bank_account": "3423422-7",
    "bank_code": "001",
    "bank_branch": "1234",
    "account_type": "C",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% endtab %}
{% endtabs %}

#### Type of keys

<table><thead><tr><th width="209">Bank</th><th width="125.48828125">Bank Code</th><th>Details</th></tr></thead><tbody><tr><td>Pix Key Phone</td><td>10000</td><td><code>bank_account</code> and <code>bank_branch</code> must be empty. The field <code>acount_type</code> can have any value. The field <code>phone</code> must be sent </td></tr><tr><td>Pix Key Email</td><td>10001</td><td><code>bank_account</code> and <code>bank_branch</code> must be empty. The field <code>acount_type</code> can have any value. The field <code>email</code> must be sent </td></tr><tr><td>Pix Key Document</td><td>10002</td><td><code>bank_account</code> and <code>bank_branch</code> must be empty. The field <code>acount_type</code> can have any value. The field <code>document_id</code> must be sent </td></tr><tr><td>Pix Key Random</td><td>10003</td><td><code>bank_branch</code> must be empty. The field <code>account_type</code> can have any value. The field <code>bank_account</code> must be sent - this indicates the customer's PIX random key</td></tr></tbody></table>

If a payout is created without the mandatory fields, it will be rejected.<br>

### Bank codes

{% hint style="success" %}

### Bank code retrieval via API

For the full and most up-to-date list of banks and its codes, please check this endpoint <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kD1eu0r7kuzS2nEDm1N9" class="button primary">Get bank codes</a>
{% endhint %}

<table><thead><tr><th width="334.5">Bank</th><th>Code</th></tr></thead><tbody><tr><td>BANCO DO BRASIL S.A.</td><td>001</td></tr><tr><td>BANCO DA AMAZONIA S.A.</td><td>003</td></tr><tr><td>BANCO DO NORDESTE DO BRASIL S.A.</td><td>004</td></tr><tr><td>BANESTES S.A. BANCO DO ESTADO DO ESPIRITO SANTO</td><td>021</td></tr><tr><td>Banco Alfa S.A.</td><td>025</td></tr><tr><td>BANCO SANTANDER BRASIL S.A.</td><td>033</td></tr><tr><td>BANCO ABN AMRO S.A</td><td>075</td></tr><tr><td>BANCO DO ESTADO DO PARA S.A. - BANPARA</td><td>037</td></tr><tr><td>BANCO DO ESTADO DO RIO GRANDE DO SUL S.A. - BANRISUL</td><td>041</td></tr><tr><td>BANCO DO ESTADO DE SERGIPE S.A. - BANESE</td><td>047</td></tr><tr><td>BANCO DE BRASILIA S.A. - BRB</td><td>070</td></tr><tr><td>BANCO INTER</td><td>077</td></tr><tr><td>Banco Original do Agronegócio S.A.</td><td>079</td></tr><tr><td>Cooperativa Central de Crédito (VIACREDI)</td><td>085</td></tr><tr><td>POLOCRED SCMEPP</td><td>093</td></tr><tr><td>Credisis - Central de Cooperativas de Crédito Ltdav</td><td>097</td></tr><tr><td>XP INVESTIMENTOS S.A</td><td>102</td></tr><tr><td>CAIXA ECONOMICA FEDERAL - CEF</td><td>104</td></tr><tr><td>Banco BOCOM BBM S.A.</td><td>107</td></tr><tr><td>BANCO AGIPLAN S.A.</td><td>121</td></tr><tr><td>Confederação Nacional das Cooperativas Centrais Unicred</td><td>136</td></tr><tr><td>Stone Pagamentos S.A</td><td>197</td></tr><tr><td>Banco BTG Pactual S.A.</td><td>208</td></tr><tr><td>BANCO ORIGINAL</td><td>212</td></tr><tr><td>BANCO BONSUCESSO S.A.</td><td>218</td></tr><tr><td>Banco Fibra S.A.</td><td>224</td></tr><tr><td>BANCO BRADESCO S.A.</td><td>237</td></tr><tr><td>NU PAGAMENTOS</td><td>260</td></tr><tr><td>Will Financeira S.A.</td><td>280</td></tr><tr><td>PagSeguro Internet S.A</td><td>290</td></tr><tr><td>Banco BPP Instituição de Pagamento S/A</td><td>301</td></tr><tr><td>BANCO BMG S.A</td><td>318</td></tr><tr><td>China Construction Bank Banco Múltiplo S.A.</td><td>320</td></tr><tr><td>MERCADOPAGO.COM REPRESENTACOES LTDA.</td><td>323</td></tr><tr><td>BANCO BARI DE INVESTIMENTOS E FINANCIAMENTOS S.A</td><td>330</td></tr><tr><td>BAcesso Soluções de Pagamento S.A</td><td>332</td></tr><tr><td>Banco Digio S.A</td><td>335</td></tr><tr><td>BANCO C6 S.A</td><td>336</td></tr><tr><td>ITAU UNIBANCO S.A.</td><td>341</td></tr><tr><td>GERENCIANET S.A</td><td>364</td></tr><tr><td>Banco Société Générale Brasil S.A.</td><td>366</td></tr><tr><td>PICPAY SERVICOS S.A</td><td>380</td></tr><tr><td>BANCO MERCANTIL DO BRASIL S.A.</td><td>389</td></tr><tr><td>Banco Hub pagamentos SA</td><td>396</td></tr><tr><td>HSBC BANK BRASIL S.A. - BANCO MULTIPLO</td><td>399</td></tr><tr><td>CORA SCD S.A</td><td>403</td></tr><tr><td>Banco BV S.A.</td><td>413</td></tr><tr><td>BANCO SAFRA S.A.</td><td>422</td></tr><tr><td>CITIBANK N.A.</td><td>477</td></tr><tr><td>Deutsche Bank S.A. – Banco Alemão</td><td>487</td></tr><tr><td>JPMorgan Chase Bank, National Association</td><td>488</td></tr><tr><td>ING Bank N.V.</td><td>492</td></tr><tr><td>Banco Credit Suisse S.A.</td><td>505</td></tr><tr><td>Neon Pagamentos S.A. IP</td><td>536</td></tr><tr><td>Banco PAN S.A.</td><td>623</td></tr><tr><td>BANCO SOFISA</td><td>637</td></tr><tr><td>Banco Votorantim S.A.</td><td>655</td></tr><tr><td>BANCO DAYCOVAL S.A.</td><td>707</td></tr><tr><td>BANCO OURINVEST S.A</td><td>712</td></tr><tr><td>BANCO CITIBANK</td><td>745</td></tr><tr><td>BANCO MODAL S.A.</td><td>746</td></tr><tr><td>Banco Rabobank International Brasil S.A.</td><td>747</td></tr><tr><td>BANCO COOPERATIVO SICREDI S.A.</td><td>748</td></tr><tr><td>Banco BNP Paribas Brasil S.A.</td><td>752</td></tr><tr><td>BANCO COOPERATIVO DO BRASIL S/A - BANCOOB</td><td>756</td></tr><tr><td>iCash</td><td>998</td></tr><tr><td>Pix Key Phone</td><td>10000</td></tr><tr><td>Pix Key Email</td><td>10001</td></tr><tr><td>Pix Key Document</td><td>10002</td></tr></tbody></table>


# Canada

Check the requirements and validations made over the cashouts on Canada

### Required fields

| Field                  | Format                                                                                                      | Description                                         |
| ---------------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| `login`                | String                                                                                                      | Cashouts login                                      |
| `pass`                 | String                                                                                                      | Cashouts pass                                       |
| `external_id`          | String (max length: 100)                                                                                    | Transaction's ID on your end                        |
| `document_id`          | See [document validations](#document-validations)                                                           | Beneficiary's document ID                           |
| `country`              | `CA`                                                                                                        | The country codes are in ISO 3166-1 alpha-2 format. |
| `currency`             | `CAD` / `USD`                                                                                               | The currencies are in ISO 4217 format.              |
| `amount`               | Number with up to 2 decimals                                                                                | Cashout amount                                      |
| `bank_code`            | [Valid](/cashouts/countries-validations/american-countries/canada#bank-codes) bank code                     | Code specifying the beneficiary's bank              |
| `bank_account`         | [Valid](/cashouts/countries-validations/american-countries/canada#bank-account-validations) bank account    | Beneficiary's bank account                          |
| `bank_branch`          | [Valid](/cashouts/countries-validations/american-countries/canada#bank-branch-validations) institute number | Beneficiary's institute number                      |
| `email`                | [Valid](/knowledge-base/countries-specifications#emails-validations) email address                          | Beneficiary's email address                         |
| `beneficiary_name`     | String (max length: 100)                                                                                    | Beneficiary's name                                  |
| `beneficiary_lastname` | String (max length: 100)                                                                                    | Beneficiary's last name                             |

### bank\_account validations

Use the Regex below to validate the bank accounts on your end.

| Bank name | Bank code | Format                                                          | Regex        | Example      |
| --------- | :-------: | --------------------------------------------------------------- | ------------ | ------------ |
| Etransfer |   10000   | For Etransfer, the bank\_account must come empty: "" (Not null) | `^$`         |              |
| Others    |     -     | Numeric between 3 and 16 digits.                                | `^\d{3,16}$` | 738746356473 |

### `bank_branch` Validations

Use the Regex below to validate the valid (and invalid) bank branches on your end.

<table><thead><tr><th width="119.234375">Bank name</th><th width="121.16015625" align="center">Bank code</th><th width="289.69921875">Format</th><th width="125.1484375">Regex</th><th width="100">Example</th></tr></thead><tbody><tr><td>Etransfer</td><td align="center">10000</td><td>For Etransfer, the bank_branch must come empty: "" (not null)</td><td><code>^$</code></td><td></td></tr><tr><td>Others</td><td align="center">-</td><td>String of 5 characters</td><td><code>^[\s\S]{5}$</code></td><td>12345</td></tr></tbody></table>

### `email` validations

<table><thead><tr><th width="150.23046875">Bank name</th><th width="145.83203125" align="center">Bank code</th><th width="143.94140625" align="center">Required</th><th>Example</th></tr></thead><tbody><tr><td>Etransfer</td><td align="center">10000</td><td align="center">Yes</td><td>johnSmith1@gmail.com</td></tr><tr><td>Others</td><td align="center">-</td><td align="center">No</td><td>-</td></tr></tbody></table>

### `document` validations

<table><thead><tr><th width="222.45703125">Document type</th><th>Format</th></tr></thead><tbody><tr><td>HC (Health Card)</td><td>Numeric. Length 10</td></tr><tr><td>PASS (Passport)</td><td>Length between 8 and 12 inclusive</td></tr></tbody></table>

### Example request

{% tabs %}
{% tab title="Etransfer" %}

```json
{
    "login": "xxxxxxxx",
    "pass": "xxxxxxxx",
    "external_id": "30000000001",
    "country": "CA",
    "currency": "CAD",
    "amount": 100,
    "document_id": "5676586998",
    "bank_account": "",
    "bank_code": "10000",
    "bank_branch": "",
    "email": "johnSmith@gmail.com",
    "beneficiary_name": "John",
    "beneficiary_lastname": "Smith",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% endtab %}

{% tab title="Banks" %}

```json
{
    "login": "xxxxxxxx",
    "pass": "xxxxxxxx",
    "external_id": "30000000001",
    "country": "CA",
    "currency": "CAD",
    "amount": 100,
    "document_id": "5676586998",
    "bank_account": "38749027362",
    "bank_code": "001",
    "bank_branch": "12345",
    "email": "johnSmith@gmail.com",
    "beneficiary_name": "John",
    "beneficiary_lastname": "Smith",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% endtab %}
{% endtabs %}

### Bank codes

{% hint style="info" %}

### **Approval times**

* **Etransfer approval time:** Up to one business day
* **Banks approval time:** Up to four business days
  {% endhint %}

{% hint style="success" %}

### Bank code retrieval via API

For the full and most up-to-date list of banks and its codes, please check this endpoint <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kD1eu0r7kuzS2nEDm1N9" class="button primary">Get bank codes</a>
{% endhint %}

| Bank Name                                                               | Code  |
| ----------------------------------------------------------------------- | ----- |
| Etransfer                                                               | 10000 |
| BANK OF MONTREAL                                                        | 001   |
| THE BANK OF NOVA SCOTIA                                                 | 002   |
| ROYAL BANK OF CANADA                                                    | 003   |
| THE TORONTO-DOMINION BANK                                               | 004   |
| BANQUE NATIONALE DU CANADA                                              | 006   |
| CANADIAN IMPERIAL BANK OF COMMERCE                                      | 010   |
| HSBC BANK CANADA                                                        | 016   |
| CANADIAN WESTERN BANK                                                   | 030   |
| BANQUE LAURENTIENNE DU CANADA                                           | 039   |
| BANK OF CANADA                                                          | 177   |
| CANADA SAVINGS BOND REDEMPTION CERTIFICATE                              | 187   |
| ATB FINANCIAL                                                           | 219   |
| BANK OF AMERICA NATIONAL ASSOCIATION                                    | 241   |
| THE BANK OF NEW YORK MELLON                                             | 242   |
| THE BANK OF TOKYO-MITSUBISHI UFJ LTD                                    | 245   |
| BARCLAYS BANK OF CANADA                                                 | 248   |
| BNP PARIBAS                                                             | 250   |
| CITIBANK CANADA                                                         | 260   |
| DEUTSCHE BANK AG                                                        | 265   |
| MEGA INTERNATIONAL COMMERCIAL BANK (CANADA)                             | 269   |
| JPMORGAN CHASE BANK, NATIONAL ASSOCIATION                               | 270   |
| KEB HANA BANK CANADA                                                    | 275   |
| MIZUHO CORPORATE BANK LTD CANADA BRANCH                                 | 277   |
| NATIONAL BANK OF GREECE (CANADA)                                        | 286   |
| UBS BANK (CANADA)                                                       | 290   |
| SBI CANADA BANK                                                         | 294   |
| SUMITOMO MITSUI BANKING CORPORATION CAN.                                | 301   |
| AMEX BANK OF CANADA                                                     | 303   |
| INDUSTRIAL AND COMMERCIAL BANK OF CHINA                                 | 307   |
| BANK OF CHINA (CANADA)                                                  | 308   |
| CITIZENS BANK OF CANADA                                                 | 309   |
| FIRST NATIONS BANK OF CANADA                                            | 310   |
| BOFA CANADA BANK                                                        | 311   |
| JP MORGAN BANK CANADA                                                   | 314   |
| CTBC BANK CORP. (CANADA)                                                | 315   |
| HABIB CANADIAN BANK                                                     | 321   |
| CAPITAL ONE BANK (CANADA BRANCH)                                        | 323   |
| STATE STREET                                                            | 327   |
| CITIBANK, NA                                                            | 328   |
| COMERICA BANK                                                           | 330   |
| FIRST COMMERCIAL BANK                                                   | 332   |
| VERSABANK                                                               | 334   |
| UNITED OVERSEAS BANK LIMITED                                            | 335   |
| CANADIAN TIRE BANK                                                      | 338   |
| ICICI BANK CANADA                                                       | 340   |
| ZAG BANK                                                                | 342   |
| HOLLIS CANADIAN BANK                                                    | 343   |
| SOCIETE GENERALE (CANADA BRANCH)                                        | 346   |
| DIRECTCASH BANK                                                         | 352   |
| SHINHAN BANK CANADA                                                     | 355   |
| HOME BANK                                                               | 361   |
| WELLS FARGO BANK NA CANADIAN BRANCH                                     | 362   |
| CHINA CONTRUCTION BANK (TORONTO BRANCH)                                 | 366   |
| WEALTH ONE BANK OF CANADA                                               | 370   |
| BANK OF CHINA (TORONTO BRANCH)                                          | 372   |
| TRUST GENERAL INC                                                       | 506   |
| COMMUNITY TRUST COMPANY LTD                                             | 507   |
| THE CANADA TRUST COMPANY                                                | 509   |
| TRUST LA LAURENTIENNE                                                   | 522   |
| THE EFFORT TRUST COMPANY                                                | 532   |
| HOME SAVINGS AND LOAN CORPORATION                                       | 535   |
| INVESTORS GROUP TRUST COMPANY LTD                                       | 536   |
| MANULIFE BANK OF CANADA                                                 | 540   |
| MONTREAL TRUST COMPANY                                                  | 544   |
| MENNONITE TRUST LIMITED                                                 | 547   |
| CIBC TRUST CORPORATION                                                  | 548   |
| MONTREAL TRUST COMPANY OF CANADA                                        | 550   |
| SUN LIFE FINANCIAL TRUST INC.                                           | 551   |
| PEACE HILLS TRUST COMPANY                                               | 568   |
| ROYAL TRUST COMPANY (THE)                                               | 570   |
| ROYAL TRUST COMPANY (THE)                                               | 580   |
| NATIONAL TRUST COMPANY                                                  | 590   |
| CS ALTERNA BANK                                                         | 608   |
| TANGERINE BANK                                                          | 614   |
| B2B BANK                                                                | 618   |
| PEOPLES TRUST COMPANY                                                   | 621   |
| EQUITABLE BANK                                                          | 623   |
| MANULIFE TRUST COMPANY                                                  | 626   |
| THE TORONTO-DOMINION BANK                                               | 715   |
| LATVIAN CREDIT UNION LTD                                                | 803   |
| DUCA FINANCIAL SERVICES CREDIT UNION LTD                                | 806   |
| CENTRAL 1 CREDIT UNION                                                  | 809   |
| ALL TRANS FINANCIAL SERVICES CREDIT UNION LTD                           | 810   |
| AAA GROUP CLEARER NOT UNIQUE                                            | 815   |
| CAISSE FINANCIAL GROUP                                                  | 819   |
| CREDIT UNIONS IN NOVA SCOTIA                                            | 821   |
| CENTRAL 1 CREDIT UNION                                                  | 828   |
| FEDERATION DES CAISSES POPULAIRES DE L'ONTARIO                          | 829   |
| CREDIT UNIONS IN NEW BRUNSWICK                                          | 831   |
| COMMUNITY FIRST - A DIVISION OF YOUR NEIGHBOURHOOD CREDIT UNION LIMITED | 834   |
| CAISSE POPULAIRE DE KAPUSKASING LIMITEE                                 | 836   |
| MERIDIAN CREDIT UNION LIMITED                                           | 837   |
| CREDIT UNION CENTRAL OF NOVA SCOTIA                                     | 839   |
| DUNDALK DISTRICT CREDIT UNION LTD                                       | 840   |
| CREDIT UNIONS IN QUEBEC                                                 | 841   |
| ALTERNA SAVINGS AND CREDIT UNION LTD                                    | 842   |
| RAPPORT CREDIT UNION                                                    | 846   |
| BRUNSWICK CREDIT UNION FEDERATION LTD                                   | 849   |
| CREDIT UNIONS IN ONTARIO                                                | 851   |
| CONCENTRA BANK                                                          | 853   |
| GOLDEN HORSESHOE CREDIT UNION LTD                                       | 854   |
| FEDERATION DES CAISSES POPULAIRES ACADIENNES                            | 865   |
| CREDIT UNION CENTRAL OF MANITOBA                                        | 879   |
| CREDIT UNION CENTRAL OF SASKATCHEWAN                                    | 889   |
| L'ALLIANCE DES CAISSES POPULAIRES DE L'ONTARIO                          | 890   |
| CENTRAL 1 CREDIT UNION ALBERTA                                          | 899   |


# Chile

Check the requirements and validations made over the cashouts on Chile

### Required fields

| Field              | Format                                                                                                     | Description                                         |
| ------------------ | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| `login`            | String                                                                                                     | Cashouts login                                      |
| `pass`             | String                                                                                                     | Cashouts pass                                       |
| `external_id`      | String (max length: 100)                                                                                   | Transaction's ID on your end                        |
| `document_id`      | <p>Length 8 or 9</p><p>Document types: ID / RUN / RUT</p>                                                  | Beneficiary's document ID                           |
| `country`          | `CL`                                                                                                       | The country codes are in ISO 3166-1 alpha-2 format. |
| `currency`         | `CLP` / `USD`                                                                                              | The currencies are in ISO 4217 format.              |
| `amount`           | Number with up to 2 decimals                                                                               | Cashout amount                                      |
| `bank_code`        | See [bank codes](/cashouts/countries-validations/american-countries/chile#bank-codes)                      | Code specifying the beneficiary's bank              |
| `bank_account`     | See [validations below](/cashouts/countries-validations/american-countries/chile#bank-account-validations) | Beneficiary's bank account                          |
| `account_type`     | See [account type codes](/cashouts/countries-validations/american-countries/chile#account-types)           | Beneficiary's bank account type                     |
| `beneficiary_name` | String (max length: 100)                                                                                   | Beneficiary's name                                  |

### `bank_account` validations

| Bank name | Bank code | Format  | Regex        | Example    |
| --------- | :-------: | ------- | ------------ | ---------- |
| All       |     -     | Numeric | `^\d{6,16}$` | 1234567890 |

### `account_type`

The `account_type` is specified with only one character as described below.

| account\_type | Description       |
| :-----------: | ----------------- |
|    **`C`**    | Checkings account |
|    **`S`**    | Savings account   |
|    **`V`**    | Salary account    |

### Example request

```java
{
    "login": "xxxxxxxx",
    "pass": "xxxxxxxx",
    "external_id": "30000000001",
    "country": "CL",
    "currency": "CLP",
    "amount": 100,
    "document_id": "56765869",
    "bank_account": "56687456",
    "bank_code": "001",
    "account_type": "C",
    "beneficiary_name": "User",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

### Bank codes

{% hint style="success" %}

### Bank code retrieval via API

For the full and most up-to-date list of banks and its codes, please check this endpoint <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kD1eu0r7kuzS2nEDm1N9" class="button primary">Get bank codes</a>
{% endhint %}

| Bank                        | Code |
| --------------------------- | ---- |
| Banco de Chile              | 001  |
| Banco Edwards               | 001  |
| Citi                        | 001  |
| Banco Internacional         | 009  |
| Banco del Estado de Chile   | 012  |
| Scotiabank Sud Americano    | 014  |
| Banco Crédito e Inversiones | 016  |
| Corpbanca Bank              | 027  |
| Banco Bice                  | 028  |
| HSBC Bank                   | 031  |
| Banco Santander- Santiago   | 037  |
| Banco Itaú                  | 039  |
| ABN Amor Bank Chile         | 046  |
| Banco Security              | 049  |
| Banco Falabella             | 051  |
| Deutsche Bank               | 052  |
| Banco Ripley                | 053  |
| Radobank Chile              | 054  |
| Consorcio                   | 055  |
| Banco Penta                 | 056  |
| Banco Paris                 | 057  |
| BCI (Mach)                  | 116  |
| BBVA Banco Bhif             | 504  |
| Banco del Desarrollo        | 507  |


# Colombia

Check the requirements and validations made over the cashouts on Colombia

## Required fields

| Field                  | Format                                                                                                                    | Description                                         |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| `login`                | String                                                                                                                    | Cashouts login                                      |
| `pass`                 | String                                                                                                                    | Cashouts pass                                       |
| `external_id`          | String (max length: 100)                                                                                                  | Transaction's ID on your end                        |
| `document_id`          | See [document validations](/cashouts/countries-validations/american-countries/colombia#document-validations)              | Beneficiary's document ID                           |
| `document_type`        | See [document validations](/cashouts/countries-validations/american-countries/colombia#document-validations)              | Beneficiary's document type                         |
| `country`              | `CO`                                                                                                                      | The country codes are in ISO 3166-1 alpha-2 format. |
| `currency`             | `COP` / `USD`                                                                                                             | The currencies are in ISO 4217 format.              |
| `amount`               | Number with up to 2 decimals                                                                                              | Cashout amount                                      |
| `bank_code`            | See [bank codes](/cashouts/countries-validations/american-countries/colombia#bank-codes)                                  | Code specifying the beneficiary's bank              |
| `bank_account`         | See [validations below](/cashouts/countries-validations/american-countries/colombia#bank-account-validations)             | Beneficiary's bank account                          |
| `account_type`         | See [account type codes](/cashouts/countries-validations/american-countries/colombia#account-types)                       | Beneficiary's bank account type                     |
| `beneficiary_name`     | String (max length: 100)                                                                                                  | Beneficiary's name                                  |
| `beneficiary_lastname` | String (max length: 100)                                                                                                  | Beneficiary's last name                             |
| `address`              | String (max length: 255)                                                                                                  | Beneficiary's address                               |
| `phone`                | String (max length: 20). [See validations](/cashouts/countries-validations/american-countries/colombia#phone-validations) | Beneficiary's phone number                          |
| `email`                | String (max length: 255)                                                                                                  | Optional Field - Only required for Punto Red        |

### `bank_account` validations

| Bank name        | Bank code | Format                                       | Regex            | Example       |
| ---------------- | :-------: | -------------------------------------------- | ---------------- | ------------- |
| Pandablue Wallet |   30000   | Customer's mobile phone                      | `^[\s\S]{1,20}$` | +57 15551234  |
| Nequi            |    1507   | Customer's mobile phone                      | `^[\s\S]{1,20}$` | 5715551234    |
| Daviplata        |    1551   | Customer's mobile phone                      | `^[\s\S]{1,20}$` | 5715551234    |
| Efecty           |   10003   | Empty string                                 | `^$`             |               |
| Punto Red        |   10006   | Customer's mobile phone and customer's email | `^[\s\S]{1,20}$` | 5715551234    |
| Others           |     -     | Numeric[^1]                                  | `^\d{8,19}$`     | 1234567890123 |

### `account_type`

The `account_type` is specified with only one character as described below.

| account\_type | Description       |
| :-----------: | ----------------- |
|    **`C`**    | Checkings account |
|    **`S`**    | Savings account   |

### `phone` validations

<table><thead><tr><th width="128.3515625">Bank name</th><th width="123.3359375" align="center">Bank code</th><th width="212.56640625">Format</th><th align="center">Required</th><th>Example</th></tr></thead><tbody><tr><td>Efecty</td><td align="center">10003</td><td>Numeric - Country code +57 plus 10 digits<br>+57 XXX XXXXXXX</td><td align="center"><strong>Yes</strong></td><td>+57 310 4028587</td></tr><tr><td>Punto Red</td><td align="center">10006</td><td>Numeric - Country code +57 plus 10 digits<br>+57 XXX XXXXXXX</td><td align="center"><strong>Yes</strong></td><td>+57 310 4028587</td></tr><tr><td>Others</td><td align="center">-</td><td>-</td><td align="center"><strong>No</strong></td><td>-</td></tr></tbody></table>

### `document_type`  and `document_id` validations

<table><thead><tr><th width="166.68359375">document_type</th><th>document_id format</th></tr></thead><tbody><tr><td><code>CC</code></td><td>Numeric. Length between 6 and 10 inclusive</td></tr><tr><td><code>NIT</code></td><td>Numeric. Length between 8 and 15</td></tr><tr><td><code>CE</code></td><td>Numeric. Length between 6 and 10 inclusive</td></tr><tr><td><code>PASS</code></td><td>Numeric. Length between 6 and 10 inclusive</td></tr></tbody></table>

### Example request

{% tabs %}
{% tab title="Generic" %}

```json
{
    "login": "xxxxxxxx",
    "pass": "xxxxxxxx",
    "external_id": "30000000001",
    "country": "CO",
    "currency": "COP",
    "amount": 100,
    "document_id": "848392783",
    "document_type": "CC",
    "bank_account": "56687456",
    "bank_code": "001",
    "account_type": "C",
    "beneficiary_name": "User",
    "beneficiary_lastname": "Test",
    "address": "Calle 18, Colombia",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% endtab %}

{% tab title="Pandablue Wallet" %}

```json
{
    "login": "xxxxxxxx",
    "pass": "xxxxxxxx",
    "external_id": "30000000001",
    "country": "CO",
    "currency": "COP",
    "amount": 185000,
    "document_id": "848392783",
    "document_type": "CC",
    "bank_account": "+57 15551234",
    "bank_code": "30000",
    "account_type": "C",
    "phone": "+57 15551234",
    "email": "beneficiary@email.com",
    "beneficiary_name": "User",
    "beneficiary_lastname": "Test",
    "address": "Calle 18, Colombia",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% endtab %}

{% tab title="Efecty" %}

<pre class="language-json"><code class="lang-json">{
  "login": "xxxxxxxxx",
  "pass": "xxxxxxxxx",
  "external_id": "30000000002",
  "country": "CO",
  "currency": "COP",
  "amount": 100,
  "document_id": "24721498",
  "document_type": "CC",
  "cashout_type": "BANK",
  "bank_account": "",
  "bank_branch": "",
<strong>  "bank_code": 10003,
</strong>  "account_type": "S",
  "beneficiary_name": "User",
  "beneficiary_lastname": "Test",
  "address": "Calle 43"
  "email": "",
<strong>  "phone": "+57 310 4028587",
</strong>  "notification_url": "https://webhook.site/url",
}
</code></pre>

{% endtab %}

{% tab title="Punto Red" %}

<pre class="language-json"><code class="lang-json">{
  "login": "xxxxxxxxx",
  "pass": "xxxxxxxxx",
  "external_id": "30000000002",
  "country": "CO",
  "currency": "COP",
  "amount": 100,
  "document_id": "24721498",
  "document_type": "CC",
  "cashout_type": "BANK",
  "bank_account": "",
  "bank_branch": "",
<strong>  "bank_code": 10006,
</strong>  "account_type": "S",
  "beneficiary_name": "User",
  "beneficiary_lastname": "Test",
  "address": "Calle 43"
  "email": "useremail@gmail.com",
<strong>  "phone": "+57 310 4028587",
</strong>  "notification_url": "https://webhook.site/url",
}
</code></pre>

{% endtab %}
{% endtabs %}

#### BREB Cashouts - Types of Keys  <a href="#fields-required-for-the-oneshot-experience" id="fields-required-for-the-oneshot-experience"></a>

| Bank              | Bank Code | Bank Details                                                                                                                                                    |
| ----------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| BREB Key Phone    | 20000     | `bank_account` must contain the phone value. `bank_branch` must be empty. `phone` is required. `account_type` can be any value.                                 |
| BREB Key Email    | 20001     | `bank_account` must contain the email value. `bank_branch` must be empty. `email` is required. `account_type` can be any value.                                 |
| BREB Key Document | 20002     | `bank_account` must contain the document\_id value. `bank_branch` must be empty. `document_id` is required. `account_type` can be any value.                    |
| BREB Key Random   | 20003     | `bank_branch` must be empty. The field `account_type` can have any value. The field `bank_account` must be sent - this indicates the customer's BREB random key |

### Bank codes

{% hint style="success" %}

### Bank code retrieval via API

For the full and most up-to-date list of banks and its codes, please check this endpoint <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kD1eu0r7kuzS2nEDm1N9" class="button primary">Get bank codes</a>
{% endhint %}

| Bank                                | Code  |
| ----------------------------------- | ----- |
| BANCO DE BOGOTÁ                     | 001   |
| BANCO POPULAR                       | 002   |
| ITAÚ - Antes CORPBANCA              | 006   |
| BANCOLOMBIA                         | 007   |
| ABN AMRO                            | 008   |
| CITIBANK                            | 009   |
| HSBC                                | 010   |
| BANCO SUDAMERIS                     | 012   |
| BBVA                                | 013   |
| ITAÚ (HELM)                         | 014   |
| BANCO COLPATRIA                     | 019   |
| BANCO DE OCCIDENTE                  | 023   |
| BANCOLDEX S.A.                      | 031   |
| BANCO CAJA SOCIAL BCSC              | 032   |
| BANCO AGRARIO                       | 040   |
| BANCO MUNDO MUJER                   | 047   |
| BANCO DAVIVIENDA                    | 051   |
| BANCO AV VILLAS                     | 052   |
| BANCO W S.A.                        | 053   |
| BANCO PROCREDIT                     | 058   |
| BANCAMIA S.A.                       | 059   |
| BANCO PICHINCHA                     | 060   |
| BANCOOMEVA                          | 061   |
| BANCO FALABELLA S.A                 | 062   |
| BANCO FINANDINA                     | 063   |
| BANCO MULTIBANK S.A.                | 064   |
| SANTANDER                           | 065   |
| BANCO COMPARTIR S.A.                | 067   |
| BANCO SERFINANZA S.A.               | 069   |
| LULO BANK S.A                       | 070   |
| J.P. MORGAN COLOMBIA                | 071   |
| COOPCENTRAL S.A.                    | 076   |
| BANCO DALE                          | 097   |
| Directa24                           | 100   |
| COOPERATIVA FINANCIERA DE ANTIOQUIA | 283   |
| COTRAFA COOPERATIVA FINANCIERA      | 289   |
| COOFINEP                            | 291   |
| CONFIAR                             | 292   |
| FINANCIERA JURISCOOP                | 296   |
| BANCO UNION                         | 303   |
| COLTEFINANCIERA                     | 370   |
| BANCO CREDIFINANCIERA S.A.          | 558   |
| IRIS                                | 637   |
| MOVII                               | 801   |
| Nubank                              | 809   |
| RAPPIPAY                            | 811   |
| BANCO W                             | 1053  |
| MIBANCO                             | 1067  |
| ASOPAGOSS                           | 1086  |
| JFK COOPERATIVA FINANCIERA          | 1286  |
| NEQUI                               | 1507  |
| DAVIPLATA                           | 1551  |
| BAN100 CREDIFINANCIERA              | 1558  |
| PIBANK                              | 1560  |
| DING TECNIPAGOS SA                  | 1802  |
| POWWI                               | 1803  |
| UALA                                | 1804  |
| BANCO BTG PACTUAL                   | 1805  |
| BOLD CF                             | 1808  |
| COINK                               | 1812  |
| GLOBAL66                            | 1814  |
| D24 Card                            | 10001 |
| Su Red                              | 10002 |
| Efecty                              | 10003 |
| TPAGA Wallet                        | 10005 |
| PUNTO RED                           | 10006 |
| BREB                                | 1184  |
| Pandablue Wallet                    | 30000 |

[^1]: Numeric


# Pandablue Wallet: Cashouts to the Panda Wallet

Pandablue Wallet is Pandablue's digital wallet for beneficiaries in Colombia. Instead of sending funds to a bank account, merchants can send cashouts directly to a beneficiary's Pandablue Wallet using

## Key Features

**Same Cashouts API.** No additional integration is required. Cashouts to the Pandablue Wallet use the standard cashout request — only the `bank_code` changes to `30000`, and `bank_account` carries the beneficiary's wallet phone number.

**Beneficiary identification by phone number.** The wallet account is identified by the mobile phone number the beneficiary registered in the Pandablue Wallet app, not by a bank account number. Make sure the phone number you send matches the one registered in the beneficiary's wallet.

## Request Validations

| Field                           | Format                     | Notes                                                                                                             |
| ------------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `bank_code`                     | `30000`                    | Fixed value for Pandablue Wallet                                                                                  |
| `bank_account`                  | Beneficiary's mobile phone | The mobile number registered in the beneficiary's Pandablue Wallet, e.g. `+57 3001234567`. Regex `^[\s\S]{1,20}$` |
| `account_type`                  | `C`                        | Fixed value                                                                                                       |
| `phone`                         | Beneficiary's mobile phone | Same value as `bank_account`                                                                                      |
| `document_type` / `document_id` | `CC`, `NIT`, `CE`, `PASS`  | Same rules as standard Colombia cashouts                                                                          |
| `email`                         | Optional                   |                                                                                                                   |

All remaining fields (`login`, `pass`, `external_id`, `country` = `CO`, `currency` = `COP`, `amount`, `beneficiary_name`, `beneficiary_lastname`, `address`, `notification_url`) follow the standard Colombia cashout validations.

{% hint style="warning" %}
**The phone number format is not validated at request time.** The `bank_account` regex accepts any value between 1 and 20 characters, so a malformed or unregistered phone number will **not** return a validation error. The cashout will be accepted and later transition to `REJECTED`. Always send the phone number exactly as the beneficiary registered it in the Pandablue Wallet app.
{% endhint %}

## Example Request

```json
{
    "login": "xxxxxxxx",
    "pass": "xxxxxxxx",
    "external_id": "30000000001",
    "country": "CO",
    "currency": "COP",
    "amount": 185000,
    "document_id": "848392783",
    "document_type": "CC",
    "bank_account": "+57 3001234567",
    "bank_code": "30000",
    "account_type": "C",
    "phone": "+57 3001234567",
    "email": "beneficiary@email.com",
    "beneficiary_name": "User",
    "beneficiary_lastname": "Test",
    "address": "Calle 18, Colombia",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

## Status Flow & Notifications

Cashouts to the Pandablue Wallet are processed asynchronously:

{% stepper %}
{% step %}

## `CREATED`

The cashout request was accepted.
{% endstep %}

{% step %}

## `DELIVERED`

The cashout is being credited to the beneficiary's wallet. This transition typically happens within minutes.
{% endstep %}

{% step %}

## `COMPLETED` or `REJECTED`

Funds were credited to the beneficiary's Pandablue Wallet, or the credit could not be applied.
{% endstep %}
{% endstepper %}

The final status is delivered asynchronously to your `notification_url`. Always rely on the notification (or the status endpoint) rather than the synchronous response to confirm the credit.

## Rejection Scenarios

If the cashout cannot be credited, it transitions to `REJECTED` and the rejection reason is included in the notification. Common scenarios:

| Scenario                                                         | What to check                                                                                       |
| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| The phone number is not registered to an active Pandablue Wallet | Confirm with the beneficiary that the phone number you sent is the one registered in their wallet   |
| Beneficiary data doesn't match the wallet owner                  | Verify `beneficiary_name`, `beneficiary_lastname` and `document_id` against the wallet owner's data |
| The withdrawal expired before being credited                     | Create a new cashout request                                                                        |
| Invalid `bank_account` format                                    | Ensure the value is a valid Colombian mobile number                                                 |

Rejections are final. To retry, create a new cashout request with a new `external_id` and the corrected data.


# Bre-B: Colombia’s Instant Payment System

Bre-B is Colombia’s new real-time payments platform launched by the Central Bank. It allows users to send and receive funds instantly via unique “Bre-B keys.”

#### Key Features

**Bre-B Keys (Claves Bre-B):**\
Users can register identifiers such as phone numbers, email addresses, national IDs, or randomly generated aliases. Each key is mapped to a specific financial account for instant transfers.

**Cashouts to Bre-B Keys:**\
Merchants can initiate withdrawals to a user’s Bre-B key instead of a traditional bank account number, streamlining the payout process and ensuring faster fund delivery.

#### Supported Bre-B Key Types (and bank\_code)

| Bank / Channel      | Code    | Notes                                                                                                                                        |
| ------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| BREB Key — Phone    | `20000` | `bank_account` must contain the phone value. `bank_branch` must be empty. `phone` is required. `account_type` can be any value.              |
| BREB Key — Email    | `20001` | `bank_account` must contain the email value. `bank_branch` must be empty. `email` is required. `account_type` can be any value.              |
| BREB Key — Document | `20002` | `bank_account` must contain the document\_id value. `bank_branch` must be empty. `document_id` is required. `account_type` can be any value. |
| BREB Key — Random   | `20003` | `bank_branch` must be empty. `bank_account` must contain the BRE-B random key string. `account_type` can be any value.                       |

#### Cashout Validations for Colombia

To successfully process cashouts in Colombia, the following parameters and formats must be respected:

| Field                                       | Description / Format                                         |
| ------------------------------------------- | ------------------------------------------------------------ |
| `login` / `pass`                            | Merchant credentials for cashout API access                  |
| `external_id`                               | Merchant transaction ID (max length 100)                     |
| `country`                                   | Must be `CO`                                                 |
| `currency`                                  | `COP` or `USD`                                               |
| `amount`                                    | Numeric, up to two decimal places                            |
| `document_id` / `document_type`             | Accepts `CC`, `NIT`, `CE`, or `PASS`, depending on user type |
| `bank_code`                                 | 1184                                                         |
| `bank_account`                              | Numeric format, length depending on the selected bank        |
| `account_type`                              | `C` (checking) or `S` (savings)                              |
| `beneficiary_name` / `beneficiary_lastname` | Text fields, required                                        |
| `address`                                   | Optional, depending on method                                |
| `phone`                                     | Must include country code `+57`                              |
| `email`                                     | Optional, required only for certain payout methods           |

***


# Ecuador

Check the requirements and validations made over the cashouts on Ecuador

### Required fields

| Field                  | Format                                                                                                       | Description                                         |
| ---------------------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------- |
| `login`                | String                                                                                                       | Cashouts login                                      |
| `pass`                 | String                                                                                                       | Cashouts pass                                       |
| `external_id`          | String (max length: 100)                                                                                     | Transaction's ID on your end                        |
| `document_id`          | See [document validations](/knowledge-base/countries-specifications#documents-validations)                   | Beneficiary's document ID                           |
| `country`              | `EC`                                                                                                         | The country codes are in ISO 3166-1 alpha-2 format. |
| `currency`             | `USD`                                                                                                        | The currencies are in ISO 4217 format.              |
| `amount`               | Number with up to 2 decimals                                                                                 | Cashout amount                                      |
| `bank_code`            | See [bank codes](/cashouts/countries-validations/american-countries/ecuador#bank-codes)                      | Code specifying the beneficiary's bank              |
| `bank_account`         | See [validations below](/cashouts/countries-validations/american-countries/ecuador#bank-account-validations) | Beneficiary's bank account                          |
| `account_type`         | See [account type codes](/cashouts/countries-validations/american-countries/ecuador#account-types)           | Beneficiary's bank account type                     |
| `beneficiary_name`     | String (max length: 100)                                                                                     | Beneficiary's name                                  |
| `beneficiary_lastname` | String (max length: 100)                                                                                     | Beneficiary's last name                             |

### `bank_account` validations

<table><thead><tr><th width="134.9765625">Bank name</th><th align="center">Bank code</th><th width="208.328125">Format</th><th>Regex</th><th>Example</th></tr></thead><tbody><tr><td>All</td><td align="center">-</td><td>Numeric between 5 and 20 digits</td><td><code>^\d{5,20}$</code></td><td>1234567890</td></tr><tr><td>PayPhone</td><td align="center">10007</td><td>593 (Ecuador Country code) + 9 digits<br>Cellphone</td><td><code>^\d{5,12}$</code></td><td>593985512345</td></tr></tbody></table>

### `account_type`

The `account_type` is specified with only one character as described below.

| account\_type | Description       |
| :-----------: | ----------------- |
|    **`C`**    | Checkings account |
|    **`S`**    | Savings account   |

### `document_id` validations

<table><thead><tr><th width="166.68359375">Document type</th><th>Format</th></tr></thead><tbody><tr><td>CC</td><td>Numeric. Length between 9 and 10 inclusive</td></tr><tr><td>DL</td><td>Numeric. Length 10</td></tr><tr><td>RUC</td><td>Numeric. Length between 12 and 13 inclusive and ends with 001</td></tr><tr><td>PASS</td><td>Alphanumeric. Length between 8 and 13 inclusive and ends with 001</td></tr></tbody></table>

### Example request

{% tabs %}
{% tab title="Bank" %}

```json
{
    "login": "xxxxxxxx",
    "pass": "xxxxxxxx",
    "external_id": "30000000001",
    "country": "EC",
    "currency": "USD",
    "amount": 100,
    "document_id": "0809283023",
    "bank_account": "56687456387234",
    "bank_code": "001",
    "account_type": "C",
    "beneficiary_name": "John",
    "beneficiary_lastname": "Smith",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% endtab %}

{% tab title="PayPhone" %}

```json
{
  "login": "xxxxxxxx",
  "pass": "xxxxxxxx",
  "country": "EC",
  "amount": 5,
  "currency": "USD",
  "external_id": "300000000001",
  "cashout_type": "BANK",
  "document_id": "***********",
  "beneficiary_name": "Test",
  "beneficiary_lastname": "Test",
  "email": "",
  "phone": "",
  "notification_url": "",
  "bank_code": 10007,
  "bank_branch": "",
  "bank_account": "593985512345",
  "account_type": "C",
  "document_type": "CC",
  "address": ""
}
```

{% endtab %}
{% endtabs %}

### Bank codes

{% hint style="success" %}

### Bank code retrieval via API

For the full and most up-to-date list of banks and its codes, please check this endpoint <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kD1eu0r7kuzS2nEDm1N9" class="button primary">Get bank codes</a>
{% endhint %}

| Bank                                 | Code |
| ------------------------------------ | ---- |
| Banco Pichincha C.A.                 | 010  |
| Banco de Guayaquil S.A               | 017  |
| Banco City Bank                      | 024  |
| Banco Machala                        | 025  |
| Banco de Loja                        | 029  |
| Banco del Pacifico                   | 030  |
| Banco Internacional                  | 032  |
| Banco Amazonas                       | 034  |
| Banco del Austro                     | 035  |
| Produbanco / Promerica               | 036  |
| Banco Bolivariano                    | 037  |
| Comercial de Manabi                  | 039  |
| Banco General Ruminahui S.A.         | 042  |
| Banco del Litoral S.A.               | 043  |
| Banco Solidario                      | 059  |
| Banco Procredit S.A.                 | 060  |
| Banco Capital                        | 061  |
| Banco Desarrollo de Los Pueblos S.A. | 065  |
| Banecuador B.P.                      | 066  |
| Banco Delbank S.A.                   | 201  |


# Mexico

Check the requirements and validations made over the cashouts on Mexico

### Required fields

<table><thead><tr><th width="222.09505208333331">Field</th><th width="283.84375">Format</th><th>Description</th></tr></thead><tbody><tr><td><code>login</code></td><td>String</td><td>Cashouts login</td></tr><tr><td><code>pass</code></td><td>String</td><td>Cashouts pass</td></tr><tr><td><code>external_id</code></td><td>String (max length: 100)</td><td>Transaction's ID on your end</td></tr><tr><td><code>document_id</code></td><td>Length between 7 and 18 inclusive.<br>CURP / RFC / IFE / PASS</td><td>Beneficiary's document ID</td></tr><tr><td><code>country</code></td><td><code>MX</code></td><td>The country codes are in ISO 3166-1 alpha-2 format. </td></tr><tr><td><code>currency</code></td><td><code>MXN</code> / <code>USD</code></td><td>The currencies are in ISO 4217 format.</td></tr><tr><td><code>amount</code></td><td>Number with up to 2 decimals</td><td>Cashout amount</td></tr><tr><td><code>bank_code</code></td><td>See <a href="/pages/-MCc_y_Cwtwv-UYx0vsM#bank-codes">bank codes</a></td><td>Code specifying the beneficiary's bank.<br><strong>Only mandatory if the <code>bank_account</code> is a debit card</strong></td></tr><tr><td><code>bank_account</code></td><td>See <a href="/pages/-MCc_y_Cwtwv-UYx0vsM#bank-account-validations">validations below</a></td><td>Beneficiary's bank account</td></tr><tr><td><code>beneficiary_name</code></td><td>String (max length: 100)</td><td>Beneficiary's name</td></tr><tr><td><code>beneficiary_lastname</code></td><td>String (max length: 100)</td><td>Beneficiary's last name</td></tr></tbody></table>

### Cashouts to debit cards

In Mexico, we accept cashouts to be sent directly to debit cards.

Note that specifically those cashouts, must be sent through a different endpoint URL:

* STG endpoint for Debit Cards: **`https://cc-api-stg.directa24.com/v3/cashout`**
* PROD endpoint for Debit Cards: Email <integration@d24.com> with your cashout API Key

The bank accounts in Mexico are in [CLABE](https://en.wikipedia.org/wiki/CLABE) format (numeric) and have 18 digits (without dashes). Therefore one way to detect that a bank account specified by the customer is a **debit card** is by checking with the[ luhn algorithm ](https://www.geeksforgeeks.org/luhn-algorithm/)if it is a valid card number and/or with a regex for each brand, like the example below.

```java
public static final String SENSIBLE_DATA_PATTERN = new StringBuilder("(?:(?<visa>4[0-9]{12}(?:[0-9]{3})?)")
      .append("|(?<mastercard>5[1-5][0-9]{14})")
      .append("|(?<discover>6(?:011|5[0-9]{2})[0-9]{12})")
      .append("|(?<amex>3[47][0-9]{13})")
      .append("|(?<diners>3(?:0[0-5]|[68][0-9])?[0-9]{11})")
      .append("|(?<jcb>(?:2131|1800|35[0-9]{3})[0-9]{11}))")
      .toString();

private boolean validateCreditCard(CashoutRequestDto request) {
   final String bankAccount = request.getBank_account();
   if (StringUtils.isEmpty(bankAccount) || !LuhnCheckDigit.LUHN_CHECK_DIGIT.isValid(bankAccount) || 
      bankAccount.matches(Constants.SENSIBLE_DATA_PATTERN)) {
      return false;
   }
   return true;
}
```

If true, send the request through the **`cc-api`** endpoint, if false send it through the normal endpoint. The integration and requirements remains exactly the same, only changing the error message returned in case of invalid bank account and that we validate the **`bank_account`** sent to be a valid credit card number using the [Luhn Algorithm](https://en.wikipedia.org/wiki/Luhn_algorithm).

{% hint style="warning" %}

### Ensure to match debit card cashouts with correct URL.

Sending a debit card number through the non-cc endpoint will make the request to fail with the following error:

{% code overflow="wrap" %}

```java
{
    "code": 300,
    "message": "bank_account: Invalid bank account, it shouldn't be a credit card"
}
```

{% endcode %}

Also, you may receive the following error if an invalid `bank_account` is sent to the cc-api endpoint:

```java
{
    "code": 300,
    "message": "bankAccount: invalid credit card number"
}
```

{% endhint %}

### `bank_account` validations

Below you will find the format and value validations that we perform on the **`bank_account`** parameter.

<table><thead><tr><th width="121.5078125">Bank name</th><th width="121.48828125" align="center">Bank code</th><th>Format</th><th>Example</th></tr></thead><tbody><tr><td>All</td><td align="center">-</td><td><a href="https://en.wikipedia.org/wiki/CLABE">CLABE</a>: 18 digits long, applies verifier algorithm.</td><td>021790064060296642</td></tr><tr><td>All</td><td align="center">-</td><td>Debit cards: 15-16 digits long, applies verifier algorithm.<br>Can only be sent through the Cashout to Debit Cards Endpoint.</td><td>5344867217683750</td></tr><tr><td>Todito</td><td align="center">10000</td><td>10 digits long.</td><td>2682883311</td></tr><tr><td>Kiosko</td><td align="center">10008</td><td>Empty string</td><td>-</td></tr></tbody></table>

#### CLABE validation algorithm

[Click here](https://en.wikipedia.org/wiki/CLABE) for more information about CLABE format.

Since the first three digits of the CLABE are the bank code, it is not mandatory to send the `bank_code` field.

{% tabs %}
{% tab title="Java" %}
{% code title="Mexico CLABE validation algorithm in Java" %}

```java
public final class Validations {
    static int CLABE_LENGTH = 18;
    
    private static boolean validateClabeLength(String bankAccount) {
        return bankAccount.length() == CLABE_LENGTH;
    }
    
    private static boolean validateClabe(String clabe) {
        if (!validateClabeLength(clabe)) {
            return false;
        } else {
            int sum = 0;
            String clabeWithoutCd = clabe.substring(0, 17);
            Integer[] array = new Integer[]{3, 7, 1};
    
            int checkDigitToVerify;
            for(checkDigitToVerify = 0; checkDigitToVerify < clabeWithoutCd.length(); ++checkDigitToVerify) {
                int digit = clabeWithoutCd.charAt(checkDigitToVerify);
                sum += digit * array[checkDigitToVerify % 3] % 10;
            }
    
            checkDigitToVerify = (10 - sum % 10) % 10;
            int checkDigit = Integer.parseInt(clabe.substring(17));
            return checkDigitToVerify == checkDigit;
        }
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

### Example request

```json
{
    "login": "xxxxxxxx",
    "pass": "xxxxxxxx",
    "external_id": "30000000001",
    "country": "MX",
    "currency": "MXN",
    "amount": 100,
    "document_id": "848392783",
    "bank_account": "021790064060296642",
    "beneficiary_name": "User",
    "beneficiary_lastname": "Test",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

### Bank codes

{% hint style="info" %}

### Cashouts to Debit Cards

Notice that the **`bank_code`** for Mexico is only mandatory if the **`bank_account`** length is between 15 and 16 (debit card).\
In that case, use the Cashout to Debit Cards endpoint URL: **`https://cc-api-stg.directa24.com/v3/cashout`**
{% endhint %}

{% hint style="success" %}

### Bank code retrieval via API

For the full and most up-to-date list of banks and its codes, please check this endpoint <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kD1eu0r7kuzS2nEDm1N9" class="button primary">Get bank codes</a>
{% endhint %}

| Bank                                | Code  |
| ----------------------------------- | ----- |
| BANAMEX                             | 002   |
| BANCOMEXT                           | 006   |
| BANOBRAS                            | 009   |
| BBVA BANCOMER                       | 012   |
| SANTANDER                           | 014   |
| BANJERCITO                          | 019   |
| HSBC                                | 021   |
| BAJIO                               | 030   |
| IXE                                 | 032   |
| INBURSA                             | 036   |
| INTERACCIONES                       | 037   |
| MIFEL                               | 042   |
| SCOTIABANK                          | 044   |
| BANREGIO                            | 058   |
| INVEX                               | 059   |
| BANSI                               | 060   |
| AFIRME                              | 062   |
| BANORTE                             | 072   |
| THE ROYAL BANK                      | 102   |
| AMERICAN EXPRESS                    | 103   |
| BAMSA                               | 106   |
| TOKYO                               | 108   |
| JP MORGAN                           | 110   |
| BMONEX                              | 112   |
| VE POR MAS                          | 113   |
| ING                                 | 116   |
| DEUTSCHE                            | 124   |
| CREDIT SUISSE                       | 126   |
| AZTECA                              | 127   |
| AUTOFIN                             | 128   |
| BARCLAYS                            | 129   |
| COMPARTAMOS                         | 130   |
| BANCO FAMSA                         | 131   |
| BMULTIVA                            | 132   |
| ACTINVER                            | 133   |
| WALMART                             | 134   |
| NAFIN                               | 135   |
| INTERBANCO                          | 136   |
| BANCOPPEL                           | 137   |
| ABC CAPITAL                         | 138   |
| UBS BANK                            | 139   |
| CONSUBANCO                          | 140   |
| VOLKSWAGEN                          | 141   |
| CIBANCO                             | 143   |
| BBASE                               | 145   |
| BANKAOOL                            | 147   |
| PAGATODO                            | 148   |
| INMOBILIARIO                        | 150   |
| DONDE                               | 151   |
| BANCREA                             | 152   |
| BANCO COVALTO                       | 154   |
| SABADELL                            | 156   |
| BANSEFI                             | 166   |
| HIPOTECARIA FEDERAL                 | 168   |
| MONEXCB                             | 600   |
| GBM                                 | 601   |
| MASARI                              | 602   |
| VALUE                               | 605   |
| ESTRUCTURADORES                     | 606   |
| TIBER                               | 607   |
| VECTOR                              | 608   |
| B\&B                                | 610   |
| MERRILL LYNCH                       | 615   |
| FINAMEX                             | 616   |
| VALMEX                              | 617   |
| UNICA                               | 618   |
| MAPFRE                              | 619   |
| PROFUTURO                           | 620   |
| CB ACTINVER                         | 621   |
| OACTIN                              | 622   |
| SKANDIA VIDA                        | 623   |
| CBDEUTSCHE                          | 626   |
| ZURICH                              | 627   |
| ZURICHVI                            | 628   |
| SU CASITA                           | 629   |
| CB INTERCAM                         | 630   |
| CI BOLSA                            | 631   |
| BULLTICK CB                         | 632   |
| STERLING                            | 633   |
| FINCOMUN                            | 634   |
| HDI SEGUROS                         | 636   |
| ORDER                               | 637   |
| NUBANK                              | 638   |
| CB JPMORGAN                         | 640   |
| REFORMA                             | 642   |
| STP                                 | 646   |
| TELECOMM                            | 647   |
| EVERCORE                            | 648   |
| SKANDIA OPERADORA                   | 649   |
| SEGMTY                              | 651   |
| ASEA                                | 652   |
| KUSPIT                              | 653   |
| SOFIEXPRESS                         | 655   |
| UNAGRA                              | 656   |
| OPCIONES EMPRESARIALES DEL NOROESTE | 659   |
| LIBERTAD                            | 670   |
| MERCADO PAGO W                      | 722   |
| CLS                                 | 901   |
| INDEVAL                             | 902   |
| Todito                              | 10000 |
| Kiosko                              | 10008 |

### Handling payout status exceptions in Mexico

For payouts processed in Mexico, it's important to know how to handle exceptional cases where an initial "Completed" status is not the final one.

Although this is not the common flow, a payout can occasionally appear as "Completed" for a few seconds before the processor issues the final, "Rejected" status. In addition to this, there are rare corner cases where a beneficiary's bank may return a payment days later, which will also lead to the status being updated to "Rejected."

To ensure your system is robust enough to handle these exceptions, please configure it to always accept a "Rejected" status as the authoritative and final state for a transaction, even if a "Completed" notice was received first.


# Paraguay

Check the requirements and validations made over the cashouts on Paraguay

### Required fields

<table><thead><tr><th>Field</th><th>Format</th><th width="249.33333333333331">Description</th></tr></thead><tbody><tr><td><code>login</code></td><td>String</td><td>Cashouts login</td></tr><tr><td><code>pass</code></td><td>String</td><td>Cashouts pass</td></tr><tr><td><code>external_id</code></td><td>String (max length: 100)</td><td>Transaction's ID on your end</td></tr><tr><td><code>document_type</code></td><td>See <a href="/pages/-M8muWcG4tmJbnohBWM5#documents-validations">document validations</a></td><td>Beneficiary's document type.</td></tr><tr><td><code>document_id</code></td><td>See <a href="#document_id-validations">document validations</a></td><td>Beneficiary's document ID.</td></tr><tr><td><code>country</code></td><td><code>PY</code></td><td>The country codes are in ISO 3166-1 alpha-2 format. </td></tr><tr><td><code>currency</code></td><td>USD / PYG</td><td>The currencies are in ISO 4217 format.</td></tr><tr><td><code>amount</code></td><td>Number with up to 2 decimals</td><td>Cashout amount</td></tr><tr><td><code>bank_code</code></td><td>See <a href="#bank-codes">bank codes</a></td><td>Code specifying the beneficiary's bank</td></tr><tr><td><code>bank_account</code></td><td>See <a href="#bank-account-validations">validations below</a></td><td>Beneficiary's bank account</td></tr><tr><td><code>beneficiary_name</code></td><td>String (max length: 100)</td><td>Beneficiary's name</td></tr></tbody></table>

### `bank_account` validations

| Bank name | Format                            |
| --------- | --------------------------------- |
| All       | Numeric. Between 3 and 20 digits. |

### `document_type`  and `document_id` validations

<table><thead><tr><th width="166.68359375">Document type</th><th>Format</th></tr></thead><tbody><tr><td><code>CRC</code> / <code>CRP</code> / <code>DNI</code> / <code>PASS</code> / <code>RUC</code></td><td>Length Between 3 and 15 characters</td></tr><tr><td><code>CIC</code></td><td>Length between 6 to 8 characters</td></tr></tbody></table>

### Example request

```json
{
    "login": "xxxxxxx",
    "pass": "xxxxxxx",
    "external_id": "30000000001",
    "country": "PY",
    "currency": "PYG",
    "amount": 100,
    "document_type": "PASS",
    "document_id": "1225255",
    "beneficiary_name": "User",
    "bank_account": "1234567890",
    "bank_code": "1",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

### Bank codes

{% hint style="success" %}

### Bank code retrieval via API

For the full and most up-to-date list of banks and its codes, please check this endpoint <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kD1eu0r7kuzS2nEDm1N9" class="button primary">Get bank codes</a>
{% endhint %}

| Bank                             | Code |
| -------------------------------- | ---- |
| BANCO CENTRAL DEL PARAGUAY       | 001  |
| BANCO NACIONAL DE FOMENTO        | 002  |
| BANCO DE LA NACION ARGENTINA     | 003  |
| BANCO GNB PARAGUAY               | 4    |
| BANCO DO BRASIL                  | 6    |
| SUDAMERIS BANK                   | 8    |
| BANCO ITAU PARAGUAY              | 17   |
| BANCO CONTINENTAL                | 20   |
| BANCO BASA (ex Amambay)          | 30   |
| VISION BANCO                     | 39   |
| BANCO RIO (Ex - Itapua)          | 40   |
| BANCO FAMILIAR                   | 41   |
| BANCO ATLAS                      | 42   |
| BANCOP                           | 43   |
| INTERFISA BANCO                  | 44   |
| UENO BANK S.A                    | 6557 |
| CRISOL Y ENCARNACION FINANCIERA  | 6558 |
| FINLATINA S.A. DE FINANZAS       | 6559 |
| FINANCIERA PARAGUAYO-JAPONESA    | 6560 |
| FINANCIERA EXPORTADORA PARAGUAYA | 6561 |
| TU FINANCIERA                    | 6565 |
| FIC S.A. DE FINANZAS             | 7079 |


# Peru

Check the requirements and validations made over the cashouts on Peru

### Required fields

| Field                  | Format                                                                                                    | Description                                         |
| ---------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| `login`                | String                                                                                                    | Cashouts login                                      |
| `pass`                 | String                                                                                                    | Cashouts pass                                       |
| `external_id`          | String (max length: 100)                                                                                  | Transaction's ID on your end                        |
| `document_id`          | See [document validations](#document_type-and-document_id-validations)                                    | Beneficiary's document ID                           |
| `document_type`        | See [document validations](#document_type-and-document_id-validations)                                    | Beneficiary's document type                         |
| `country`              | `PE`                                                                                                      | The country codes are in ISO 3166-1 alpha-2 format. |
| `currency`             | `PEN` / `USD`                                                                                             | The currencies are in ISO 4217 format.              |
| `amount`               | Number with up to 2 decimals                                                                              | Cashout amount                                      |
| `bank_account`         | See [validations below](/cashouts/countries-validations/american-countries/peru#bank-account-validations) | Beneficiary's bank account                          |
| `account_type`         | See[ account types](/cashouts/countries-validations/american-countries/peru#account-types)                | Beneficiary's bank account type                     |
| `phone`                | Number 10-11 digits                                                                                       | Customer's Phone. Mandatory for Yape\&Plin          |
| `beneficiary_name`     | String (max length: 100)                                                                                  | Beneficiary's name                                  |
| `beneficiary_lastname` | String (max length: 100)                                                                                  | Beneficiary's last name                             |

### `bank_account`  validations

<table><thead><tr><th width="121.73828125">Bank name</th><th width="117.09375" align="center">Bank code</th><th width="155.921875">Description</th><th>Format</th><th>Example</th></tr></thead><tbody><tr><td>All</td><td align="center">-</td><td><strong>CCI</strong> - Código de Cuenta Interbancaria</td><td>Length 20 (with verifying digits - a validation algorithm is ran over these)</td><td>00219300153895206813</td></tr><tr><td>Yape</td><td align="center">901</td><td>Empty string</td><td><code>^$</code></td><td></td></tr><tr><td>Plin</td><td align="center">902</td><td>Empty string</td><td><code>^$</code></td><td></td></tr></tbody></table>

#### CCI validation algorithm

Since the first three digits of the CCI are the bank code, it is not mandatory to send the `bank_code` field. However, we validate those 3 first digits to be a valid `bank_code`.

{% tabs %}
{% tab title="Java" %}
{% code title="Peru CCI validation algorithm in Java" %}

```java
public final class Validations {
   static Integer CCI_LENGTH_ST = 18;
   static Integer CCI_LENGTH_FST = 20;
   static String EMPTY_CHECK_DIGITS = "00";
    
   public static boolean validateBankAccount(String bankAccount) {
      if (!ValidationsUtils.validateOnlyNumbers(bankAccount)) {
         return false;
      } else {
         int accountLength = bankAccount.length();
         String lastDigits = bankAccount.substring(bankAccount.length() - 2);

         if (accountLength == CCI_LENGTH_ST && lastDigits.equals(EMPTY_CHECK_DIGITS)) {
            return true;
         }
         return validateCCI(bankAccount);
      }
   }

   //Validate CCI bank account
   public static boolean validateCCI(String cci) {
      if (validateCCILength(cci)) {
         String cciWithoutCheck = cci.substring(0, cci.length() - 2);
         String checkDigits = cci.substring(cci.length() - 2);
         String calculatedCheckDigits = getCciCheckDigits(cciWithoutCheck);

         return checkDigits.equals(calculatedCheckDigits);
      }
      return false;
   }

   public static boolean validateCCILength(String cci) {
      return cci.length() == CCI_LENGTH_FST;
   }

   public static String getCciCheckDigits(String cci) {
      int firstControlNumber = calculateCheckDigit(cci.substring(0, 6));
      int secondControlNumber = calculateCheckDigit(cci.substring(6, 18));

      return String.valueOf(firstControlNumber) + String.valueOf(secondControlNumber);
   }

   private static int calculateCheckDigit(String cci) {
      int total = 0;
      int factor = 1;

      for (int i = 0; i < cci.length(); i++) {
         String[] cciArray = cci.split("");
         int num = Integer.parseInt(cciArray[i]);

         if (num * factor < 10) {
            total += (num * factor);
         } else {
            int product = (num * factor);
            String product_str = Integer.toString(product);
            int firstDigit = Integer.parseInt(product_str.substring(0, 1));
            int lastDigit = product % 10;
            total += firstDigit + lastDigit;
         }

         factor = factor == 1 ? 2 : 1;
      }
      return (total % 10) > 0 ? 10 - (total % 10) : 0;
   }

}
```

{% endcode %}
{% endtab %}
{% endtabs %}

### `account_type`

The `account_type` is specified with only one character as described below.

| account\_type | Description       |
| :-----------: | ----------------- |
|    **`C`**    | Checkings account |
|    **`S`**    | Savings account   |

### `document_type`  and `document_id` validations

<table><thead><tr><th width="166.68359375">document_type</th><th>document_id format</th></tr></thead><tbody><tr><td><code>CE</code>/<code>CPP</code>   </td><td>Numeric. Length 9</td></tr><tr><td><code>DNI</code></td><td>Numeric. Length 8-9</td></tr><tr><td><code>PASS</code></td><td>Numeric. Length 12</td></tr><tr><td><code>RUC</code></td><td>Length 11</td></tr></tbody></table>

### `phone` validations

<table><thead><tr><th width="128.3515625">Bank name</th><th width="123.3359375" align="center">Bank code</th><th width="212.56640625">Format</th><th align="center">Required</th><th>Example</th></tr></thead><tbody><tr><td>Yape</td><td align="center">901</td><td>Numeric - Country code +51 plus 10 digits<br>+51 XXXXXXXXX</td><td align="center">Yes</td><td>+51901671234</td></tr><tr><td>Plin</td><td align="center">902</td><td>Numeric - Country code +51 plus 9 digits<br>+51 XXXXXXXXX</td><td align="center">Yes</td><td>+51901671234</td></tr><tr><td>Others</td><td align="center">-</td><td>-</td><td align="center">No</td><td>-</td></tr></tbody></table>

### Example request

{% tabs %}
{% tab title="Banks" %}

```json
{
    "login": "xxxxxxx",
    "pass": "xxxxxxx",
    "external_id": "30000000001",
    "country": "PE",
    "currency": "PEN",
    "amount": 100,
    "document_id": "848392783",
    "document_type": "CE",
    "bank_account": "00219300153895206813",
    "account_type": "C",
    "beneficiary_name": "User",
    "beneficiary_lastname": "Test",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
```

{% endtab %}

{% tab title="Yape" %}

<pre class="language-json"><code class="lang-json">{
    "login": "xxxxxxx",
    "pass": "xxxxxxx",
    "external_id": "30000000001",
    "country": "PE",
    "currency": "PEN",
    "amount": 100,
    "document_id": "848392783",
    "document_type": "CE",
<strong>    "bank_code": "901",
</strong><strong>    "bank_account": "",
</strong>    "account_type": "C",
<strong>    "phone":"51901671234",
</strong>    "beneficiary_name": "User",
    "beneficiary_lastname": "Test",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
</code></pre>

{% endtab %}

{% tab title="Plin" %}

<pre class="language-json"><code class="lang-json">{
    "login": "xxxxxxx",
    "pass": "xxxxxxx",
    "external_id": "30000000001",
    "country": "PE",
    "currency": "PEN",
    "amount": 100,
    "document_id": "848392783",
    "document_type": "CE",
<strong>    "bank_code": "902",
</strong><strong>    "bank_account": "",
</strong>    "account_type": "C",
<strong>    "phone":"51901671234",
</strong>    "beneficiary_name": "User",
    "beneficiary_lastname": "Test",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}
</code></pre>

{% endtab %}
{% endtabs %}

### Bank codes

{% hint style="success" %}

### Bank code retrieval via API

For the full and most up-to-date list of banks and its codes, please check this endpoint <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kD1eu0r7kuzS2nEDm1N9" class="button primary">Get bank codes</a>
{% endhint %}

| Bank                                         | Code |
| -------------------------------------------- | ---- |
| Banco de Crédito del Peru                    | 002  |
| Interbank                                    | 003  |
| Citibank                                     | 007  |
| Scotiabank                                   | 009  |
| BBVA Continental                             | 011  |
| Banco de la Nación                           | 018  |
| Banco de Comercio                            | 023  |
| Banco Financiero                             | 035  |
| Banco Interamericano de Finanzas (BIF)       | 038  |
| Crediscotia Financiera                       | 043  |
| Mi Banco                                     | 049  |
| Banco GNB Peru S.A                           | 053  |
| Banco Falabella                              | 054  |
| Santander                                    | 056  |
| Caja Metropolitana de Lima                   | 800  |
| Caja Municipal de Ahorro y Credito Piura SAC | 801  |
| Caja Municipal de Ahorro y Crédito Trujillo  | 802  |
| Caja Municipal de Ahorro y Crédito Arequipa  | 803  |
| Caja Municipal de Ahorro y Crédito Sullana   | 805  |
| Caja Municipal de Ahorro y Crédito Cuzco     | 806  |
| Caja Municipal de Ahorro y Crédito Huancayo  | 808  |
| Yape                                         | 901  |
| Plin                                         | 902  |


# Africa

Learn about the cashouts validations of the African countries

### Available countries

{% columns %}
{% column %}
🇧🇯 Benin

🇧🇼 Botswana

🇨🇲 Cameroon

🇨🇬 Congo Brazzaville

🇨🇩 Congo DRC

🇪🇬 Egypt

🇬🇦 Gabon

🇬🇭 Ghana

🇨🇮 Ivory Coast
{% endcolumn %}

{% column %}
🇰🇪 Kenya

🇳🇬 Nigeria

🇲🇼 Malawi

🇲🇱 Mali

🇷🇼 Rwanda

🇿🇦 South Africa

🇹🇬 Togo

🇺🇬 Uganda

🇿🇲 Zambia

{% endcolumn %}
{% endcolumns %}

{% hint style="success" %}

#### Interested in expanding to :earth\_africa: Africa?

Please get in touch with your commercial representative, we can guide you through!
{% endhint %}


# Asia

Learn about the cashouts validations of the Asian countries

### Available countries

{% columns %}
{% column %}
🇧🇩 Bangladesh

🇨🇳 China

🇭🇰 Hong Kong

🇮🇳 India

🇮🇩 Indonesia

🇯🇵 Japan

{% endcolumn %}

{% column %}
🇲🇾 Malaysia

🇵🇰 Pakistan

🇹🇭 Thailand

🇹🇷 Turkey

🇻🇳 Vietnam

{% endcolumn %}
{% endcolumns %}

{% hint style="success" %}

#### Interested in expanding to :earth\_asia: Asia?

Please get in touch with your commercial representative, we can guide you through!
{% endhint %}


# Oceania

Learn about the cashouts validations of the Asian countries

### Available countries

* :flag\_au: Australia

{% hint style="success" %}

#### Interested in expanding to Oceania?

Please get in touch with your commercial representative, we can guide you through!
{% endhint %}


# Create cashouts


# API Integration

Our Cashouts API enable merchants to generate local withdrawals in every country that PandaBlue operates. In order to do so, **merchants need provide the in each transaction the local banking details required**.

Therefore, it is important to properly understand the  <a href="/pages/-MA9W0JDYr7ewGa7xDTk" class="button primary" data-icon="earth-americas">Countries validations</a> within each market that the merchant is willing to operate.

***

### Integration flow

{% stepper %}
{% step %}

### Cashout creation

{% tabs %}
{% tab title="Example request" %}
Merchants need to send **all the required local information** for creating the transaction.

In this example, in :flag\_mx: Mexico we need the document, the bank account, the beneficiary name and last name.

<pre class="language-sh"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://api-stg.pandablue.com/v3/cashout' \
</strong>  --header 'Content-Type: application/json' \
  --header 'Payload-Signature: text' \
  --data '{
    "login": "your_cashout_login",
    "pass": "your_cashout_pass",
    "external_id": "30000000001",
    "country": "MX",
    "currency": "MXN",
    "amount": 100,
    "document_id": "848392783",
    "bank_account": "021790064060296642",
    "beneficiary_name": "Luis",
    "beneficiary_lastname": "Miguel",
    "notification_url": "https://merchant.site/webhooks/pandablue",
    "type": "json"
}'
</code></pre>

{% endtab %}

{% tab title="Example response" %}
In response, merchants receive the transaction identifier (`cashout_id`).

```json
{
  "cashout_id": "8405147"
}
```

{% endtab %}
{% endtabs %}

> For technical details, please visit the API Reference <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/BJVC40qCkbDFJpgxozD4" class="button primary" data-icon="pencil">Create a cashout</a>
> {% endstep %}

{% step %}

### Webhook notification

Each time that a cashout changes its status we will send a webhook notification.

<pre class="language-http" data-title="Example notification"><code class="lang-http">    date=2020-03-12%2020%3A26%3A11
    &#x26;bank_reference_id=
    &#x26;comments=
    &#x26;external_id=cashoutV35381
    &#x26;control=A4CFF64E78C4BD01F8BFCA4AFF04632EC4A33CC61BD6BBD156BA1289897892EB
<strong>    &#x26;cashout_id=8405147
</strong>    &#x26;status_reason=
</code></pre>

> Please visit <a href="/pages/IDRgrfdaoiwf4YdhGjLU" class="button primary" data-icon="message-medical">Notifications</a>
> {% endstep %}

{% step %}

### Retrieve the cashout status

By creating a request to the cashout status endpoint you will capable od retrieving the final status of the transaction.

{% tabs %}
{% tab title="Example request" %}

<pre class="language-sh"><code class="lang-sh">curl -L \
  --request POST \
  --url 'https://api-stg.pandablue.com/v3/cashout/status' \
  --header 'Content-Type: application/json' \
  --header 'Payload-Signature: text' \
  --data '{
    "login": "your_cashout_login",
    "pass": "your_cashout_pass",
<strong>    "cashout_id": 8405147
</strong>  }'
</code></pre>

{% endtab %}

{% tab title="Example response" %}

```json
{
  "cashout_status": 1,
  "cashout_status_description": "Completed"
}
```

For more information regarding the **`cashout_status`**, please visit <a href="/pages/M0hPMNs7uaCI6Dbi76RG#cashout-status-codes" class="button primary">Cashout status codes</a>
{% endtab %}
{% endtabs %}

> For technical details, please visit the API Reference <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kJcyiJ99exMkjrYoRSSS" class="button primary" data-icon="pencil">Get a cashout status</a>
> {% endstep %}
> {% endstepper %}

{% hint style="info" %}

### Additional flows

Note that the flow described above corresponds to a regular cashout completion flow.

Within the cashout lifecycle, cashouts can also be **CANCELLED** or put **ON\_HOLD** status.\
For more information visit the API References:&#x20;

* <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/Qm5CcCRfLaVFFaSROT0p" class="button primary" data-icon="delete-left">Cashout cancellation</a>
* <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/9ef5Y8mqB6qpEQMpa2gB" class="button primary" data-icon="arrows-rotate-reverse">Update to On Hold</a>
  {% endhint %}


# Pay users via Merchant Panel


# Notifications

Every time a cashout changes its status, we will send you an asynchronous notification containing the ID of the cashout by **POST** protocol in **x-www-form-urlencoded** format.

The webhooks are sent to:

1. &#x20;the **`notification_url`**  you sent in the request, or&#x20;
2. to the one you have configured under the section: ***Settings***  :arrow\_right: ***API Access*** :arrow\_right: ***Withdrawal URL.***

**Once received the notification, you should check its new status with the** <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kJcyiJ99exMkjrYoRSSS" class="button primary" data-icon="magnifying-glass">Get cashout status</a> **endpoint** **and update it on your end accordingly.**

{% hint style="success" %}

### Firewall configurations

Bear in mind we will only connect through ports 80 and 443. \
Make sure your **`notification_url`** has one of those ports open accepting connections from us.
{% endhint %}

#### Example notification

```http
    date=2020-03-12%2020%3A26%3A11
    &bank_reference_id=
    &comments=
    &external_id=cashoutV35381
    &control=A4CFF64E78C4BD01F8BFCA4AFF04632EC4A33CC61BD6BBD156BA1289897892EB
    &cashout_id=60067
    &status_reason=
```

<table><thead><tr><th width="170.609375"> Field</th><th width="240.640625">Format</th><th>Description</th></tr></thead><tbody><tr><td><code>date</code></td><td>Date. Format: YYYY-MM-DD HH:MM:SS (GMT)</td><td>Date the cashout changed its status</td></tr><tr><td><code>bank_reference_id</code></td><td>String (max. 50 chars)</td><td>Reference ID of the bank if any</td></tr><tr><td><code>comments</code></td><td>String (max. 200 chars)</td><td>Comments of the cashout if any</td></tr><tr><td><code>external_id</code></td><td>String (max. 100 chars)</td><td>ID of the cashout you sent while creating the request</td></tr><tr><td><code>control</code></td><td>String</td><td>Control signature of the notification</td></tr><tr><td><code>cashout_id</code></td><td>Number</td><td>ID of the cashout on our end</td></tr><tr><td><code>status_reason</code></td><td>String</td><td>Reason of the status if any</td></tr></tbody></table>

### Control String

The control string for the notifications is made up of some random characters at the beginning and the end of the request and the **`external_id`** received in the middle.

{% hint style="info" %}
The control string should be generated using your own secret key (API Signature) and must be in upper case.

Make sure you convert the message to hash to **UTF-8** to prevent errors.
{% endhint %}

Check the examples below on how to calculate the control string for the notifications:

{% tabs %}
{% tab title="JAVA" %}

```java
public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
      String external_id = "cashoutID1234";
      String message = "Be4" + external_id + "Bo7";
      String apiSignature = "your_cashout_api_signature";

      Mac hasher = Mac.getInstance("HmacSHA256");
      hasher.init(new SecretKeySpec(apiSignature.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
      byte[] result = hasher.doFinal(message.getBytes(StandardCharsets.UTF_8));

      System.out.println(StringUtils.upperCase(DatatypeConverter.printHexBinary(result)));
}
```

{% endtab %}

{% tab title="PHP" %}

```php
$external_id = 'cashoutID1234';
$message = 'Be4' . $external_id . 'Bo7';
$api_signature = 'cashout_api_signature';

$hash = strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $api_signature)));


```

{% endtab %}

{% tab title="C#" %}

```csharp
 string external_id = "cashoutID1234";
 string message = "Be4" + external_id + "Bo7";
 string apiSignature = "your_cashouts_api_signature";
 
 byte[] keyByte = new System.Text.Encoding.UTF8.GetBytes(apiSignature);
 byte[] messageBytes = new System.Text.Encoding.UTF8.GetBytes(message);
 byte[] hashmessage = new HMACSHA256(keyByte).ComputeHash(messageBytes);

 string control = BitConverter.ToString(hashmessage).Replace("-", "").ToUpper();
 
```

{% endtab %}
{% endtabs %}

### Testing notification in Staging

Receiving notifications accordingly is part of our [integration requirements checklist](/getting-started/start-testing#integration-checklist).

In the <mark style="color:$danger;background-color:red;">**Staging**</mark> environment, in order to test the full flow you can manually set a cashout to **COMPLETED,** **CANCELLED, REJECTED or ON HOLD** status by: Logging in into the [STG Merchant Panel](https://merchants-stg.d24.com/login)  :arrow\_right:  Transactions :arrow\_right: Withdrawals.

Those options will change the status of the deposit, therefore **sending the respective notification to your `notification_url` after a few minutes**.

<figure><img src="/files/26oCs2LS3iAiQZQYUdya" alt="" width="320"><figcaption></figcaption></figure>

### Retry logic

Every time a cashout changes its status, we will send you a notification so you can <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kJcyiJ99exMkjrYoRSSS" class="button primary" data-icon="magnifying-glass">Get cashout status</a> back.

In case that for some reason your server was unable to receive the notification and you returned an HTTP code different than 2XX, we will retry the notification up to 5 more times or until you respond with HTTP 2XX, whatever comes first.

{% hint style="success" %}
In case of errors while handling the notification, make sure you will answer with an HTTP code distinct than 2XX, that way we will retry the notification.
{% endhint %}

The time between the 5 notifications attempts will be of 5 minutes each.

When the notification failed to be sent, it will be shown like this in our Merchant Panel:

![](/files/-MkIVGqDDe8OYIKHdJ0O)

If you see the errors from the screenshot above, it means the cashout was successfully completed but suddenly we couldn't notify you. Keep reading to know how to resend the notifications.

### Resend Notifications

In case your system was unable to receive the notification in any of the 5 attempts, you can always check  its status with the <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/kJcyiJ99exMkjrYoRSSS" class="button primary" data-icon="magnifying-glass">Get cashout status</a>

If you need to trigger the check status by receiving our notification, once the issue preventing you from receiving our notifications was fixed, you can go to the Merchant Panel, locate the cashout (Transactions :arrow\_right: Withdrawals) and click on the three dotted button under the <img src="/files/OFTK38OfNWn7MKEKdQYS" alt="" data-size="line"> section and then "**Resend notification**"  to force a new notification to be sent.:clock1: **It can take up to 2 minutes for the notification to be resent.**

<img src="/files/-MkIVm1exkvCAAucF04N" alt="" width="375">

{% hint style="success" %}
:clock1: **It can take up to 2 minutes for the notification to be resent.**
{% endhint %}


# Status flow

### Understanding the cashout lifecycle

<figure><img src="/files/YnmSCKDM4CEtczulj0DI" alt=""><figcaption></figcaption></figure>

#### Status diagram explanation

<table><thead><tr><th width="131.89453125" align="center">Status</th><th>Description</th></tr></thead><tbody><tr><td align="center"><strong>DECLINED</strong></td><td>The DECLINED status is not a status by itself. It means the transaction couldn't be created because of an error with the data, the customer or the merchant configuration. No transaction will change its status from <strong>DECLINED</strong>.</td></tr><tr><td align="center"><strong>PENDING</strong></td><td>Once the cashout is in <strong>PENDING</strong> status, it means it was successfully created and that it will be send for processing soon, changing to <strong>DELIVERED</strong>. <br>It can also be manually changed to <strong>ON_HOLD</strong> or <strong>CANCELLED</strong>.</td></tr><tr><td align="center"><strong>ON_HOLD</strong></td><td>A cashout will be created with <strong>ON_HOLD</strong> status only if specified while creating the cashout with <em>on_hold: true.</em> Otherwise, it can be manually set to <strong>ON_HOLD</strong> from the Merchant Panel.<br>If a cashout is <strong>ON_HOLD</strong>, it won't be send for processing until you manually go and set it to <strong>PENDING</strong> from the Merchant Panel. It can still be <strong>CANCELLED</strong>.</td></tr><tr><td align="center"><strong>CANCELLED</strong></td><td>It means you didn't want to proceed with the cashout and it was <strong>CANCELLED</strong> through the Merchant Panel or through the Cancel Cashout Endpoint.<br><strong>Final status</strong>.</td></tr><tr><td align="center"><strong>DELIVERED</strong></td><td>As soon as the cashout is sent to the bank for processing, its status will change to <strong>DELIVERED</strong>. At which point it can't be cancelled anymore.</td></tr><tr><td align="center"><strong>COMPLETED</strong></td><td>If the cashout was successfully completed, its status will be set to <strong>COMPLETED</strong>. <strong>Final status</strong><mark style="color:red;"><strong>*</strong></mark><strong>.</strong></td></tr><tr><td align="center"><strong>REJECTED</strong></td><td><p>If the cashout was rejected by the bank, its status will be set to <strong>REJECTED</strong>.</p><p><strong>Final status</strong>.</p></td></tr></tbody></table>

&#x20;<mark style="color:red;">**\***</mark> There are cases in which the banks confirm that a payout was successfully processed and after a few days, it gets returned by the beneficiary's bank therefore the status on our platform will change to REJECTED as well. Those are corner cases but must be considered.

### Cashout status codes

In the cashout status endpoint you will receive a **`cashout_status`** code.\
Below you will find the codes and associated status:

<table data-full-width="false"><thead><tr><th width="91.44010416666669" align="center">Code</th><th width="198.140625" align="center">Meaning</th><th>Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center"><img src="/files/-M9Uq6hh3MZ301JtlBh4" alt="" data-size="original"> </td><td>The cashout was accepted by PandaBlue but it wasn't sent to the bank yet. It can still be Canceled.</td></tr><tr><td align="center">1</td><td align="center"><img src="/files/-M9UsDlL5PDQXBDL5CUD" alt="" data-size="original"> </td><td>The money reached the customer's account</td></tr><tr><td align="center">2</td><td align="center"><img src="/files/-M9UsJ4Co_cg-RzJZT6c" alt="" data-size="original"> </td><td>The cashout was cancelled by you</td></tr><tr><td align="center">3</td><td align="center"><img src="/files/-MDNZ67x7s7LgmAyG4YI" alt="" data-size="original"> </td><td>The cashout was rejected <strong>by the bank</strong> due to invalid bank account, account closed, etc.</td></tr><tr><td align="center">4</td><td align="center"><img src="/files/-MDQyQCx2cX3EhoAitEv" alt="" data-size="original"> </td><td>The cashout was sent to the bank for processing. At this point it can't be cancelled anymore</td></tr><tr><td align="center">5</td><td align="center"><img src="/files/MUsyplC1BSBUM2PyZDm0" alt=""></td><td>Cashout set to on hold by you. It won't be processed until manually changed again to Pending status</td></tr></tbody></table>


# Overview

Our Platforms solution enables platforms and fintechs to scale their operations by creating a network of SubMerchants, managing their payment flows, and capturing revenue from every transaction (if desired).

Key aspects include:

* [x] Smooth SubMerchant onboarding.
* [x] Scalable deposit creation.
* [x] All parties are aware and accountable of their own balance by providing real-time fidelity and transparency.

<div align="center" data-full-width="false"><figure><img src="/files/ACQhbtmfOiXenzOvuG5G" alt=""><figcaption></figcaption></figure></div>

{% hint style="success" %}

#### Get in touch

If you consider that your business may be suitable for this solution get in touch with your Account Manager or a Sales representative!
{% endhint %}

### Build the solution

We count with several APIs for helping Platfoms upscale their SubMerchant creation and management. By clicking in the cards below you will find specific pages with information on those topics.

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th></th><th></th><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Guides</strong></td><td><a href="/pages/zEFG7tIGeA4A5M4Jgpvu">Onboarding</a></td><td><a href="/pages/uxu9FJQv9Ij8XlFrTcWt">Notifications</a></td><td><a href="/pages/XfQD4wBFSfTpbR9y3qD2">Create a deposit</a></td><td><a href="/pages/l0QFV7MyTgoLbXp2XEHw">Create a cashout</a></td><td><a href="/files/t7pVgrDx3eVmppE0dwbP">/files/t7pVgrDx3eVmppE0dwbP</a></td></tr><tr><td align="center"><strong>API Reference</strong></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/RBFyK9OSROLQCZnObRfD">Security aspects</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/hhXB1TsvMFdjQnxKoI2V">Get submerchant information</a></td><td><a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/096ZNJ2m5uD6Mn0evOuJ">Update a commission</a></td><td></td><td><a href="/files/i7nTPS25IojkETyG8eLc">/files/i7nTPS25IojkETyG8eLc</a></td></tr></tbody></table>


# Onboarding

The primary method for onboarding new sub-merchants is through our **Referral Signup Link**.

Once your platform is eligible, your account manager will provide a unique URL. You should present this link to the clients you wish to onboard as sub-merchants.

When your client uses this link, the form will:

* [x] Collect all the necessary information to create their merchant account.
* [x] Automatically apply all required configurations for them to start processing payments.

The form is mobile-responsive and can be embedded directly into your platform using an `iframe` for a seamless user experience.

### Matching Submerchants with your system

To easily track and match a new sub-merchant with the corresponding user in your own system, you can add a **query parameter** to the referral URL.

Append the **`externalSubMerchantId`** parameter to the end of the URL you received, using your internal identifier for that user.

Format:

**`&externalSubMerchantId=`**`{YourUniqueSubMerchantID}`

Example: If your referral URL is `https://example.pandablue.com/referral?id=XYZ123` and your internal user ID is `user-9876`, the final URL would be:

`https://example.pandablue.com/referral?id=XYZ123&`**`externalSubMerchantId=user-9876`**

### Onboarding confirmation

After a submerchant successfully completes the signup form, you will receive a webhook <a href="/pages/uxu9FJQv9Ij8XlFrTcWt" class="button primary" data-icon="message-medical">Notification</a> confirming that their account has been created.


# Notifications

Each time that a Submerchant:

* is successfully onboarded through the Referral Signup Form, or&#x20;
* a change in information has occurred in a Submerchant of yours

A webhook notification will be sent to the Referral URL that you defined at:

> Merchant Panel :arrow\_right: Settings :arrow\_right: API Access :arrow\_right: **Referral URL**

{% hint style="info" %}

#### Firewall configurations

Bear in mind we will only connect through ports 80 and 443. Make sure your `Referral URL` has one of those ports open accepting connections from us.
{% endhint %}

#### Example

```json
{
    "sub_merchant_id":18703
}
```

<table><thead><tr><th width="170.91927083333331">Field</th><th width="162.45703125">Format</th><th>Description</th></tr></thead><tbody><tr><td><code>sub_merchant_id</code></td><td>Integer</td><td>Identifier of the SubMerchant on our end.</td></tr></tbody></table>

### Retrieve Submerchant details

With the received **`sub_merchant_id`** you can now retrieve the recently created Submerchant's details.

In order to do so, you can generate an API request to the <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/hhXB1TsvMFdjQnxKoI2V" class="button primary" data-icon="magnifying-glass">Get submerchant information</a> or you can visit the dedicated section in the Merchant Panel ("Referred merchants").

{% code title="Example response GET /v3/sub\_merchants/{sub\_merchant\_id}" %}

```json
{
    "sub_merchant_id": 18703,
    "markup_fee": 2.00,
    "sub_merchant_name": "Dunder Mifflin",
    "email": "johndoe@pandablue.com",
    "status": "ACTIVE",
    "external_submerchant_id":"user-9876"
}
```

{% endcode %}

{% hint style="success" %}

#### `markup_fee`&#x20;

The `markup_fee` is the commision that the Platform receives for each transaction successfully created by the Submerchant.\
Note that the `markup_fee` received in the response, is the default value for all recently created Submerchants. It can be aligned with your commercial representative.

You can update the value via API <a href="/spaces/VNE8t2FopKfzgQzTjlBb/pages/096ZNJ2m5uD6Mn0evOuJ" class="button primary" data-icon="arrows-rotate-reverse">Update a comission</a> and also through the Merchant Panel (in the *Referred merchants* section).
{% endhint %}

{% hint style="warning" %}

#### `status`

Note that only Submerchants with status `ACTIVE` are capable to process payments.
{% endhint %}


# Manage Submerchants payments


# Create a deposit

Our payments solution for platforms ***easily adapts*** to all our deposit creation flows.

Merchants willing to use this model, just need to include in the deposit request the **`sub_merchant_id`** parameter indicating in the value, for which of their Submerchants the deposit belongs.

<details>

<summary>Server2Server</summary>

<pre class="language-sh"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
<strong>    "sub_merchant_id":"18703",
</strong>    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith"
    },
<strong>    "credit_card": {
</strong><strong>      "cvv": "123",
</strong><strong>      "number": "4111111111111111",
</strong><strong>      "expiration_month": "10",
</strong><strong>      "expiration_year": "25",
</strong><strong>      "holder_name": "JOHN SMITH"
</strong><strong>    },
</strong>    "client_ip": "123.123.123.123"
  }'
</code></pre>

</details>

<details>

<summary>Fragments Lite</summary>

<pre class="language-sh"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://cc-api-stg.pandablue.com/v3/deposits' \
</strong>  --header 'Content-Type: application/json' \
  --header 'X-Date: 2025-07-15T12:57:14.936Z' \
  --header 'X-Login: text' \
  --header 'Authorization: text' \
  --data '{
    "invoice_id": "800000001",
    "amount": 1000,
    "country": "BR",
    "currency": "BRL",
<strong>    "sub_merchant_id":"18703",
</strong>    "payer": {
      "id": "11111",
      "document": "84932568207",
      "document_type": "CPF",
      "email": "johnSmith12@hotmail.com",
      "first_name": "John",
      "last_name": "Smith"
    },
<strong>    "card_token": "C4RD_T0K3N_G3N3R4T3D_W1TH_FR4GM3N7S_L1T3",
</strong>    "client_ip": "123.123.123.123"
  }'
</code></pre>

</details>

<details>

<summary>Fragments all-in-one</summary>

<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 '{
    "invoice_id" : "1000000001",
    "amount": "1000",
    "country": "MX",
    "currency": "MXN",
<strong>    "sub_merchant_id":"18703",
</strong>    "payer": {
        "id": "11",
        "document": "CURP4321TEST",
        "first_name": "Ricardo",
        "last_name": "Carlos",
        "email": "juanCarlos@hotmail.com"
    },
    "payment_method": "CC",
<strong>    "token_requested":true
</strong>    "client_ip": "123.123.123.123",
    "back_url": "https://www.mercahnt.com/deposit_cancelled",
    "success_url": "https://www.merchant.com/deposit_completed",
    "error_url": "https://www.merchant.com/deposit_error",
    "notification_url": "https://www.pandablue.com/pandablue/notify"
}'
</code></pre>

</details>

<details>

<summary>OneShot</summary>

<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 '{
    "invoice_id" : "1000000001",
    "amount": "1000",
    "country": "MX",
    "currency": "MXN",
<strong>    "sub_merchant_id":18703,
</strong>    "payer": {
        "id": "11",
        "document": "CURP4321TEST",
        "first_name": "Ricardo",
        "last_name": "Carlos",
        "email": "juanCarlos@hotmail.com"
    },
    "payment_method": "CC",
    "client_ip": "123.123.123.123",
    "back_url": "https://www.mercahnt.com/deposit_cancelled",
    "success_url": "https://www.merchant.com/deposit_completed",
    "error_url": "https://www.merchant.com/deposit_error",
    "notification_url": "https://www.pandablue.com/pandablue/notify"
    "logo": "https://www.merchant.com/merchant-logo.png",
}'
</code></pre>

</details>

To understand with our deposit solution is more suitable for your needs, please visit the <a href="/pages/71ickTs0EqwJieRnQXY2" class="button primary">Deposits overview</a> page.


# Create a cashout

Merchants willing to create cashouts for your Submerchant accounts, they just need to include the **`sub_merchant_id`** parameter in the cashout request, indicating in the value to which of their submerchant the cashout corresponds.

<pre class="language-sh"><code class="lang-sh">curl -L \
  --request POST \
<strong>  --url 'https://api-stg.pandablue.com/v3/cashout' \
</strong>  --header 'Content-Type: application/json' \
  --header 'Payload-Signature: text' \
  --data '{
    "login": "your_cashout_login",
    "pass": "your_cashout_pass",
    "external_id": "30000000001",
    "country": "MX",
    "currency": "MXN",
<strong>    "sub_merchant_id":"18703",
</strong>    "amount": 100,
    "document_id": "848392783",
    "bank_account": "021790064060296642",
    "beneficiary_name": "Luis",
    "beneficiary_lastname": "Miguel",
    "notification_url": "https://merchant.site/webhooks/pandablue",
    "type": "json"
}'
</code></pre>


# Countries Specifications

Learn how to validate the country's specific details

## Countries and currencies

* The country codes are in **ISO 3166-1 alpha-2** format.&#x20;
* The currencies are in **ISO 4217** format.

| Country            | Country code&#xA;(ISO 3166-1 alpha-2 code) | Currency code &#xA;(ISO 4217) |
| ------------------ | :----------------------------------------: | :---------------------------: |
| Argentina          |                     AR                     |           USD / ARS           |
| Australia          |                     AU                     |           USD / AUS           |
| Brazil             |                     BR                     |           USD / BRL           |
| Bangladesh         |                     BD                     |            USD/BDT            |
| Bolivia            |                     BO                     |           USD / BOB           |
| Cameroon           |                     CM                     |           USD / XAF           |
| Canada             |                     CA                     |           USD / CAD           |
| Chile              |                     CL                     |           USD / CLP           |
| China              |                     CN                     |            USD/CNY            |
| Colombia           |                     CO                     |           USD / COP           |
| Costa Rica         |                     CR                     |           USD / CRC           |
| Côte d'Ivoire      |                     CI                     |           USD / XOF           |
| Dominican Republic |                     DO                     |           USD / DOP           |
| Ecuador            |                     EC                     |              USD              |
| Egypt              |                     EG                     |            USD/EGP            |
| El Salvador        |                     SV                     |           USD / SVC           |
| Ghana              |                     GH                     |           USD / GHS           |
| Guatemala          |                     GT                     |           USD / GTQ           |
| Honduras           |                     HN                     |           USD / HNL           |
| India              |                     IN                     |           USD / INR           |
| Indonesia          |                     ID                     |           USD / IDR           |
| Japan              |                     JP                     |           USD / JPY           |
| Kenya              |                     KE                     |           USD / KES           |
| Malaysia           |                     MY                     |           USD / MYR           |
| Mexico             |                     MX                     |           USD / MXN           |
| Nicaragua          |                     NI                     |           USD / NIO           |
| Nigeria            |                     NG                     |           USD / NGN           |
| Panama             |                     PA                     |              USD              |
| Peru               |                     PE                     |           USD / PEN           |
| Paraguay           |                     PY                     |           USD / PYG           |
| Philippines        |                     PH                     |           USD / PHP           |
| Singapore          |                     SG                     |           USD / SGD           |
| South Africa       |                     ZA                     |           USD / ZAR           |
| Tanzania           |                     TZ                     |           USD / TZS           |
| Turkey             |                     TR                     |            USD/TRY            |
| Thailand           |                     TH                     |           USD / THB           |
| Uganda             |                     UG                     |           USD / UGX           |
| Uruguay            |                     UY                     |           USD / UYU           |
| Venezuela          |                     VE                     |           USD / VES           |
| Vietnam            |                     VN                     |           USD / VND           |

## Documents validations

The `document` sent must follow the validations for its respective `document_type`  described below.

| Country            | Document type                                                  | Validation                                                                                                                                                                 |
| ------------------ | -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Argentina          | DNI                                                            | Numeric. Length 7-9                                                                                                                                                        |
| Argentina          | CUIL                                                           | Numeric. Length between 7 and 9 inclusive or equal to 11                                                                                                                   |
| Bangladesh         | ID                                                             | Numeric. Length: 10 digits                                                                                                                                                 |
| Bangladesh         | PASS                                                           | <p>Length 9 digits,<br>Starting with 2 alphanumerical character (i.e: AB1234567)</p>                                                                                       |
| Bangladesh         | DL (Driving license)                                           | <p>Length: 15,<br>Starting with 2 alphanumerical characters, followed by 7 numerical digits, 1 alphanumerical character and finally 5 numerical (i.e: AB1234567C12345)</p> |
| Brazil             | CPF                                                            | Numeric. Length 11 (Validate verifier-digits)                                                                                                                              |
| Bolivia            | CI                                                             | Numeric. Length: 7                                                                                                                                                         |
| Bolivia            | CIE                                                            | Alphanumeric. One character followed by 8 digits                                                                                                                           |
| Bolivia            | PASS                                                           | Alphanumeric. One character followed by 6 digits                                                                                                                           |
| Bolivia            | NIT                                                            | Numeric. Length:12                                                                                                                                                         |
| Cameroon           | PASS                                                           | Numeric. Length between 9 and 11 inclusive                                                                                                                                 |
| Cameroon           | CI                                                             | Numeric. Length between 8 and 12 inclusive                                                                                                                                 |
| Cameroon           | DL (Driving License)                                           | Numeric. Length between 8 and 10 inclusive                                                                                                                                 |
| Canada             | DL (Driving License)                                           | Numeric and length between 6 and 9 inclusive or string between 10 and 15 inclusive                                                                                         |
| Canada             | HC (Health Card)                                               | Numeric. Length 10                                                                                                                                                         |
| Canada             | PASS (Passport)                                                | Length between 8 and 12 inclusive                                                                                                                                          |
| Chile              | ID / RUN / RUT                                                 | Length 8 or 9                                                                                                                                                              |
| China              | ID                                                             | Numeric. Length between 3 and 20 inclusive                                                                                                                                 |
| Colombia           | CC                                                             | Numeric. Length between 6 and 10 inclusive                                                                                                                                 |
| Colombia           | NIT                                                            | Numeric. Length between 8 and 15                                                                                                                                           |
| Colombia           | CE                                                             | Numeric. Length between 6 and 10 inclusive.                                                                                                                                |
| Colombia           | PASS                                                           | Length between 6 and 10 inclusive                                                                                                                                          |
| Colombia           | PPT                                                            | Length between 6 and 10 inclusive                                                                                                                                          |
| Costa Rica         | CI                                                             | Length: 9                                                                                                                                                                  |
| Côte d'Ivoire      | ID                                                             | Length between 8 and 12 inclusive                                                                                                                                          |
| Dominican Republic | CIE                                                            | Numeric. Length 11                                                                                                                                                         |
| Ecuador            | CC                                                             | Numeric. Length between 9 and 10 inclusive                                                                                                                                 |
| Ecuador            | DL                                                             | Numeric. Length 10                                                                                                                                                         |
| Ecuador            | RUC                                                            | Numeric. Length between 12 and 13 inclusive and ends with 001                                                                                                              |
| Ecuador            | PASS                                                           | Alphanumeric. Length between 8 and 13 inclusive and ends with 001                                                                                                          |
| Egypt              | ID                                                             | Length between 12 and 14                                                                                                                                                   |
| El Salvador        | DUI                                                            | Length between 6 and 18 inclusive                                                                                                                                          |
| Ghana              | ID                                                             | Length between 8 and 12 inclusive                                                                                                                                          |
| Guatemala          | DPI                                                            | Length between 6 and 18 inclusive                                                                                                                                          |
| India              | ID (PAN)                                                       | Length between 8 and 12 inclusive                                                                                                                                          |
| India              | DL (Driver's License)                                          | Length between 15 and 16 inclusive                                                                                                                                         |
| India              | UID (Aadhar Card)                                              | Numeric. Length 12                                                                                                                                                         |
| Indonesia          | NIK / KTP                                                      | Numeric. Length between 14 and 18 inclusive                                                                                                                                |
| Japan              | DL / ID / PASS / RD (Resident Registration Card)               | Length between 9 and 12 inclusive                                                                                                                                          |
| Kenya              | ID                                                             | Length between 7 and 12 inclusive                                                                                                                                          |
| Malaysia           | ID                                                             | Numeric. Length between 10 and 14 inclusive                                                                                                                                |
| Mexico             | CURP / RFC / IFE / PASS                                        | Length between 7 and 18 inclusive                                                                                                                                          |
| Nicaragua          | CI                                                             | Length between 8 and 18 inclusive                                                                                                                                          |
| Nigeria            | ID                                                             | Length between 9 and 12 inclusive                                                                                                                                          |
| Nigeria            | ID (NIN)                                                       | Numeric length 11                                                                                                                                                          |
| Nigeria            | PASS (Passport)                                                | Alphanumeric length between 8 and 10                                                                                                                                       |
| Panama             | CIP                                                            | Numeric. Length between 5 and 10 inclusive                                                                                                                                 |
| Panama             | PASS                                                           | Length between 8 and 11 inclusive                                                                                                                                          |
| Paraguay           | CRC / CRP / DNI / PASS / RUC                                   | Length Between 3 and 15 characters                                                                                                                                         |
| Paraguay           | CIC                                                            | Length between 6 to 8 characters                                                                                                                                           |
| Peru               | CE/CPP                                                         | Numeric. Length 9                                                                                                                                                          |
| Peru               | DNI                                                            | Numeric. Length 8-9                                                                                                                                                        |
| Peru               | PASS                                                           | Numeric. Length 12                                                                                                                                                         |
| Peru               | RUC                                                            | Length 11                                                                                                                                                                  |
| Philippines        | PSN                                                            | Numeric. Length between 9 and 13 inclusive                                                                                                                                 |
| Singapore          | NRIC                                                           | Length 9                                                                                                                                                                   |
| Singapore          | PASS                                                           | Length 9                                                                                                                                                                   |
| South Africa       | ID                                                             | Numeric. Length between 9 and 14 inclusive                                                                                                                                 |
| Tanzania           | ID                                                             | Length between 8 and 20 inclusive                                                                                                                                          |
| Thailand           | ID                                                             | Numeric. Length between 10 and 14 inclusive                                                                                                                                |
| Turkey             | DL                                                             | Numeric Length between 5-8 digits                                                                                                                                          |
| Turkey             | <p>TCKK <br>(Turkish National Identity Card (Kimlik Kartı)</p> | Numeric length Between 5 to 20 digits                                                                                                                                      |
| Uganda             | RIC / NID                                                      | Numeric. Length between 11 and 15 inclusive                                                                                                                                |
| Uruguay            | CI                                                             | Numeric. Length between 6 and 8 inclusive                                                                                                                                  |
| Venezuela          | CI                                                             | Numeric. Length between 3 and 20 inclusive                                                                                                                                 |
| Venezuela          | RIF                                                            | Numeric. Length between 3 and 20 inclusive                                                                                                                                 |
| Vietnam            | ID                                                             | Numeric. Length between 9 and 13 inclusive                                                                                                                                 |

## Postal code validations

The validation for the postal codes dependes up on the country sent. Make sure you validate them with the regex in the table below to avoid errors due to Invalid postal Code.

| Country            | Regex                                  |  Example  |
| ------------------ | -------------------------------------- | :-------: |
| Argentina          | `^\d{4}\|[A-Za-z]\d{4}([a-zA-Z]{3})?$` |  A1234ABC |
| Brazil             | `^\d{5}[\s-/]?\d{3}$`                  | 12345-678 |
| Cameroon           | N/A                                    |    N/A    |
| Canada             | `^[a-zA-Z]\d[a-zA-Z]\s?\d[a-zA-Z]\d$`  |  A1A 2B2  |
| Chile              | `^\d{3}[\s-/]?\d{4}$`                  |  123-4567 |
| Colombia           | `^\d{5,6}$`                            |   12345   |
| Côte d'Ivoire      | N/A                                    |    N/A    |
| Dominican Republic | `^\d{5}$`                              |   12345   |
| Ecuador            | `^\d{6}$`                              |   123456  |
| El Salvador        | N/A                                    |    N/A    |
| Ghana              | `^[A-Za-z]{2}\d{3,5}$`                 |   AB1234  |
| Guatemala          | N/A                                    |    N/A    |
| India              | `^\d{3}[\s-/]?\d{3}$`                  |  123-456  |
| Japan              | N/A                                    |    N/A    |
| Indonesia          | `^\d{5}$`                              |   12345   |
| Kenya              | `^\d{5}$`                              |   12345   |
| Malaysia           | `^\d{5}$`                              |   12345   |
| Mexico             | `^\d{5}$`                              |   12345   |
| Nicaragua          | N/A                                    |    N/A    |
| Nigeria            | `^\d{6}$`                              |   123456  |
| Panama             | `^\d{4,6}$`                            |   12345   |
| Paraguay           | `^\d{4}$`                              |    1234   |
| Peru               | `^\d{5}$`                              |   12345   |
| Philippines        | `^\d{3,4}$`                            |    1234   |
| Singapore          | N/A                                    |    N/A    |
| South Africa       | `^\d{4}$`                              |    2345   |
| Tanzania           | `^\d{5}$`                              |   12345   |
| Thailand           | `^\d{5}$`                              |   12345   |
| Uganda             | N/A                                    |    N/A    |
| Uruguay            | `^\d{5}$`                              |   12345   |
| Venezuela          | N/A                                    |    N/A    |
| Vietnam            | `^\d{5}$`                              |   12345   |

## Phone numbers validations

We use the Google's common library for parsing, formatting, and validating international phone numbers. Validating the phone numbers on your end could help preventing `Invalid phone number` errors.

{% embed url="<https://github.com/google/libphonenumber>" %}

## Emails validations

We suggest you using the following regex to validate email addresses on your end and prevent `invalid email` errors.

```
(?i)[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])
```




---

[Next Page](/llms-full.txt/1)

