---
updatedAt: 2026-03-25T16:33:42.000Z
agentTools:
  projectIndex: https://docs.dlocal.com/llms.txt
---

# API Reference

[block:html]
{
  "html": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\n  <title>dLocal API Reference</title>\n  <style>\n    body {\n\t\t\tpadding: 0\n\t\t}\n\n    a {\n      color: #00935d;\n      text-decoration: none;\n    }\n\n    .container {\n      display: flex;\n      justify-content: space-between;\n      align-items: flex-start;\n      gap: 40px;\n      flex-wrap: wrap;\n      margin-top: 20px;\n    }\n\n    .text-section {\n      flex: 2;\n      min-width: 300px;\n    }\n\n    .text-section p {\n      line-height: 1.6;\n      font-size: 16px;\n      margin-bottom: 16px;\n    }\n\n    .sidebar {\n      flex: 1;\n      min-width: 280px;\n    }\n\n    .base-url-title {\n      font-size: 12px;\n      font-weight: bold;\n      color: #999;\n      margin-bottom: 10px;\n      text-transform: uppercase;\n    }\n\n    .url-container {\n      display: flex;\n      flex-direction: column;\n      background-color: #FFFFFF;\n      border-radius: 12px;\n      padding: 16px;\n      box-sizing: border-box;\n      width: 100%;\n      box-shadow: 0 0 0px 1px #e0e0e0;\n    }\n\n    .url-container .url-selector {\n      display: none;\n    }\n\n    .url-container label {\n      display: inline-block;\n      padding: 6px 10px;\n      margin-bottom: 10px;\n      border: 1px solid #ccc;\n      border-radius: 6px;\n      font-size: 12px;\n      color: #333;\n      background-color: #f2f2f2;\n      cursor: pointer;\n      transition: opacity 0.3s ease;\n      margin-right: 8px;\n    }\n\n    /* Opacity for unselected */\n    #base-a:not(:checked) ~ label[for=\"base-a\"],\n    #sandbox-a:not(:checked) ~ label[for=\"sandbox-a\"] {\n      opacity: 0.4;\n    }\n\n    .url-input {\n      display: none;\n      margin-top: 6px;\n    }\n\n    #base-a:checked ~ .url-input[data-url=\"base-a\"],\n    #sandbox-a:checked ~ .url-input[data-url=\"sandbox-a\"] {\n      display: block;\n    }\n\n    .url-input input {\n      width: 100%;\n      border: none;\n      outline: none;\n      border-radius: 6px;\n      padding: 12px;\n      font-size: 14px;\n      font-family: monospace;\n      background-color: #4d4d4d;\n      color: #fff;\n      user-select: all;\n    }\n\n    .disclaimer-text {\n      font-size: 10px !important;\n      color: #666;\n      margin-top: 12px !important;\n      line-height: 1 !important;\n      font-style: italic;\n      margin-bottom: 8px !important;\n    }\n\n    blockquote.start-note {\n      margin-top: 20px;\n      font-size: 13px;\n      border-left: 4px solid #4d4d4d;\n      padding-left: 12px;\n    }\n\n\n    @media screen and (max-width: 768px) {\n      .container {\n        flex-direction: column;\n      }\n      .sidebar {\n        width: 100%;\n      }\n    }\n  </style>\n</head>\n<body>\n\n  <div class=\"container\">\n    <!-- LEFT SIDE: TEXT CONTENT -->\n    <div class=\"text-section\">\n      <p>\n        The dLocal API is built on RESTful principles, making it straightforward to integrate with and easy to use. It follows a predictable structure with resource-based endpoints, leverages standard HTTP methods, and communicates using JSON for both requests and responses.\n      </p>\n      <p>\n        You can use the sandbox environment to test your integration without triggering real transactions.\n      </p><br>\n      <p>\n        Keep in mind that some API behavior may vary depending on your account configuration, supported regions, and activated payment methods.\n      </p>\n    </div>\n\n    <!-- RIGHT SIDE: URL SELECTOR -->\n    <div class=\"sidebar\">\n      <div class=\"base-url-title\">Base URL</div>\n      <div class=\"url-container\">\n        <!-- Radio options -->\n        <input id=\"base-a\" type=\"radio\" name=\"url\" class=\"url-selector\" checked>\n        <label for=\"base-a\">Production URL</label>\n        <input id=\"sandbox-a\" type=\"radio\" name=\"url\" class=\"url-selector\">\n        <label for=\"sandbox-a\">Sandbox URL</label>\n\n        <!-- URL fields -->\n        <div class=\"url-input\" data-url=\"base-a\">\n          <input type=\"text\" readonly value=\"https://api.dlocal.com\">\n        </div>\n        <div class=\"url-input\" data-url=\"sandbox-a\">\n          <input type=\"text\" readonly value=\"https://sandbox.dlocal.com\">\n        </div>\n\n        <!-- Small note -->\n        <p class=\"disclaimer-text\">\n          Some product-specific variations may apply; be sure to check the details for each endpoint.\n        </p>\n      </div>\n\n      <!-- Final quote-style note -->\n      <blockquote class=\"start-note\">\n        <strong>Not sure where to begin?</strong> The <a href=\"https://docs.dlocal.com/docs/get-started\">Get started guide</a> has everything you need.\n      </blockquote>\n    </div>\n  </div>\n\n</body>\n</html>\n"
}
[/block]

***

# Authentication

Each request to the dLocal API must include a signature. The signature is essential to confirm the information's validity and security.

Configure the header using your API Credentials and business information. You can view and manage your account credentials in the Merchant Dashboard under [Settings > Integration](https://dashboard.dlocal.com/settings/integration).

```json Authentication header
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
```

For more specific instructions, visit the security page for instructions on [creating the signature](https://docs.dlocal.com/docs/payins-security).

***

# Explore the API Reference

Hover over the hotspots to learn about key sections of the interface and how to use them.

[block:html]
{
  "html": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\n  <title>API Reference Tooltip Guide</title>\n  <style>\n    * {\n      box-sizing: border-box;\n      margin: 0;\n      padding: 0;\n    }\n\n    .image-wrapper {\n      position: relative;\n      width: 100%;\n      max-width: 850px;\n      margin: 0 auto;\n      aspect-ratio: 726 / 651;\n      overflow: hidden;\n    }\n\n    .image-wrapper img {\n      width: 100%;\n      height: 100%;\n      object-fit: contain;\n      display: block;\n      border-radius: 12px;\n      box-shadow: 0 0 8px rgba(0,0,0,0.05);\n    }\n\n    .tooltip-btn {\n      position: absolute;\n      width: 26px;\n      height: 26px;\n      background-color: #0047FF;\n      border-radius: 50%;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      box-shadow: 0px 2px 11px rgba(0, 0, 0, 0.2);\n      animation: pulse 2s infinite;\n      color: white;\n      font-weight: bold;\n      font-size: 14px;\n    }\n\n    .tooltip-btn:hover {\n      animation: none;\n    }\n\n    @keyframes pulse {\n      0% {\n        box-shadow: 0 0 0 0 rgba(0, 71, 255, 0.4);\n      }\n      70% {\n        box-shadow: 0 0 0 10px rgba(0, 71, 255, 0);\n      }\n      100% {\n        box-shadow: 0 0 0 0 rgba(0, 71, 255, 0);\n      }\n    }\n\n    .tooltip-btn::after {\n      content: attr(data-tooltip);\n      position: absolute;\n      bottom: 130%;\n      left: 50%;\n      transform: translateX(-50%);\n      background-color: rgba(0, 0, 0, 0.85);\n      color: #fff;\n      padding: 8px 12px;\n      border-radius: 4px;\n      font-size: 12px;\n      white-space: normal;\n      max-width: 150px;\n      width: max-content;\n      display: block;\n      text-align: center;\n      word-break: break-word;\n      opacity: 0;\n      pointer-events: none;\n      transition: opacity 0.3s ease;\n      z-index: 10;\n      box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);\n    }\n\n    .tooltip-btn:hover::after {\n      opacity: 1;\n    }\n    \n    .btn-6::after,\n    .btn-7::after {\n      left: auto;\n      right: 130%;\n      bottom: auto;\n      top: 50%;\n      transform: translateY(-50%);\n    }\n\n    /* Tooltip positioning based on image dimensions */\n    .btn-1 { top: 25%; left: 32%; }   /* Body Params */\n    .btn-2 { top: 17%; left: 43%; }   /* Endpoint Title */\n    .btn-3 { top: 35%; left: 14%; }   /* Sidebar item */\n    .btn-4 { top: 52.8%; left: 32%; } /* Response Section */\n    .btn-5 { top: 21.5%; left: 70%; } /* Header Credentials */\n    .btn-6 { top: 49%; left: 89%; }   /* Code JSON */\n    .btn-7 { top: 86%; left: 83%; }   /* Code Response */\n\n    /* Responsive scaling */\n    @media (max-width: 768px) {\n      .tooltip-btn {\n        width: 20px;\n        height: 20px;\n        font-size: 12px;\n      }\n\n      .tooltip-btn::after {\n        max-width: 120px;\n        font-size: 11px;\n        padding: 6px 10px;\n      }\n    }\n\n    @media (max-width: 480px) {\n      .tooltip-btn {\n        width: 18px;\n        height: 18px;\n        font-size: 11px;\n      }\n\n      .tooltip-btn::after {\n        max-width: 100px;\n        font-size: 10px;\n        padding: 5px 8px;\n        bottom: auto;\n        left: 130%;\n        top: 50%;\n        transform: translateY(-50%);\n      }\n\n      .btn-5::after, .btn-6::after, .btn-7::after {\n        left: auto;\n        right: 130%;\n        transform: translateY(-50%);\n      }\n    }\n\n    /* Touch accessibility */\n    @media (hover: none) {\n      .tooltip-btn:active::after {\n        opacity: 1;\n        transition-delay: 0s;\n      }\n\n      .tooltip-btn::before {\n        content: \"\";\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        background-color: rgba(255, 255, 255, 0.3);\n        border-radius: 50%;\n        transform: scale(0);\n        transition: transform 0.3s ease;\n      }\n\n      .tooltip-btn:active::before {\n        transform: scale(1.5);\n        opacity: 0;\n        transition: transform 0.3s ease, opacity 0.3s ease;\n      }\n    }\n  </style>\n</head>\n<body>\n\n\n  <div class=\"image-wrapper\">\n    <img src=\"https://files.readme.io/82b359aca1b79a54fee19900784f8396b2b6875f3ef6ffb9c2cfb346c90bbf81-Option2.png\" alt=\"API Doc Screenshot\">\n\n    <div class=\"tooltip-btn btn-1\" aria-label=\"See all the parameters you can use for a request.\" tabindex=\"0\" data-tooltip=\"See all the parameters you can use for a request.\">+</div>\n    <div class=\"tooltip-btn btn-2\" aria-label=\"Understand what each resource does and where to use it.\" tabindex=\"0\" data-tooltip=\"Understand what each resource does and where to use it.\">+</div>\n    <div class=\"tooltip-btn btn-3\" aria-label=\"Use the menu to explore all available resources.\" tabindex=\"0\" data-tooltip=\"Use the menu to explore all available resources.\">+</div>\n    <div class=\"tooltip-btn btn-4\" aria-label=\"Understand the information returned in a response.\" tabindex=\"0\" data-tooltip=\"Understand the information returned in a response.\">+</div>\n    <div class=\"tooltip-btn btn-5\" aria-label=\"Find out what info you need to authorize your requests.\" tabindex=\"0\" data-tooltip=\"Find out what info you need to authorize your requests.\">+</div>\n    <div class=\"tooltip-btn btn-6\" aria-label=\"Browse request samples for different use cases.\" tabindex=\"0\" data-tooltip=\"Browse request samples for different use cases.\">+</div>\n    <div class=\"tooltip-btn btn-7\" aria-label=\"Explore an example of the expected response.\" tabindex=\"0\" data-tooltip=\"Explore an example of the expected response.\">+</div>\n  </div>\n\n\n</body>\n</html>\n"
}
[/block]