---
updatedAt: 2026-07-27T09:12:27.000Z
agentTools:
  projectIndex: https://docs.dlocal.com/llms.txt
---

# Virtual Accounts

Learn how to start receiving virtual account payments.

Virtual Accounts solutions are a modern and efficient way for merchants to streamline payment collection and reconciliation.

A virtual account is a unique identifier, often resembling a bank account number, assigned to specific customers or sub-merchants. These accounts enable precise tracking of incoming payments, simplifying the process of matching funds with the correct virtual account holder.

# Bank Virtual Accounts

Fixed account numbers that are issued to specific merchants or customers and associated with a bank. The use cases for the bank virtual accounts are merchants with business customers, marketplace/platform merchants with sub-merchants, and merchants with retail customers.

<br />

[block:html]
{
  "html": "<html lang=\"es\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Pestañas Verticales con Banderas</title>\n    <style>\n        body {\n            font-family: \"Roboto\", sans-serif;\n            margin: 0;\n            padding: 20px;\n        }\n\n        .tabs {\n            display: flex;\n            min-height: 300px;\n            border: 1px solid #e4e8eb;\n            position: relative;\n            text-align: left;\n        }\n\n        .tabs input[type=\"radio\"] {\n            display: none !important;\n        }\n\n        .tab-labels {\n            display: flex;\n            flex-direction: column;\n            padding: 10px;\n            padding-top: 50px;\n            border-right: 1px solid #e4e8eb;\n            min-width: 200px;\n            list-style-type: none;\n            padding-left: 0;\n            text-align: left;\n            margin: 0;\n            align-items: flex-start;\n        }\n\n        .tab-labels label {\n            display: flex;\n            align-items: center;\n            justify-content: flex-start;\n            padding: 10px;\n            background-color: white;\n            color: #000000;\n            cursor: pointer;\n            font-size: 16px;\n            text-align: left;\n            margin-bottom: 5px;\n            border-left: 4px solid transparent;\n            width: 100%;\n            transition: all 0.3s ease;\n        }\n\n        .tab-labels label:hover,\n        .tab-labels input:checked + label {\n            background-color: #f1f1f1;\n            color: #3b6eea;\n            font-weight: bold;\n            border-left: 4px solid #3b6eea;\n        }\n\n        .tab-labels img {\n            height: 16px;\n            width: auto;\n            margin-right: 8px;\n            margin-left: 2px;\n        }\n\n        .content-area {\n            flex: 1;\n            padding: 20px;\n            padding-left: 40px;\n            text-align: left;\n        }\n\n        .content {\n            display: none;\n        }\n\n        .tabs input[id=\"tab-1\"]:checked ~ .content-area #content-1,\n        .tabs input[id=\"tab-2\"]:checked ~ .content-area #content-2,\n        .tabs input[id=\"tab-3\"]:checked ~ .content-area #content-3,\n        .tabs input[id=\"tab-4\"]:checked ~ .content-area #content-4,\n        .tabs input[id=\"tab-5\"]:checked ~ .content-area #content-5,\n        .tabs input[id=\"tab-6\"]:checked ~ .content-area #content-6,\n        .tabs input[id=\"tab-7\"]:checked ~ .content-area #content-7 {\n            display: block;\n        }\n\n        /* Estilos para dispositivos móviles */\n        @media (max-width: 768px) {\n            .tabs {\n                flex-direction: column;\n            }\n\n            .tab-labels {\n                flex-direction: column;\n                min-width: 100%;\n                padding-top: 10px;\n                border-right: none;\n                border-bottom: 1px solid #e4e8eb;\n            }\n\n            .tab-labels label {\n                width: 100%;\n                margin-right: 0;\n                margin-bottom: 5px;\n                border-left: 4px solid transparent;\n            }\n\n            .content-area {\n                padding-left: 20px;\n                padding-right: 20px;\n            }\n\n            table {\n                font-size: 14px;\n            }\n\n            th, td {\n                padding: 5px;\n            }\n        }\n    </style>\n\n</head>\n<body>\n    <div class=\"tabs\">\n        <input id=\"tab-1\" type=\"radio\" name=\"tab\" checked>\n        <input id=\"tab-2\" type=\"radio\" name=\"tab\">\n        <input id=\"tab-3\" type=\"radio\" name=\"tab\">\n        <input id=\"tab-4\" type=\"radio\" name=\"tab\">\n        <input id=\"tab-5\" type=\"radio\" name=\"tab\">\n        <input id=\"tab-6\" type=\"radio\" name=\"tab\">\n\n        <div class=\"tab-labels\">\n            <label for=\"tab-1\">\n                <img src=\"https://www.dlocal.com/wp-content/uploads/2020/04/brazil2.svg\" alt=\"Brazil flag\">\n                Brazil\n            </label>\n            <label for=\"tab-2\">\n                <img src=\"https://www.dlocal.com/wp-content/uploads/2020/04/mexico.svg\" alt=\"Mexico flag\">\n                Mexico\n            </label>\n            <label for=\"tab-3\">\n                <img src=\"https://dlocal.com/wp-content/uploads/2020/04/indonesia.svg\" alt=\"Indonesia flag\">\n                Indonesia\n            </label>\n            <label for=\"tab-4\">\n                <img src=\"https://dlocal.com/wp-content/uploads/2021/04/philippines.svg\" alt=\"Philippines flag\">\n                Philippines\n            </label>\n            <label for=\"tab-5\">\n                <img src=\"https://dlocal.com/wp-content/uploads/2020/04/nigeria.svg\" alt=\"Nigeria flag\">\n                Nigeria\n            </label>\n                        <label for=\"tab-6\">\n                <img src=\"https://dlocal.com/wp-content/uploads/2021/04/vietnam.svg\" alt=\"Vietnam flag\">\n                Vietnam\n            </label>\n        </div>\n\n        <div class=\"content-area\">\n            <div id=\"content-1\" class=\"content\">\n                <h2>Brazil</h2><hr><br>\n                  <p><strong>Minimum Amount:</strong> 1 BRL</p>\n                  <p><strong>Notification delay:</strong> Immediate</p>\n                  <p><strong>Flow:</strong> <code>REDIRECT</code>, <code>DIRECT</code></p>\n                  <p><strong>Payment Method Type:</strong> <code>BANK_TRANSFER</code></p>\n                  <p><strong>Payment Method ID:</strong> <code>FC</code></p>\n\n            </div>\n\n            <div id=\"content-2\" class=\"content\">\n                <h2>Mexico</h2><hr><br>\n                  <p><strong>Minimum Amount:</strong> 1 MXN</p>\n                  <p><strong>Notification delay:</strong> Immediate</p>\n                  <p><strong>Flow:</strong> <code>REDIRECT</code>, <code>DIRECT</code></p>\n                  <p><strong>Payment Method Type:</strong> <code>BANK_TRANSFER</code></p>\n                  <p><strong>Payment Method ID:</strong> <code>FC</code></p>\n            </div>\n\n            <div id=\"content-3\" class=\"content\">\n               <h2>Indonesia</h2><hr><br>\n                  <p><strong>Minimum Amount:</strong> 1 IDR</p>\n                  <p><strong>Notification delay:</strong> Immediate</p>\n                  <p><strong>Flow:</strong> <code>REDIRECT</code>, <code>DIRECT</code></p>\n                  <p><strong>Payment Method Type:</strong> <code>BANK_TRANSFER</code></p>\n                  <p><strong>Payment Method ID:</strong> <code>FC</code></p>\n                              </div>\n\n            <div id=\"content-4\" class=\"content\">\n               <h2>Philippines</h2><hr><br>\n                  <p><strong>Minimum Amount:</strong> 1 PHP</p>\n                  <p><strong>Notification delay:</strong> Immediate</p>\n                  <p><strong>Flow:</strong> <code>REDIRECT</code>, <code>DIRECT</code></p>\n                  <p><strong>Payment Method Type:</strong> <code>BANK_TRANSFER</code></p>\n                  <p><strong>Payment Method ID:</strong> <code>FC</code></p>\n            </div>\n\n            <div id=\"content-5\" class=\"content\">\n               <h2>Nigeria</h2><hr><br>\n                  <p><strong>Minimum Amount:</strong> 51 NGN</p>\n                  <p><strong>Notification delay:</strong> Immediate</p>\n                  <p><strong>Flow:</strong> <code>REDIRECT</code>, <code>DIRECT</code></p>\n                  <p><strong>Payment Method Type:</strong> <code>BANK_TRANSFER</code></p>\n                  <p><strong>Payment Method ID:</strong> <code>FC</code></p>\n            </div>\n            \n            <div id=\"content-6\" class=\"content\">\n               <h2>Vietnam</h2><hr><br>\n                  <p><strong>Minimum Amount:</strong> 1 VND</p>\n                  <p><strong>Notification delay:</strong> Immediate</p>\n                  <p><strong>Flow:</strong> <code>REDIRECT</code>, <code>DIRECT</code></p>\n                  <p><strong>Payment Method Type:</strong> <code>BANK_TRANSFER</code></p>\n                  <p><strong>Payment Method ID:</strong> <code>FC</code></p>\n            </div>\n        </div>\n    </div>\n</body>\n</html>\n\n"
}
[/block]

# Cash Virtual Accounts

Specialized account solutions that allow merchants to receive and reconcile payments made via cash deposits. These accounts are ideal for cash-driven markets where digital banking penetration may be limited and cash remains a primary payment method. By providing a unique reference for each sub-merchant or customer, these accounts enable efficient tracking and reconciliation of cash payments.

<br />

| `country` code | `currency` code |         Flow         | `payment_method_type` | `payment_method_id` | Minimum amount |
| :------------: | :-------------: | :------------------: | :-------------------: | :-----------------: | :------------: |
|      `MX`      |      `MXN`      | `DIRECT`/ `REDIRECT` |        `TICKET`       |          OU         |      1 MXN     |

<br />

# Virtual accounts flows

Learn about the account creation and payment flows.

<br />

## Account creation flow

The flow consists of two steps. First, the account creation process:

[block:image]
{
  "images": [
    {
      "image": [
        "https://files.readme.io/562b9529b289b8c83a89a2e8c0ca52f2d821221259da4d02a2d644d5e4ad5620-Screenshot_2026-04-18_at_09.50.35.png",
        null,
        ""
      ],
      "align": "center"
    }
  ]
}
[/block]

<br />

### Request parameters

[block:parameters]
{
  "data": {
    "h-0": "Field",
    "h-1": "Type",
    "h-2": "Description",
    "h-3": "Required",
    "0-0": "`country`",
    "0-1": "String",
    "0-2": "Payment processing country code. ISO 3166-1 alpha-2 code.",
    "0-3": "Yes",
    "1-0": "`payment_method_id`",
    "1-1": "String",
    "1-2": "`FC`<br><br>ID of the selected payment method.",
    "1-3": "Yes",
    "2-0": "**Payer Object**",
    "2-1": "",
    "2-2": "",
    "2-3": "",
    "3-0": "`payer.name`",
    "3-1": "String",
    "3-2": "Name of the payer.",
    "3-3": "Yes",
    "4-0": "`payer.email`",
    "4-1": "String",
    "4-2": "Email of the payer.",
    "4-3": "Yes",
    "5-0": "`payer.phone`",
    "5-1": "String",
    "5-2": "Mobile phone number of the payer.",
    "5-3": "No",
    "6-0": "`payer.document`",
    "6-1": "String",
    "6-2": "Document of the payer.",
    "6-3": "Yes",
    "7-0": "`payer.ip`",
    "7-1": "String",
    "7-2": "IP of the payer.",
    "7-3": "No",
    "8-0": "`user_reference`",
    "8-1": "String",
    "8-2": "Unique user ID at the merchant side.",
    "8-3": "Ye"
  },
  "cols": 4,
  "rows": 9,
  "align": [
    "left",
    "left",
    "left",
    "left"
  ]
}
[/block]

<br />

### Example

<br />

Send a `POST` request to `https://api.dlocal.com/virtual-accounts` with the following body:

```json Account creation request example
{
  "country": "MX",
  "payment_method_id": "FC",
  "payment_method_flow": "DIRECT",
  "payer": {
      "name": "Jane Doe",
      "user_reference": "301371669",
      "email": "jdoe@example.com",
      "phone": "+529848774040",
      "document": "99999999"
    }
  }
```
```json Synchronous response example
{
   "id": "75c7473a-ab86-4e43-bd39-c840268747d3",
   "country": "MX",
   "created_date": "2018-12-26T20:37:20.000+0000",
   "status": "CREATED",
   "status_detail": "The virtual account has been created",
   "status_code": "200",
   "virtual_bank_account": {
       "bank_code": "Arcus",
       "branch_code": "Arcus",
       "bank_account":"706180323360518000"
   },
   "payer": {
       "name": "Jane Doe",
       "user_reference": "301371669", 
       "email": "jdoe@example.com",
       "phone": "+529848774040",
       "document": "99999999"
   }
}

```

<br />

## Payments flow

Second, the notifications of payment accreditations:

[block:image]
{
  "images": [
    {
      "image": [
        "https://files.readme.io/7492bfadd4be3cb9e8e22a6096faaa11c16266b28d6c98ae3d61a3541f8b1fd5-Screenshot_2026-04-18_at_09.50.47.png",
        null,
        ""
      ],
      "align": "center"
    }
  ]
}
[/block]

<br />

### Notification example

```json VA Notification example
{
  "id": "D-50217-6753b14d-9463-4833-ac47-b37ff42c1635",
  "amount": 300,
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "currency": "MXN",
  "country": "MX",
  "payment_method_id": "FC",
  "payment_method_type": "BANK_TRANSFER",
  "payment_method_flow": "DIRECT",
  "payer": {
    "name": "Jane Doe",
    "user_reference": "301371669",
    "email": "jdoe@example.com",
    "document": "1634874961"
  },
  "order_id": "56952682",
  "notification_url": "http://merchantsite.com/notification/new",
  "created_date": "2022-12-20T19:26:5yo t0.000+0000"
}
```