Recurring payments

Learn how to integrate Pix with Biometrics for seamless recurring payments with dLocal.

After the user completes the one-time enrollment, merchants can initiate subsequent Pix with Biometrics payments using the enrollment ID returned by dLocal. This identifier links the user to their authorized bank account and must be included in every payment request.

For each payment, the user must complete the biometric challenge (face or fingerprint verification) to authorize the transaction.

Flow

User flow

The screenshots illustrate an example of the Pix with Biometrics payment flow.

The screenshots illustrate an example of the Pix with Biometrics payment flow.

Example request

URL Selector with Opacity
Post
curl -X POST \
   -H 'X-Date: {X-Date}' \
   -H 'X-Login: {X-Login}' \
   -H 'X-Trans-Key: {X-Trans-Key}' \
   -H 'Content-Type: application/json' \
   -H 'X-Version: 2.1' \
   -H 'User-Agent: MerchantTest / 1.0 ' \
   -H 'Authorization: V2-HMAC-SHA256, Signature: {Signature}' \
   -d '{body}'
   https://api.dlocal.com/payments

{
  "amount": 100,
  "currency": "BRL",
  "country": "BR",
  "payment_method_id": "XV",
  "payment_method_flow": "REDIRECT",
  "payer": {
    "name": "Thiago Gabriel",
    "document": "53033315550",
    "email": "[email protected]"
  },
  "enrollment": {
    "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4"
  },
  "order_id": "221124442gg",
  "description": "T-shirt",
  "notification_url": "http://www.merchantsite.com/notifications",
  "callback_url": "http://merchantsite.com/callback"
}
{
  "id": "R-4-41f8628f-b6ec-4c02-96d5-c5b03cac7cz0",
  "amount": 100,
  "currency": "BRL",
  "payment_method_id": "XV",
  "payment_method_type": "TICKET",
  "enrollment": {
    "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4"
  },
  "payment_method_flow": "REDIRECT",
  "country": "BR",
  "created_date": "2025-01-01T20:37:20.000+0000",
  "status": "PENDING",
  "status_detail": "The payment is pending.",
  "status_code": "100",
  "order_id": "221124442gg",
  "notification_url": "http://merchantsite.com/notifications"
}
{
  "id": "R-4-41f8628f-b6ec-4c02-96d5-c5b03cac7cz0",
  "amount": 100,
  "status": "PAID",
  "status_detail": "The payment is paid",
  "status_code": "200",
  "currency": "BRL",
  "country": "BR",
  "payment_method_id": "XV",
  "payment_method_flow": "REDIRECT",
  "payment_method_type": "TICKET",
  "order_id": "221124442gg",
  "enrollment": {
    "id": "E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4"
  }
}

Request params

FieldTypeDescriptionRequired
amountNumberAmount to be charged.Yes
currencyStringBRL or USD

Transaction currency in ISO 4217.
Yes
countryISO 3166-1 alpha-2 codeBR

Transaction country in ISO 3166.
Yes
payment_method_idStringXV

ID of the selected payment method.
Yes
payment_method_flowStringREDIRECTYes
Payer Object
payer.nameString (max. 100)Name of the payer.Yes
payer.document11–14 digits
Full CPF validation
Document of the payer (CPF or CNPJ).Yes
payer.emailString (max. 100)Email of the payer.Yes
Enrollment Object
enrollment.idStringID corresponding to the enrollment present in the asynchronous notification of the enrollment flow.Yes
order_idStringID of the capture given by the merchant in their system (external capture ID).No
descriptionStringDescription of the items purchased.No
notification_urlString (max. 200)Notifications will be sent on every status change to the notification_url specified by the merchant.No
callback_urlStringURL where the user will be redirected after transaction approval.Yes