dLocal Integration Guide

After you complete this integration, you can process card transactions across many markets through dLocal using your existing Braintree integration.

PayPal's partnership with dLocal enables merchants to leverage their existing Braintree integration to process transactions through the PayPal Payment Orchestration platform. This guide helps developers with an existing Braintree integration use PayPal's Payment Orchestration platform to process transactions through dLocal.

FeaturesAnchorIcon

The following topics describe the capabilities that this dLocal integration supports.

Core transaction lifecycleAnchorIcon

The following table describes the support for core transaction lifecycle operations with this integration.

Legend: ✅ Supported | ❌ Not supported | ⚠️ Conditional or varies by configuration

CapabilitySupportNotes
Charge (single step)Authorize and capture in the same call.
Charge (dual step)Authorization, followed by a separate capture call
Standalone authorizationCapture the authorization within 7 days.
Capture (full)Capture a previously authorized transaction.
Partial captureSupported in all countries. To confirm enablement, contact your Braintree account manager (AM) or technical account manager (TAM).
Capture greater than authorized amount
Adjust Authorization API (incremental auth or partial reversal)

Voids and refundsAnchorIcon

The following table describes the support for void and refund operations with this integration.

Legend: ✅ Supported | ❌ Not supported | ⚠️ Conditional or varies by configuration

CapabilitySupportNotes
Full void (auth reversal)Voids cancel an authorized transaction prior to settlement.
Partial void
Void on settled transactionUse refund instead.
Full refundRefunds cannot exceed the settled amount.
Partial refundRefunds cannot exceed the settled amount.
Multiple refunds
Blind credits (refunds for transactions that were processed elsewhere)Refunds must reference the original transaction.

Payment instruments and methodsAnchorIcon

The following table describes the support for payment instruments and methods with this integration.

Legend: ✅ Supported | ❌ Not supported | ⚠️ Conditional or varies by configuration

CapabilitySupportNotes
Credit cardsFor card brands by country, see the country-specific requirements.
Debit cardsFor card brands by country, see the country-specific requirements.
Prepaid cards⚠️Supported where the processor supports prepaid cards
PLCCs
Gift cards
Apple Pay
Google Pay
Android Pay or Samsung Pay
Venmo or PayPal

Data, descriptors, and fraud signalsAnchorIcon

The following table describes the support for data, descriptors, and fraud signals with this integration.

Legend: ✅ Supported | ❌ Not supported | ⚠️ Conditional or varies by configuration

CapabilitySupportNotes
Address Verification System (AVS) and Card Verification Value (CVV) response handlingAVS and CVV results are returned in standard response fields.
Dynamic descriptors⚠️Varies by country
Network tokensSupported in all countries. To enable this feature, contact AM o TAM. For more information, see Network token support.
Level 2, Level 3, or lodging data
3D Secure (3DS)⚠️Supported in all countries.

Required for all initial transactions in Indonesia and Japan and for debit card transactions in Brazil.

For more information, see Country-specific requirements and limitations.

VerificationsAnchorIcon

The following table lists the verifications that this integration supports.

Legend: ✅ Supported | ❌ Not supported | ⚠️ Conditional or varies by configuration

CapabilitySupportNotes
$0 verification
Non-zero dollar verification

Before you beginAnchorIcon

This integration requires setup on both Braintree and dLocal. Before you begin the integration, complete these setup tasks.

  • On Braintree: To process card transactions through dLocal, you need currency-specific Braintree merchant accounts for use in your integration. For help with this setup, contact your AM or TAM.
  • On dLocal: Each merchant must have an account with dLocal. After you create your dLocal account, work with your AM or TAM to securely share the account's API and integration keys with Braintree. dLocal provides separate API keys for sandbox and production environments. For more information about setting up a dLocal account, see the dLocal API documentation

Also review the following dLocal-specific requirements to ensure that you are in compliance before processing transactions through dLocal:

  • Network tokens: To enable Braintree-managed network tokens for your account, contact your AM or integration engineer. Merchant-provided ("Bring Your Own") network tokens must also be enabled through your dLocal account. For more information, see Network tokens.
  • 3DS requirements: In Indonesia and Japan, 3DS is required for all initial transactions. In Brazil, 3DS is required for debit card transactions. To enable 3DS for additional markets, contact your Braintree AM or TAM.
  • Tax identifiers: Argentina, Brazil, and Japan require a taxIdentifiers value for every transaction. For more information, see Tax identifiers.
  • Decimal currency support: Some countries do not support decimal amounts. For those countries, the amount field must be an integer. For more information, see the Decimals column in the country-specific requirements table.
  • Installment limits: Braintree supports a maximum of 48 installments. dLocal enforces country-level limits: Mexico supports only 3, 6, 9, 12, or 18 installments; all other countries support 1–12 installments.

TransactionsAnchorIcon

After you complete setup, use the Braintree SDK or GraphQL API to create and manage transactions.

For general information about Braintree transactions, see:

Transaction creationAnchorIcon

Use the Braintree SDK or GraphQL API to create a transaction. The following sections list the fields that dLocal transactions require and how they map to dLocal's API. Add these values to your existing Braintree transaction creation call.

Creating a dLocal transaction requires the following fields.

FieldLocationHow to provideNotes
amountTransactionInclude in transactionThe transaction amount must be an integer in countries where decimals are not supported. For more information, see the Decimals column in the country-specific requirements table.
customer.firstNameCustomerCreate the Braintree customer first. If you cannot add this value, contact your Braintree AM or TAM.
customer.lastNameCustomerCreate the Braintree customer first. If you cannot add this value, contact your Braintree AM or TAM.
customer.emailCustomerCreate the Braintree customer first. If you cannot add this value, contact your Braintree AM or TAM.
billing.countryCodePayment methodInclude during tokenizationTwo-letter ISO country code
taxIdentifiersCustomer If you cannot add this value, contact your Braintree AM or TAM.Required in Argentina, Brazil, and Japan. For more information, see Tax identifiers.
card.cardholderNamePayment methodInclude during tokenizationName as it appears on the card

Customer creationAnchorIcon

Customer creation is a mandatory step for the dLocal integration, and you can use either the Braintree SDK or GraphQL API to do it. When you create a customer, dLocal requires the name (first and last) and email, even though they are not required fields in Braintree. If you do not provide a first or last name, or you do not provide an email address, all transactions that customer creates could fail (PROCESSOR_DECLINED).

Vaulted payment methodsAnchorIcon

Vaulting a tokenized payment method creates a reusable token that can be authorized or charged multiple times. A tokenized payment method can also be vaulted during authorization. For more information, see the vault guide (SDK) or the vault guide (GraphQL).

Tax identifiersAnchorIcon

Argentina, Brazil, and Japan require the taxIdentifiers field. The tax identifier can contain dashes and dots, or it can be passed without them.

Examples:

  • Brazil: 853.513.468-93 (can also be passed as 85351346893)
  • Argentina: 30-52135353-1 (can also be passed as 30521353531)

You can provide the tax identifier in 2 ways:

  • On a customer using the SDK or GraphQL API: You can add this value when you create or update a customer. After you add it, the taxIdentifier is securely vaulted and used during the transaction automatically.
  • On a transaction using the SDK or GraphQL API: You must provide the taxIdentifiers on every call. These are not vaulted and are only used for processing.

InstallmentsAnchorIcon

Braintree supports a maximum of 48 installments. dLocal enforces country-level limits:

  • Merchants in Mexico can offer only 3, 6, 9, 12, or 18 installments.
  • All other countries can offer 1–12 installments.

Pass the desired installment count using the installmentCount field on the transaction.

Transaction object supportAnchorIcon

Not all Braintree transaction operations are available with dLocal. The following table lists the transaction request operations that this integration supports.

Legend: ✅ Supported | ❌ Not supported

Transaction operationSupport
Sale
Find
Void
Refund
Submit for settlement
Clone
Search
Adjust Authorization
Hold in Escrow
Release from Escrow
Submit for Partial Settlement
Cancel Release

Transaction status mappingAnchorIcon

The following table maps dLocal response statuses to Braintree transaction statuses. For general information about Braintree result objects, see result objects.

OperationdLocal responseBraintree transaction statusAdditional information
AuthorizeSuccessfulAUTHORIZEDDual-step transaction. Capture payment within 7 days.
AuthorizeDeclinedPROCESSOR_DECLINEDHard decline from acquirer
AuthorizeAPI error or unreachableFAILEDYou can configure a retry option on Braintree or implement your own retry logic.
ChargeSuccessfulSETTLEDYou can configure this as a single step or a dual step.
ChargeDeclinedPROCESSOR_DECLINEDHard decline from acquirer
ChargeAPI error or unreachableFAILEDIn this rare event, Braintree reconciles the transaction. For more information, see FAILED status during charge.
CaptureSuccessfulSETTLED
CaptureDeclinedSETTLEMENT_DECLINEDAlthough rare, this can be more common if the authorization has expired.
CaptureAPI error or unreachableSETTLINGIn this rare event, Braintree reconciles the transaction. Do not ship goods or provide service until the status is SETTLED. For more information, see SETTLING status with HTTP errors.
RefundSuccessfulSETTLED
RefundDeclinedSETTLEMENT_DECLINEDThis can occur if the transaction is disputed or if a refund is attempted after the refund window.
RefundAPI error or unreachableSETTLINGIn this rare event, Braintree reconciles the transaction. For more information, see SETTLING status with HTTP errors.
VoidAnyVOIDED
VerifyCardSuccessfulVERIFIED
VerifyCardDeclinedPROCESSOR_DECLINED
VerifyCardAPI error or unreachableFAILED

SETTLING status with HTTP errorsAnchorIcon

In rare cases when dLocal returns HTTP 4xx or 5xx errors after a successful authorization, the transaction remains in SETTLING status. This can happen due to network or server overload or if dLocal is unavailable.

Reconciliation logic: Braintree queries dLocal for transaction information periodically. If dLocal confirms the transaction, Braintree retries the operation. If dLocal declines, Braintree marks the transaction as SETTLEMENT_DECLINED.

Possible outcomes:

  • If dLocal approves, the status changes to SETTLED.
  • If dLocal declines, the status changes to SETTLEMENT_DECLINED.

FAILED status during chargeAnchorIcon

If Braintree receives no inline response from dLocal due to network errors or timeouts, the transaction status is FAILED. Braintree reconciles this transaction. If the transaction is identified as successful during reconciliation, the status is updated from FAILED to SETTLED, and a refund is automatically initiated. The original transaction remains SETTLED. This operation can be retried. For more information, see Retries.

RetriesAnchorIcon

Follow these guidelines when handling retries for dLocal transactions:

  • Do not build a duplicate capture or refund retry loop when you see success: true but the status is SETTLING.
  • Always confirm that the transaction status is SETTLED before you ship goods or provide service.
  • You can configure retries on FAILED transactions at the merchant account level. For help with configuration, contact your TAM.

Network tokensAnchorIcon

Network tokens replace raw card numbers with a payment-method-specific token, which can improve authorization rates and reduce fraud. dLocal supports network tokens, and the integration includes 2 provisioning options:

  • Braintree-managed network tokens: Braintree provisions and manages network tokens on your behalf. To enable Braintree-managed network tokens for your account, contact your AM or integration engineer. For more information, see the Getting Started with Network Tokens guide.
  • Bring Your Own Network Token: Use network tokens that you've provisioned through another provider. You must also enable third-party network tokens on the merchant's account through dLocal. To coordinate enablement, contact your Braintree AM or TAM.

Response codesAnchorIcon

Braintree can display only a limited number of response codes, because dLocal controls transaction outcomes. When dLocal decline codes do not map to equivalent Braintree decline codes, Braintree returns the code 2000 with this message: Do Not Honor.

To find the details for the dLocal response message, use one of these options:

  • SDK:additional_processor_response. For more information, see the SDK documentation.
  • GraphQL:PaymentStatusEvent.processorResponse.additionalInformation. For more information, see the GraphQL documentation. For more information about the approval and decline outcomes (TransactionSettlementProcessorResponse and TransactionAuthorizationProcessorResponse), see the GraphQL APi refeference.

Test cardsAnchorIcon

Braintree provides a set of test card numbers for sandbox testing. Use these test cards to validate your integration in the sandbox environment before going live. With the dLocal integration, Braintree test card numbers are automatically mapped to dLocal test card numbers for end-to-end testing.

Credit cards: SuccessAnchorIcon

The following test cards return a successful response in the sandbox environment.

Card brandBraintree test numberAutomatically mapped?
Mastercard5555555555554444
Visa4012888888881881

Credit cards: FailureAnchorIcon

The following test cards return a declined response in the sandbox environment.

ScenarioBraintree test numberAutomatically mapped?Braintree result
Insufficient funds or decline4000111111111115PROCESSOR_DECLINED
Invalid data5105105105105100PROCESSOR_DECLINED

Country-specific requirements and limitationsAnchorIcon

This integration supports transactions in the following countries: Argentina, Bolivia, Brazil, Chile, Colombia, Costa Rica, Dominican Republic, Ecuador, El Salvador, Guatemala, Honduras, Indonesia, Japan, Malaysia, Mexico, Nicaragua, Panama, Paraguay, Peru, Philippines, Thailand, Uruguay, and Vietnam. Some countries have different requirements for card brands, 3DS, tax identifiers, or decimal handling. The following table describes these requirements and limitations by country.

CountryCredit cardsDebit cards3DSTax ID requiredDecimals supportedAdditional notes
ArgentinaMastercard, Visa, American Express, Agencard, Cabal, Maestro, Naranja, Nativa, Tarjeta ShoppingMastercard, Visa, Cabalamount must be an integer.
BoliviaMastercard, VisaMastercard, Visaamount must be an integer.
BrazilMastercard, Visa, Discover, American Express, Elo, JCB, Aura, Hipercard, Mercado Libre CardMastercard, Visa, Maestro, EloRequired for debit transactions
ChileMastercard, Visa, Magna, CMR Falabella, Líder Mastercard, Diners Club ChileMastercard, Visa, American Express, RedCompraamount must be an integer.
ColombiaMastercard, Visa, American Express, Codensa, Diners ClubMastercard, Visaamount must be an integer.
Costa RicaMastercard, Visa, Discover, American Express, JCB, DinersMastercard, Visaamount must be an integer.
Dominican RepublicMastercard, Visa, American ExpressMastercard, Visaamount must be an integer.
EcuadorMastercard, Visa, Alia, Diners, American ExpressMastercard, Visa
El SalvadorMastercard, Visa, Discover, American Express, JCB, DinersMastercard, Visa
GuatemalaMastercard, Visa, JCB, American Express, Discover, DinersMastercard, Visaamount must be an integer.
HondurasMastercard, Visa, JCB, American Express, Discover, DinersMastercard, Visaamount must be an integer.
IndonesiaMastercard, Visa, JCBMastercard, VisaRequired for all initial transactions
JapanMastercard, Visa, Diners, American Express, JCBMastercard, VisaRequired for all initial transactions
MalaysiaMastercard, Visa, Union PayMastercard, Visa
MexicoMastercard, Visa, American Express, CarnetMastercard, Visa, CarnetInstallments limited to 3, 6, 9, 12, and 18.
NicaraguaMastercard, Visa, American Express, Diners, Discover, JCBMastercard, Visaamount must be an integer.
PanamaMastercard, Visa, American Express, Diners, Discover, JCBMastercard, Visa, Clave
ParaguayMastercard, Visa, American ExpressMastercard, Visaamount must be an integer.
PeruMastercard, Visa, American Express, DinersMastercard, Visaamount must be an integer.
PhilippinesMastercard, VisaMastercard, Visa
ThailandMastercard, Visa, Union Pay, Diners, JCBMastercard, Visaamount must be an integer.
UruguayMastercard, Visa, American Express, Lider, OCAMastercard, Visaamount must be an integer.
VietnamMastercard, Visa, JCB, NapasMastercard, Visa

Next stepsAnchorIcon

After you complete your integration, use the following resources to test and go live.

The following resources provide additional information about dLocal and Braintree transactions.