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}.'