---
updatedAt: 2026-09-11T02:51:21.000Z
agentTools:
  projectIndex: https://docs.dlocal.com/llms.txt
---

# Brazil

Learn about the dLocal supported payment methods in Brazil.

<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;
    }
  
.doc-link .arrow {
  font-size: 0.6em;         
  vertical-align: middle;   
  display: inline-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/brazil#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/brazil#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/brazil#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="#boleto" class="doc-link">Boleto</a>
          <a href="#boleto-hybrid" class="doc-link">Boleto Hybrid</a>
          <a href="#pix" class="doc-link">Pix</a>
          <a href="#pix-via-open-finance-pispitp" class="doc-link">Pix via Open Finance (PISP/ITP)</a>
          <a href="#pix-automático" class="doc-link">Pix Automático</a>
          <a href="#smartpix" class="doc-link">SmartPix</a>
          <a href="#pix-with-biometrics" class="doc-link">Pix with Biometrics</a>
          <a href="#mercado-pago" class="doc-link">Mercado Pago</a>
          <a href="#picpay" class="doc-link">PicPay</a>
          <a href="#nupay" class="doc-link">NuPay</a>
          <a href="#pagaleve" class="doc-link">Pagaleve (BNPL)</a>
        </div>
      </div> 
    </div>
`}</HTMLBlock>

***

# Market specifications

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

## Country reference

| `country` code | `currency` code | `amount` decimals | `document` name |                          `document` format                         | `document` required? |
| :------------: | :-------------: | :---------------: | :-------------: | :----------------------------------------------------------------: | :------------------: |
|      `BR`      |      `BRL`      |         2         |   CPF or CNPJ   | 11 digits for CPF and 14 digits for CNPJ. </br>Full CPF validation |          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`              | `EL`     | Elo              | `CARD`                | Credit Card ​ | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/EL.svg" width="40px"> |
| `CARD`              | `MS`     | Maestro          | `CARD`                | Debit Card ​  | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/MS.svg" width="40px"> |
| `CARD`              | `ED`     | Elo Debit        | `CARD`                | Debit Card ​  | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/ED.svg" width="40px"> |
| `CARD`              | `HI`     | Hipercard        | `CARD`                | Credit Card ​ | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/HI.svg" width="40px"> |
| `CARD`              | `DI`     | Discover         | `CARD`                | Credit Card ​ | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/DI.svg" width="40px"> |
| `CARD`              | `LO`     | Alelo            | `CARD`                | Debit Card ​  | `DIRECT`            | <img src="https://static.dlocal.com/images/providers/checkout/LO.svg" width="40px"> |
| `CARD`              | `VR`     | VR               | `CARD`                | Debit Card ​  | `DIRECT`            | <img src="https://static.dlocal.com/images/providers/checkout/VR.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                                                                                                                                        |
| :------------------ | :------------------------------ | :-------------------- | :-------------- | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------ |
| `BL`                | Boleto                          | `TICKET`              | Cash Payment    | `DIRECT` `REDIRECT` | <img src="https://pay.dlocal.com/views/2.0/images/payments/BL.png" width="40px">                                                            |
| `QB`                | Boleto Hybrid                   | `TICKET`              | Boleto + Pix    | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/BL.svg" width="40px">                                                                  |
| `PQ`                | Pix                             | `TICKET`              | Pix             | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/PIX.png" width="40px">                                                                 |
| `OF`                | Pix via Open Finance (PISP/ITP) | `TICKET`              | Pix             | `REDIRECT`          | <img src="https://static.dlocal.com/images/providers/OF.png" width="40px">                                                                  |
| `XA`                | Pix Automático                  | `TICKET`              | Pix             | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/PIX.png" width="40px">                                                                 |
| `OS`                | SmartPix                        | `WALLET`              | Pix solution    | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/OF.png" width="40px">                                                                  |
| `XV`                | Pix with Biometrics             | `TICKET`              | Pix solution    | `REDIRECT`          | <img src="https://static.dlocal.com/images/providers/OF.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">                                                         |
| `PZ`                | PicPay                          | `TICKET`              | eWallet         | `REDIRECT`          | <img src="https://static.dlocal.com/images/providers/PZ.png" width="40px">                                                                  |
| `NU`                | NuPay                           | `WALLET`              | eWallet         | `REDIRECT`          | <img src="https://static.dlocal.com/images/providers/NU.png" width="40px">                                                                  |
| `IP`                | Pagaleve                        | `TICKET`              | BNPL            | `REDIRECT`          | <img src="https://files.readme.io/aa278c3cafa65ab2735b3f5f31fce3e47d317b0f1b86ee52fa789090e659d68e-Logo-simples_Checkout.png" width="40px"> |

<br />

***

# Cards

## Multiplo Card

In Brazil, some cards, known as Multiplo cards, can function as both credit and debit cards. By default, these cards are typically processed as credit.

The `card.force_type` parameter allows merchants to specify how these cards should be processed: either as `DEBIT` or `CREDIT`.

This feature is useful when merchants want to give customers the choice to pay with debit or credit, for instance, selecting debit for immediate settlement or credit to enable installments.

### Stored card behavior

If the card was stored using [Saving cards](https://docs.dlocal.com/docs/saving-cards), the following applies:

* If `card.force_type` is not included, the transaction uses the card type saved originally.
* If `card.force_type` is included, the transaction uses the type specified in the request.

## ELO Cards

These requirements apply to all ELO transactions in Brazil using `payment_method_id` `EL` or `ED`.

They are mandated by the ELO card scheme and apply whenever an ELO transaction is processed without a  security code (`cvv`).

For additional information about Merchant-Initiated Transactions and the related API fields, see the dLocal <Anchor target="_blank" href="https://docs.dlocal.com/docs/merchant-initiated-transactions">Merchant Initiated Transactions documentation.</Anchor>

### Requirements

ELO transactions processed without a CVV security code must be submitted as Merchant-Initiated Transactions (MITs) and linked to the original Customer-Initiated Transaction (CIT).

#### Initial CIT — Store the Card Credential

Send:

`card.stored_credential_type`: according to the business scenario.

`card.stored_credential_usage:` `FIRST`.

Store the `card.network_tx_reference `returned in the response.

#### Subsequent MITs

For every subsequent transaction:

Send the stored reference in `card.network_payment_reference`

Set `card.stored_credential_type` according to the business scenario.

Set `card.stored_credential_usage` to `USED`.

`card.network_payment_reference` must contain the `card.network_tx_reference `returned by the initial CIT.

## Food voucher cards

In Brazil, food vouchers are a common employee benefit, provided through prepaid cards linked to the PAT Program (Programa de Alimentação do Trabalhador). These cards can only be used for food-related expenses and are widely accepted in supermarkets, restaurants, and other eligible establishments.

Merchants must be properly registered with the correct business type (validated by their tax ID – CNPJ) in order to accept food vouchers. Each restaurant, supermarket, or food merchant needs to be onboarded individually through the dLocal platform.

This ensures compliance with regulations and guarantees that only authorized merchants can process these payments.

[Implement Food Voucher acceptance →](https://docs.dlocal.com/docs/brazil-food-vouchers)

## Capabilities

> To view the information for all the cards, position the cursor over the table and use the horizontal scroll to navigate.

|                               | Visa Credit                                     | Visa Debit                                      | Mastercard Credit                               | Mastercard Debit                                | American Express                                | Elo                                             | Elo Debit                                       | Maestro                                         | Hipercard                                       | Discover                                        |
| :---------------------------- | :---------------------------------------------- | :---------------------------------------------- | :---------------------------------------------- | :---------------------------------------------- | :---------------------------------------------- | :---------------------------------------------- | :---------------------------------------------- | :---------------------------------------------- | :---------------------------------------------- | :---------------------------------------------- |
| **Minimum amount**            | 1 BRL                                           | 1 BRL                                           | 1 BRL                                           | 1 BRL                                           | 1 BRL                                           | 1 BRL                                           | 1 BRL                                           | 1 BRL                                           | 1 BRL                                           | 1 BRL                                           |
| **Refunds**                   | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             |
| **Recurring**                 | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             |
| **Chargeback option**         | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             |
| **Chargeback Dispute option** | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             | Yes                                             |
| **Card Updater**              | Yes                                             | Yes                                             | Yes                                             | Yes                                             | No                                              | Yes                                             | Yes                                             | No                                              | No                                              | No                                              |
| **Descriptor**                | Can be personalized, depending on the provider. | Can be personalized, depending on the provider. | Can be personalized, depending on the provider. | Can be personalized, depending on the provider. | Can be personalized, depending on the provider. | Can be personalized, depending on the provider. | Can be personalized, depending on the provider. | Can be personalized, depending on the provider. | Can be personalized, depending on the provider. | Can be personalized, depending on the provider. |

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

## Boleto

Pay for online services, either over the counter at any supporting outlet in Brazil, or through internet banking.<br />It’s very popular in the country, where a significant number of consumers don't have a bank account.

The consumer is provided with a payment code (or barcode), which then uses to complete the payment either in cash or through home banking.

### Capabilities

|                                    | Boleto                                         |
| :--------------------------------- | :--------------------------------------------- |
| **Min. amount**                    | 1 BRL                                          |
| **Max. expiration time supported** | Up to 8 days                                   |
| **Notification delay**             | Immediate to 1 day, depending on the provider. |
| **Refunds**                        | Yes                                            |
| **Flow**                           | `DIRECT` <br /> `REDIRECT`                     |

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `BRL`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `BR` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `BL` <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.39,
    "currency": "BRL",
    "country": "BR",
    "payment_method_id": "BL",
    "payment_method_flow": "DIRECT",
    "payer": {
        "name": "Pedro Gomes",
        "email": "pedrogomes@dlocal.com",
        "document": "11934254096"
    },
    "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-1a64bdbd-faf5-473e-94b5-f96d36ef0d3f",
    "amount": 100.39,
    "currency": "BRL",
    "payment_method_id": "BL",
    "payment_method_type": "TICKET",
    "payment_method_flow": "DIRECT",
    "country": "BR",
    "ticket": {
        "type": "CUSTOM",
        "number": "10499136581700010014301792813733191730000010039",
        "expiration_date": "2022-11-18T20:25:19.000+0000",
        "id": "3087297622",
        "barcode": "10496917900000004029136517000100140179718690",
        "company_name": "DLOCAL BRASIL LTDA",
        "provider_name": "caixa",
        "provider_logo": "http://static.dlocal.com/images/providers/caixa.png",
        "image_url": "http://pay.dlocal.com/gmf/payments/M-cee70da0-0542-11e9-b88f-39144191f123"
    },
    "created_date": "2022-11-10T17:06:49.545+0000",
    "status": "PENDING",
    "order_id": "jhg4v34v534",
    "notification_url": "http://merchantsite.com/notification/new"
}
```
```json Asynchronous Response Example (Webhook)
{
  "id": "D-4-1a64bdbd-faf5-473e-94b5-f96d36ef0d3f",
  "amount": 100.39,
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "currency": "BRL",
  "country": "BR",
  "payment_method_id": "BL",
  "payment_method_type": "TICKET",
  "payment_method_flow": "DIRECT",
  "payer": {
    "name": "Pedro Gomes",
    "user_reference": "",
    "email": "pedrogomes@dlocal.com",
    "document": "11934254096"
  },
  "ticket": {
    "type": "CUSTOM",
    "number": "10499136581700010014301792813733191730000010039",
    "expiration_date": "2022-11-18T20:25:19.000+0000",
    "image_url": "http://pay.dlocal.com/gmf/payments/M-cee70da0-0542-11e9-b88f-39144191f123",
    "amount": 100.39,
    "currency": "BRL"
  },
  "order_id": "34545sk3483kqw0",
  "description": "Tshirt",
  "notification_url": "http://merchantsite.com/notification/new",
  "created_date": "2022-11-10T17:06:49.545+0000",
  "result_info": {}
}

```

### Example ticket

<Image src="https://files.readme.io/c3bf52b649e1887acdd16b6e5024568837b9fc1e4f52a6f9015df36b7a3f332e-APM_-_Boleto.png" alt="Boleto UI built with the information in the example above." align="center" caption="Boleto 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**       | Provide an option to copy the **ticket.number**. It’s a long number and users who pay through their home banking need to input it on their bank app/website.                                                             |
| **Currency and Amount** | Should be relevant elements in the ticket. Users need to have that information very clearly.                                                                                                                             |
| **Currency Symbol**     | R$                                                                                                                                                                                                                       |
| **Expiration date**     | Display this element clearly and visible enough. In Brazil, the date format is  **DD/MM/YYYY**.                                                                                                                          |
| **Barcode**             | It is useful for users that pay through home banking with a barcode reader, and for the ones that pay at physical stores.<br />**Format:**`Interleaved 2 of 5 (ITF)`                                                     |
| **Full Boleto View**    | Add a link to the full Boleto: **ticket.image\_url**. Although it is not necessary to pay, some users prefer to have it as it gives them a sense of security. [Check out a full Boleto example](https://ibb.co/mNBc6g2). |

## Boleto Hybrid

Boleto Hybrid combines a traditional boleto with an embedded PIX QR code in a single ticket. The customer can pay using the boleto barcode/digitable line or by scanning the PIX QR code — dLocal reports both as the same payment, and the payment notification identifies which method was used.

### Capabilities

|                                    | Boleto Hybrid                                           |
| :--------------------------------- | :------------------------------------------------------ |
| **Min. amount**                    | 1 BRL                                                   |
| **Max. expiration time supported** | Up to 8 days                                            |
| **Notification delay**             | Immediate to 1 day, depending on the settlement method. |
| **Refunds**                        | Yes                                                     |
| **Flow**                           | `DIRECT` <br /> `REDIRECT`                              |

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `BRL`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `BR` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `QB` <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

[block:html]
{
  "html": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>URL Selector with Opacity</title>\n  <style>\n    .url-container {\n      display: flex;\n      align-items: center;\n      border-radius: 16px;\n      background-color: #fff;\n      padding: 10px;\n      box-shadow: 0 0 0px 1px #F5F5F5;\n      box-sizing: border-box;\n      border-color: transparent;\n      margin-top: 20px;\n      margin-bottom: 20px;\n      gap: 10px;\n      width: 100%;\n    }\n    \n         [data-color-mode=\"dark\"] .url-container {\n      background-color: #F7F7F7;\n    }\n\n    .url-container .url-selector {\n      display: none;\n    }\n\n    .url-container label {\n      padding: 5px 5px;\n      border: 1px solid #ccc;\n      border-radius: 8px;\n      font-size: 11px;\n      color: #333;\n      background-color: #f9f9f9;\n      cursor: pointer;\n      transition: opacity 0.3s ease;\n    }\n\n    /* Reduce opacity for unselected labels */\n    #base-a:not(:checked) ~ label[for=\"base-a\"],\n    #sandbox-a:not(:checked) ~ label[for=\"sandbox-a\"] {\n      opacity: 0.5;\n    }\n\n    .url-container .pill-button {\n      border: none;\n      box-shadow: var(--box-shadow-pill);\n      background-color: #0171c2;\n      color: white;\n      padding: 5px 15px;\n      font-size: 14px;\n      border-radius: 25px;\n      text-transform: uppercase;\n      cursor: default; /* Cambia el cursor para indicar que no es clickeable */\n      text-shadow: 1px 1px 0 #0168b3, 0 1px 0 #0168b3, 1px 0 0 #0168b3;\n      margin-left: 5px;\n      white-space: nowrap !important;\n    }\n\n\n    .url-input {\n      display: none;\n      flex-grow: 1; /* Permitir que el input ocupe todo el espacio disponible */\n    }\n\n    #base-a:checked ~ .url-input[data-url=\"base-a\"],\n    #sandbox-a:checked ~ .url-input[data-url=\"sandbox-a\"] {\n     display: block;\n    }\n\n    .url-input input {\n      width: 100%;\n      border: none;\n      outline: none;\n      flex-grow: 1;\n      border-radius: 8px;\n      padding: 5px;\n      font-size: 12px;\n      color: #333;\n      user-select: all;\n    }\n\n    .url-input input:focus {\n      outline: 1px solid #F5F5F5;\n      border-radius: 16px;\n    }\n    \n\n/* Mobile-specific styles */\n@media screen and (max-width: 768px) {\n.url-container {\n    display: flex;\n    align-items: center;\n    flex-wrap: wrap; \n    width: 100%; \n    max-width: 100%; \n    box-sizing: border-box; \n}\n  \n.url-input input {\n    border: none;\n    outline: none;\n    border-radius: 8px;\n    padding: 5px;\n    font-size: 12px;\n    color: #333;\n    user-select: all;\n    width: 100%; /* Ocupa todo el ancho disponible */\n    max-width: 100%; /* No permite desbordarse */\n}\n}\n  </style>\n</head>\n<body>\n  <div class=\"url-container\">\n    <!-- Botón visual -->\n    <div class=\"pill-button\">Post</div>\n    \n    <!-- Radio inputs for URL options -->\n    <input id=\"base-a\" type=\"radio\" name=\"url\" class=\"url-selector\" checked>\n    <label for=\"base-a\">Production URL</label>\n    <input id=\"sandbox-a\" type=\"radio\" name=\"url\" class=\"url-selector\">\n    <label for=\"sandbox-a\">Sandbox URL</label>\n\n    <!-- URL Display (readonly inputs) -->\n    <div class=\"url-input\" data-url=\"base-a\">\n      <input type=\"text\" readonly value=\"https://api.dlocal.com/payments\">\n    </div>\n    <div class=\"url-input\" data-url=\"sandbox-a\">\n      <input type=\"text\" readonly value=\"https://sandbox.dlocal.com/payments\">\n    </div>\n  </div>\n</body>\n</html>"
}
[/block]

```json Request
{
    "amount": 100.39,
    "currency": "BRL",
    "country": "BR",
    "payment_method_id": "QB",
    "payment_method_flow": "DIRECT",
    "payer": {
        "name": "Pedro Gomes",
        "email": "pedrogomes@dlocal.com",
        "document": "11934254096"
    },
    "order_id": "34545sk3483kqw0",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new",
    "callback_url": "http://merchantsite.com/success_page"
}
```
```json Response
{
    "id": "D-4-g1l8guqa-pnbb55kadh78j6-kn1mp1ufnm4k",
    "amount": 100.39,
    "currency": "BRL",
    "payment_method_id": "QB",
    "payment_method_type": "TICKET",
    "payment_method_flow": "DIRECT",
    "country": "BR",
    "bank_transfer": {},
    "ticket": {
        "type": "CUSTOM",
        "number": "34191092305401216044354689940002715490000010039",
        "expiration_date": "2026-08-26T02:59:59.000+0000",
        "barcode": "34197154900000100391092354012160445468994000",
        "image_url": "https://pay.dlocal.com/gmf-apm/payments/N-b4435187-ad75-4178-b750-f18f1fb827d3",
        "amount": 100.39,
        "currency": "R$",
        "qr_code": "00020101021226770014BR.GOV.BCB.PIX2555api.itau/pix/qr/v2/406b5816-8e46-42aa-a17e-2671cac1919a5204000053039865802BR5906DLOCAL6009SAO PAULO62070503***6304E8BD"
    },
    "created_date": "2026-08-21T16:22:34.000+0000",
    "status": "PENDING",
    "status_detail": "The payment is pending.",
    "status_code": "100",
    "order_id": "34545sk3483kqw0",
    "notification_url": "http://merchantsite.com/notification/new"
}
```

### Response params

| Field              | Description                                                                                                                                        |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticket.number`    | Boleto digitable line.                                                                                                                             |
| `ticket.barcode`   | Boleto barcode, numeric form.                                                                                                                      |
| `ticket.image_url` | Link to dLocal's hosted ticket image, showing both the boleto and the PIX QR code.                                                                 |
| `ticket.currency`  | Currency symbol (`R$`), not the ISO code. Differs from the top-level `currency` field (`BRL`) — this is real API behavior for this payment method. |
| `ticket.qr_code`   | PIX EMV QR payload. Render as a scannable QR code or display as copy-paste text.                                                                   |

### Example ticket

<Image src="https://files.readme.io/ca2dab8b4c8220dda1b2748f65d5547a0b6976d01adb0717a9316843d334bbaf-Screenshot_2026-08-21_at_13.23.15.png" align="center" />

### Notification

The notification distinguishes which path the customer used to pay via `payment_result_info.payment_type`, which returns either `PIX` or `Voucher`.

```json Notification
{
  "id": "D-4-g1l8guqa-pnbb55kadh78j6-kn1mp1ufnm4k",
  "amount": 100.39,
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "currency": "BRL",
  "country": "BR",
  "payment_method_id": "QB",
  "payment_method_type": "TICKET",
  "payment_method_flow": "DIRECT",
  "payer": {
    "name": "Pedro Gomes",
    "user_reference": "",
    "email": "pedrogomes@dlocal.com",
    "document": "11934254096"
  },
  "payment_result_info": {
    "payment_type": "Voucher"
  },
  "order_id": "34545sk3483kqw0",
  "notification_url": "http://merchantsite.com/notification/new",
  "created_date": "2026-08-21T16:24:10.000+0000"
}
```

<Callout icon="📘" theme="info">
  ### Payer data on PIX-paid notifications

  When the customer pays via PIX, the notification may include the payer's CPF/CNPJ and name. This isn't guaranteed on every notification — treat it as conditional, not a reliable source for KYC or reconciliation.
</Callout>

## Pix

Pix is a Brazilian payment method, officially launched by the local Central Bank, that enables immediate payment confirmation and 24/7 availability. The user can complete the payment using any Home Banking or Ewallet App, by copying and pasting a Transaction ID or scanning a QR code (see example in the next section).

For a comprehensive guide on implementing Pix, including all supported Pix variants, see the dedicated [Pix Payments](https://docs.dlocal.com/docs/pix-payments) page.

### Capabilities

|                                    | Pix                        |
| :--------------------------------- | :------------------------- |
| **Min. amount**                    | 1 BRL                      |
| **Max. expiration time supported** | Up to 6 days               |
| **Notification delay**             | Immediate                  |
| **Refunds**                        | Yes                        |
| **Flow**                           | `DIRECT` <br /> `REDIRECT` |

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `BRL`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `BR` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `PQ` <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": 4,
    "currency": "BRL",
    "country": "BR",
    "payment_method_id": "PQ",
    "payment_method_flow": "DIRECT",
    "payer": {
        "name": "Pedro Gomes",
        "email": "pedrogomes@dlocal.com",
        "document": "11934254096"
     },
    "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-7e27ab45-e500-4771-bd91-ba767e31b250",
    "amount": 4,
    "currency": "BRL",
    "payment_method_id": "PQ",
    "payment_method_type": "TICKET",
    "payment_method_flow": "DIRECT",
    "country": "BR",
    "bank_transfer": {},
    "ticket": {
        "type": "CUSTOM",
        "number": "00020101021226990014br.gov.bcb.pix2577pix.bpp.com.br/25021356/qrs1/v2/cobv/01aP5TN8sfPrDKBVWqCXuxWYyHrsbTvNyrlISY7R52040000530398654044.005802BR5906DLOCAL6009SAO PAULO62070503***6304FFC6",
        "expiration_date": "2022-09-24T15:35:32.486+0000",
        "id": "QRS1TXKSHZHFYC4Q3INRRWYISVX6BMSZTK1",
        "barcode": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAIAAABEtEjdAABeQUlzx/0/rg/z/P8Qe+P+/M8zx/0PxhLim4LHydLAAAAAElFTkSuQmCC",
        "company_name": "",
        "provider_name": "pix",
        "provider_logo": "https://static.dlocal.com/images/providers/pix.jpg",
        "image_url": "https://pay.dlocal.com/gmf-apm/payments/M-1c7fafd3-64f0-4314-8d14-eb9ce2f5b4a1",
        "amount": 4,
        "currency": "BRL"
    },
    "created_date": "2022-09-20T15:35:31.000+0000",
    "status": "PENDING",
    "status_detail": "The payment is pending.",
    "status_code": "100",
    "order_id": "410ca991-dcfa-4306-a861-69807254123d",
    "notification_url": "http://merchantsite.com/notification/new"
}
```

<Callout icon="ℹ️" theme="info">
  For Pix, `ticket.number` is not merely a voucher/reference number — it is the EMV-style copy/paste payload the payer can paste into their banking app ("Copia e Cola"). `ticket.barcode` is not a conventional numeric barcode — it is a Base64-encoded image of the QR code.
</Callout>

### Response contract

| Field                 | Documentation requirement                                                                                                                                                          |
| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Supported flow        | `DIRECT`. This response documents the direct flow; `payment_method_flow` must be sent as `DIRECT` to receive the `ticket.number` and `ticket.barcode` payloads shown above.        |
| QR artifact           | `ticket.number` (copy/paste payload) and `ticket.barcode` (QR image).                                                                                                              |
| Encoding              | `ticket.number` is `EMV_STRING`. `ticket.barcode` is `BASE64_IMAGE`.                                                                                                               |
| Expiration            | `ticket.expiration_date` marks when the Pix charge stops being payable. After expiry, the merchant must create a new payment request to obtain a new QR code / copy-paste payload. |
| Image                 | `ticket.image_url` returns a hosted image rendering of the QR code, usable as a fallback for merchants that do not render `ticket.barcode` locally.                                |
| Secondary identifiers | `ticket.id` is the ticket identifier.                                                                                                                                              |
| Provider metadata     | `ticket.provider_name`, `ticket.provider_logo`, and `ticket.company_name` are returned. `provider_url` is not part of this method's response.                                      |
| Nested amount         | `ticket.amount` and `ticket.currency` are expected to match the top-level `amount` and `currency` for this method.                                                                 |

### Example ticket

<Image src="https://files.readme.io/4caee0c62a025b04719072e77998340e3c5aa858c0957026221d547b74e29bd7-f51d9c80-4294-450d-abd9-4611999d1e6c.png" alt="PIX UI built with the information in the example above." align="center" caption="Pix 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.

<Table align={["left","left"]}>
  <thead>
    <tr>
      <th>
        Element
      </th>

      <th>
        Tip
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        **Currency and Amount**
      </td>

      <td>
        Should be relevant elements in the ticket. Users need to have that information very clearly.
      </td>
    </tr>

    <tr>
      <td>
        **Currency Symbol**
      </td>

      <td>
        R$
      </td>
    </tr>

    <tr>
      <td>
        **Expiration date**
      </td>

      <td>
        Display this element clearly and visible enough. In Brazil, the date format is  **DD/MM/YYYY**.
      </td>
    </tr>

    <tr>
      <td>
        **QR Code**
      </td>

      <td>
        Present users with both payment options: QR code or Copy\&Paste ID.

        A) Your **desktop/laptop users** will definitely prefer to pay by **scanning the QR**, since it is easy to scan a QR presented on a laptop, using their phones.

        B) Your **mobile users**, on the other hand, should probably prefer the **Copy\&Paste ID** functionality, since the QR code is difficult to read with the very same phone that shows the QR code.
      </td>
    </tr>

    <tr>
      <td>
        **QR Code format**
      </td>

      <td>
        Base 64
      </td>
    </tr>
  </tbody>
</Table>

<br />

### UX Flow Example

<Image src="https://files.readme.io/4958863809628941c308a55484f2873d0654afb761d7e8bddf3d6a1719d94eba-5c665dc7-4ca2-4387-97a2-66e26525b4fb.png" alt="PIX UI built with the information in the example above." align="center" />

### Pix Automático

Pix Automático leverages Brazil's Pix infrastructure to simplify periodic charges such as subscriptions and recurring bills. Customers approve a one-time authorization with their bank, allowing merchants to initiate recurring payment orders without the payer needing to be present for each transaction. It supports weekly, monthly, quarterly, semi-annual, and annual recurrence with fixed or variable amounts, and allows up to 3 payment retries within 7 calendar days of the original date.

Learn how to integrate Pix Automático, including enrollment flows and recurring payment setup, in our [Pix Automático](https://docs.dlocal.com/docs/brazil-pix-automatico) section.

<a name="smartpix"></a>

## SmartPix

SmartPix is a tokenized Pix payment solution that reduces friction by requiring only a single user authorization during setup. It enables recurring payments, one-click purchases, and event-based (on-demand) charges through Pix, leveraging Open Finance and dLocal's licenses in Brazil. Merchants can choose between a fully customizable authorization flow managed within their own platform, or a pre-built checkout managed by dLocal for faster deployment.

Learn how to integrate SmartPix, including authorization options and recurring payment flows, in our [SmartPix ](https://docs.dlocal.com/docs/brazil-smartpix)section.

<a name="pix-with-biometrics"></a>

## Pix with Biometrics

Pix with Biometrics allows customers to securely link their identity to Pix payments using biometric authentication (face or fingerprint). After completing a one-time enrollment, users can approve future Pix payments instantly using only their device's biometric verification — no banking app redirects required. Merchants can launch the flow via a redirect experience or embed it natively using dLocal's Mobile SDK.

Learn how to integrate Pix with Biometrics, including enrollment and payment flows, in our [Pix with Biometrics](https://docs.dlocal.com/docs/brazil-pix-biometrics) section.

## Mercado Pago

dLocal offers two Mercado Pago products in BR:

* `MY` **— Mercado Pago Checkout Pro**: one-shot payments only. The user completes payment through a Mercado Pago-hosted redirect. No enrollment or tokenization.
* `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 BRL                            |
| **Max. expiration time supported** | 5 minutes (authentication)       |
| **Notification delay**             | Immediate                        |
| **Refunds**                        | Yes                              |
| **Flow**                           | `REDIRECT`                       |

### UX Flow

<Image src="https://files.readme.io/535a954864ad80ca9cee7c416b610cefdd2f22674dcd62d1b90d56c303b67c46-Mercado_Pago_-_One_Time_Payment.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 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 BRL                              |
| **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/f518003f6ffab155f3254f0c38624f56d0a6be4d625b9839def9df715a9f7cdc-Mercado_Pago_-_Tokenized_Wallet.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-br-001",
  "type": "ON_DEMAND",
  "country": "BR",
  "currency": "BRL",
  "payment_method_id": "MP",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "11934254096"
  },
  "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-br-001",
  "country": "BR",
  "currency": "BRL",
  "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-br-001",
  "country": "BR",
  "currency": "BRL",
  "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": 1000,
  "currency": "BRL",
  "country": "BR",
  "payment_method_id": "MP",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "11934254096"
  },
  "enrollment": {
    "external_id": "enroll-br-001",
    "type": "ON_DEMAND",
    "notification_url": "https://merchantsite.com/enrollment_notifications",
    "callback_url": "https://merchantsite.com/enrollment_callback"
  },
  "order_id": "ord-br-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": 1000,
  "currency": "BRL",
  "payment_method_id": "MP",
  "payment_method_type": "WALLET",
  "payment_method_flow": "REDIRECT",
  "country": "BR",
  "created_date": "2025-06-01T10:00:00.000+0000",
  "status": "PENDING",
  "status_detail": "The payment is pending.",
  "status_code": "100",
  "order_id": "ord-br-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-br-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-br-001",
  "country": "BR",
  "currency": "BRL",
  "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": 1000,
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "currency": "BRL",
  "country": "BR",
  "payment_method_id": "MP",
  "payment_method_type": "WALLET",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "11934254096"
  },
  "enrollment": {
    "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4",
    "external_id": "enroll-br-001"
  },
  "order_id": "ord-br-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": 1000,
  "currency": "BRL",
  "country": "BR",
  "payment_method_id": "MP",
  "payment_method_flow": "DIRECT",
  "payer": {
    "name": "Jane Doe",
    "email": "janedoe@mymail.com",
    "document": "11934254096"
  },
  "enrollment": {
    "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4"
  },
  "order_id": "ord-br-recurring-001",
  "notification_url": "https://merchantsite.com/payments"
}
```
```json Response (synchronous — final status)
{
  "id": "F-4-b2c8d5e1-3f7a-4c9b-a123-7d8e9f0a1b2c",
  "amount": 1000,
  "currency": "BRL",
  "country": "BR",
  "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-br-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 | `BRL`. Transaction currency.                                                                                                                                            | Yes                        |
| `country`                     | String | `BR`. 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.

## PicPay

With over 60 million users, PicPay has made its way to stand alongside other leading wallets like PayPal and Mercado Pago.

PicPay is a digital wallet app, and the country’s largest payments app, that enables users to send and receive money, pay bills, store loyalty cards and discount coupons, and more.

### Capabilities

|                                    | PicPay     |
| :--------------------------------- | :--------- |
| **Min. amount**                    | 1 BRL      |
| **Max. expiration time supported** | 1 day      |
| **Notification delay**             | Immediate  |
| **Refunds**                        | Yes        |
| **Flow**                           | `REDIRECT` |

### UX Flow

<Image src="https://files.readme.io/094aa4766651c1a01c436cd1983d190800cdb72ac39a58bd367917c78be85722-PicPay.png" alt="The screenshots illustrate a generic PicPay redirect flow through a QR Code." align="center" caption="The screenshots illustrate a generic PicPay redirect flow through a QR Code." />

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `BRL`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `BR` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `PZ` <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.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": 15,
    "currency": "BRL",
    "country": "BR",
    "payment_method_id": "PZ",
    "payment_method_flow": "REDIRECT",
    "payer": {
        "name": "Pedro Gomes",
        "email": "pedrogomes@dlocal.com",
        "document": "09996352986"
    },
    "order_id": "34545sk3483kqw0",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new",
    "callback_url": "http://merchantsite.com/success_page"
}
```
```json Response Example
{
    "id": "R-4-90fb1e4f-cda4-io98-81a3-b85cb8ae9954",
    "amount": 15,
    "currency": "BRL",
    "payment_method_id": "PZ",
    "payment_method_type": "TICKET",
    "payment_method_flow": "REDIRECT",
    "country": "BR",
    "created_date": "2023-02-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"
}
```

## NuPay

NuPay is a payment solution offered by Nubank, one of the largest digital banks in Latin America.

Allowing customers to make payments using Nubank's digital infrastructure, NuPay can be used for both online transactions and payments in physical establishments, providing a simplified and integrated payment experience with the Nubank account.

### Capabilities

|                        | NuPay      |
| :--------------------- | :--------- |
| **Min. amount**        | 0.01 BRL   |
| **Notification delay** | Immediate  |
| **Refunds**            | Yes        |
| **Flow**               | `REDIRECT` |

### UX Flow

#### First-time payment

<Image src="https://files.readme.io/b152637747136c9f2ef42e8afab5805ca7f95fa678e08abad7df90d59555f3ba-NuPay_-_first_time_payment.png" alt="The screenshots illustrate a NuPay first-time 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 NuPay first-time payment redirect flow. The specifics of the flow may vary depending on the payment method selected to complete the payment." />

#### Tokenized user

<Image src="https://files.readme.io/b09d7ce172e1ed11d030e1bcc7953615563eb9b154ad165048c393d8a3034631-NuPay_-_Tokenized_user.png" alt="The screenshots illustrate a NuPay tokenized wallet redirect flow." align="center" width="60% " caption="The screenshots illustrate a NuPay tokenized wallet redirect flow." />

### Request parameters

| Property              | Type    | Description                                                                                                            | Mandatory?                   |
| :-------------------- | :------ | :--------------------------------------------------------------------------------------------------------------------- | :--------------------------- |
| `amount`              | Number  | Amount to be charged.                                                                                                  | No                           |
| `currency`            | String  | `BRL`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes                          |
| `country`             | String  | `BR` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes                          |
| `payment_method_id`   | String  | `NU` <br /><br />ID of the selected payment method.                                                                    | Yes                          |
| `payment_method_flow` | String  | `REDIRECT`                                                                                                             | Yes                          |
| `payer.name`          | String  | Name of the payer.                                                                                                     | No                           |
| `payer.email`         | String  | Email of the payer.                                                                                                    | No                           |
| `payer.document`      | String  | Document of the payer.                                                                                                 | Yes                          |
| `wallet.name`         | String  | Name of the payer's wallet.                                                                                            | No                           |
| `wallet.save`         | Boolean | Determines whether you want to receive a wallet token for future payments.                                             | No                           |
| `wallet.capture`      | Boolean | Determines if you want to capture the payment funds or not.                                                            | No                           |
| `wallet.username`     | String  | Username of the payer's wallet account.                                                                                | No                           |
| `wallet.email`        | String  | Email of the payer's wallet account.                                                                                   | No                           |
| `wallet.token`        | String  | Token of a previous payment from the same wallet.                                                                      | For tokenized payments, 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. | Yes                          |

### Examples

```json Request Example
{
    "amount": 1000,
    "currency": "BRL",
    "country": "BR",
    "payment_method_id": "NU",
    "payment_method_flow": "REDIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "document": "11934254096",
        "address": {
            "country": "BR",
            "state": "Rio de Janeiro",
            "city": "Ipanema",
            "zip_code": "8858",
            "street": "Av. Principal",
            "number": "5940"
        }
    },
    "wallet": {
        "name": "Jane Doe",
        "save": true,
        "capture": true,
        "username": "Jane2002",
        "email": "janedoe@mymail.com",
        "label": "label",
        "state": "state",
        "token": ""
    },
    "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-3145f30a-19fd-4e88-2112-af16f344fee2",
    "amount": 1000,
    "currency": "BRL",
    "payment_method_id": "NU",
    "payment_method_type": "WALLET",
    "payment_method_flow": "REDIRECT",
    "country": "BR",
    "created_date": "2023-06-15T21:01:08.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/nupay-payments-continue/M-affdf8e9-0af6-4215-87a0-fcf9c305df"
}
```

## Pagaleve (BNPL)

Pagaleve is a Buy Now, Pay Later (BNPL) provider for Brazil. Customers can split purchases into installments — fortnightly without interest or monthly with interest — without a credit card. Pagaleve evaluates the customer's credit profile in real time and determines which financing option to present at checkout. The merchant receives payment upfront; Pagaleve assumes the credit risk and collection.

### Capabilities

|                               | Pagaleve                                                                                      |
| :---------------------------- | :-------------------------------------------------------------------------------------------- |
| **Min. amount**               | 40 BRL                                                                                        |
| **Max. amount**               | 8,000 BRL                                                                                     |
| **Expiration time**           | 15 Minutes                                                                                    |
| **Notification delay**        | Immediate                                                                                     |
| **Refunds**                   | Yes                                                                                           |
| **Partial refunds**           | Yes                                                                                           |
| **Multiple partial refunds**  | Yes                                                                                           |
| **Refund window**             | 90 days                                                                                       |
| **Recurring / Subscriptions** | Not supported — one-time purchases only                                                       |
| **Flow**                      | `REDIRECT`                                                                                    |
| **Financing plans**           | Fortnightly without interest (up to 2 installments) / Monthly with interest (up to 12 months) |

### Financing Plans

Pagaleve offers two financing products. The credit engine determines which plan(s) are available to each customer based on their profile and the transaction at the time of checkout.

| Plan                         | Code  | Term                              | Interest         | Default status      |
| :--------------------------- | :---- | :-------------------------------- | :--------------- | :------------------ |
| Fortnightly without interest | `QSJ` | Fortnightly, up to 2 installments | 0%               | Enabled by default  |
| Monthly with interest        | `MCJ` | Monthly, up to 12 months          | Interest-bearing | Requires activation |

No merchant-side configuration is required for plan selection. The customer sees only the plan(s) that Pagaleve's engine approves for them. Monthly installment amounts and applicable interest rates are shown transparently during the Pagaleve checkout.

<Callout icon="📘" theme="info">
  ### Enabling Monthly with interest

  The Fortnightly plan is active by default. To offer the Monthly with interest plan to customers, contact your dLocal account manager to request activation with Pagaleve. Once enabled, both plans may be offered at checkout depending on the customer's credit profile.
</Callout>

### UX Flow

After the merchant creates a payment request, the customer is redirected to Pagaleve’s checkout page where they:

1. Enter their CPF and validate with an OTP
2. **Select a financing plan** — Pagaleve presents the available installment options based on real-time credit evaluation. The customer chooses between fortnightly and/or monthly plans.
3. Review the installment schedule and confirm the purchase

![](https://files.readme.io/5b9620ef3919ea230ba73756f977328034e2e6227db501e7015d8cfe81b7f09c-image.png)

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `BRL`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `BR` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `IP` <br /><br />ID of the selected payment method.                                                                    | Yes        |
| `payment_method_flow` | String | `REDIRECT`                                                                                                             | Yes        |
| `payer.name`          | String | Name of the payer.                                                                                                     | Yes        |
| `payer.last_name`     | String | Last name of the payer.                                                                                                | No         |
| `payer.email`         | String | Email of the payer.                                                                                                    | Yes        |
| `payer.phone`         | String | Phone number of the payer including country code (e.g., `+5511999999999`).                                             | Yes        |
| `payer.document`      | String | CPF of the payer (Brazilian tax ID).                                                                                   | 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        |
| `callback_url`        | String | URL where the users is going to be redirected after approval of the transaction in Pagaleve.                           | Yes        |

### Examples

```json Request example
{
    "amount": 35500,
    "currency": "BRL",
    "country": "BR",
    "payment_method_id": "IP",
    "payment_method_flow": "REDIRECT",
    "payer": {
        "name": "Ana Carolina",
        "last_name": "Silva Mendes",
        "email": "ana.silva@email.com",
        "phone": "+5511987654321",
        "document": "123.456.789-00"
    },
    "order_id": "<merchant_order_uid>",
    "description": "Online purchase",
    "notification_url": "https://merchantsite.com/notification",
    "callback_url": "https://merchantsite.com/callback"
}
```
```json Response example
{
    "id": "R-4-a1b2c3d4-ef56-7890-ab12-cd34ef567890",
    "amount": 35500,
    "currency": "BRL",
    "payment_method_id": "IP",
    "payment_method_type": "TICKET",
    "payment_method_flow": "REDIRECT",
    "country": "BR",
    "created_date": "2026-06-01T10:22:00.000+0000",
    "status": "PENDING",
    "status_detail": "The payment is pending.",
    "status_code": "100",
    "order_id": "<merchant_order_uid>",
    "redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-a1b2c3d4-ef56-7890-ab12-cd34ef567890"
}
```

Redirect the customer to `redirect_url` immediately after receiving this response.

```json Asynchronous response
{
    "id": "R-4-a1b2c3d4-ef56-7890-ab12-cd34ef567890",
    "amount": 35500,
    "currency": "BRL",
    "payment_method_id": "IP",
    "payment_method_type": "TICKET",
    "payment_method_flow": "REDIRECT",
    "country": "BR",
    "created_date": "2026-06-01T10:22:00.000+0000",
    "status": "PAID",
    "status_detail": "The payment was paid.",
    "status_code": "200",
    "order_id": "<merchant_order_uid>",
    "plan_type": "fortnightly_without_interest",
    "plan_term": 15,
    "has_interest": false
}
```
```json Rejected
{
    "id": "R-4-a1b2c3d4-ef56-7890-ab12-cd34ef567890",
    "amount": 35500,
    "currency": "BRL",
    "payment_method_id": "IP",
    "payment_method_type": "TICKET",
    "payment_method_flow": "REDIRECT",
    "country": "BR",
    "created_date": "2026-06-01T10:22:00.000+0000",
    "status": "REJECTED",
    "status_detail": "The payment was rejected.",
    "status_code": "301",
    "order_id": "<merchant_order_uid>"
}
```

<Callout icon="📘" theme="info">
  ### `plan_type` identifies the financing plan selected by the customer: `fortnightly_without_interest` (fortnightly, `plan_term: 15`, `has_interest: false`) or `monthly_with_interest` (monthly up to 12 months, `plan_term: 30`, `has_interest: true`).
</Callout>