Every end user who transacts through Partna needs an account and must complete identity verification (KYC). This is a regulatory requirement for all transactions. Users only need to verify once.
Creating an account
Use Create Account to register a new user:
curl --request POST \
--url https://staging-api.getpartna.com/v4/account \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-api-user: YOUR_USERNAME' \
--data '{
"email": "user@example.com",
"accountName": "Jane Doe"
}'
You can also use Register Account if your merchant registration type is set to “open”, which creates a pending registration that the user can complete later.
KYC verification flow
Identity verification in Nigeria uses BVN (Bank Verification Number). The flow depends on the user’s country and the available verification methods.
Initiate KYC
Call Initiate KYC with the user’s identity information (e.g., BVN for Nigeria). This triggers an OTP to be sent to the phone number associated with the user’s identity.curl --request POST \
--url https://staging-api.getpartna.com/v4/kyc/initiate \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-api-user: YOUR_USERNAME' \
--data '{
"bvn": "12345678901",
"accountName": "user-account-name"
}'Check supported verification methods
Confirm phone number
After OTP verification, confirm the user’s phone number using Confirm Phone. Check supported verification methods
Call Supported Verification Methods to see which identity verification methods are available for a given country.curl --request GET \
--url 'https://staging-api.getpartna.com/v4/kyc/verification-methods?country=NG' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-api-user: YOUR_USERNAME'
Confirm OTP
Once the user receives the OTP, submit it using Confirm KYC OTP.curl --request PUT \
--url https://staging-api.getpartna.com/v4/kyc/confirm-otp \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-api-user: YOUR_USERNAME' \
--data '{
"otp": "123456",
"accountName": "user-account-name"
}'
In some cases, the user may need to select how they receive the OTP (e.g., SMS or phone call).
After successful verification, you will receive a verification.success webhook event. The user can now transact.
Merchant-managed KYC
If you have already verified your users’ identities through your own KYC process, you can use Merchant KYC Manually to mark a user as verified without going through Partna’s KYC flow. This requires approval from the Partna team during onboarding.
curl --request POST \
--url https://staging-api.getpartna.com/v4/kyc/merchant-kyc \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-api-user: YOUR_USERNAME' \
--data '{
"accountName": "user-account-name",
"firstName": "Jane",
"lastName": "Doe",
"dateOfBirth": "1990-01-15"
}'
Checking KYC status
Use Check Manual KYC to check whether a user has completed identity verification.
Resolving bank accounts
Before initiating payouts or offramp transactions, verify the destination bank account using Resolve Bank:
curl --request POST \
--url https://staging-api.getpartna.com/v4/kyc/resolve-account \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-api-user: YOUR_USERNAME' \
--data '{
"accountNumber": "0123456789",
"bankCode": "044",
"currency": "NGN"
}'
This returns the account holder’s name so you can confirm it matches before sending funds.
Creating bank accounts for users
Use Create Bank Account to link a verified bank account to a user’s Partna account. This is required before the user can receive local currency payouts.
Account management