Kushki Merchants and Branches API

Manage merchant branches (sucursales) and their per-branch configuration — public/private keys, allowed payment methods, country, currency, anti-fraud rules, and webhook URLs. Used by marketplaces, franchise networks, and aggregators that need to onboard sub-merchants programmatically.

OpenAPI Specification

kushki-merchants-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kushki Merchants and Branches API
  description: |
    Manage merchant branches (sucursales) and their per-branch configuration.
    Used by marketplaces, franchise networks, and aggregators to onboard and
    administer sub-merchants programmatically.
  version: "1.0.0"
  contact:
    name: Kushki
    url: https://kushkipagos.com/
    email: dev@kushkipagos.com
servers:
  - url: https://api.kushkipagos.com
    description: Production
  - url: https://api-uat.kushkipagos.com
    description: UAT / Sandbox
security:
  - PrivateMerchantId: []
tags:
  - name: Branches
    description: Branch / sucursal management
paths:
  /merchant/v1/branches:
    get:
      summary: Kushki List Branches
      description: List branches (sucursales) registered under the parent merchant.
      operationId: listBranches
      tags:
        - Branches
      responses:
        '200':
          description: Branches
          content:
            application/json:
              schema:
                type: array
                items: { $ref: '#/components/schemas/Branch' }
    post:
      summary: Kushki Create Branch
      description: Create a new branch (sucursal) under the parent merchant. Returns the new branch's public and private merchant ids.
      operationId: createBranch
      tags:
        - Branches
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BranchCreateRequest'
      responses:
        '200':
          description: Branch created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Branch'
  /merchant/v1/branches/{branchId}:
    get:
      summary: Kushki Get Branch
      description: Retrieve a branch by its identifier.
      operationId: getBranch
      tags:
        - Branches
      parameters:
        - name: branchId
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Branch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Branch'
    put:
      summary: Kushki Update Branch
      description: Update branch configuration (allowed payment methods, anti-fraud rules, webhook URLs).
      operationId: updateBranch
      tags:
        - Branches
      parameters:
        - name: branchId
          in: path
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BranchUpdateRequest'
      responses:
        '200':
          description: Updated
components:
  securitySchemes:
    PrivateMerchantId:
      type: apiKey
      in: header
      name: Private-Merchant-Id
  schemas:
    Branch:
      type: object
      properties:
        branchId: { type: string }
        name: { type: string }
        country:
          type: string
          enum: [EC, CO, PE, CL, MX, BR]
        currency:
          type: string
          enum: [USD, COP, PEN, CLP, MXN, BRL]
        publicMerchantId: { type: string }
        privateMerchantId: { type: string }
        webhookUrl: { type: string, format: uri }
        allowedPaymentMethods:
          type: array
          items:
            type: string
            enum: [CARD, SUBSCRIPTION, TRANSFER, CASH, PAYOUT, CARD_PRESENT]
        status:
          type: string
          enum: [ACTIVE, INACTIVE]
    BranchCreateRequest:
      type: object
      required: [name, country, currency]
      properties:
        name: { type: string }
        country: { type: string }
        currency: { type: string }
        webhookUrl: { type: string, format: uri }
        allowedPaymentMethods:
          type: array
          items: { type: string }
    BranchUpdateRequest:
      type: object
      properties:
        webhookUrl: { type: string, format: uri }
        allowedPaymentMethods:
          type: array
          items: { type: string }
        status: { type: string }