dLocal For Platforms API

The dLocal for Platforms (marketplace) API onboards sub-merchant accounts, manages KYC, attaches bank accounts, settles inter-account transfers, and reports balances. Designed for marketplaces and platforms that hold funds on behalf of sub-users.

dLocal For Platforms API is one of 9 APIs that dLocal publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include Marketplace, Platforms, Accounts, and KYC. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, sample payloads, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

d-local-platforms-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: dLocal For Platforms API
  version: '2.0'
  description: |
    The dLocal for Platforms (marketplace) API onboards and manages
    sub-merchant accounts, performs KYC, manages bank accounts, settles
    transfers between accounts, and reports balances. Used by
    marketplaces and platforms that hold funds on behalf of sub-users.
servers:
  - url: https://marketplace-api.dlocal.com
    description: Production
  - url: https://marketplace-api.dlocal-sbox.com
    description: Sandbox
tags:
  - name: Accounts
    description: Create and manage sub-merchant accounts.
  - name: KYC
    description: Submit KYC data and documents for accounts.
  - name: BankAccounts
    description: Manage bank accounts attached to sub-merchant accounts.
  - name: Transfers
    description: Settle and transfer between accounts.
paths:
  /v2/accounts:
    post:
      tags: [Accounts]
      operationId: createAccount
      summary: Create An Account
      description: Onboard a new sub-merchant account (company or individual).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountRequest'
      responses:
        '201':
          description: Account created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
  /v2/accounts/{account_id}:
    get:
      tags: [Accounts]
      operationId: getAccount
      summary: Get An Account
      parameters:
        - $ref: '#/components/parameters/AccountId'
      responses:
        '200':
          description: Account returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
  /v2/accounts/{account_id}/update:
    patch:
      tags: [Accounts]
      operationId: updateAccount
      summary: Update An Account
      parameters:
        - $ref: '#/components/parameters/AccountId'
      requestBody:
        content:
          application/json:
            schema: { type: object }
      responses:
        '200':
          description: Account updated
  /v2/accounts/{account_id}/block:
    post:
      tags: [Accounts]
      operationId: blockAccount
      summary: Block An Account
      parameters:
        - $ref: '#/components/parameters/AccountId'
      responses:
        '200':
          description: Account blocked
  /v2/accounts/{account_id}/unblock:
    post:
      tags: [Accounts]
      operationId: unblockAccount
      summary: Unblock An Account
      parameters:
        - $ref: '#/components/parameters/AccountId'
      responses:
        '200':
          description: Account unblocked
  /v2/accounts/{account_id}/cancel:
    post:
      tags: [Accounts]
      operationId: cancelAccount
      summary: Cancel An Account
      parameters:
        - $ref: '#/components/parameters/AccountId'
      responses:
        '200':
          description: Account cancelled
  /v2/accounts/{account_id}/balance:
    get:
      tags: [Accounts]
      operationId: getAccountBalance
      summary: Get Account Balance
      parameters:
        - $ref: '#/components/parameters/AccountId'
      responses:
        '200':
          description: Balance returned
  /v2/accounts/{account_id}/credentials:
    get:
      tags: [Accounts]
      operationId: getAccountCredentials
      summary: Get Account Credentials
      parameters:
        - $ref: '#/components/parameters/AccountId'
      responses:
        '200':
          description: Credentials returned
  /v2/accounts/{account_id}/kyc:
    get:
      tags: [KYC]
      operationId: getAccountKyc
      summary: Get Account KYC
      parameters:
        - $ref: '#/components/parameters/AccountId'
      responses:
        '200':
          description: KYC state returned
  /v2/accounts/{account_id}/bank-accounts:
    post:
      tags: [BankAccounts]
      operationId: addBankAccount
      summary: Add Bank Account
      parameters:
        - $ref: '#/components/parameters/AccountId'
      requestBody:
        required: true
        content:
          application/json:
            schema: { type: object }
      responses:
        '201':
          description: Bank account added
    get:
      tags: [BankAccounts]
      operationId: getBankAccountList
      summary: Get Bank Account List
      parameters:
        - $ref: '#/components/parameters/AccountId'
      responses:
        '200':
          description: List returned
  /v2/accounts/{account_id}/bank-accounts/{bank_account_id}:
    get:
      tags: [BankAccounts]
      operationId: getBankAccount
      summary: Get A Bank Account
      parameters:
        - $ref: '#/components/parameters/AccountId'
        - name: bank_account_id
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Bank account returned
    delete:
      tags: [BankAccounts]
      operationId: disableBankAccount
      summary: Disable A Bank Account
      parameters:
        - $ref: '#/components/parameters/AccountId'
        - name: bank_account_id
          in: path
          required: true
          schema: { type: string }
      responses:
        '204':
          description: Bank account disabled
  /v2/transfers:
    post:
      tags: [Transfers]
      operationId: createTransfer
      summary: Create A Transfer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [from_account, to_account, amount, currency]
              properties:
                from_account: { type: string }
                to_account: { type: string }
                amount: { type: number }
                currency: { type: string }
                description: { type: string }
      responses:
        '201':
          description: Transfer created
  /v2/transfers/{transfer_id}:
    get:
      tags: [Transfers]
      operationId: getTransfer
      summary: Get A Transfer
      parameters:
        - name: transfer_id
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Transfer returned
  /v2/transfers/{transfer_id}/cancel:
    post:
      tags: [Transfers]
      operationId: cancelTransfer
      summary: Cancel A Transfer
      parameters:
        - name: transfer_id
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Transfer cancelled
components:
  parameters:
    AccountId:
      name: account_id
      in: path
      required: true
      schema: { type: string }
  schemas:
    AccountRequest:
      type: object
      required: [platform_type, tax_category, account_name, account_email, account_country]
      properties:
        platform_type: { type: string }
        tax_category:
          type: string
          enum: [company, individual]
        account_name: { type: string }
        account_email: { type: string, format: email }
        account_country: { type: string }
        notification_url: { type: string, format: uri }
        consents:
          type: array
          items: { type: object }
        company_information: { type: object }
        settings: { type: object }
    Account:
      type: object
      properties:
        account_id: { type: string }
        status: { type: string }
        status_code: { type: string }
        creation_date: { type: string, format: date-time }
        consents:
          type: array
          items: { type: object }
        ubo_id: { type: string }
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
security:
  - bearerAuth: []