Split payments

Learn how to accept and split payment into your platform.

Payments methods
& fees

Learn about available payment methods and fee types.

Payment methods Fee liability

Split at sales


Split the funds into different accounts when the payment is made.

Read information

Split at authorizations
& captures

Understand payment authorization and capture scenarios.

Read information

Payment methods and fees

Payment methods

The availability of payment methods supported by dLocal may differ from country to country.

All of them are available for Split payment. If you would like to view detailed information for each country, please refer to the Coverage section.

Fee liability

There could be various types of fees between dLocal and the business, such as:

  • Processing fee
  • Installment fee
  • Advancement fee

Rules definition

We can assist you in deciding which account will be charged.

  • User account: The fee will be calculated based on a percentage of the amount sent, which will be split among the relevant accounts as specified in the Splits Object.
  • Liable account: The whole amount will be charged from the Liable account that is configured under the Platform account.

Split at sales

The Platform account owns the solution and handles payments and funds for itself and its User accounts. When making the payment, two parties are taken into account:

  1. Standard payment flow. The Payins solution standard flow is used to accept funds from cards and alternative payment methods.
  2. Split payment configuration. You need to include the Splits Object so that funds will be split into different accounts according to your request and its configurations.

Request information detail

When creating a payment, it is necessary to include these fields of the Splits Object in the request:

Splits Object

Inside the object, you can add the number of IDs you need.

Body ParameterTypeRequired?Description
account_idStringYesDestination account’s ID.
This ID can belong to either a User account or a Liable account, as required.
amountNumberYesAmount information in the currency of the payment.

The split can be made between multiple User accounts, not only between the Platform account and one unique User account.

Refunds and chargebacks will use the same split information sent in the payment creation.

Example Request

{
    "amount": 100.00,
    "currency":"BRL",
    "country": "BR",
    "payment_method_id":"CARD",
    "payment_method_flow":"DIRECT",
    "payer":{
        "name":"Thiago Gabriel",
        "email":"[email protected]",
        "document":"53033315550"
    },
    "card":{
        "holder_name":"Thiago Gabriel",
        "number":"4111111111111111",
        "cvv":"123",
        "expiration_month":10,
        "expiration_year":2040,
        "capture":"false"
    },
    "order_id":"657434343",
    "splits":[
        {
            // Seller A account
            "account_id": "qwertyuiop12345A",
            "amount": 20.00
        },
        {
            // Seller B account
            "account_id": "qwertyuiop12345B",
            "amount": 30.00        },
        {
            // Liable account
            "account_id": "qwertyuiop12345XB",
            "amount": 50.00        }
     ]
}

After payments are made, the funds will be registered in the destination account but will remain in transit until reaching the settlement period. Then the funds will become available for movement.

Split at authorizations and captures

When conducting authorization and capture transactions, it's necessary to send the Splits Object in both authorization and capture requests.

The purposes are:

  • The split of an authorization is used to calculate fees and taxes. It does not indicate the final amounts to be transferred to the destination MIDs.
  • The split of the capture represents the effective transfer of funds.

Capture types

Here are some scenarios for capturing payments and instructions on how to send the Splits Object accordingly:

TypeDetails
Full amount captureWe consider a full amount capture when the capture amount is the same as the authorization. Include the Splits Object in both authorization and capture requests.
Partial amount captureIf you capture only a partial amount compared to the authorization step, send the new Splits Object in the capture request, and the amount cannot exceed the one in the authorization for each account. For multiple captures, the total amount cannot exceed the one in the authorization for each account.
Partial account captureIf you only capture part of the accounts, send the new Splits Object in the capture request. The account ids should be the ones that were included in the auth requests.

Create an authorization

The following is an extension of the Authorization API documentation.

Request fields, response fields, and error codes are the same as Split at sales. The main difference is that, since it is an authorization and not a sale, we have to set the capture field as false.

Example request

To create an authorization, simply create a regular card payment with the parameter capture = FALSE within the Card object and add the Splits Object.

{
   "amount": 100.00,
   "currency": "BRL",
   "country":"BR",
   "payment_method_id":"CARD",
   "payment_method_flow":"DIRECT",
   "payer": {
       "name": "Thiago Gabriel",
       "email": "[email protected]",
       "document": "53033315550"
   },
   "card": {
       "holder_name": "Thiago Gabriel",
       "number": "4111111111111111",
       "cvv": "123",
       "expiration_month": 10,
       "expiration_year": 2040,
       "capture": "false"
   },
   "order_id":"657434343",
   "splits": [
       {
           "account_id": "AC-5678-1234-5432",
           "amount": 50
       },
       {
           "account_id": "AC-6789-3344-1122",
           "amount": 50
       }
   ]
}
{
    "id": "D-4-e2227981-8ec8-48fd-8e9a-19fedb08d73a",
    "amount": 100,
    "currency": "BRL",
    "payment_method_id": "CARD",
    "payment_method_type": "CARD",
    "payment_method_flow": "DIRECT",
    "country": "BR",
    "card": {
        "holder_name": "Thiago Gabriel",
        "expiration_month": 10,
        "expiration_year": 2040,
        "brand": "VI",
        "last4": "1111"
    },
    "created_date": "2019-02-06T21:04:43.000+0000",
    "approved_date": "2019-02-06T21:04:44.000+0000",
    "status": "AUTHORIZED",
    "status_detail": "The payment was authorized",
    "status_code": "600",
    "order_id": "657434343",
    "notification_url": "http://merchant.com/notifications"
}

Capture an authorization

The following is an extension of the Authorization API documentation.

Splits Object must be included in the request. The amount included in the Splits Object cannot be higher than the amount authorized for each account individually.

Example request

{
   "authorization_id": "PAY2323243343543",
   "amount":100.00,
   "country": "BR",
   "order_id":"657434343",
   "splits": [
       {
           "account_id": "AC-5678-1234-5432",
           "amount": 50
       },
       {
           "account_id": "AC-6789-3344-1122",
           "amount": 50
       }
   ]
}
{
    "id": "D-4-09f52dd0-5cfa-4b0e-a471-1608ea0dba24",
    "amount": 100.00,
    "currency": "BRL",
    "country": "BR",
    "created_date": "2019-02-07T13:47:06.000+0000",
    "approved_date": "2019-02-07T13:47:06.000+0000",
    "status": "PAID",
    "status_detail": "The payment was paid",
    "status_code": "200",
    "order_id": "657434343",
    "authorization_id": "PAY2323243343543"
}