API Reference
PayKore Partner API (1.0.0)
Download OpenAPI specification:Download
The PayKore Partner API enables fintech companies to embed wallets, payments, transfers, and KYC into their products.
All requests require a Bearer JWT in the Authorization header.
Amounts are always in kobo (1 NGN = 100 kobo).
Create a wallet
Creates a wallet in pending state and queues async NUBAN provisioning.
The wallet transitions to active when the MFB provisions the account.
Listen for the wallet.activated webhook event.
Authorizations:
Request Body schema: application/jsonrequired
| user_ref required | string Unique identifier for the wallet owner in your system. |
| currency | string Default: "NGN" Only NGN is supported. |
object |
Responses
Request samples
- Payload
{- "user_ref": "string",
- "currency": "NGN",
- "metadata": { }
}Response samples
- 202
- 401
- 409
- 422
- 429
- 500
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "partner_id": "6a3a39f6-861b-4a48-b868-5de838400e06",
- "user_ref": "string",
- "currency": "NGN",
- "status": "pending",
- "account_number": "0123456789",
- "account_name": "Ada Okafor / PayKore",
- "bank_code": "090270",
- "bank_name": "Anchor Microfinance Bank",
- "mfb_reference": "string",
- "account_status": "provisioning",
- "metadata": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}Get a wallet
Returns wallet details including current balance and account status.
Authorizations:
path Parameters
| id required | string <uuid> |
Responses
Response samples
- 200
- 401
- 404
- 429
- 500
{- "data": {
- "wallet": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "partner_id": "6a3a39f6-861b-4a48-b868-5de838400e06",
- "user_ref": "string",
- "currency": "NGN",
- "status": "pending",
- "account_number": "0123456789",
- "account_name": "Ada Okafor / PayKore",
- "bank_code": "090270",
- "bank_name": "Anchor Microfinance Bank",
- "mfb_reference": "string",
- "account_status": "provisioning",
- "metadata": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "balance_kobo": 0
}
}List wallet transactions
Authorizations:
path Parameters
| id required | string <uuid> |
query Parameters
| cursor | string Opaque pagination cursor from the previous response. |
| limit | integer [ 1 .. 100 ] Default: 20 Number of records to return (default 20, max 100). |
Responses
Response samples
- 200
- 401
- 404
- 429
- 500
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "partner_id": "6a3a39f6-861b-4a48-b868-5de838400e06",
- "reference": "string",
- "type": "wallet_funding",
- "status": "pending",
- "amount": 0,
- "currency": "NGN",
- "source_wallet": "8e90aa32-88d9-4da3-aef5-262da327d9cd",
- "dest_wallet": "4adb59ad-15f7-414e-994a-0bd1ea058671",
- "fee_breakdown": {
- "customerFee": 0,
- "merchantFee": 0,
- "platformFee": 0,
- "mfbCost": 0,
- "netAmount": 0
}, - "mfb_reference": "string",
- "description": "string",
- "metadata": { },
- "failed_reason": "string",
- "completed_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Wallet-to-wallet transfer
Transfers funds between two PayKore wallets instantly, with no NIP fee.
Authorizations:
Request Body schema: application/jsonrequired
| source_wallet required | string <uuid> |
| dest_wallet required | string <uuid> |
| amount required | integer >= 1 Amount in kobo. |
| reference required | string Idempotency key — safe to retry with same value. |
| description | string |
Responses
Request samples
- Payload
{- "source_wallet": "8e90aa32-88d9-4da3-aef5-262da327d9cd",
- "dest_wallet": "4adb59ad-15f7-414e-994a-0bd1ea058671",
- "amount": 1,
- "reference": "string",
- "description": "string"
}Response samples
- 200
- 401
- 422
- 429
- 500
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "partner_id": "6a3a39f6-861b-4a48-b868-5de838400e06",
- "reference": "string",
- "type": "wallet_funding",
- "status": "pending",
- "amount": 0,
- "currency": "NGN",
- "source_wallet": "8e90aa32-88d9-4da3-aef5-262da327d9cd",
- "dest_wallet": "4adb59ad-15f7-414e-994a-0bd1ea058671",
- "fee_breakdown": {
- "customerFee": 0,
- "merchantFee": 0,
- "platformFee": 0,
- "mfbCost": 0,
- "netAmount": 0
}, - "mfb_reference": "string",
- "description": "string",
- "metadata": { },
- "failed_reason": "string",
- "completed_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}Outbound bank transfer (NIP)
Initiates an outbound NIP transfer to any Nigerian bank account.
The transaction starts as processing and moves to completed or failed
via the transfer_status MFB webhook. Listen for transaction.completed
and transaction.failed partner webhook events.
Authorizations:
Request Body schema: application/jsonrequired
| source_wallet required | string <uuid> |
required | object (BankAccount) |
| amount required | integer >= 1 Amount in kobo. |
| reference required | string Idempotency key. |
| description | string |
Responses
Request samples
- Payload
{- "source_wallet": "8e90aa32-88d9-4da3-aef5-262da327d9cd",
- "dest_account": {
- "bank_code": "044",
- "account_number": "0123456789",
- "account_name": "Ada Okafor"
}, - "amount": 1,
- "reference": "string",
- "description": "string"
}Response samples
- 202
- 401
- 422
- 429
- 500
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "partner_id": "6a3a39f6-861b-4a48-b868-5de838400e06",
- "reference": "string",
- "type": "wallet_funding",
- "status": "pending",
- "amount": 0,
- "currency": "NGN",
- "source_wallet": "8e90aa32-88d9-4da3-aef5-262da327d9cd",
- "dest_wallet": "4adb59ad-15f7-414e-994a-0bd1ea058671",
- "fee_breakdown": {
- "customerFee": 0,
- "merchantFee": 0,
- "platformFee": 0,
- "mfbCost": 0,
- "netAmount": 0
}, - "mfb_reference": "string",
- "description": "string",
- "metadata": { },
- "failed_reason": "string",
- "completed_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}Create a QR payment request
Authorizations:
Request Body schema: application/jsonrequired
| wallet_id required | string <uuid> |
| amount required | integer >= 1 |
| reference required | string |
| description | string |
| expires_in_seconds | integer Default: 300 |
Responses
Request samples
- Payload
{- "wallet_id": "d9a8fbfc-848f-43a2-9168-911ed3a04a48",
- "amount": 1,
- "reference": "string",
- "description": "string",
- "expires_in_seconds": 300
}Response samples
- 200
- 401
- 422
- 429
- 500
{- "data": {
- "qr_code": "string",
- "reference": "string",
- "expires_at": "2019-08-24T14:15:22Z"
}
}Pay a QR payment request
Authorizations:
Request Body schema: application/jsonrequired
| qr_reference required | string |
| source_wallet required | string <uuid> |
Responses
Request samples
- Payload
{- "qr_reference": "string",
- "source_wallet": "8e90aa32-88d9-4da3-aef5-262da327d9cd"
}Response samples
- 200
- 401
- 404
- 422
- 429
- 500
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "partner_id": "6a3a39f6-861b-4a48-b868-5de838400e06",
- "reference": "string",
- "type": "wallet_funding",
- "status": "pending",
- "amount": 0,
- "currency": "NGN",
- "source_wallet": "8e90aa32-88d9-4da3-aef5-262da327d9cd",
- "dest_wallet": "4adb59ad-15f7-414e-994a-0bd1ea058671",
- "fee_breakdown": {
- "customerFee": 0,
- "merchantFee": 0,
- "platformFee": 0,
- "mfbCost": 0,
- "netAmount": 0
}, - "mfb_reference": "string",
- "description": "string",
- "metadata": { },
- "failed_reason": "string",
- "completed_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}Initiate a USSD payment
Authorizations:
Request Body schema: application/jsonrequired
| wallet_id required | string <uuid> |
| amount required | integer >= 1 |
| reference required | string |
| phone required | string Customer's phone number in E.164 format. |
Responses
Request samples
- Payload
{- "wallet_id": "d9a8fbfc-848f-43a2-9168-911ed3a04a48",
- "amount": 1,
- "reference": "string",
- "phone": "string"
}Response samples
- 200
- 401
- 422
- 429
- 500
{- "data": {
- "ussd_code": "*123*456#",
- "session_id": "string",
- "expires_at": "2019-08-24T14:15:22Z"
}
}Split payment across multiple wallets
Authorizations:
Request Body schema: application/jsonrequired
| source_wallet required | string <uuid> |
| reference required | string |
| description | string |
required | Array of objects (SplitEntry) >= 2 items |
Responses
Request samples
- Payload
{- "source_wallet": "8e90aa32-88d9-4da3-aef5-262da327d9cd",
- "reference": "string",
- "description": "string",
- "splits": [
- {
- "wallet_id": "d9a8fbfc-848f-43a2-9168-911ed3a04a48",
- "amount": 0,
- "percentage": 0.1
}, - {
- "wallet_id": "d9a8fbfc-848f-43a2-9168-911ed3a04a48",
- "amount": 0,
- "percentage": 0.1
}
]
}Response samples
- 200
- 401
- 422
- 429
- 500
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "partner_id": "6a3a39f6-861b-4a48-b868-5de838400e06",
- "reference": "string",
- "type": "wallet_funding",
- "status": "pending",
- "amount": 0,
- "currency": "NGN",
- "source_wallet": "8e90aa32-88d9-4da3-aef5-262da327d9cd",
- "dest_wallet": "4adb59ad-15f7-414e-994a-0bd1ea058671",
- "fee_breakdown": {
- "customerFee": 0,
- "merchantFee": 0,
- "platformFee": 0,
- "mfbCost": 0,
- "netAmount": 0
}, - "mfb_reference": "string",
- "description": "string",
- "metadata": { },
- "failed_reason": "string",
- "completed_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Submit BVN for verification
Authorizations:
Request Body schema: application/jsonrequired
| user_ref required | string |
| bvn required | string^\d{11}$ 11-digit Bank Verification Number. |
Responses
Request samples
- Payload
{- "user_ref": "string",
- "bvn": "string"
}Response samples
- 202
- 401
- 422
- 429
- 500
{- "data": {
- "verification_id": "5bcbf7ac-c998-46ce-aa6e-a0c1a3f1f5bd",
- "status": "pending"
}
}Submit NIN for verification
Authorizations:
Request Body schema: application/jsonrequired
| user_ref required | string |
| nin required | string^\d{11}$ 11-digit National Identification Number. |
Responses
Request samples
- Payload
{- "user_ref": "string",
- "nin": "string"
}Response samples
- 202
- 401
- 422
- 429
- 500
{- "data": {
- "verification_id": "5bcbf7ac-c998-46ce-aa6e-a0c1a3f1f5bd",
- "status": "pending"
}
}Get KYC verification status for a user
Authorizations:
path Parameters
| userRef required | string |
Responses
Response samples
- 200
- 401
- 404
- 429
- 500
{- "data": {
- "user_ref": "string",
- "verifications": [
- {
- "verification_id": "5bcbf7ac-c998-46ce-aa6e-a0c1a3f1f5bd",
- "type": "bvn",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z"
}
]
}
}Response samples
- 200
- 401
- 500
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "partner_id": "6a3a39f6-861b-4a48-b868-5de838400e06",
- "events": [
- "transaction.completed",
- "wallet.activated"
], - "is_active": true,
- "created_at": "2019-08-24T14:15:22Z"
}
]
}Register a webhook endpoint
Authorizations:
Request Body schema: application/jsonrequired
| url required | string <uri> |
| events required | Array of strings non-empty |
Responses
Request samples
- Payload
{- "events": [
- "transaction.completed",
- "transaction.failed",
- "wallet.activated",
- "kyc.verified",
- "kyc.failed"
]
}Response samples
- 201
- 401
- 422
- 500
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "partner_id": "6a3a39f6-861b-4a48-b868-5de838400e06",
- "events": [
- "transaction.completed",
- "wallet.activated"
], - "is_active": true,
- "created_at": "2019-08-24T14:15:22Z"
}
}Get compliance status
Returns the partner's KYB compliance record and step completion status.
Authorizations:
Responses
Response samples
- 200
- 401
- 500
{- "data": {
- "overall_status": "incomplete",
- "cac_number": "string",
- "business_type": "llc",
- "terms_version": "string",
- "rejection_reason": "string",
- "steps": {
- "business_info": true,
- "directors": true,
- "agreements": true,
- "use_case": true
}, - "directors_submitted_at": "2019-08-24T14:15:22Z",
- "terms_accepted_at": "2019-08-24T14:15:22Z",
- "aml_policy_accepted_at": "2019-08-24T14:15:22Z",
- "dpa_accepted_at": "2019-08-24T14:15:22Z",
- "use_case_description": "string"
}
}Submit business information
Submits CAC number and business type. Can be resubmitted to correct mistakes.
Authorizations:
Request Body schema: application/jsonrequired
| cac_number required | string CAC registration number (RC/BN/IT followed by 5–8 digits). |
| business_type required | string Enum: "llc" "sole_prop" "ngo" "partnership" |
Responses
Request samples
- Payload
{- "cac_number": "RC123456",
- "business_type": "llc"
}Response samples
- 200
- 401
- 422
- 500
{- "status": "ok"
}Submit directors / beneficial owners
Submits director information. BVN and NIN are encrypted at rest.
BVN verification runs asynchronously — listen for the kyc.verified event.
Authorizations:
Request Body schema: application/jsonrequired
required | Array of objects non-empty | ||||||||
Array (non-empty)
| |||||||||
Responses
Request samples
- Payload
{- "directors": [
- {
- "full_name": "string",
- "role": "CEO",
- "bvn": "string",
- "nin": "string"
}
]
}Response samples
- 200
- 401
- 422
- 500
{- "status": "ok"
}Accept legal agreements
All three agreements must be accepted simultaneously.
Authorizations:
Request Body schema: application/jsonrequired
| terms required | boolean Value: true Must be true. |
| aml_policy required | boolean Value: true Must be true. |
| dpa required | boolean Value: true Must be true. |
Responses
Request samples
- Payload
{- "terms": true,
- "aml_policy": true,
- "dpa": true
}Response samples
- 200
- 401
- 422
- 500
{- "status": "ok"
}Submit use case description
Describes the partner's intended use of the PayKore API.
Submitting this step when all others are complete automatically transitions
the overall status to submitted for admin review.
Authorizations:
Request Body schema: application/jsonrequired
| description required | string >= 20 characters |
Responses
Request samples
- Payload
{- "description": "stringstringstringst"
}Response samples
- 200
- 401
- 422
- 500
{- "status": "ok"
}