Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/afriex-payment-methods-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Afriex Business Payment Methods API
version: 1.0.13
description: 'Welcome to the Afriex Business API. This API allows you to manage customers, process payments, handle payouts, and receive real-time notifications via webhooks.
For detailed guidance on authentication, pagination, error handling, and webhooks, please refer to the dedicated guides in the top bar. The guide provides a step-by-step instructions to help you integrate seamlessly.'
termsOfService: https://www.afriex.com/terms-and-condition
contact:
name: Afriex API Support
email: support@afriex.com
url: https://docs.afriex.com
license:
name: Proprietary
url: https://www.afriex.com/terms-and-condition
servers:
- url: https://sandbox.api.afriex.com
description: Staging Base URL
- url: https://api.afriex.com
description: Production Base URL
security:
- ApiKey: []
tags:
- name: Payment Methods
description: Register and resolve customer payout and collection methods.
paths:
/api/v1/payment-method:
parameters:
- $ref: '#/components/parameters/x-api-signature'
- $ref: '#/components/parameters/x-api-version'
post:
operationId: createPaymentMethod
summary: Create a payment method
description: Creates a new payment method.
tags:
- Payment Methods
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- channel
- accountName
- accountNumber
- countryCode
- institution
properties:
channel:
type: string
description: The payment method channel
enum:
- BANK_ACCOUNT
- MOBILE_MONEY
- VIRTUAL_BANK_ACCOUNT
- ACH_BANK_ACCOUNT
- INTERAC
- UPI
- SWIFT
- WE_CHAT
customerId:
description: Optional. The customer to attach this payment method to. When omitted, it is attached to the business owner.
$ref: '#/components/schemas/customerId'
type:
type: string
description: 'The capability of this payment method. DEPOSIT means funds can be pulled from this method (e.g. charge/collect from the customer). WITHDRAW means funds can be sent to this method (e.g. pay out to the customer). If omitted, defaults to WITHDRAW.
'
enum:
- DEPOSIT
- WITHDRAW
accountName:
type: string
description: 'The name of the account holder. Must use Latin-script letters (A-Z / a-z, including accented forms such as é, ñ, ü, ç) or Chinese (Han) characters, digits (0-9), spaces and the characters & ( ) + , - . / : ? and apostrophe; it must contain at least one letter. Names in other scripts (e.g. Arabic, Cyrillic) or containing other symbols are rejected. Exception: China-facing payouts on the `WE_CHAT` channel (which carries both WeChat and Alipay) accept the beneficiary''s local-script (e.g. Chinese) name.'
accountNumber:
type: string
description: The account number
countryCode:
type: string
description: The ISO 3166-1 alpha-2 country code. This has to be one of the countries we support
institution:
description: The destination institution. For USD (SWIFT) payout payment methods, correspondentBankName and correspondentBankAccountNumber are mandatory.
$ref: '#/components/schemas/PaymentMethodInstitution'
recipient:
$ref: '#/components/schemas/PaymentMethodRecipient'
transaction:
$ref: '#/components/schemas/PaymentMethodTransaction'
examples:
Bank Account:
summary: Bank Account, register a bank account to send funds to
value:
customerId: 69528240ba52c13b669fb239
type: WITHDRAW
channel: BANK_ACCOUNT
accountName: John Doe
accountNumber: 0123456789
countryCode: NG
institution:
institutionCode: 058
institutionName: GTBank
SWIFT Transfer:
summary: SWIFT, register an international bank account via SWIFT
value:
customerId: 69528240ba52c13b669fb239
type: WITHDRAW
channel: SWIFT
accountName: John Doe
accountNumber: DE89370400440532013000
countryCode: DE
institution:
institutionCode: DEUTDEDB
institutionName: Deutsche Bank
institutionAddress: Taunusanlage 12, 60262 Frankfurt am Main, Germany
correspondentBankName: Citibank N.A. New York
correspondentBankAccountNumber: '10991234'
recipient:
recipientAddress: Musterstraße 1, 10115 Berlin, Germany
transaction:
transactionNarration: Payment for services
Mobile Money:
summary: Mobile Money, register a mobile money account to send funds to
value:
customerId: 69528240ba52c13b669fb239
type: WITHDRAW
channel: MOBILE_MONEY
accountName: John Doe
accountNumber: '0201234567'
countryCode: GH
institution:
institutionCode: MTN
institutionName: MTN
Mobile Money (Deposit):
summary: Mobile Money, register a mobile money account to pull funds from
value:
customerId: 69528240ba52c13b669fb239
type: DEPOSIT
channel: MOBILE_MONEY
accountName: John Doe
accountNumber: '0201234567'
countryCode: GH
institution:
institutionCode: MTN
institutionName: MTN
UPI:
summary: UPI, register a UPI ID to send funds to (India)
value:
customerId: 69528240ba52c13b669fb239
type: WITHDRAW
channel: UPI
accountName: Raj Kumar
accountNumber: rajkumar@upi
countryCode: IN
institution:
institutionCode: UPI
institutionName: UPI
recipient:
recipientPhone: '+919876543210'
Interac:
summary: Interac, register an Interac e-Transfer recipient (Canada)
value:
customerId: 69528240ba52c13b669fb239
type: WITHDRAW
channel: INTERAC
accountName: John Doe
accountNumber: john.doe@email.com
countryCode: CA
institution:
institutionCode: INTERAC
institutionName: INTERAC
recipient:
recipientEmail: john.doe@email.com
WeChat Pay:
summary: WeChat Pay, register a WeChat Pay account to send funds to (China)
value:
customerId: 69528240ba52c13b669fb239
type: WITHDRAW
channel: WE_CHAT
accountName: Zhang Wei
accountNumber: '+8613812345678'
countryCode: CN
institution:
institutionCode: WECHAT
institutionName: WECHAT
recipient:
recipientPhone: '+8613812345678'
Alipay:
summary: Alipay, register an Alipay account to send funds to (China). Alipay is routed over the WE_CHAT channel with institutionName ALIPAY; there is no separate ALIPAY channel.
value:
customerId: 69528240ba52c13b669fb239
type: WITHDRAW
channel: WE_CHAT
accountName: Zhang Wei
accountNumber: '+8613812345678'
countryCode: CN
institution:
institutionCode: ALIPAY
institutionName: ALIPAY
recipient:
recipientPhone: '+8613812345678'
responses:
'201':
description: Payment method created successfully.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PaymentMethod'
examples:
bankAccount:
summary: Bank account payment method created
value:
data:
paymentMethodId: 69d6002579101baa20f63816
channel: BANK_ACCOUNT
customerId: 69d60024ab82306f11b03325
institution:
institutionCode: '000013'
institutionName: GTBank
accountName: John Doe
accountNumber: 0123456789
countryCode: NG
'400':
description: Invalid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
missingRequiredField:
summary: Missing required field
value:
code: INVALID_USER_DATA
error: Invalid user data
details:
errorMessage: Invalid user data
friendlyMessage: ''
'401':
description: Unauthorized - Invalid business API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
missingApiKey:
summary: Missing API key
value:
code: AUTHENTICATION_ERROR
error: Authorization header is missing
details: {}
invalidApiKey:
summary: Invalid API key
value:
code: AUTHENTICATION_ERROR
error: Invalid authorization header
details: {}
'500':
description: Server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
serverError:
summary: Unexpected server error
value:
code: INTERNAL_SERVER_ERROR
error: It's not you, it's us, please reach out to support
details: {}
'503':
description: 'Temporarily unavailable: an upstream payment processor failed or timed out, or the API is restarting. Retry with backoff and honour the Retry-After header when present. The API never returns 502 or 504; if you receive one of those, it was generated by Cloudflare and its body does not follow this schema.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
serviceUnavailable:
summary: Upstream processor unavailable
value:
code: EXTERNAL_REQUEST_ERROR
error: External request error
details: {}
x-codeSamples:
- lang: TypeScript
label: Afriex SDK
source: "const paymentMethod = await afriex.paymentMethods.create({\n channel: \"BANK_ACCOUNT\",\n customerId: \"customer-id\",\n accountName: \"John Doe\",\n accountNumber: \"1234567890\",\n countryCode: \"NG\",\n institution: {\n institutionCode: \"044\",\n institutionName: \"Access Bank\",\n },\n});\n"
get:
operationId: listPaymentMethods
summary: Get payment method list
description: Retrieves a paginated list of payment methods.
tags:
- Payment Methods
parameters:
- name: page
in: query
description: Page number for pagination (starting from 0)
required: false
schema:
type: integer
minimum: 0
default: 0
- name: limit
in: query
description: Number of items per page
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 10
- name: channel
in: query
description: Filter by one or more payment channels. Use a comma-separated list for multiple values (e.g. `?channel=BANK_ACCOUNT,MOBILE_MONEY`).
required: false
schema:
type: array
items:
type: string
enum:
- BANK_ACCOUNT
- MOBILE_MONEY
- INTERAC
- UPI
- WE_CHAT
- VIRTUAL_BANK_ACCOUNT
- RFP
- SWIFT
style: form
explode: false
- name: currencies
in: query
description: Filter by one or more 3-letter ISO 4217 currency codes. Use a comma-separated list for multiple values (e.g. `?currencies=USD,NGN`).
required: false
schema:
type: array
items:
type: string
style: form
explode: false
- name: capabilities
in: query
description: Filter by payment method capability. Only `WITHDRAW` is currently supported. Defaults to `WITHDRAW` when omitted.
required: false
schema:
type: array
items:
type: string
enum:
- WITHDRAW
default:
- WITHDRAW
style: form
explode: false
- name: status
in: query
description: Filter by one or more payment method statuses. Defaults to `active,pending` when omitted.
required: false
schema:
type: array
items:
type: string
enum:
- active
- pending
default:
- active
- pending
style: form
explode: false
responses:
'200':
description: List of payment methods retrieved successfully.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PaymentMethod'
page:
type: integer
description: Current page number
total:
type: integer
description: Total number of payment methods matching the query
examples:
success:
summary: Payment method list retrieved
value:
data:
- paymentMethodId: 6936b8774f987b2994865b73
channel: BANK_ACCOUNT
customerId: 6922e4520a53e858ab42efa8
institution:
institutionCode: '000013'
institutionName: GTBank
accountName: John Doe
accountNumber: '1234567890'
countryCode: NG
- paymentMethodId: 6936b8e54f987b2994865b8b
channel: BANK_ACCOUNT
customerId: 6928515c6befd180bc451622
institution:
institutionCode: '000017'
institutionName: WEMA BANK
accountName: Test Account
accountNumber: '1213131313'
countryCode: NG
total: 1006
page: 0
'401':
description: Unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
missingApiKey:
summary: Missing API key
value:
code: AUTHENTICATION_ERROR
error: Authorization header is missing
details: {}
invalidApiKey:
summary: Invalid API key
value:
code: AUTHENTICATION_ERROR
error: Invalid authorization header
details: {}
'422':
description: Request failed schema validation. `details.friendlyMessage` carries the specific field error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
validationError:
summary: Validation error
value:
code: VALIDATION_ERROR
error: Validation error
details:
errorMessage: Validation error
friendlyMessage: '''page'' must be a number'
'500':
description: Server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
serverError:
summary: Unexpected server error
value:
code: INTERNAL_SERVER_ERROR
error: It's not you, it's us, please reach out to support
details: {}
'503':
description: 'Temporarily unavailable: an upstream payment processor failed or timed out, or the API is restarting. Retry with backoff and honour the Retry-After header when present. The API never returns 502 or 504; if you receive one of those, it was generated by Cloudflare and its body does not follow this schema.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
serviceUnavailable:
summary: Upstream processor unavailable
value:
code: EXTERNAL_REQUEST_ERROR
error: External request error
details: {}
x-codeSamples:
- lang: TypeScript
label: Afriex SDK
source: "const response = await afriex.paymentMethods.list({\n page: 1,\n limit: 20,\n});\n"
/api/v1/payment-method/{paymentMethodId}:
parameters:
- $ref: '#/components/parameters/x-api-signature'
- $ref: '#/components/parameters/x-api-version'
get:
operationId: getPaymentMethod
summary: Get payment method by ID
description: Retrieves a specific payment method by its unique identifier.
tags:
- Payment Methods
parameters:
- name: paymentMethodId
in: path
description: The unique identifier of the payment method
required: true
schema:
type: string
responses:
'200':
description: Payment method retrieved successfully.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PaymentMethod'
examples:
success:
summary: Payment method retrieved
value:
data:
paymentMethodId: 6936b8774f987b2994865b73
channel: BANK_ACCOUNT
customerId: 6922e4520a53e858ab42efa8
institution:
institutionCode: '000013'
institutionName: GTBank
accountName: John Doe
accountNumber: '1234567890'
countryCode: NG
'400':
description: Request error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
validationError:
summary: Validation error
value:
code: VALIDATION_ERROR
error: 'Failed to parse request. Issues: ''paymentMethodId'' must be a string'
details: {}
'401':
description: Unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
missingApiKey:
summary: Missing API key
value:
code: AUTHENTICATION_ERROR
error: Authorization header is missing
details: {}
invalidApiKey:
summary: Invalid API key
value:
code: AUTHENTICATION_ERROR
error: Invalid authorization header
details: {}
'404':
description: Payment method not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
notFound:
summary: Payment method not found
value:
code: BUSINESS_PAYMENT_METHOD_NOT_FOUND
error: Business payment method not found
details:
errorMessage: Business payment method not found
friendlyMessage: ''
'500':
description: Server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
serverError:
summary: Unexpected server error
value:
code: INTERNAL_SERVER_ERROR
error: It's not you, it's us, please reach out to support
details: {}
'503':
description: 'Temporarily unavailable: an upstream payment processor failed or timed out, or the API is restarting. Retry with backoff and honour the Retry-After header when present. The API never returns 502 or 504; if you receive one of those, it was generated by Cloudflare and its body does not follow this schema.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
serviceUnavailable:
summary: Upstream processor unavailable
value:
code: EXTERNAL_REQUEST_ERROR
error: External request error
details: {}
x-codeSamples:
- lang: TypeScript
label: Afriex SDK
source: 'const paymentMethod = await afriex.paymentMethods.get("payment-method-id");
'
delete:
operationId: deletePaymentMethod
summary: Delete payment method
description: Removes a payment method from the system.
tags:
- Payment Methods
parameters:
- name: paymentMethodId
in: path
description: The unique identifier of the payment method
required: true
schema:
type: string
responses:
'200':
description: Payment method deleted successfully.
content:
application/json:
schema:
type: object
examples:
success:
summary: Payment method deleted
value: {}
'400':
description: Request error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
validationError:
summary: Validation error
value:
code: VALIDATION_ERROR
error: 'Failed to parse request. Issues: ''paymentMethodId'' must be a string'
details: {}
'401':
description: Unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
missingApiKey:
summary: Missing API key
value:
code: AUTHENTICATION_ERROR
error: Authorization header is missing
details: {}
invalidApiKey:
summary: Invalid API key
value:
code: AUTHENTICATION_ERROR
error: Invalid authorization header
details: {}
'404':
description: Payment method not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
notFound:
summary: Payment method not found
value:
code: BUSINESS_PAYMENT_METHOD_NOT_FOUND
error: Business payment method not found
details:
errorMessage: Business payment method not found
friendlyMessage: ''
'500':
description: Server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
serverError:
summary: Unexpected server error
value:
code: INTERNAL_SERVER_ERROR
error: It's not you, it's us, please reach out to support
details: {}
'503':
description: 'Temporarily unavailable: an upstream payment processor failed or timed out, or the API is restarting. Retry with backoff and honour the Retry-After header when present. The API never returns 502 or 504; if you receive one of those, it was generated by Cloudflare and its body does not follow this schema.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
serviceUnavailable:
summary: Upstream processor unavailable
value:
code: EXTERNAL_REQUEST_ERROR
error: External request error
details: {}
x-codeSamples:
- lang: TypeScript
label: Afriex SDK
source: 'await afriex.paymentMethods.delete("payment-method-id");
'
/api/v1/payment-method/institution:
parameters:
- $ref: '#/components/parameters/x-api-signature'
- $ref: '#/components/parameters/x-api-version'
get:
operationId: listInstitutions
summary: Get list of payment method institutions by country
description: Retrieves a list of banks or mobile money providers available for a specific country.
tags:
- Payment Methods
parameters:
- name: channel
in: query
description: The payment method channel. Institution lookup is only implemented for these three channels; any other channel returns `400 INVALID_TRANSACTION_CHANNEL`.
required: true
schema:
type: string
enum:
- BANK_ACCOUNT
- SWIFT
- MOBILE_MONEY
- name: countryCode
in: query
description: The ISO 3166-1 alpha-2 country code
required: true
schema:
type: string
enum:
- US
- NG
- GB
- DE
- FR
- CA
- ZA
- GH
- KE
- UG
- TZ
- RW
- CM
- CG
- GA
- CF
- CI
- BF
- ML
- SN
- TG
- BJ
- NE
- GN
- ZM
- ET
- MW
- MZ
- BW
- SL
- LR
- GM
- GW
- CV
- ST
- AO
- KM
- DJ
- SO
- SC
- MU
- SZ
- LS
responses:
'200':
description: List of banks or mobile money providers retrieved successfully.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PaymentMethodInstitution'
page:
type: integer
description: Current page number
total:
type: integer
description: Total number of items available
examples:
nigeriaBanks:
summary: Nigerian bank accounts
value:
data:
- institutionName: Guaranty Trust Bank (GTBank) Plc
institutionCode: '000013'
institutionBranch: ''
institutionAddress: ''
- institutionName: Zenith Bank
institutionCode: '000015'
institutionBranch: ''
institutionAddress: ''
- institutionName: Wema Bank
institutionCode: '000017'
institutionBranch: ''
institutionAddress: ''
total: 38
page: 0
ghanaMobileMoney:
summary: Ghana mobile money providers
value:
data:
- institutionName: MTN
institutionCode: MTN
- institutionName: TIGO
institutionCode: TIGO
- institutionName: AIRTEL
institutionCode: AIRTEL
total: 4
page: 0
'400':
description: Invalid request parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
missingParams:
summary: Missing required query parameters
value:
code: VALIDATION_ERROR
error: 'Failed to parse request. Issues: ''countryCode'' is required, ''channel'' is required'
details: {}
invalidChannel:
summary: Invalid channel value
value:
code: VALIDATION_ERROR
error: 'Failed to parse request. Issues: ''channel'' must be one of [BANK_ACCOUNT, MOBILE_MONEY, SWIFT, ...]'
details: {}
'401':
description: Unauthorized - Invalid business API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
missingApiKey:
summary: Missing API key
value:
code: AUTHENTICATION_ERROR
error: Authorization header is missing
details: {}
invalidApiKey:
summary: Invalid API key
# --- truncated at 32 KB (81 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/afriex/refs/heads/main/openapi/afriex-payment-methods-api-openapi.yml