openapi: 3.0.1 info: title: Paystack Splits and Subaccounts API description: Build marketplaces by automatically splitting payments between multiple parties (the integration and one or more subaccounts) using transaction split groups and subaccount profiles. version: 1.0.0 contact: name: Paystack Support url: https://support.paystack.com email: support@paystack.com license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html servers: - url: https://api.paystack.co description: Base API endpoint tags: - name: Split - name: Subaccount paths: /split: post: tags: - Split summary: Create Split operationId: split_create requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/paths/~1split/post/requestBody/content/application~1json/schema' application/json: schema: type: object required: - name - type - subaccounts - currency properties: name: description: Name of the transaction split type: string type: description: The type of transaction split you want to create. type: string enum: - percentage - flat subaccounts: description: A list of object containing subaccount code and number of shares type: array items: $ref: '#/paths/~1split~1%7Bid%7D~1subaccount~1add/post/requestBody/content/application~1json/schema' currency: description: The transaction currency type: string enum: - NGN - GHS - ZAR - USD bearer_type: description: This allows you specify how the transaction charge should be processed type: string enum: - subaccount - account - all-proportional - all bearer_subaccount: description: This is the subaccount code of the customer or partner that would bear the transaction charge if you specified subaccount as the bearer type type: string responses: '201': $ref: '#/paths/~1plan/get/responses/200' '401': $ref: '#/paths/~1plan/get/responses/401' default: description: Server error get: tags: - Split summary: List Splits operationId: split_list parameters: - name: name in: query schema: type: string - name: active in: query schema: type: string - name: sort_by in: query schema: type: string - name: from in: query schema: type: string - name: to in: query schema: type: string - name: perPage in: query schema: type: string - name: page in: query schema: type: string responses: '200': $ref: '#/paths/~1plan/get/responses/200' '401': $ref: '#/paths/~1plan/get/responses/401' '404': $ref: '#/paths/~1plan/get/responses/401' default: description: Server error /split/{id}: get: tags: - Split summary: Fetch Split operationId: split_fetch responses: '200': $ref: '#/paths/~1plan/get/responses/200' '401': $ref: '#/paths/~1plan/get/responses/401' '404': $ref: '#/paths/~1plan/get/responses/401' default: description: Server error put: tags: - Split summary: Update Split operationId: split_update requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/paths/~1split~1%7Bid%7D/put/requestBody/content/application~1json/schema' application/json: schema: type: object properties: name: description: Name of the transaction split type: string active: description: Toggle status of split. When true, the split is active, else it's inactive type: boolean bearer_type: description: This allows you specify how the transaction charge should be processed type: string enum: - subaccount - account - all-proportional - all bearer_subaccount: description: This is the subaccount code of the customer or partner that would bear the transaction charge if you specified subaccount as the bearer type type: string responses: '200': $ref: '#/paths/~1plan/get/responses/200' '401': $ref: '#/paths/~1plan/get/responses/401' '404': $ref: '#/paths/~1plan/get/responses/401' default: description: Server error parameters: - name: id in: path required: true schema: type: string /split/{id}/subaccount/add: post: tags: - Split summary: Add Subaccount to Split operationId: split_addSubaccount requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/paths/~1split~1%7Bid%7D~1subaccount~1add/post/requestBody/content/application~1json/schema' application/json: schema: type: object properties: subaccount: description: Subaccount code of the customer or partner type: string share: description: The percentage or flat quota of the customer or partner type: string parameters: - name: id in: path required: true schema: type: string example: application/json responses: '201': $ref: '#/paths/~1plan/get/responses/200' '401': $ref: '#/paths/~1plan/get/responses/401' default: description: Server error /split/{id}/subaccount/remove: post: tags: - Split summary: Remove Subaccount From Split operationId: split_removeSubaccount requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/paths/~1split~1%7Bid%7D~1subaccount~1add/post/requestBody/content/application~1json/schema' application/json: schema: $ref: '#/paths/~1split~1%7Bid%7D~1subaccount~1add/post/requestBody/content/application~1json/schema' parameters: - name: id in: path required: true schema: type: string example: application/json responses: '201': $ref: '#/paths/~1plan/get/responses/200' '401': $ref: '#/paths/~1plan/get/responses/401' default: description: Server error /subaccount: post: tags: - Subaccount summary: Create Subaccount operationId: subaccount_create requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/paths/~1subaccount/post/requestBody/content/application~1json/schema' application/json: schema: type: object required: - business_name - settlement_bank - account_number - percentage_charge properties: business_name: description: Name of business for subaccount type: string settlement_bank: description: Bank code for the bank. You can get the list of Bank Codes by calling the List Banks endpoint. type: string account_number: description: Bank account number type: string percentage_charge: description: Customer's phone number type: number format: float description: description: A description for this subaccount type: string primary_contact_email: description: A contact email for the subaccount type: string primary_contact_name: description: The name of the contact person for this subaccount type: string primary_contact_phone: description: A phone number to call for this subaccount type: string metadata: description: Stringified JSON object of custom data type: string responses: '201': $ref: '#/paths/~1plan/get/responses/200' '401': $ref: '#/paths/~1plan/get/responses/401' default: description: Server error get: tags: - Subaccount summary: List Subaccounts operationId: subaccount_list parameters: - in: query name: perPage schema: type: integer description: Number of records to fetch per page - in: query name: page schema: type: integer description: The section to retrieve - in: query name: from schema: type: string format: date-time description: The start date - in: query name: to schema: type: string format: date-time description: The end date responses: '200': $ref: '#/paths/~1plan/get/responses/200' '401': $ref: '#/paths/~1plan/get/responses/401' '404': $ref: '#/paths/~1plan/get/responses/401' default: description: Server error /subaccount/{code}: get: tags: - Subaccount summary: Fetch Subaccount operationId: subaccount_fetch responses: '200': $ref: '#/paths/~1plan/get/responses/200' '401': $ref: '#/paths/~1plan/get/responses/401' '404': $ref: '#/paths/~1plan/get/responses/401' default: description: Server error put: tags: - Subaccount summary: Update Subaccount operationId: subaccount_update requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/paths/~1subaccount~1%7Bcode%7D/put/requestBody/content/application~1json/schema' application/json: schema: type: object properties: business_name: description: Name of business for subaccount type: string settlement_bank: description: Bank code for the bank. You can get the list of Bank Codes by calling the List Banks endpoint. type: string account_number: description: Bank account number type: string active: description: Activate or deactivate a subaccount type: boolean percentage_charge: description: Customer's phone number type: number format: float description: description: A description for this subaccount type: string primary_contact_email: description: A contact email for the subaccount type: string primary_contact_name: description: The name of the contact person for this subaccount type: string primary_contact_phone: description: A phone number to call for this subaccount type: string metadata: description: Stringified JSON object of custom data type: string responses: '200': $ref: '#/paths/~1plan/get/responses/200' '401': $ref: '#/paths/~1plan/get/responses/401' '404': $ref: '#/paths/~1plan/get/responses/401' default: description: Server error parameters: - name: code in: path required: true schema: type: string components: securitySchemes: bearerAuth: type: http scheme: bearer schemas: Customer: allOf: - type: object required: - email properties: email: description: Customer's email address type: string - type: object properties: first_name: description: Customer's first name type: string last_name: description: Customer's last name type: string phone: description: Customer's phone number type: string metadata: description: Stringified JSON object of custom data type: string - type: object required: - authorization_code properties: authorization_code: description: Customer's authorization code to be deactivated type: string - type: object required: - customer properties: customer: description: Customer's code, or email address type: string risk_action: description: "One of the possible risk actions [ default, allow, deny ]. allow to whitelist. \ndeny to blacklist.\ \ Customers start with a default risk action.\n" type: string enum: - default - allow - deny - type: object required: - type - country - bvn - bank_code - account_number properties: type: description: Predefined types of identification. type: string enum: - bvn - bank_account country: description: Two-letter country code of identification issuer type: string bvn: description: Customer's Bank Verification Number type: string bank_code: description: You can get the list of bank codes by calling the List Banks endpoint (https://api.paystack.co/bank). type: string account_number: description: Customer's bank account number. type: string value: description: Customer's identification number. Required if type is bvn type: string Error: type: object properties: status: type: boolean message: type: string Response: type: object properties: status: type: boolean message: type: string data: type: object security: - bearerAuth: []