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 supported

Cards


Find all the information about the card supported capabilities.

Capabilities Process Card Payments

Alternative 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 codecurrency codeamount decimalsdocument namedocument formatdocument required?
BRBRL2CPF or CNPJ11 digits for CPF and 14 digits for CNPJ.
Full CPF validation
Yes

Cards supported

payment_method_idBrand IDNamepayment_method_typeDetailsAllowed FlowsLogo
CARDVIVisaCARDCredit Card ​DIRECT REDIRECT
CARDVDVisa DebitCARDDebit Card ​DIRECT REDIRECT
CARDMCMastercardCARDCredit Card ​DIRECT REDIRECT
CARDMDMastercard DebitCARDDebit Card ​DIRECT REDIRECT
CARDAEAmerican ExpressCARDCredit Card ​DIRECT REDIRECT
CARDELEloCARDCredit Card ​DIRECT REDIRECT
CARDMSMaestroCARDDebit Card ​DIRECT REDIRECT
CARDEDElo DebitCARDDebit Card ​DIRECT REDIRECT
CARDHIHipercardCARDCredit Card ​DIRECT REDIRECT
CARDDIDiscoverCARDCredit Card ​DIRECT REDIRECT
CARDLOAleloCARDDebit Card ​DIRECT
CARDVRVRCARDDebit Card ​DIRECT
ℹ️

To offer all the card options that may be available in your integration, send the payment_method_id as CARD.

Alternative Payment Method supported

payment_method_idNamepayment_method_typeDetailsAllowed FlowsLogo
BLBoletoTICKETCash PaymentDIRECT REDIRECT
QBBoleto HibridoTICKETDIRECT REDIRECTDIRECT REDIRECT
PQPixTICKETPixDIRECT REDIRECT
OFPix via Open Finance (PISP/ITP)TICKETPixREDIRECT
XAPix AutomáticoTICKETPixDIRECT REDIRECT
OSSmartPixWALLETPix solutionDIRECT REDIRECT
XVPix with BiometricsTICKETPix solutionREDIRECT
MPMercado PagoBANK_TRANSFEReWalletDIRECT REDIRECT
PZPicPayTICKETeWalletREDIRECT
NUNuPayWALLETeWalletREDIRECT
IPPagaleveTICKETBNPLREDIRECT


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_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.

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 CreditVisa DebitMastercard CreditMastercard DebitAmerican ExpressEloElo DebitMaestroHipercardDiscover
Minimum amount1 BRL1 BRL1 BRL1 BRL1 BRL1 BRL1 BRL1 BRL1 BRL1 BRL
RefundsYesYesYesYesYesYesYesYesYesYes
RecurringYesYesYesYesYesYesYesYesYesYes
Chargeback optionYesYesYesYesYesYesYesYesYesYes
Chargeback Dispute optionYesYesYesYesYesYesYesYesYesYes
Card UpdaterYesYesYesYesNoYesYesNoNoNo
DescriptorCan 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. amount1 BRL
Max. expiration time supportedUp to 8 days
Notification delayImmediate to 1 day, depending on the provider.
RefundsYes
FlowDIRECT
REDIRECT

Request parameters

PropertyTypeDescriptionMandatory?
amountNumberAmount to be charged.Yes
currencyStringBRL

Transaction currency in ISO 4217.
Yes
countryStringBR

Transaction country in ISO 3166.
Yes
payment_method_idStringBL

ID of the selected payment method.
Yes
payment_method_flowStringDIRECT or REDIRECTYes
payer.nameStringName of the payer.Yes
payer.emailStringEmail of the payer.Yes
payer.documentStringDocument of the payer.Yes
order_idStringID of the capture given by the merchant in their system. Think of it as an external ID of the capture.No
notification_urlStringNotifications 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.

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.

ElementTip
Ticket NumberProvide 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 AmountShould be relevant elements in the ticket. Users need to have that information very clearly.
Currency SymbolR$
Expiration dateDisplay this element clearly and visible enough. In Brazil, the date format is DD/MM/YYYY.
BarcodeIt 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 ViewAdd 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. amount1 BRL
Max. expiration time supportedUp to 6 days
Notification delayImmediate
RefundsYes
FlowDIRECT
REDIRECT

Request parameters

PropertyTypeDescriptionMandatory?
amountNumberAmount to be charged.Yes
currencyStringBRL

Transaction currency in ISO 4217.
Yes
countryStringBR

Transaction country in ISO 3166.
Yes
payment_method_idStringPQ

ID of the selected payment method.
Yes
payment_method_flowStringDIRECT or REDIRECTYes
payer.nameStringName of the payer.Yes
payer.emailStringEmail of the payer.Yes
payer.documentStringDocument of the payer.Yes
order_idStringID of the capture given by the merchant in their system. Think of it as an external ID of the capture.No
notification_urlStringNotifications 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.

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.

ElementTip
Currency and AmountShould be relevant elements in the ticket. Users need to have that information very clearly.
Currency SymbolR$
Expiration dateDisplay 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 formatBase 64

UX Flow Example

PIX UI built with the information in the example above.

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 activation

Mercado 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)

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. amount1 BRL
Max. expiration time supported5 minutes (authentication)
Notification delayImmediate
RefundsYes
FlowREDIRECT

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.

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)

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. amount1 BRL
Max. expiration time supported5 minutes (authentication)
Notification delayImmediate
RefundsYes
Enrollment flowREDIRECT
Recurring charge flowDIRECT — synchronous PAID

UX Flow

The screenshots illustrate a Mercado Pago tokenized wallet redirect flow.

The screenshots illustrate a Mercado Pago tokenized wallet redirect flow.

How it works

The Enrollment API for MP supports two patterns:

PatternWhen 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 Pago

Always send "type": "ON_DEMAND" for MP. 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 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 endpoint.

To cancel an enrollment, use the Cancel an enrollment endpoint.

Enrollment status codes:

statusstatus_codeDescription
PENDING100Enrollment created. User must complete authorization via the redirect URL.
ACTIVE200User approved. Enrollment ID is ready for recurring charges.
CANCELLED400The enrollment was cancelled.
REJECTED300The 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 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.


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

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

ℹ️

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.


Request parameters

PropertyTypeDescriptionMandatory?
amountNumberAmount to be charged.Yes
currencyStringBRL. Transaction currency.Yes
countryStringBR. Transaction country.Yes
payment_method_idStringMP. ID of the selected payment method.Yes
payment_method_flowStringREDIRECT (enrollment) or DIRECT (recurring charge).Yes
payer.nameStringName of the payer.Yes
payer.emailStringEmail of the payer.Yes
payer.documentStringDocument of the payer.Yes
enrollment.idStringEnrollment ID from a previous active enrollment, passed as enrollment.id inside an enrollment object.Yes, for recurring charges
enrollmentObjectInclude in POST /payments for Pattern 2 (payment + enrollment simultaneously).Yes, for Pattern 2
enrollment.external_idStringYour internal identifier for the enrollment.Yes
enrollment.typeStringMust be ON_DEMAND for MP.Yes
enrollment.notification_urlStringURL where dLocal sends enrollment status notifications.Yes
enrollment.callback_urlStringURL where the user lands after completing the enrollment redirect.No
wallet.deviceIdStringDevice fingerprint for anti-fraud. Recommended for all MP integrations. See Device ID for the web script and mobile SDK fingerprint structure.Recommended
order_idStringID given by the merchant in their system.No
notification_urlStringdLocal sends notifications for every status change to this URL.Yes
callback_urlStringURL 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. amount1 BRL
Max. expiration time supported1 day
Notification delayImmediate
RefundsYes
FlowREDIRECT

UX Flow

The screenshots illustrate a generic PicPay redirect flow through a QR Code.

The screenshots illustrate a generic PicPay redirect flow through a QR Code.

Request parameters

PropertyTypeDescriptionMandatory?
amountNumberAmount to be charged.Yes
currencyStringBRL

Transaction currency in ISO 4217.
Yes
countryStringBR

Transaction country in ISO 3166.
Yes
payment_method_idStringPZ

ID of the selected payment method.
Yes
payment_method_flowStringREDIRECTYes
payer.nameStringName of the payer.Yes
payer.emailStringEmail of the payer.Yes
payer.documentStringDocument of the payer.Yes
order_idStringID of the capture given by the merchant in their system. Think of it as an external ID of the capture.No
notification_urlStringNotifications 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. amount0.01 BRL
Notification delayImmediate
RefundsYes
FlowREDIRECT

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.

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.

The screenshots illustrate a NuPay tokenized wallet redirect flow.

Request parameters

PropertyTypeDescriptionMandatory?
amountNumberAmount to be charged.No
currencyStringBRL

Transaction currency in ISO 4217.
Yes
countryStringBR

Transaction country in ISO 3166.
Yes
payment_method_idStringNU

ID of the selected payment method.
Yes
payment_method_flowStringREDIRECTYes
payer.nameStringName of the payer.No
payer.emailStringEmail of the payer.No
payer.documentStringDocument of the payer.Yes
wallet.nameStringName of the payer's wallet.No
wallet.saveBooleanDetermines whether you want to receive a wallet token for future payments.No
wallet.captureBooleanDetermines if you want to capture the payment funds or not.No
wallet.usernameStringUsername of the payer's wallet account.No
wallet.emailStringEmail of the payer's wallet account.No
wallet.tokenStringToken of a previous payment from the same wallet.For tokenized payments, yes.
order_idStringID of the capture given by the merchant in their system. Think of it as an external ID of the capture.No
notification_urlStringNotifications 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. amount40 BRL
Expiration time15 Minutes
Notification delayImmediate
RefundsYes
FlowREDIRECT

UX Flow

The screenshots illustrate a generic PicPay redirect flow through a QR Code.

The screenshots illustrate a generic Pagaleve redirect flow with installments.

Request parameters

PropertyTypeDescriptionMandatory?
amountNumberAmount to be charged.Yes
currencyStringBRL

Transaction currency in ISO 4217.
Yes
countryStringBR

Transaction country in ISO 3166.
Yes
payment_method_idStringIP

ID of the selected payment method.
Yes
payment_method_flowStringREDIRECTYes
payer.nameStringName of the payer.Yes
payer.emailStringEmail of the payer.Yes
payer.phoneStringPhone number of the payer.Yes
payer.documentStringDocument of the payer.Yes
order_idStringID of the capture given by the merchant in their system. Think of it as an external ID of the capture.No
descriptionStringDescription of the items purchased.No
notification_urlStringNotifications will be sent in every change of status of a payment to the notification_url specified by the merchant.Yes
callback_urlStringURL 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"
}


Did this page help you?