Brazil
Learn about the dLocal supported payment methods in Brazil.
Market specifications
Take a look of all the payment methods available.
Country reference Cards supported APM supportedCards
Find all the information about the card supported capabilities.
Capabilities Process Card PaymentsAlternative Payments
Learn how to integrate cash, bank transfer or wallet payment.
Boleto Pix Pix via Open Finance (PISP/ITP) Pix Automático SmartPix Pix with Biometrics Mercado Pago PicPay NuPay Pagaleve (BNPL)Market specifications
Do you want to know more information about Brazil's market? Go to the Brazil’s economy and eCommerce market 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. 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 | |
CARD | VD | Visa Debit | CARD | Debit Card | DIRECT REDIRECT | |
CARD | MC | Mastercard | CARD | Credit Card | DIRECT REDIRECT | |
CARD | MD | Mastercard Debit | CARD | Debit Card | DIRECT REDIRECT | |
CARD | AE | American Express | CARD | Credit Card | DIRECT REDIRECT | |
CARD | EL | Elo | CARD | Credit Card | DIRECT REDIRECT | |
CARD | MS | Maestro | CARD | Debit Card | DIRECT REDIRECT | |
CARD | ED | Elo Debit | CARD | Debit Card | DIRECT REDIRECT | |
CARD | HI | Hipercard | CARD | Credit Card | DIRECT REDIRECT | |
CARD | DI | Discover | CARD | Credit Card | DIRECT REDIRECT | |
CARD | LO | Alelo | CARD | Debit Card | DIRECT | |
CARD | VR | VR | CARD | Debit Card | DIRECT |
To offer all the card options that may be available in your integration, send the
payment_method_idasCARD.
Alternative Payment Method supported
payment_method_id | Name | payment_method_type | Details | Allowed Flows | Logo |
|---|---|---|---|---|---|
BL | Boleto | TICKET | Cash Payment | DIRECT REDIRECT | ![]() |
QB | Boleto Hibrido | TICKET | DIRECT REDIRECT | DIRECT REDIRECT | |
PQ | Pix | TICKET | Pix | DIRECT REDIRECT | ![]() |
OF | Pix via Open Finance (PISP/ITP) | TICKET | Pix | REDIRECT | ![]() |
XA | Pix Automático | TICKET | Pix | DIRECT REDIRECT | ![]() |
OS | SmartPix | WALLET | Pix solution | DIRECT REDIRECT | ![]() |
XV | Pix with Biometrics | TICKET | Pix solution | REDIRECT | ![]() |
MP | Mercado Pago | BANK_TRANSFER | eWallet | DIRECT REDIRECT | ![]() |
PZ | PicPay | TICKET | eWallet | REDIRECT | ![]() |
NU | NuPay | WALLET | eWallet | REDIRECT | ![]() |
IP | Pagaleve | TICKET | BNPL | REDIRECT | ![]() |
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, the following applies:
- If
card.force_typeis not included, the transaction uses the card type saved originally. - If
card.force_typeis included, the transaction uses the type specified in the request.
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 →
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 section.
Alternative Payment Method
Boleto
Pay for online services, either over the counter at any supporting outlet in Brazil, or through internet banking.
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 REDIRECT |
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | BRLTransaction currency in ISO 4217. | Yes |
country | String | BR Transaction country in ISO 3166. | Yes |
payment_method_id | String | BL 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
{
"amount": 100.39,
"currency": "BRL",
"country": "BR",
"payment_method_id": "BL",
"payment_method_flow": "DIRECT",
"payer": {
"name": "Pedro Gomes",
"email": "[email protected]",
"document": "11934254096"
},
"order_id": "34545sk3483kqw0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"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"
}{
"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": "[email protected]",
"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

Boleto UI built with the information in the example above.
User Interface Tips UI
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. 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. |
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 page.
Capabilities
| Pix | |
|---|---|
| Min. amount | 1 BRL |
| Max. expiration time supported | Up to 6 days |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | DIRECT REDIRECT |
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | BRLTransaction currency in ISO 4217. | Yes |
country | String | BR Transaction country in ISO 3166. | Yes |
payment_method_id | String | PQ 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
{
"amount": 4,
"currency": "BRL",
"country": "BR",
"payment_method_id": "PQ",
"payment_method_flow": "DIRECT",
"payer": {
"name": "Pedro Gomes",
"email": "[email protected]",
"document": "11934254096"
},
"order_id": "34545sk3483kqw0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"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"
}Example ticket

Pix UI built with the information in the example above.
User Interface Tips UI
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 |
|---|---|
| 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. |
| QR Code | 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. |
| QR Code format | Base 64 |
UX Flow Example

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 section.
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 section.
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 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.
Wallet Connect activationMercado Pago Wallet Connect (
MP) requires activation per merchant per country. Contact your dLocal account team before integrating the recurring flow.
Mercado Pago Checkout Pro (MY)
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

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 section.
Mercado Pago Wallet Connect (MP)
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

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.
Enrollment type for Mercado PagoAlways send
"type": "ON_DEMAND"forMP. This is the only valid enrollment type for Mercado Pago Wallet Connect.
Pattern 1 — Enrollment only
Use POST /enrollments to establish the user's authorization without an initial charge.
{
"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": "[email protected]",
"document": "11934254096"
},
"notification_url": "https://merchantsite.com/enrollment_notifications",
"callback_url": "https://merchantsite.com/enrollment_callback"
}{
"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"
}{
"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"
}
Enrollment IDPersist the
idvalue (e.g.,E-4-32e1218f-...) when the webhook reachesACTIVEstatus. Pass it asenrollment.idinside anenrollmentobject on all future recurring charge requests.To check enrollment status at any time, use the Get enrollment endpoint.
To cancel an enrollment, use the Cancel an enrollment endpoint.
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.
{
"amount": 1000,
"currency": "BRL",
"country": "BR",
"payment_method_id": "MP",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"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"
}{
"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"
}
}{
"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"
}{
"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": "[email protected]",
"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"
}
Single request, dual outcomeThis request produces two independent asynchronous notifications — one for the enrollment (sent to
enrollment.notification_url) and one for the payment (sent tonotification_url). They may arrive in any order. Persistenrollment.idonly after the enrollment notification reachesACTIVE. Grant entitlement only after the payment notification reachesPAID.
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.
{
"amount": 1000,
"currency": "BRL",
"country": "BR",
"payment_method_id": "MP",
"payment_method_flow": "DIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "11934254096"
},
"enrollment": {
"id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4"
},
"order_id": "ord-br-recurring-001",
"notification_url": "https://merchantsite.com/payments"
}{
"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"
}
Synchronous PAID for recurring charges
MPrecurringDIRECTcharges return the finalPAIDorREJECTEDstatus synchronously. You do not need to wait for a webhook before granting entitlement.
result_infoThe recurring charge response may include a
result_infoobject withuser_idandsub_payment_methodfields for reconciliation purposes. This field requires enablement — contact your dLocal account team to activate it.
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 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 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

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 | BRLTransaction currency in ISO 4217. | Yes |
country | String | BR Transaction country in ISO 3166. | Yes |
payment_method_id | String | PZ 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
{
"amount": 15,
"currency": "BRL",
"country": "BR",
"payment_method_id": "PZ",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Pedro Gomes",
"email": "[email protected]",
"document": "09996352986"
},
"order_id": "34545sk3483kqw0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"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

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

The screenshots illustrate a NuPay tokenized wallet redirect flow.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | No |
currency | String | BRLTransaction currency in ISO 4217. | Yes |
country | String | BR Transaction country in ISO 3166. | Yes |
payment_method_id | String | NU 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
{
"amount": 1000,
"currency": "BRL",
"country": "BR",
"payment_method_id": "NU",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"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": "[email protected]",
"label": "label",
"state": "state",
"token": ""
},
"order_id": "34545sk3483kqw0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"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’s BNPL in Brazil allows consumers to make purchases and pay them 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
| Pagaleve | |
|---|---|
| Min. amount | 40 BRL |
| Expiration time | 15 Minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow

The screenshots illustrate a generic Pagaleve redirect flow with installments.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | BRLTransaction currency in ISO 4217. | Yes |
country | String | BR Transaction country in ISO 3166. | Yes |
payment_method_id | String | IP 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 number 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 |
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
{
"amount": 1000,
"currency": "BRL",
"country": "BR",
"payment_method_id": "IP",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Pedro Gomes",
"email": "[email protected]",
"phone": "99910005427",
"document": "45993127899"
},
"order_id": "34545sk3483kqw0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/callback"
}{
"id": "R-4-90fb1e4f-cda4-io98-81a3-b85cb8ae9954",
"amount": 1000,
"currency": "BRL",
"payment_method_id": "IP",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "BR",
"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"
}{
"id": "R-4-90fb1e4f-cda4-io98-81a3-b85cb8ae9954",
"amount": 1000,
"currency": "BRL",
"payment_method_id": "IP",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "BR",
"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"
}Updated 19 days ago







