---
updatedAt: 2026-10-07T01:41:49.000Z
agentTools:
  projectIndex: https://docs.dlocal.com/llms.txt
---

# Mexico

Learn about the dLocal supported payment methods in Mexico.

<HTMLBlock>{`
<style>
  
  .main {
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 5px;
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* Tres columnas */
    width: 740px; /* Ancho máximo de la caja */
}

.overview-card1 {
    position: relative; /* Asegúrate de que el contenedor sea relativo para posicionar el pseudoelemento */
    width: 100%;
    max-width: 233px;
    box-sizing: border-box;
    margin: 0;
}

.overview-card1::after {
    content: '';
    position: absolute;
    right: 0; /* Pega la línea al borde derecho */
    top: 30%; /* Ajusta la posición superior de la línea */
    height: 60%; /* Establece el alto de la línea al 60% */
    width: 1px; /* Grosor de la línea */
    background-color: #D2D8EC; /* Color de la línea */
}

  .overview-card2 {
    position: relative; /* Asegúrate de que el contenedor sea relativo para posicionar el pseudoelemento */
    width: 100%;
    max-width: 233px;
    box-sizing: border-box;
    margin: 0;
}
  
  .overview-card2::after {
    content: '';
    position: absolute;
    right: 0; /* Pega la línea al borde derecho */
    top: 30%; /* Ajusta la posición superior de la línea */
    height: 70%; /* Establece el alto de la línea al 60% */
    width: 1px; /* Grosor de la línea */
    background-color: #D2D8EC; /* Color de la línea */
}
  
.overview-card3 {
    position: relative; /* Asegúrate de que el contenedor sea relativo para posicionar el pseudoelemento */
    width: 100%;
    max-width: 233px;
    box-sizing: border-box;
    margin: 0;
}

.overview-card-upper-side1 {
    height: 105px;
    padding: 20px;
    background-color: transparent;
    text-align: left;
}

.overview-card-bottom-side {
    position: relative;
    width: 100%;
    height: 100%;
    padding: 30px;
    padding-right: 20px;
    background-color: transparent;
    border-radius: 16px;
}

.overview-card-title1 {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: 24px;
    font-weight: 700;
    line-height: 26.4px;
}

.overview-card-content1 {
    font-size: 14px;
    font-weight: 300;
    margin-top: 20px;
    line-height: 20px;
    margin-bottom: 40px!important;
}

.overview-icon1 {
    margin-bottom: -5px;
    margin-top: 20px;
}
  
.doc-link {
        position: relative;
        font-weight: 500;
        color: #21A35B !important;
        text-decoration: none;
        display: block;
    }
  

div:not(.markdown-body) .doc-link:hover {
            text-decoration: none;
            color: #1043FA !important;
            transform: translateX(0.2em);
        }

.overview-card-title1:hover {
    color: #2D59F5 !important;
    cursor:pointer;
    transform: none!important;
}

    div:not(.markdown-body) .doc-link_arrow {
        display: inline-block;
        height: 1em;
        width: auto;
        vertical-align: middle;
        margin-left: 0.2em;
        margin-top: -0.1em;
    }
  
     div:not(.markdown-body) .doc-link:hover .doc-link_arrow-color {
            fill: #1043FA !important;
        }
  
      [data-color-mode="dark"] .overview-icon1 img {
  filter: brightness(0) invert(1);
  transition: filter 0.3s ease;
}
  
  
/* Media Queries para dispositivos móviles */
@media (max-width: 768px) {
  .main {
    grid-template-columns: repeat(2, 1fr); /* Dos columnas en pantallas medianas */
  }
}

@media (max-width: 480px) {
  .main {
    grid-template-columns: 1fr; /* Una columna en pantallas pequeñas */
}
</style>
  
    <div class="main">

     
      <div class="overview-card1" onclick="parent.location='/docs/mexico#market-specifications'">
     <div class="overview-card-bottom-side">
       <div class="overview-icon1"><img width="48" src="https://files.readme.io/922681fecfb238c94f7213fa9e0aa1675f1e190ec55beff2b6994169c77fdefc-adjust-circle.svg"  alt="" loading="lazy"><div class="img_overlay img_color_rgba(0,0,0,.2)"></div></div>
           <h3 class="overview-card-title1">Market specifications</h3>
          <p class="overview-card-content1">
            Take a look of all the payment methods available.   
        </p>
          <a href="#country-reference" class="doc-link">Country reference</a>
          <a href="#cards-supported" class="doc-link">Cards supported</a>
          <a href="#alternative-payment-method-supported" class="doc-link">APM supported</a>
        </div>
      </div>
      
      
      <div
        class="overview-card2" onclick="parent.location='/docs/mexico#cards'">
        <div class="overview-card-bottom-side">
                <div class="overview-icon1"><img width="48" src="https://files.readme.io/8d450ada4af3880f85f70c5daedebb0bec1b2b6d64479be929af48fdc8d66f40-credit-card.svg"  alt="" loading="lazy"><div class="img_overlay img_color_rgba(0,0,0,.2)"></div></div>
           <h3 class="overview-card-title1">Cards</h3><br>
          <p class="overview-card-content1">
           Find all the information about the card supported capabilities.   
          </p>
          <a href="#capabilities" class="doc-link">Capabilities</a>
          <a href="#how-to-process-card-payments" class="doc-link">Process Card Payments</a>
        </div>
      </div>  
      
      
      <div class="overview-card3" onclick="parent.location='/docs/mexico#alternative-payment-method'">
    <div class="overview-card-bottom-side">
            <div class="overview-icon1"><img width="48" src="https://files.readme.io/5a59519487455e7af361db8b67a2dee8d71627d4d6e1ed0a0bd805f5da861fcc-money-stack.svg"  alt="" loading="lazy"><div class="img_overlay img_color_rgba(0,0,0,.2)"></div></div>
           <h3 class="overview-card-title1">Alternative Payments</h3>
          <p class="overview-card-content1">
             Learn how to integrate cash, bank transfer or wallet payment.  
        </p>
          <a href="#oxxo" class="doc-link">OXXO</a>
          <a href="#spei" class="doc-link">SPEI</a>
          <a href="#codi-qr-code" class="doc-link">CoDi QR Code</a>
          <a href="#codi-push-notification" class="doc-link">CoDi Push Notification</a>
          <a href="#mercado-pago" class="doc-link">Mercado Pago</a>
          <a href="#domiciliaci%C3%B3n-bancaria-qv" class="doc-link">Domiciliación Bancaria</a>
      		<a href="#kueski-pay-bnpl" class="doc-link">Kueski Pay (BNPL)</a>
          <a href="#didi-paga-despu%C3%A9s-bnpl" class="doc-link">DiDi Paga Después (BNPL)</a>

        </div>
      </div> 
      
    </div>
`}</HTMLBlock>

***

# Market specifications

Do you want to know more information about Mexico's market? Go to the [Mexico’s economy and eCommerce market](https://dlocal.com/payment-processors-in-latin-america/mexico-payment-methods-processors-ecommerce-market-dlocal/) article.

> ***Demerge Mexico S.A. de C.V.****&#x20;is a company incorporated in Mexico and registered with the National Banking and Securities Commission (CNBV) and Banco de México as a Payment Aggregator.*

## Country reference

| `country` code | `currency` code | `amount` decimals | `document` name |                           `document` format                           | `document` required? |
| :------------: | :-------------: | :---------------: | :-------------: | :-------------------------------------------------------------------: | :------------------: |
|      `MX`      |      `MXN`      |         2         |   CURP or RFC   | Between 10 to 18 characters for CURP and 12 or 13 characters for RFC. |          Yes         |

## Cards supported

| `payment_method_id` | Brand ID | Name               | `payment_method_type` | Details       | Allowed Flows       | Logo                                                                                |
| :------------------ | :------- | :----------------- | :-------------------- | :------------ | :------------------ | :---------------------------------------------------------------------------------- |
| `CARD`              | `VI`     | Visa               | `CARD`                | Credit Card ​ | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/VI.svg" width="40px"> |
| `CARD`              | `VD`     | Visa Debit ​       | `CARD`                | Debit Card ​  | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/VD.svg" width="40px"> |
| `CARD`              | `MC`     | Mastercard         | `CARD`                | Credit Card ​ | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/MC.svg" width="40px"> |
| `CARD`              | `MD`     | Mastercard Debit ​ | `CARD`                | Debit Card ​  | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/MD.svg" width="40px"> |
| `CARD`              | `AE`     | American Express   | `CARD`                | Credit Card ​ | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/AE.svg" width="40px"> |
| `CARD`              | `KC`     | Carnet Credit      | `CARD`                | Credit Card ​ | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/KC.svg" width="40px"> |
| `CARD`              | `KD`     | Carnet Debit       | `CARD`                | Debit Card​   | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/KD.svg" width="40px"> |

<Callout icon="ℹ️" theme="info">
  To offer all the card options that may be available in your integration, send the `payment_method_id` as `CARD`.
</Callout>

## Alternative Payment Method supported

| `payment_method_id` | Name                                  | `payment_method_type` | Details                | Allowed Flows       | Logo                                                                                |
| :------------------ | :------------------------------------ | :-------------------- | :--------------------- | :------------------ | :---------------------------------------------------------------------------------- |
| `OX`                | OXXO                                  | `TICKET`              | Cash Payments          | `DIRECT` `REDIRECT` | <img src="https://pay.dlocal.com/views/2.0/images/payments/OX.png" width="40px">    |
| `SE`                | SPEI                                  | `BANK_TRANSFER`       | Bank Transfer Online   | `DIRECT` `REDIRECT` | <img src="https://pay.dlocal.com/views/2.0/images/payments/SE.png" width="40px">    |
| `CQ`                | CoDi QR Code                          | `BANK_TRANSFER`       | Codi QR code           | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/codi.png" width="40px">        |
| `CJ`                | CoDi Push Notification                | `BANK_TRANSFER`       | Codi Push Notification | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/codi.png" width="40px">        |
| `MP`                | Mercado Pago                          | `WALLET`              | Wallet                 | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/Mercadopago.png" width="40px"> |
| `MY`                | Mercado Pago Checkout Pro             | `BANK_TRANSFER`       | Wallet Checkout        | `REDIRECT`          | <img src="https://static.dlocal.com/images/providers/Mercadopago.png" width="40px"> |
| `KI`                | Buy Now Pay Later (BNPL) - Kueski Pay | `TICKET`              | Installment Plan       | `REDIRECT`          | <img src="https://static.dlocal.com/images/providers/KI.png" width="40px">          |
| `QV`                | Domiciliación Bancaria                | `BANK_TRANSFER`       | Bank Debit Enrollment  | `REDIRECT`          |                                                                                     |

***

# Cards

## Capabilities

|                               | Visa Credit   | Mastercard Credit | Visa Debit    | Mastercard Debit | American Express | Carnet Credit | Carnet Debit  |
| :---------------------------- | :------------ | :---------------- | :------------ | :--------------- | :--------------- | :------------ | :------------ |
| **Minimum amount**            | 1 MXN         | 1 MXN             | 1 MXN         | 1 MXN            | 1 MXN            | 1 MXN         | 1 MXN         |
| **Refunds**                   | Yes           | Yes               | Yes           | Yes              | Yes              | Yes           | Yes           |
| **Recurring**                 | Yes           | Yes               | Yes           | Yes              | Yes              | Yes           | Yes           |
| **Chargeback option**         | Yes           | Yes               | Yes           | Yes              | Yes              | Yes           | Yes           |
| **Chargeback Dispute option** | Yes           | Yes               | Yes           | Yes              | Yes              | Yes           | Yes           |
| **Descriptor**                | Merchant name | Merchant name     | Merchant name | Merchant name    | Merchant name    | Merchant name | Merchant name |

## How to process Card Payments?

Learn how to process payments with credit and debit cards with dLocal in our [Card Payments](https://docs.dlocal.com/docs/card-payments) section.

***

# Alternative Payment Method

## OXXO

Is the most popular chain of convenience stores in Mexico.

With the aim of facilitating payments in the country, they created the OXXO invoice, which is now widely used by Mexicans to pay for their utility bills and online purchases, in cash.

### Capabilities

|                                    | OXXO                                                                                                                                |
| :--------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------- |
| **Min. amount**                    | 1 MXN                                                                                                                               |
| **Max. expiration time supported** | 10 or 12 days, depending on the provider.                                                                                           |
| **Notification delay**             | Immediate or 24h, depending on the agreed solution                                                                                  |
| **Refunds**                        | Yes, offline refunds are available through Payout Links. For implementation details and enablement, please contact the dLocal team. |
| **Flow**                           | `DIRECT` <br /> `REDIRECT`                                                                                                          |

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `MXN`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `MX` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `OX` <br /><br />ID of the selected payment method.                                                                    | Yes        |
| `payment_method_flow` | String | `DIRECT` or `REDIRECT`                                                                                                 | Yes        |
| `payer.name`          | String | Name of the payer.                                                                                                     | Yes        |
| `payer.email`         | String | Email of the payer.                                                                                                    | Yes        |
| `payer.document`      | String | Document of the payer.                                                                                                 | Yes        |
| `order_id`            | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture.                 | No         |
| `notification_url`    | String | Notifications will be sent in every change of status of a payment to the `notification_url` specified by the merchant. | No         |
| `callback_url`        | String | URL to redirect the customer after completing or canceling the payment.                                                | Yes        |

### Examples

```json DIRECT Request Example
{
    "amount": 1800,
    "currency": "MXN",
    "country": "MX",
    "payment_method_id": "OX",
    "payment_method_flow": "DIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "document": "1234567890"
    },
    "order_id": "34545sk3483kqw0",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new",
    "callback_url": "http://merchantsite.com/success_page"
}
```
```json DIRECT Synchronous Response Example
{
    "id": "D-4-9ad938ba-c157-2022-9451-2881fe74098d",
    "amount": 1800,
    "currency": "MXN",
    "payment_method_id": "OX",
    "payment_method_type": "TICKET",
    "payment_method_flow": "DIRECT",
    "country": "MX",
    "bank_transfer": {},
    "ticket": {
        "type": "CUSTOM",
        "number": "9300-30895-92390",
        "expiration_date": "2022-09-27T22:04:49.627+0000",
        "barcode": "2710066107843003",
        "provider_logo": "https://static.dlocal.com/images/providers/oxxo-pay.png",
        "image_url": "https://pay.dlocal.com/gmf-apm/payments/M-04d8002b-db83-4d7b-a6e1-578c8803629b",         
        "amount": 1800,
        "currency": "MXN"
    },
    "created_date": "2022-09-17T22:04:48.000+0000",
    "status": "PENDING",
    "status_detail": "The payment is pending.",
    "status_code": "100",
    "order_id": "34545sk3483kqw0",
    "notification_url": "http://merchantsite.com/notification/new"
}
```
```json DIRECT Asynchronous Response Example (Webhook)
{
  "id": "D-4-9ad938ba-c157-2022-9451-2881fe74098d",
  "amount": 1800,
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "OX",
  "payment_method_type": "TICKET",
  "payment_method_flow": "DIRECT",
  "payer": {
    "name": "Jane Doe",
    "document": "1234567890",
    "user_reference": "",
    "email": "janedoe@mymail.com"
  },
  "ticket": {
    "type": "REFERENCE_CODE",
    "number": "9300-30895-92390",
    "expiration_date": "2022-09-27T22:05:51.627+0000",
    "barcode": "93003089592390",
    "provider_logo": "https://static.dlocal.com/images/providers/oxxo-pay.png",
    "image_url": "https://pay.dlocal.com/gmf-apm/payments/M-04d8002b-db83-4d7b-a6e1-578c8803629b",
    "amount": 1800,
    "currency": "MXN"
  },
  "order_id": "34545sk3483kqw0",
  "notification_url": "http://merchantsite.com/notification/new",
  "created_date": "2022-09-17T22:04:48.000+0000"
}

```
```json REDIRECT Request Example
{
  "amount": 1,
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "OX",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "1234567890"
  },
  "order_id": "34545sk3483kqw0",
  "description": "Tshirt",
  "notification_url": "https://dlocal.free.beeceptor.com",
  "callback_url": "https://dlocal.free.beeceptor.com"
}
```
```json REDIRECT Synchronous Response Example
{
  "id": "R-1410652-x1l4dkfu-4r8ub9famp6e11-5uk4bkddc3o0",
  "amount": 1,
  "currency": "MXN",
  "payment_method_id": "OX",
  "payment_method_type": "TICKET",
  "payment_method_flow": "REDIRECT",
  "country": "MX",
  "created_date": "2026-07-02T21:02:54.000+0000",
  "status": "PENDING",
  "status_detail": "The payment is pending.",
  "status_code": "100",
  "order_id": "34545sk3483kqw0",
  "description": "Tshirt",
  "notification_url": "https://dlocal.free.beeceptor.com",
  "redirect_url": "https://pay.dlocal.com/gmf-apm/payments/N-67b99221-bbb8-47ec-a0d2-e95ef0a8117a"
}

```
```json REDIRECT Asynchronous Response Example (Webhook)
{
  "id": "R-1410652-x1l4dkfu-4r8ub9famp6e11-5uk4bkddc3o0",
  "amount": 1,
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "OX",
  "payment_method_type": "TICKET",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "1234567890"
  },
  "order_id": "34545sk3483kqw0",
  "description": "Account balance",
  "description": "Tshirt",
  "notification_url": "https://dlocal.free.beeceptor.com",
  "created_date": "2026-07-06T12:36:03.000+0000"
}

```

### Example ticket

<Image src="https://files.readme.io/401acdff7b3a75b999ba7481b7ddd93377145d98cd72e066f0ac193a534dc86d-APM_-_OXXO.png" alt="OXXO UI built with the information in the example above." align="center" caption="OXXO UI built with the information in the example above." />

### User Interface Tips <span class="pill primary">UI</span>

If you are using this payment method through a DIRECT integration, follow the tips below in order to make it easier for your customers to complete payments, boosting your conversion rates.

| Element                  | Tip                                                                                                                                                                                                                                    |
| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Ticket Number**        | It is the number that payers must dictate to the cashiers in order to complete payment. Name it "Referencia" and separate it this way so it is easier to read: 4 digits - 5 digits - 5 digits                                          |
| **Barcode**              | Some cashiers prefer to scan the barcode rather than ask for the Reference Number. Helping cashiers is a way to improve conversion rates.                                                                                              |
| **Currency and Amount**  | Should be relevant elements in the ticket. Users need to have that information very clearly.                                                                                                                                           |
| **Currency Symbol**      | $                                                                                                                                                                                                                                      |
| **Expiration date**      | Display this element clearly and visible enough. In Mexico, the date format is  **DD/MM/YYYY**.                                                                                                                                        |
| **Payment instructions** | Although most users are familiarized with OXXO, it is a good practice to help those who are not. The image above is an example of instructions, but if needed, our team will be happy to help you with more personalized instructions. |
| **Store locator**        | Link it to [google.com/maps/search/oxxo/](https://www.google.com/maps/search/oxxo)                                                                                                                                                     |
| **Save button**          | It helps users to have their tickets always on their phones, making it needless to take notes or keep the browser open.                                                                                                                |
| **Print button**         | It is helpful for some users who need to have their tickets printed.                                                                                                                                                                   |

## SPEI

Is a funds transfer system in which participants can make transfers among themselves on behalf of themselves or their customers.

Each payment order contains information allowing identification of the sender client and the client to whom the payment should be credited.

### Capabilities

|                                    | SPEI                       |
| :--------------------------------- | :------------------------- |
| **Min. amount**                    | 1 MXN                      |
| **Max. expiration time supported** | 1 day                      |
| **Notification delay**             | Immediate                  |
| **Refunds**                        | Yes                        |
| **Flow**                           | `DIRECT` <br /> `REDIRECT` |

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `MXN`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `MX` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `SE` <br /><br />ID of the selected payment method.                                                                    | Yes        |
| `payment_method_flow` | String | `DIRECT` or `REDIRECT`                                                                                                 | Yes        |
| `payer.name`          | String | Name of the payer.                                                                                                     | Yes        |
| `payer.email`         | String | Email of the payer.                                                                                                    | Yes        |
| `payer.document`      | String | Document of the payer.                                                                                                 | Yes        |
| `order_id`            | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture.                 | No         |
| `notification_url`    | String | Notifications will be sent in every change of status of a payment to the `notification_url` specified by the merchant. | No         |

### Examples

```json Request Example
{
    "amount": 100,
    "currency": "MXN",
    "country": "MX",
    "payment_method_id": "SE",
    "payment_method_flow": "DIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "document": "1234567890",
        "address": {
            "country": "MX",
            "state": "Mexico DF",
            "city": "Mexico DF",
            "zip_code": "8858",
            "street": "Av. Principal",
            "number": "5940"
        }
    },
    "order_id": "34545sk3483kqw0",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new",
    "callback_url": "http://merchantsite.com/success_page"
}
```
```json Synchronous response example
{
    "id": "D-4-3e6e6631-2ed6-4444-65tr-b109af0f5a1d",
    "amount": 100,
    "currency": "MXN",
    "payment_method_id": "SE",
    "payment_method_type": "BANK_TRANSFER",
    "payment_method_flow": "DIRECT",
    "country": "MX",
    "bank_transfer": {
        "bank_account_type": "CHECKING",
        "bank_name": "STP",
        "bank_code": "STP",
        "beneficiary_name": "DEMERGE MEXICO SA DE CV",
        "bank_account": "646180205700879296",
        "bank_account_label": "CLABE",
        "reference": "64618020",
        "redirect_url": "https://pay.dlocal.com/gmf-apm/payments/M-450359a6-b3a6-4415-82a4-7965tr370370",
        "user_payment_amount": 100,
        "payment_instruction": "Ingresa a tu banca en línea y realiza la transferencia a la siguiente cuenta. Recuerda que no se pueden hacer pagos en ventanilla.",
        "expiration_date": "2023-07-06T00:16:02.500+0000"
    },
    "ticket": {},
    "created_date": "2023-07-05T22:16:02.000+0000",
    "status": "PENDING",
    "status_detail": "The payment is pending.",
    "status_code": "100",
    "order_id": "34545sk3483kqw0",
    "notification_url": "http://merchantsite.com/notification/new"
}

```
```json Asynchronous response example (Webhook)
{
  "id": "D-4-3e6e6631-2ed6-4444-65tr-b109af0f5a1d",
  "amount": 100,
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "SE",
  "payment_method_type": "BANK_TRANSFER",
  "payment_method_flow": "DIRECT",
  "payer": {
    "name": "Jane Doe",
    "user_reference": "",
    "email": "janedoe@mymail.com",
    "phone": ""
  },
  "bank_transfer": {
    "bank_account_type": "CHECKING",
    "bank_name": "STP",
    "bank_code": "STP",
    "beneficiary_name": "DEMERGE MEXICO SA DE CV",
    "bank_account": "646180205700879296",
    "bank_account_label": "CLABE",
    "reference": "64618020",
    "redirect_url": "https://pay.dlocal.com/gmf-apm/payments/M-450359a6-b3a6-4415-82a4-7965tr370370",
    "user_payment_amount": 100,
    "payment_instruction": "Ingresa a tu banca en línea y realiza la transferencia a la siguiente cuenta. Recuerda que no se pueden hacer pagos en ventanilla.",
    "expiration_date": "2023-07-06T00:16:02.500+0000"
  },
  "order_id": "34545sk3483kqw0",
  "description": "Tshirt",
  "notification_url": "http://merchantsite.com/notification/new",
  "created_date": "2023-07-05T22:16:02.000+0000"
}

```

### Example ticket

<Image src="https://files.readme.io/c198ae996958ef65789c956209c0b66f99673fe99888f676f84dbc9662515948-APM_-_SPEI.png" alt="SPEI UI built with the information in the example above." align="center" caption="SPEI UI built with the information in the example above." />

## CoDi QR Code

It was officially launched by Banco de Mexico to promote payments through digital transfers.<br />The bank wants this transaction to be as fast and secure as possible, and to promote mobile-friendly payment experiences.

### Capabilities

|                                    | CoDi QR Code               |
| :--------------------------------- | :------------------------- |
| **Min. amount**                    | 1 MXN                      |
| **Max. expiration time supported** | 5 days                     |
| **Notification delay**             | Immediate                  |
| **Refunds**                        | Yes                        |
| **Flow**                           | `DIRECT` <br /> `REDIRECT` |

### UX Flow

<Image src="https://files.readme.io/8c5deb18e70ddb9be7905cf390123d20153f18156cd876b06089d65bbcd55a82-Codi_-_QR.png" alt="The screenshots illustrate a generic CoDi redirect flow, through a QR code." align="center" caption="The screenshots illustrate a generic CoDi redirect flow, through a QR code." />

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `MXN`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `MX` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `CQ` <br /><br />ID of the selected payment method.                                                                    | Yes        |
| `payment_method_flow` | String | `DIRECT` or `REDIRECT`                                                                                                 | Yes        |
| `payer.name`          | String | Name of the payer.                                                                                                     | Yes        |
| `payer.email`         | String | Email of the payer.                                                                                                    | Yes        |
| `payer.document`      | String | Document of the payer.                                                                                                 | Yes        |
| `order_id`            | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture.                 | No         |
| `notification_url`    | String | Notifications will be sent in every change of status of a payment to the `notification_url` specified by the merchant. | No         |

### Examples

```json Request Example
{
    "amount": 100,
    "currency": "MXN",
    "country": "MX",
    "payment_method_id": "CQ",
    "payment_method_flow": "DIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "document": "1234567890",
        "address": {
            "country": "MX",
            "state": "Mexico DF",
            "city": "Mexico DF",
            "zip_code": "8858",
            "street": "Av. Principal",
            "number": "5940"
        }
    },
    "order_id": "34545sk3483kqw0",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new",
    "callback_url": "http://merchantsite.com/success_page"
}
```
```json Response Example
{
    "id": "D-4-1a64bdbd-faf5-473e-94b5-f96d36ef0d3f",
    "amount": 100,
    "currency": "MXN",
    "payment_method_id": "CQ",
    "payment_method_type": "TICKET",
    "payment_method_flow": "DIRECT",
    "country": "MX",
    "ticket": {
        "type": "CUSTOM",
        "format": "Code 128",
        "number": "9900014962552",
        "expiration_date": "2026-09-25T02:59:59.999+0000",
        "id": "9900014962552",
        "company_name": "The Company",
        "company_id": "112903",
        "image_url": "https://sandbox.dlocal.com/gmf-apm/payments/N-92a1dca6-6b57-4b83-964c-fa3d4367d0d0",
        "amount": 100,
        "currency": "MXN",
        "qr_code": "iVBORw0KGgoAAAANSUhEUgAAASQAAAEkAQAAAACugnFBAAABw0lEQVR4Xu2YO46EQAxEPSIgnCNwFI4GR+MoHGFCAoS3ym4HDEi7wUbYFUyrux9Jyb8e0T/oI98ndyoqVFSoqFBRoaJCRYUa9RGqV10m1U0GnXW3o1c6asDP3us6Yt3eSqrnRUJqkdfef8wo2iZYYOKUlWp+yVAUKOk25M6Ul1LLIYVRyKF19AC65FACyusqbJsslbjc1NUEVBNtk051ldNxJorpQntAHSLvlTvG0ZSOguajw24E5eWVteUaOQmohX69bbEcskXnhJQfIGQORpA1GhvDslG0BlM4/WLk4Jo5hAA6+ZWB8nTZWEY8eWgb/cpHhVHWa52yJR/F884CqHUYunfxKwclcIgt14xCNSF8k0OPp9TGb/ilB+cvXDOAxnaViGpTOOuqzeT4Zqdf58jJQDFykDV4tCOVrLw22JWIwsFssYIOw8NxFmo851AGqokOWQ7ZMH7xK3bDg6l4uwtHUFwv/HfHlnTUoHyZMWSs11rI8BtXKsodQq9tAyn9w6dffqWhWjXxJrtdqkkiirFi59Zo2G8SUuo5ZPJxA9T17f58ym5ZSSduVxH+78sGnI36RUWFigoVFSoqVFSoqNC/Uj+Sqz+pWRB6xwAAAABJRU5ErkJggg=="
},
    "created_date": "2023-02-20T17:06:49.545+0000",
    "status": "PENDING",
    "order_id": "34545sk3483kqw0",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new",
    "callback_url": "http://merchantsite.com/success_page"
}
```

## CoDi Push Notification

It was officially launched by Banco de Mexico to promote payments through digital transfers.<br />The bank wants this transaction to be as fast and secure as possible, and to promote mobile-friendly payment experiences.

### Capabilities

|                                    | CoDi Push Notification     |
| :--------------------------------- | :------------------------- |
| **Min. amount**                    | 1 MXN                      |
| **Max. expiration time supported** | 5 days                     |
| **Notification delay**             | Immediate                  |
| **Refunds**                        | Yes                        |
| **Flow**                           | `DIRECT` <br /> `REDIRECT` |

### UX Flow

<Image src="https://files.readme.io/49fc4980c4fcdf58d327b03908fd59d1239254b531273f1c1167a5b6bbdc6dea-Codi_-_Push_notification.png" alt="The screenshots illustrate a generic CoDi redirect flow, through a push notification." align="center" caption="The screenshots illustrate a generic CoDi redirect flow, through a push notification." />

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `MXN`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `MX` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `CJ` <br /><br />ID of the selected payment method.                                                                    | Yes        |
| `payment_method_flow` | String | `DIRECT` or `REDIRECT`                                                                                                 | Yes        |
| `payer.name`          | String | Name of the payer.                                                                                                     | Yes        |
| `payer.email`         | String | Email of the payer.                                                                                                    | Yes        |
| `payer.document`      | String | Document of the payer.                                                                                                 | Yes        |
| `order_id`            | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture.                 | No         |
| `notification_url`    | String | Notifications will be sent in every change of status of a payment to the `notification_url` specified by the merchant. | No         |

### Examples

```json Request Example
{
    "amount": 100,
    "currency": "MXN",
    "country": "MX",
    "payment_method_id": "CJ",
    "payment_method_flow": "DIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "document": "1234567890",
        "phone": "6442306514",
        "address": {
            "country": "MX",
            "state": "Mexico DF",
            "city": "Mexico DF",
            "zip_code": "8858",
            "street": "Av. Principal",
            "number": "5940"
        }
    },
    "order_id": "34545sk3483kqw0",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new",
    "callback_url": "http://merchantsite.com/success_page"
}
```
```json Response Example
{
    "id": "D-4-1a64bdbd-faf5-473e-94b5-f96d36ef0d3f",
    "amount": 10,
    "currency": "MXN",
    "payment_method_id": "CJ",
    "payment_method_type": "TICKET",
        "payment_method_flow": "DIRECT",
    "country": "MX",
    "ticket": {
        "type": "CUSTOM",
        "format": "Code 128",
        "number": "9900014962552",
        "expiration_date": "2026-09-25T02:59:59.999+0000",
        "id": "9900014962552",
    "company_name": "The Best Company",
    "company_id": "112903",
    "image_url": "https://sandbox.dlocal.com/gmf-apm/payments/N-92a1dca6-6b57-4b83-964c-fa3d4367d0d0",
    "amount": 100,
    "currency": "MXN",
    "qr_code": "iVBORw0KGgoAAAANSUhEUgAAASQAAAEkAQAAAACugnFBAAABw0lEQVR4Xu2YO46EQAxEPSIgnCNwFI4GR+MoHGFCAoS3ym4HDEi7wUbYFUyrux9Jyb8e0T/oI98ndyoqVFSoqFBRoaJCRYUa9RGqV10m1U0GnXW3o1c6asDP3us6Yt3eSqrnRUJqkdfef8wo2iZYYOKUlWp+yVAUKOk25M6Ul1LLIYVRyKF19AC65FACyusqbJsslbjc1NUEVBNtk051ldNxJorpQntAHSLvlTvG0ZSOguajw24E5eWVteUaOQmohX69bbEcskXnhJQfIGQORpA1GhvDslG0BlM4/WLk4Jo5hAA6+ZWB8nTZWEY8eWgb/cpHhVHWa52yJR/F884CqHUYunfxKwclcIgt14xCNSF8k0OPp9TGb/ilB+cvXDOAxnaViGpTOOuqzeT4Zqdf58jJQDFykDV4tCOVrLw22JWIwsFssYIOw8NxFmo851AGqokOWQ7ZMH7xK3bDg6l4uwtHUFwv/HfHlnTUoHyZMWSs11rI8BtXKsodQq9tAyn9w6dffqWhWjXxJrtdqkkiirFi59Zo2G8SUuo5ZPJxA9T17f58ym5ZSSduVxH+78sGnI36RUWFigoVFSoqVFSoqNC/Uj+Sqz+pWRB6xwAAAABJRU5ErkJggg=="
},
    "created_date": "2023-02-20T17:06:49.545+0000",
    "order_id": "34545sk3483kqw0",
    "notification_url": "http://merchantsite.com/notification/new",
    "status": "PENDING",
    "status_detail": "The payment is pending.",
    "status_code": "100"
}
```

## Mercado Pago

dLocal offers three Mercado Pago products in MX:

* `MY` **— Mercado Pago Checkout Pro**: one-shot payments only. The user completes payment through a Mercado Pago-hosted redirect. No enrollment or tokenization.
* `MK` **— Mercado Crédito**: one-shot payments that take the user directly to their Mercado Crédito credit line at checkout, with automatic fallback to the full Checkout Pro wallet selector if no credit line is available.
* `MP` **— Mercado Pago Wallet Connect**: recurring and tokenized payments. The user authorizes the merchant once via a redirect enrollment, and all subsequent charges are made directly using the enrollment ID.

<Callout icon="ℹ️" theme="info">
  ### Wallet Connect activation

  Mercado Pago Wallet Connect (`MP`) requires activation per merchant per country. Contact your dLocal account team before integrating the recurring flow.
</Callout>

***

## Mercado Pago Checkout Pro (`MY`)

Mercado Pago Checkout Pro is a one-shot wallet payment. The user is redirected to Mercado Pago to complete the payment. No token or enrollment is created.

### Capabilities

|                                    | Mercado Pago Checkout Pro (`MY`) |
| :--------------------------------- | :------------------------------- |
| **Min. amount**                    | 1 MXN                            |
| **Max. expiration time supported** | 5 minutes (authentication)       |
| **Notification delay**             | Immediate                        |
| **Refunds**                        | Yes                              |
| **Flow**                           | `REDIRECT`                       |

### UX Flow

<Image src="https://files.readme.io/4b34ab792714c91de042037b53514e34bf0c71b8208bbfefe9ced72803e2f8b2-Mercado_Pago_-_One_Time_Payment_-_es.png" alt="The screenshots illustrate a Mercado Pago one-shot payment redirect flow. The specifics of the flow may vary depending on the payment method selected to complete the payment." align="center" caption="The screenshots illustrate a Mercado Pago one-shot payment redirect flow. The specifics of the flow may vary depending on the payment method selected to complete the payment." />

### How to process Mercado Pago Checkout Pro payments?

Learn how to process one-shot wallet payments with dLocal in our [Wallet payments](https://docs.dlocal.com/docs/wallet-payments) section.

***

## Mercado Crédito (`MK`)

Mercado Crédito is a one-shot wallet payment that takes the user directly to their Mercado Crédito credit line at checkout, instead of the full Mercado Pago wallet selector. No token or enrollment is created.

<Callout icon="ℹ️" theme="info">
  ### Fallback behavior

  If the user has an available Mercado Crédito line, it's shown as the default payment option. If not, the user still sees the full range of Mercado Pago payment methods — the checkout never blocks the user from paying with another method.
</Callout>

### Capabilities

|                                    | Mercado Crédito (`MK`)     |
| :--------------------------------- | :------------------------- |
| **Min. amount**                    | 1 MXN                      |
| **Max. expiration time supported** | 5 minutes (authentication) |
| **Notification delay**             | Immediate                  |
| **Refunds**                        | Yes                        |
| **Flow**                           | `REDIRECT`                 |

### How to process Mercado Crédito payments?

Send `payment_method_id: "MK"` on `POST /payments` — the same request format used for [Mercado Pago Checkout Pro](#mercado-pago-checkout-pro-my). No other integration change is required. Learn how to process one-shot wallet payments with dLocal in our [Wallet payments](https://docs.dlocal.com/docs/wallet-payments) section.

***

## Mercado Pago Wallet Connect (`MP`)

Mercado Pago Wallet Connect is the recurring and tokenized wallet product. The user authorizes the merchant once through a redirect enrollment. All subsequent charges use the enrollment ID directly — no redirect or re-authentication required.

### Capabilities

|                                    | Mercado Pago Wallet Connect (`MP`) |
| :--------------------------------- | :--------------------------------- |
| **Min. amount**                    | 1 MXN                              |
| **Max. expiration time supported** | 5 minutes (authentication)         |
| **Notification delay**             | Immediate                          |
| **Refunds**                        | Yes                                |
| **Enrollment flow**                | `REDIRECT`                         |
| **Recurring charge flow**          | `DIRECT` — synchronous `PAID`      |

### UX Flow

<Image src="https://files.readme.io/872c6de0c665d18ce815e6f8a2a0cb72dd52512c15bd3f1ef73ecbf9020343a4-Mercado_Pago_-_Tokenized_Wallet_-_es.png" alt="The screenshots illustrate a Mercado Pago tokenized wallet redirect flow." align="center" caption="The screenshots illustrate a Mercado Pago tokenized wallet redirect flow." />

### How it works

The Enrollment API for `MP` supports two patterns:

| Pattern                                                                                  | When to use                                                     |
| :--------------------------------------------------------------------------------------- | :-------------------------------------------------------------- |
| **Enrollment only** (`POST /enrollments`)                                                | Establish the user's authorization without an initial charge.   |
| **Payment + Enrollment in the same request** (`POST /payments` with `enrollment` object) | Charge the user and establish the authorization simultaneously. |

Once the enrollment is `ACTIVE`, all subsequent charges are made via `POST /payments` using `enrollment.id` inside an `enrollment` object, with `payment_method_flow: "DIRECT"`. Recurring `DIRECT` charges return a synchronous `PAID` response — no webhook is needed to confirm final status.

<Callout icon="ℹ️" theme="info">
  ### Enrollment type for Mercado Pago

  Always send `"type": "ON_DEMAND"` for `MP`. This is the only valid enrollment type for Mercado Pago Wallet Connect.
</Callout>

***

#### Pattern 1 — Enrollment only

Use `POST /enrollments` to establish the user's authorization without an initial charge.

```json Enrollment request
{
  "external_id": "enroll-mx-001",
  "type": "ON_DEMAND",
  "country": "MX",
  "currency": "MXN",
  "payment_method_id": "MP",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "1234567890"
  },
  "notification_url": "https://merchantsite.com/enrollment_notifications",
  "callback_url": "https://merchantsite.com/enrollment_callback"
}
```
```json Synchronous response
{
  "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4",
  "external_id": "enroll-mx-001",
  "country": "MX",
  "currency": "MXN",
  "type": "ON_DEMAND",
  "payment_method_id": "MP",
  "payment_method_flow": "REDIRECT",
  "payment_method_type": "WALLET",
  "created_date": "2025-06-01T10:00:00.000+0000",
  "status": "PENDING",
  "status_detail": "The enrollment is pending.",
  "status_code": "100",
  "redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "notification_url": "https://merchantsite.com/enrollment_notifications"
}
```
```json Asynchronous notification (enrollment active)
{
  "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4",
  "external_id": "enroll-mx-001",
  "country": "MX",
  "currency": "MXN",
  "type": "ON_DEMAND",
  "payment_method_id": "MP",
  "payment_method_flow": "REDIRECT",
  "payment_method_type": "WALLET",
  "created_date": "2025-06-01T10:00:00.000+0000",
  "status": "ACTIVE",
  "status_detail": "The enrollment is active.",
  "status_code": "200",
  "notification_url": "https://merchantsite.com/enrollment_notifications"
}
```

<Callout icon="📘" theme="info">
  ### Enrollment ID

  Persist the `id` value (e.g., `E-4-32e1218f-...`) when the webhook reaches `ACTIVE` status. Pass it as `enrollment.id` inside an `enrollment` object on all future recurring charge requests.

  To check enrollment status at any time, use the [Get enrollment](https://docs.dlocal.com/reference/get-enrollment) endpoint.

  To cancel an enrollment, use the [Cancel an enrollment](https://docs.dlocal.com/reference/cancel-an-enrollment) endpoint.
</Callout>

**Enrollment status codes:**

| `status`    | `status_code` | Description                                                                |
| :---------- | :------------ | :------------------------------------------------------------------------- |
| `PENDING`   | `100`         | Enrollment created. User must complete authorization via the redirect URL. |
| `ACTIVE`    | `200`         | User approved. Enrollment ID is ready for recurring charges.               |
| `CANCELLED` | `400`         | The enrollment was cancelled.                                              |
| `REJECTED`  | `300`         | The user did not complete or declined the authorization.                   |

***

#### Pattern 2 — Payment + Enrollment in the same request

Include an `enrollment` object in `POST /payments` to create the first charge and enrollment simultaneously.

```json Enrollment + Payment request
{
  "amount": 500,
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "MP",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "1234567890"
  },
  "enrollment": {
    "external_id": "enroll-mx-001",
    "type": "ON_DEMAND",
    "notification_url": "https://merchantsite.com/enrollment_notifications",
    "callback_url": "https://merchantsite.com/enrollment_callback"
  },
  "order_id": "ord-mx-001",
  "notification_url": "https://merchantsite.com/payments",
  "callback_url": "https://merchantsite.com/payment_callback"
}
```
```json Synchronous response
{
  "id": "F-4-9a8b7c6d-5e4f-3a2b-1c0d-ef1234567890",
  "amount": 500,
  "currency": "MXN",
  "payment_method_id": "MP",
  "payment_method_type": "WALLET",
  "payment_method_flow": "REDIRECT",
  "country": "MX",
  "created_date": "2025-06-01T10:00:00.000+0000",
  "status": "PENDING",
  "status_detail": "The payment is pending.",
  "status_code": "100",
  "order_id": "ord-mx-001",
  "notification_url": "https://merchantsite.com/payments",
  "redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-b2c3d4e5-...",
  "enrollment": {
    "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4",
    "external_id": "enroll-mx-001",
    "created_date": "2025-06-01T10:00:00.000+0000",
    "status": "PENDING",
    "status_detail": "The enrollment is pending.",
    "status_code": "100"
  }
}
```
```json Asynchronous notification (enrollment)
{
  "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4",
  "external_id": "enroll-mx-001",
  "country": "MX",
  "currency": "MXN",
  "type": "ON_DEMAND",
  "payment_method_id": "MP",
  "payment_method_flow": "REDIRECT",
  "payment_method_type": "WALLET",
  "created_date": "2025-06-01T10:00:00.000+0000",
  "status": "ACTIVE",
  "status_detail": "The enrollment is active.",
  "status_code": "200",
  "notification_url": "https://merchantsite.com/enrollment_notifications"
}
```
```json Asynchronous notification (payment)
{
  "id": "F-4-9a8b7c6d-5e4f-3a2b-1c0d-ef1234567890",
  "amount": 500,
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "MP",
  "payment_method_type": "WALLET",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "1234567890"
  },
  "enrollment": {
    "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4",
    "external_id": "enroll-mx-001"
  },
  "order_id": "ord-mx-001",
  "notification_url": "https://merchantsite.com/payments",
  "created_date": "2025-06-01T10:00:00.000+0000"
}
```

<Callout icon="📘" theme="info">
  ### Single request, dual outcome

  This request produces two independent asynchronous notifications — one for the enrollment (sent to `enrollment.notification_url`) and one for the payment (sent to `notification_url`). They may arrive in any order. Persist `enrollment.id` only after the enrollment notification reaches `ACTIVE`. Grant entitlement only after the payment notification reaches `PAID`.
</Callout>

***

#### Recurring charges

Once the enrollment is `ACTIVE`, charge the user by passing `enrollment.id` inside an `enrollment` object. The synchronous response is the final status — no webhook is needed.

```json Recurring payment request
{
  "amount": 500,
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "MP",
  "payment_method_flow": "DIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "1234567890"
  },
  "enrollment": {
    "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4"
  },
  "order_id": "ord-mx-recurring-001",
  "notification_url": "https://merchantsite.com/payments"
}
```
```json Response (synchronous — final status)
{
  "id": "F-4-b2c8d5e1-3f7a-4c9b-a123-7d8e9f0a1b2c",
  "amount": 500,
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "MP",
  "payment_method_type": "WALLET",
  "payment_method_flow": "DIRECT",
  "created_date": "2025-07-01T10:00:00.000+0000",
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "order_id": "ord-mx-recurring-001",
  "notification_url": "https://merchantsite.com/payments"
}
```

<Callout icon="📘" theme="info">
  ### Synchronous PAID for recurring charges

  `MP` recurring `DIRECT` charges return the final `PAID` or `REJECTED` status synchronously. You do not need to wait for a webhook before granting entitlement.
</Callout>

<Callout icon="ℹ️" theme="info">
  ### result_info

  The recurring charge response may include a `result_info` object with `user_id` and `sub_payment_method` fields for reconciliation purposes. This field requires enablement — contact your dLocal account team to activate it.
</Callout>

***

### Request parameters

| Property                      | Type   | Description                                                                                                                                                             | Mandatory?                 |
| :---------------------------- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------- |
| `amount`                      | Number | Amount to be charged.                                                                                                                                                   | Yes                        |
| `currency`                    | String | `MXN`. Transaction currency.                                                                                                                                            | Yes                        |
| `country`                     | String | `MX`. Transaction country.                                                                                                                                              | Yes                        |
| `payment_method_id`           | String | `MP`. ID of the selected payment method.                                                                                                                                | Yes                        |
| `payment_method_flow`         | String | `REDIRECT` (enrollment) or `DIRECT` (recurring charge).                                                                                                                 | Yes                        |
| `payer.name`                  | String | Name of the payer.                                                                                                                                                      | Yes                        |
| `payer.email`                 | String | Email of the payer.                                                                                                                                                     | Yes                        |
| `payer.document`              | String | Document of the payer.                                                                                                                                                  | Yes                        |
| `enrollment.id`               | String | Enrollment ID from a previous active enrollment, passed as `enrollment.id` inside an `enrollment` object.                                                               | Yes, for recurring charges |
| `enrollment`                  | Object | Include in `POST /payments` for Pattern 2 (payment + enrollment simultaneously).                                                                                        | Yes, for Pattern 2         |
| `enrollment.external_id`      | String | Your internal identifier for the enrollment.                                                                                                                            | Yes                        |
| `enrollment.type`             | String | Must be `ON_DEMAND` for `MP`.                                                                                                                                           | Yes                        |
| `enrollment.notification_url` | String | URL where dLocal sends enrollment status notifications.                                                                                                                 | Yes                        |
| `enrollment.callback_url`     | String | URL where the user lands after completing the enrollment redirect.                                                                                                      | No                         |
| `wallet.deviceId`             | String | Device fingerprint for anti-fraud. Recommended for all `MP` integrations. See [Device ID](https://docs.dlocal.com/docs/wallet-payments) for the web script and mobile SDK fingerprint structure. | Recommended                |
| `order_id`                    | String | ID given by the merchant in their system.                                                                                                                               | No                         |
| `notification_url`            | String | dLocal sends notifications for every status change to this URL.                                                                                                         | Yes                        |
| `callback_url`                | String | URL where the user lands after completing the enrollment redirect.                                                                                                      | No                         |

### Cancellation and invalid enrollment

Mercado Pago Wallet Connect supports cancellation from both sides:

**User-initiated cancellation:** The user can cancel their authorization directly from the Mercado Pago app. When this happens, Mercado Pago sends a cancellation notification to dLocal, which expires the saved authorization internally and sends a cancel-wallet IPN to the merchant with `status: "CANCELLED"`. Treat this webhook as the signal to stop any scheduled charges against that enrollment.

**Merchant-initiated cancellation:** The merchant can cancel an active enrollment at any time using the [Cancel an enrollment](https://docs.dlocal.com/reference/cancel-an-enrollment) endpoint.

In both cases, treat a cancelled enrollment as a terminal state. The user must complete a new enrollment flow before any future recurring charges can be processed.

## Domiciliación Bancaria (`QV`)

Domiciliación Bancaria is a bank-debit enrollment product for Mexico. The user authorizes a recurring domiciliación mandate once through a redirect enrollment, and subsequent charges are made directly against that enrollment — no redirect or re-authentication required for each charge.

### How it works

The Enrollment API for `QV` supports two patterns:

| Pattern                                                                                  | When to use                                                    |
| :--------------------------------------------------------------------------------------- | :------------------------------------------------------------- |
| **Enrollment only** (`POST /enrollments`)                                                | Establish the domiciliación mandate without an initial charge. |
| **Payment + Enrollment in the same request** (`POST /payments` with `enrollment` object) | Charge the user and establish the mandate simultaneously.      |

Once the enrollment is `ACTIVE`, subsequent charges are made via `POST /payments` using `enrollment.id` inside an `enrollment` object, with `payment_method_flow: "DIRECT"`.

<Callout icon="ℹ️" theme="info">
  ### Enrollment type for Domiciliación Bancaria

  Always send `"type": "ON_DEMAND"` for `QV`.
</Callout>

#### Pattern 1 — Enrollment only

Use `POST /enrollments` to establish the domiciliación mandate without an initial charge.

`POST /enrollments`

```json Request
{
  "external_id": "enroll-mx-qv-001",
  "type": "ON_DEMAND",
  "country": "MX",
  "currency": "MXN",
  "payment_method_id": "QV",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "1234567890"
  },
  "notification_url": "https://merchantsite.com/enrollment_notifications",
  "callback_url": "https://merchantsite.com/enrollment_callback"
}
```
```json Response
{
  "id": "E-4-71a2318f-c7ed-4f21-24d5-61v23fre3db5",
  "external_id": "enroll-mx-qv-001",
  "country": "MX",
  "currency": "MXN",
  "type": "ON_DEMAND",
  "payment_method_id": "QV",
  "payment_method_flow": "REDIRECT",
  "payment_method_type": "BANK_TRANSFER",
  "created_date": "2026-09-16T10:00:00.000+0000",
  "status": "PENDING",
  "status_detail": "The enrollment is pending.",
  "status_code": "100",
  "redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-b2c3d4e5-f6a7-8901-bcde-f21345678901",
  "notification_url": "https://merchantsite.com/enrollment_notifications"
}
```
```json Notification
{
  "id": "E-4-71a2318f-c7ed-4f21-24d5-61v23fre3db5",
  "external_id": "enroll-mx-qv-001",
  "country": "MX",
  "currency": "MXN",
  "type": "ON_DEMAND",
  "payment_method_id": "QV",
  "payment_method_flow": "REDIRECT",
  "payment_method_type": "BANK_TRANSFER",
  "created_date": "2026-09-16T10:00:00.000+0000",
  "status": "ACTIVE",
  "status_detail": "The enrollment is active.",
  "status_code": "200",
  "notification_url": "https://merchantsite.com/enrollment_notifications"
}
```

<Callout icon="📘" theme="info">
  ### Enrollment ID

  Persist the `id` value when the webhook reaches `ACTIVE` status. Pass it as `enrollment.id` inside an `enrollment` object on all future recurring charge requests.

  To check enrollment status at any time, use the [Get enrollment](https://docs.dlocal.com/reference/get-enrollment) endpoint.
</Callout>

#### Pattern 2 — Payment + Enrollment in the same request

Include an `enrollment` object in `POST /payments` to create the first charge and the domiciliación mandate simultaneously.

`POST /payments`

```json Request
{
  "amount": 500,
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "QV",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "1234567890"
  },
  "enrollment": {
    "external_id": "enroll-mx-qv-001",
    "type": "ON_DEMAND",
    "notification_url": "https://merchantsite.com/enrollment_notifications",
    "callback_url": "https://merchantsite.com/enrollment_callback"
  },
  "order_id": "ord-mx-qv-001",
  "notification_url": "https://merchantsite.com/payments",
  "callback_url": "https://merchantsite.com/payment_callback"
}
```
```json Response
{
  "id": "F-4-a1b2c3d4-5e6f-7a8b-9c0d-ef2345678901",
  "amount": 500,
  "currency": "MXN",
  "payment_method_id": "QV",
  "payment_method_type": "BANK_TRANSFER",
  "payment_method_flow": "REDIRECT",
  "country": "MX",
  "created_date": "2026-09-16T10:00:00.000+0000",
  "status": "PENDING",
  "status_detail": "The payment is pending.",
  "status_code": "100",
  "order_id": "ord-mx-qv-001",
  "notification_url": "https://merchantsite.com/payments",
  "redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-c3d4e5f6-...",
  "enrollment": {
    "id": "E-4-71a2318f-c7ed-4f21-24d5-61v23fre3db5",
    "external_id": "enroll-mx-qv-001",
    "created_date": "2026-09-16T10:00:00.000+0000",
    "status": "PENDING",
    "status_detail": "The enrollment is pending.",
    "status_code": "100"
  }
}
```
```json Notification
{
  "id": "F-4-a1b2c3d4-5e6f-7a8b-9c0d-ef2345678901",
  "amount": 500,
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "QV",
  "payment_method_type": "BANK_TRANSFER",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "1234567890"
  },
  "enrollment": {
    "id": "E-4-71a2318f-c7ed-4f21-24d5-61v23fre3db5",
    "external_id": "enroll-mx-qv-001"
  },
  "order_id": "ord-mx-qv-001",
  "notification_url": "https://merchantsite.com/payments",
  "created_date": "2026-09-16T10:00:00.000+0000"
}
```

<Callout icon="📘" theme="info">
  ### Single request, dual outcome

  This request produces two independent asynchronous notifications — one for the enrollment (sent to `enrollment.notification_url`) and one for the payment (sent to `notification_url`). They may arrive in any order. Persist `enrollment.id` only after the enrollment notification reaches `ACTIVE`. Grant entitlement only after the payment notification reaches `PAID`.
</Callout>

#### Recurring charges

Once the enrollment is `ACTIVE`, charge the user by passing `enrollment.id` inside an `enrollment` object and setting `payment_method_flow: "DIRECT"`, since the user is already enrolled.

`POST /payments`

```json Request
{
  "amount": 500,
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "QV",
  "payment_method_flow": "DIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "1234567890"
  },
  "enrollment": {
    "id": "E-4-71a2318f-c7ed-4f21-24d5-61v23fre3db5"
  },
  "order_id": "ord-mx-qv-recurring-001",
  "notification_url": "https://merchantsite.com/payments"
}
```
```json Response
{
  "id": "F-4-d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
  "amount": 500,
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "QV",
  "payment_method_type": "BANK_TRANSFER",
  "payment_method_flow": "DIRECT",
  "created_date": "2026-09-16T10:00:00.000+0000",
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "order_id": "ord-mx-qv-recurring-001",
  "notification_url": "https://merchantsite.com/payments"
}
```
```json Notification
{
  "id": "F-4-d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
  "amount": 500,
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "QV",
  "payment_method_type": "BANK_TRANSFER",
  "payment_method_flow": "DIRECT",
  "order_id": "ord-mx-qv-recurring-001",
  "notification_url": "https://merchantsite.com/payments",
  "created_date": "2026-09-16T10:00:00.000+0000"
}
```

<br />

### UX Flow

![](https://files.readme.io/211f4f049d5dfd95b617f9c93cbadcbd9f63d709119319c15ff655e072163963-MX_-_QV_-_Belvo_Debito_Directo_-_Enrollment__payment_1.png)

<br />

### Response params

| Field          | Description                                                                                                                                       |
| :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |
| `redirect_url` | URL where the user completes the domiciliación authorization with their bank. Present on the enrollment response for the initial `REDIRECT` step. |

### Request parameters

| Property                      | Type   | Description                                                                                                           | Mandatory?                 |
| :---------------------------- | :----- | :-------------------------------------------------------------------------------------------------------------------- | :------------------------- |
| `amount`                      | Number | Amount to be charged.                                                                                                 | Yes                        |
| `currency`                    | String | `MXN`. Transaction currency.                                                                                          | Yes                        |
| `country`                     | String | `MX`. Transaction country.                                                                                            | Yes                        |
| `payment_method_id`           | String | `QV`. ID of the selected payment method.                                                                              | Yes                        |
| `payment_method_flow`         | String | `REDIRECT` (enrollment) or `DIRECT` (recurring charge).                                                               | Yes                        |
| `payer.name`                  | String | Name of the payer.                                                                                                    | Yes                        |
| `payer.email`                 | String | Email of the payer.                                                                                                   | Yes                        |
| `payer.document`              | String | Document of the payer.                                                                                                | Yes                        |
| `enrollment`                  | Object | Include in `POST /payments` for Pattern 2 (payment + enrollment simultaneously).                                      | Yes, for Pattern 2         |
| `enrollment.id`               | String | Enrollment ID from a previous active enrollment, passed as `enrollment.id` inside an `enrollment` object.             | Yes, for recurring charges |
| `enrollment.external_id`      | String | Your internal identifier for the enrollment.                                                                          | Yes                        |
| `enrollment.type`             | String | Must be `ON_DEMAND` for `QV`.                                                                                         | Yes                        |
| `enrollment.notification_url` | String | URL where dLocal sends enrollment status notifications.                                                               | Yes                        |
| `enrollment.callback_url`     | String | URL where the user lands after completing the enrollment redirect.                                                    | No                         |
| `redirect_url`                | String | URL returned by dLocal where the user completes the domiciliación authorization with their bank. Response field only. | N/A                        |
| `order_id`                    | String | ID given by the merchant in their system.                                                                             | No                         |
| `notification_url`            | String | dLocal sends notifications for every status change to this URL.                                                       | Yes                        |
| `callback_url`                | String | URL where the user lands after completing the enrollment redirect.                                                    | No                         |

###

#### Merchant-initiated cancellation

The merchant can cancel an active enrollment at any time using the [Cancel an enrollment](https://docs.dlocal.com/reference/cancel-an-enrollment) endpoint. This should be implemented as this is the only way users can cancel it.

<br />

## Kueski Pay (BNPL)

Kueski's BNPL in Mexico allows consumers to make purchases immediately and pay in installments.

It offers flexible payment plans, often interest-free if paid on time, and is designed to cater to local consumers and merchants.

### Capabilities

|                                    | Buy Now Pay Later (BNPL) - Kueski Pay |
| :--------------------------------- | :------------------------------------ |
| **Min. amount**                    | 60 MXN                                |
| **Max. expiration time supported** | 1 day                                 |
| **Notification delay**             | Immediate                             |
| **Refunds**                        | Yes                                   |
| **Flow**                           | `REDIRECT`                            |

### UX Flow

<Image src="https://files.readme.io/ac8c4a6884764006e783c7323aaeae6ad4fad386aed674ec96ab5199cee1fcfe-kueski.png" alt="The screenshots illustrate a Buy Now Pay Later (BNPL) - Kueski Pay redirect flow." align="center" caption="The screenshots illustrate a Buy Now Pay Later (BNPL) - Kueski Pay redirect flow." />

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `MXN`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `MX` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `KI` <br /><br />ID of the selected payment method.                                                                    | Yes        |
| `payment_method_flow` | String | `REDIRECT`                                                                                                             | Yes        |
| `payer.name`          | String | Name of the payer.                                                                                                     | Yes        |
| `payer.email`         | String | Email of the payer.                                                                                                    | No         |
| `payer.document`      | String | Document of the payer.                                                                                                 | Yes        |
| `payer.phone`         | String | Phone of the payer.                                                                                                    | No         |
| `callback_url`        | String | URL where the payer is going to be redirected after approval of the transaction in Kueski.                             | Yes        |
| `order_id`            | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture.                 | No         |
| `description`         | String | Description of the items purchased.                                                                                    | No         |
| `notification_url`    | String | Notifications will be sent in every change of status of a payment to the `notification_url` specified by the merchant. | Yes        |

### Examples

```json Request Example
{
    "amount": 550,
    "currency": "MXN",
    "country": "MX",
    "payment_method_id": "KI",
    "payment_method_flow": "REDIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "document": "1234567890",
        "phone": "6442306514",
        "address": {
            "country": "MX",
            "state": "Mexico DF",
            "city": "Mexico DF",
            "zip_code": "8858",
            "street": "Av. Principal",
            "number": "5940"
        }
    },
    "callback_url": "http://merchantsite.com/success_page",
    "order_id": "123456789",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new"
}
```
```json Response Example
{
    "id": "R-4-d3d17e03-9142-4529-8dc8-0184384be705",
    "amount": 550,
    "currency": "MXN",
    "payment_method_id": "KI",
    "payment_method_type": "TICKET",
    "payment_method_flow": "REDIRECT",
    "country": "MX",
    "created_date": "2024-12-23T18:51:37.000+0000",
    "status": "PENDING",
    "status_detail": "The payment is pending.",
    "status_code": "100",
    "order_id": "1bea5451-12cd-4eec-b0d8-35361a35ba67",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new",
    "redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-9533e5a8-5d02-46cc-a9eb-276e7a6150b1"
}
```

## DiDi Paga Después (BNPL)

DiDi Paga Después BNPL in Mexico allows consumers to make purchases and pay them in installments for up to 6 months.

It offers flexible payment plans, often interest-free if paid on time, and is designed to cater to local consumers and merchants.

### Capabilities

|                                    | Buy Now Pay Later (BNPL) - DiDi Paga Después |
| :--------------------------------- | :------------------------------------------- |
| **Min. amount**                    | 1 MXN                                        |
| **Max. amount**                    | 30.000 MXN                                   |
| **Max. expiration time supported** | 1 day                                        |
| **Notification delay**             | Immediate                                    |
| **Refunds**                        | Yes                                          |
| **Flow**                           | `REDIRECT`                                   |

### UX Flow

<Image src="https://files.readme.io/077ea0225c455bd24bc9f1bf5007ed2c1f45b93b931c15be7321d2ede4389dc9-didi_paga_despues_-_bnpl.png" alt="The screenshots illustrate a Buy Now Pay Later (BNPL) - Kueski Pay redirect flow." align="center" width="-2px" caption="The screenshots illustrate a DiDi Paga Después (BNPL) redirect flow." />

### Request parameters

| Property               | Type   | Description                                                                                                                                      | Mandatory? |
| :--------------------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`               | Number | Amount to be charged.                                                                                                                            | Yes        |
| `currency`             | String | `MXN`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                                                      | Yes        |
| `country`              | String | `MX` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).                                | Yes        |
| `payment_method_id`    | String | `DL` <br /><br />ID of the selected payment method.                                                                                              | Yes        |
| `payment_method_flow`  | String | `REDIRECT`                                                                                                                                       | Yes        |
| `payer.name`           | String | Name of the payer.                                                                                                                               | Yes        |
| `payer.email`          | String | Email of the payer.                                                                                                                              | Yes        |
| `payer.phone`          | String | Phone of the payer.                                                                                                                              | Yes        |
| `payer.user_reference` | String | Unique user ID at the merchant side. Required for fraud prevention.                                                                              | Yes        |
| `payer.device_id`      | String | User's unique device identifier, for information on how to obtain the device\_id see the Device ID documentation. Required for fraud prevention. | Yes        |
| `callback_url`         | String | URL where the payer is going to be redirected after approval of the transaction in DiDi Paga Después.                                            | Yes        |
| `order_id`             | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture.                                           | No         |
| `description`          | String | Description of the items purchased.                                                                                                              | No         |
| `notification_url`     | String | Notifications will be sent in every change of status of a payment to the `notification_url` specified by the merchant.                           | Yes        |

### Examples

```json Request Example
 {
    "amount": 500,
    "currency": "MXN",
    "country": "MX",
    "payment_method_id": "DL",
    "payment_method_flow": "REDIRECT",
   "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "phone": "5554536687",
        "user_reference": "12345",
        "device_id": "2fg3d4gf234"
    },
    "order_id": "34545sk3483kqw0",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notifications",
    "callback_url": "http://merchantsite.com/callback"
}
```
```json Synchronous Response Example
{
    "id": "R-4-90fb1e4f-cda4-io98-81a3-b85cb8ae9954",
    "amount": 500,
    "currency": "MXN",
    "payment_method_id": "DL",
    "payment_method_type": "TICKET",
    "payment_method_flow": "REDIRECT",
    "country": "MX",
    "created_date": "2025-09-16T14:22:50.000+0000",
    "status": "PENDING",
    "status_detail": "The payment is pending.",
    "status_code": "100",
    "order_id": "34545sk3483kqw0",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new",
    "redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-fd77f5b7-ca28-7u54-9ed8-ef89d374a80c"
}
```
```json Asynchronous Response Example
{
  "id": "R-4-90fb1e4f-cda4-io98-81a3-b85cb8ae9954",
  "amount": 500,
  "currency": "MXN",
  "payment_method_id": "DL",
  "payment_method_type": "TICKET",
  "payment_method_flow": "REDIRECT",
  "country": "MX",
  "created_date": "2025-09-16T14:22:50.000+0000",
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "order_id": "34545sk3483kqw0",
  "description": "Tshirt",
  "notification_url": "http://merchantsite.com/notification/new"
}
```

![]()