Kushki Payouts API

Disburse funds to suppliers, partners, payroll, marketplace sellers, and refunds via bank transfer, card push, or cash pickup. Supports same-day and standard rails, batch upload, and country-specific compliance metadata (RUT, RFC, CURP, RUC, CPF).

Kushki Payouts API is one of 8 APIs that Kushki 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.

Tagged areas include Payouts, Dispersions, Bank Transfers, and Mass Payments. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

kushki-payouts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kushki Payouts API
  description: |
    Disburse funds to bank accounts, cards, and cash pickup networks across LatAm.
    Supports single payouts, batch upload, and country-specific compliance metadata
    (RUT, RFC, CURP, RUC, CPF, NIT).
  version: "1.0.0"
  contact:
    name: Kushki
    url: https://kushkipagos.com/
    email: [email protected]
servers:
  - url: https://api.kushkipagos.com
    description: Production
  - url: https://api-uat.kushkipagos.com
    description: UAT / Sandbox
security:
  - PrivateMerchantId: []
tags:
  - name: Payouts
    description: Single and batch disbursements
paths:
  /payouts/transfer/v1/init:
    post:
      summary: Kushki Initialize Payout
      description: Initialize a single payout to a beneficiary bank account.
      operationId: initPayout
      tags:
        - Payouts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayoutInitRequest'
            example:
              beneficiaryName: Maria Lopez
              documentType: RUT
              documentNumber: "12345678-9"
              bankCode: "0012"
              accountType: SAVINGS
              accountNumber: "0001234567"
              email: [email protected]
              amount:
                value: 150000
                currency: CLP
              description: Marketplace payout May
      responses:
        '200':
          description: Payout initialized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutResponse'
        '4XX':
          $ref: '#/components/responses/ErrorResponse'
  /payouts/transfer/v1/payouts/{payoutId}:
    get:
      summary: Kushki Get Payout
      description: Retrieve the current status of a payout.
      operationId: getPayout
      tags:
        - Payouts
      parameters:
        - name: payoutId
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Payout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutResponse'
  /payouts/transfer/v1/batch:
    post:
      summary: Kushki Create Payout Batch
      description: Create a batch of payouts. Accepts up to 1000 payouts per batch.
      operationId: createPayoutBatch
      tags:
        - Payouts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [batchName, payouts]
              properties:
                batchName: { type: string }
                payouts:
                  type: array
                  maxItems: 1000
                  items:
                    $ref: '#/components/schemas/PayoutInitRequest'
      responses:
        '200':
          description: Batch accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  batchId: { type: string }
                  accepted: { type: integer }
                  rejected: { type: integer }
components:
  securitySchemes:
    PrivateMerchantId:
      type: apiKey
      in: header
      name: Private-Merchant-Id
  schemas:
    PayoutInitRequest:
      type: object
      required: [beneficiaryName, documentNumber, accountNumber, amount]
      properties:
        beneficiaryName: { type: string }
        documentType:
          type: string
          enum: [CC, NIT, CE, DNI, RUT, CURP, RFC, RUC, CPF, CNPJ]
        documentNumber: { type: string }
        bankCode: { type: string }
        accountType:
          type: string
          enum: [SAVINGS, CHECKING, VISTA, ELECTRONIC]
        accountNumber: { type: string }
        email: { type: string, format: email }
        phoneNumber: { type: string }
        amount:
          type: object
          required: [value, currency]
          properties:
            value: { type: number }
            currency: { type: string, enum: [USD, COP, PEN, CLP, MXN, BRL] }
        description: { type: string }
        metadata: { type: object, additionalProperties: true }
    PayoutResponse:
      type: object
      properties:
        payoutId: { type: string }
        status:
          type: string
          enum: [INITIALIZED, PROCESSING, COMPLETED, REJECTED, RETURNED]
        rail:
          type: string
          enum: [ACH, PSE, SPEI, PIX, WEBPAY_TRANSF, INTRA_BANK]
        amount:
          type: object
          properties:
            value: { type: number }
            currency: { type: string }
        responseText: { type: string }
        completedAt: { type: string, format: date-time }
    Error:
      type: object
      properties:
        code: { type: string }
        message: { type: string }
  responses:
    ErrorResponse:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'