Brazil / Food vouchers

Support food voucher payments for Brazil’s benefit card programs.

Food vouchers acceptance in Brazil

Brazil has a well-established market for employee benefit cards linked to the PAT Program (Programa de Alimentação do Trabalhador). The program encourages companies to provide prepaid cards for food-related expenses, offering tax advantages and supporting employee well-being.

Acceptance of these cards is restricted by a merchant's business type, which is validated by their tax ID (CNPJ). dLocal's platform supports processing these cards for marketplaces, but each individual restaurant or supermarket must be onboarded through dLocal platform API.

Onboarding a client

To enable a sub-merchant (restaurant, supermarket, etc.) to accept benefit cards, they must first be created on the dLocal platform via the Create a Client API. Each successful creation returns a unique dLocal client ID, which must be used for all subsequent payment processing for that sub-merchant.

Create a client

This endpoint is used to create a new sub-merchant client on the dLocal platform.


URL Selector with Opacity
Post

Request fields

FieldRequiredTypeDescription
tax_idYesStringThe client's Brazilian tax number (CNPJ).
external_referenceYesStringA unique ID for the client from your internal system (Length ≤ 100).
nameYesStringThe client's name (Length ≤ 100).
countryYesStringThe client's country. Must be BR.
set_up.payment_methods.payment_method_idYesStringThe ID of the benefit card provider to enable.

Possible values: LO, VR, UL, TI.
set_up.payment_methods.enabledYesBooleanSet to true to enable the payment method.
notification_urlNoStringURL for dLocal to send client status and payment method status notifications.

Example request

{
  "tax_id": "27327331561",
  "external_reference": "rest12345",
  "name": "Restaurant Name",
  "country": "BR",
  "set_up": {
    "payment_methods": [
      {
        "payment_method_id": "VR",
        "enabled": true
      },
      {
        "payment_method_id": "LO",
        "enabled": true
      }
    ]
  },
  "notification_url": "http://merchantsite.com/notifications"
}

Onboarding Status

The client and their payment methods will have statuses that change as the onboarding process progresses. Webhooks will be sent to the notification_url upon these changes.

Client statuses

  • CREATING (300)
  • APPROVED (200): When at least one provider is approved.
  • CANCELLED (601, 602)

Payment method statuses

  • CREATING (300)
  • PENDING (103)
  • APPROVED (200): The client is ready to process payments with this method.
  • REJECTED (500)

Example client status notification:

{
  "id": "CL-84e33f3f-e89b-4450-9098-242edb6a0fb7",
  "event_type": "CLIENT_STATUS_UPDATE",
  "payload": {
    "status": "APPROVED",
    "status_code": 200,
    "status_detail": "approved"
  }
}

Processing payments

dLocal acts as a gateway, routing payment details and the sub-merchant's credentials to the corresponding benefit card company.

Request parameters

The following parameters are used when submitting a payment request to the dLocal Payments API.

FieldRequiredTypeDescription
amountYesNumberAmount to be charged.
currencyYesStringMust be BRL.

Transaction currency in ISO 4217 .
countryYesStringMust be BR.

Transaction country in ISO 3166 .
payment_method_idYesStringThe ID of the selected benefit card: UL, LO, TI, VR.
payment_method_flowYesStringMust be DIRECT.
payer.nameYesStringName of the payer (Length ≤ 200).
submerchant.merchant_referenceYesStringThe external_reference provided during client creation.
card.holder_nameYesStringCardholder's full name.
card.expiration_monthYesint32Card's expiration month.
card.expiration_yearYesint32Card's expiration year.
card.numberYesStringCard number without separators.
card.cvvNoStringCard verification value (required for VR).

Example request

{
  "amount": 100.00,
  "currency": "BRL",
  "country": "BR",
  "payment_method_id": "VR",
  "payment_method_flow": "DIRECT",
  "payer": {
    "name": "John Doe"
  },
  "submerchant": {
    "merchant_reference": "rest12345"
  },
  "card": {
    "holder_name": "John Doe",
    "expiration_month": 12,
    "expiration_year": 2025,
    "number": "1234567890123456",
    "cvv": "123"
  }
}