Peach Payments Payouts API

Merchant-initiated payouts and bank account verification.

OpenAPI Specification

peachpayments-payouts-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Peach Payments Authentication Payouts API
  description: Payment orchestration APIs for Peach Payments, a pan-African payment gateway (South Africa, Kenya, Mauritius). Covers OAuth authentication, Checkout (Hosted / Embedded / Embedded Express), the Payments API for server-to-server debits and refunds, Payment Links, Payouts, and Reconciliation. Card processing is PCI DSS Level 1 certified. Auth is OAuth 2.0 client-credentials (clientId + clientSecret + merchantId -> Bearer access_token) for Checkout / Payouts / Reconciliation, and an inline authentication object (userId + password + entityId) for the server-to-server Payments API.
  version: '1.0'
  contact:
    name: Peach Payments Developer Support
    url: https://developer.peachpayments.com
  termsOfService: https://www.peachpayments.com/terms-and-conditions
servers:
- url: https://sandbox-dashboard.peachpayments.com
  description: Sandbox authentication host (OAuth token)
- url: https://dashboard.peachpayments.com
  description: Live authentication host (OAuth token)
tags:
- name: Payouts
  description: Merchant-initiated payouts and bank account verification.
paths:
  /payouts:
    servers:
    - url: https://sandbox-payouts.peachpayments.com
      description: Sandbox Payouts host
    - url: https://payouts.peachpayments.com
      description: Live Payouts host
    post:
      operationId: createPayout
      tags:
      - Payouts
      summary: Create a payout.
      description: Initiate a merchant payout to a verified bank account. Requires a Bearer access_token, amount, currency, and beneficiary bank details.
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayoutRequest'
      responses:
        '200':
          description: Payout created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutResponse'
        '401':
          description: Unauthorised.
  /payouts/{payoutId}:
    servers:
    - url: https://sandbox-payouts.peachpayments.com
    - url: https://payouts.peachpayments.com
    get:
      operationId: getPayout
      tags:
      - Payouts
      summary: Query a payout.
      description: Retrieve the status and detail of a payout.
      security:
      - bearerAuth: []
      parameters:
      - name: payoutId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Payout detail.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutResponse'
        '404':
          description: Payout not found.
  /api/accounts/verify:
    servers:
    - url: https://sandbox-payouts.peachpayments.com
    - url: https://payouts.peachpayments.com
    post:
      operationId: verifyBankAccount
      tags:
      - Payouts
      summary: Verify a bank account.
      description: Verify a beneficiary bank account before creating a payout.
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankAccountVerifyRequest'
      responses:
        '200':
          description: Verification result.
components:
  schemas:
    PayoutResponse:
      type: object
      properties:
        payoutId:
          type: string
        status:
          type: string
        amount:
          type: string
        currency:
          type: string
    PayoutRequest:
      type: object
      required:
      - amount
      - currency
      - beneficiary
      properties:
        amount:
          type: string
        currency:
          type: string
          example: ZAR
        beneficiary:
          type: object
          properties:
            accountNumber:
              type: string
            bankCode:
              type: string
            accountHolder:
              type: string
        merchantReference:
          type: string
    BankAccountVerifyRequest:
      type: object
      required:
      - accountNumber
      - bankCode
      properties:
        accountNumber:
          type: string
        bankCode:
          type: string
        accountHolder:
          type: string
        idNumber:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'OAuth 2.0 access_token obtained from POST /api/oauth/token, sent as Authorization: Bearer {access_token}.'