Customers
Customer KYC
Update customer kyc
POST
/
customers
/
{id}
/
kyc
curl -X POST https://api.swervpay.co/api/v1/customers/{id}/kyc \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"tier": "FULL",
"information": {
"bvn": "12345678901",
"state": "Lagos",
"city": "Ikeja",
"country": "NG",
"address": "No 1, Ikeja",
"postal_code": "100001",
"date_of_birth": "1990-01-01",
"phone_number": "08012345678"
},
"document": {
"document_type": "PASSPORT",
"document_number": "A1234567",
"document": "https://example.com/document.jpg",
"passport": "https://example.com/passport.jpg"
}
}'
import { SwervpayClient } from '@swervpaydev/sdk';
const config = {
secretKey: "<SECRET_KEY>",
businessId: "<BUSINESS_ID>"
}
const swervpay = new SwervpayClient(config);
await swervpay.customer.kyc("<CUSTOMER_ID>", {
tier: "FULL",
information: {
bvn: "12345678901",
state: "Lagos",
city: "Ikeja",
country: "NG",
address: "No 1, Ikeja",
postal_code: "100001",
date_of_birth: "1990-01-01",
phone_number: "08012345678"
},
document: {
document_type: "PASSPORT",
document_number: "A1234567",
document: "https://example.com/document.jpg",
passport: "https://example.com/passport.jpg"
}
});
use Swervpaydev\SDK\Swervpay;
$config = [
'business_id' => '<BUSINESS_ID>',
'secret_key' => '<SECRET_KEY>'
];
$client = new Swervpay($config);
$client->customer()->kyc('<CUSTOMER_ID>', [
'tier' => 'FULL',
'information' => [
'bvn' => '12345678901',
'state' => 'Lagos',
'city' => 'Ikeja',
'country' => 'NG',
'address' => 'No 1, Ikeja',
'postal_code' => '100001',
'date_of_birth' => '1990-01-01',
'phone_number' => '08012345678'
],
'document' => [
'document_type' => 'PASSPORT',
'document_number' => 'A1234567',
'document' => 'https://example.com/document.jpg',
'passport' => 'https://example.com/passport.jpg'
]
]);
package main
import (
"context"
"fmt"
"github.com/swerv-ltd/swervpay-go"
"log"
)
func main() {
ctx := context.Background()
client := swervpay.NewSwervpayClient(&swervpay.SwervpayClientOption{
BusinessID: "<BUSINESS_ID>",
SecretKey: "<SECRET_KEY>",
})
data := swervpay.CustomerKycBody{
Tier: "FULL",
Tier1: swervpay.Tier1KycInput{
Bvn: "12345678901",
State: "Lagos",
City: "Ikeja",
Country: "NG",
Address: "No 1, Ikeja",
PostalCode: "100001",
DateOfBirth: "1990-01-01",
PhoneNumber: "08012345678",
},
Tier2: swervpay.Tier2KycInput{
DocumentType: "PASSPORT",
DocumentNumber: "A1234567",
Document: "https://example.com/document.jpg",
Passport: "https://example.com/passport.jpg",
},
}
resp, err := client.Customer.Kyc(ctx, "<CUSTOMER_ID>", data)
if err != nil {
log.Fatal("error", err.Error())
return
}
}
{
"message": "<string>"
}{
"message": "<string>",
"values": {}
}{
"message": "<string>",
"values": {}
}{
"message": "<string>",
"values": {}
}Submit KYC using the same ISO 3166-1 alpha-2 country code stored on the customer profile.
All Tier 1 requests also require the customer’s residential address, date of birth, and phone number. Use E.164 phone format, such as
Supported Tier 2 document types are
| Customer country | Required identity fields |
|---|---|
Nigeria (NG) | bvn |
Ghana (GH) | ssnit, or both bank_identifier and bank_identifier_type |
| All other supported countries | bank_identifier and bank_identifier_type |
+447911123456, outside Nigeria and Ghana. FULL requests include both information and document.
The KYC country must match the country supplied when the customer was created. The stored KYC address is used as the customer’s issuance address for supported products.
curl -X POST https://api.swervpay.co/api/v1/customers/{id}/kyc \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"tier": "FULL",
"information": {
"bvn": "12345678901",
"state": "Lagos",
"city": "Ikeja",
"country": "NG",
"address": "No 1, Ikeja",
"postal_code": "100001",
"date_of_birth": "1990-01-01",
"phone_number": "08012345678"
},
"document": {
"document_type": "PASSPORT",
"document_number": "A1234567",
"document": "https://example.com/document.jpg",
"passport": "https://example.com/passport.jpg"
}
}'
import { SwervpayClient } from '@swervpaydev/sdk';
const config = {
secretKey: "<SECRET_KEY>",
businessId: "<BUSINESS_ID>"
}
const swervpay = new SwervpayClient(config);
await swervpay.customer.kyc("<CUSTOMER_ID>", {
tier: "FULL",
information: {
bvn: "12345678901",
state: "Lagos",
city: "Ikeja",
country: "NG",
address: "No 1, Ikeja",
postal_code: "100001",
date_of_birth: "1990-01-01",
phone_number: "08012345678"
},
document: {
document_type: "PASSPORT",
document_number: "A1234567",
document: "https://example.com/document.jpg",
passport: "https://example.com/passport.jpg"
}
});
use Swervpaydev\SDK\Swervpay;
$config = [
'business_id' => '<BUSINESS_ID>',
'secret_key' => '<SECRET_KEY>'
];
$client = new Swervpay($config);
$client->customer()->kyc('<CUSTOMER_ID>', [
'tier' => 'FULL',
'information' => [
'bvn' => '12345678901',
'state' => 'Lagos',
'city' => 'Ikeja',
'country' => 'NG',
'address' => 'No 1, Ikeja',
'postal_code' => '100001',
'date_of_birth' => '1990-01-01',
'phone_number' => '08012345678'
],
'document' => [
'document_type' => 'PASSPORT',
'document_number' => 'A1234567',
'document' => 'https://example.com/document.jpg',
'passport' => 'https://example.com/passport.jpg'
]
]);
package main
import (
"context"
"fmt"
"github.com/swerv-ltd/swervpay-go"
"log"
)
func main() {
ctx := context.Background()
client := swervpay.NewSwervpayClient(&swervpay.SwervpayClientOption{
BusinessID: "<BUSINESS_ID>",
SecretKey: "<SECRET_KEY>",
})
data := swervpay.CustomerKycBody{
Tier: "FULL",
Tier1: swervpay.Tier1KycInput{
Bvn: "12345678901",
State: "Lagos",
City: "Ikeja",
Country: "NG",
Address: "No 1, Ikeja",
PostalCode: "100001",
DateOfBirth: "1990-01-01",
PhoneNumber: "08012345678",
},
Tier2: swervpay.Tier2KycInput{
DocumentType: "PASSPORT",
DocumentNumber: "A1234567",
Document: "https://example.com/document.jpg",
Passport: "https://example.com/passport.jpg",
},
}
resp, err := client.Customer.Kyc(ctx, "<CUSTOMER_ID>", data)
if err != nil {
log.Fatal("error", err.Error())
return
}
}
Non-Nigerian example
Use the customer’s country-specific bank or tax identifier. Swerv normalizes the identifier type to uppercase but does not translate the identifier value.United Kingdom Tier 1
{
"tier": "ONE",
"information": {
"bank_identifier": "QQ123456C",
"bank_identifier_type": "NINO",
"state": "England",
"city": "Hounslow",
"country": "GB",
"address": "Unit 2, 161-163 Staines Road",
"postal_code": "TW3 3JZ",
"date_of_birth": "1990-01-01",
"phone_number": "+447911123456"
}
}
NIN, PASSPORT, NATIONAL_ID, DRIVERS_LICENSE, VOTERS_CARD, and GHANA_CARD.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
application/json
Response
OK
Was this page helpful?
⌘I
curl -X POST https://api.swervpay.co/api/v1/customers/{id}/kyc \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"tier": "FULL",
"information": {
"bvn": "12345678901",
"state": "Lagos",
"city": "Ikeja",
"country": "NG",
"address": "No 1, Ikeja",
"postal_code": "100001",
"date_of_birth": "1990-01-01",
"phone_number": "08012345678"
},
"document": {
"document_type": "PASSPORT",
"document_number": "A1234567",
"document": "https://example.com/document.jpg",
"passport": "https://example.com/passport.jpg"
}
}'
import { SwervpayClient } from '@swervpaydev/sdk';
const config = {
secretKey: "<SECRET_KEY>",
businessId: "<BUSINESS_ID>"
}
const swervpay = new SwervpayClient(config);
await swervpay.customer.kyc("<CUSTOMER_ID>", {
tier: "FULL",
information: {
bvn: "12345678901",
state: "Lagos",
city: "Ikeja",
country: "NG",
address: "No 1, Ikeja",
postal_code: "100001",
date_of_birth: "1990-01-01",
phone_number: "08012345678"
},
document: {
document_type: "PASSPORT",
document_number: "A1234567",
document: "https://example.com/document.jpg",
passport: "https://example.com/passport.jpg"
}
});
use Swervpaydev\SDK\Swervpay;
$config = [
'business_id' => '<BUSINESS_ID>',
'secret_key' => '<SECRET_KEY>'
];
$client = new Swervpay($config);
$client->customer()->kyc('<CUSTOMER_ID>', [
'tier' => 'FULL',
'information' => [
'bvn' => '12345678901',
'state' => 'Lagos',
'city' => 'Ikeja',
'country' => 'NG',
'address' => 'No 1, Ikeja',
'postal_code' => '100001',
'date_of_birth' => '1990-01-01',
'phone_number' => '08012345678'
],
'document' => [
'document_type' => 'PASSPORT',
'document_number' => 'A1234567',
'document' => 'https://example.com/document.jpg',
'passport' => 'https://example.com/passport.jpg'
]
]);
package main
import (
"context"
"fmt"
"github.com/swerv-ltd/swervpay-go"
"log"
)
func main() {
ctx := context.Background()
client := swervpay.NewSwervpayClient(&swervpay.SwervpayClientOption{
BusinessID: "<BUSINESS_ID>",
SecretKey: "<SECRET_KEY>",
})
data := swervpay.CustomerKycBody{
Tier: "FULL",
Tier1: swervpay.Tier1KycInput{
Bvn: "12345678901",
State: "Lagos",
City: "Ikeja",
Country: "NG",
Address: "No 1, Ikeja",
PostalCode: "100001",
DateOfBirth: "1990-01-01",
PhoneNumber: "08012345678",
},
Tier2: swervpay.Tier2KycInput{
DocumentType: "PASSPORT",
DocumentNumber: "A1234567",
Document: "https://example.com/document.jpg",
Passport: "https://example.com/passport.jpg",
},
}
resp, err := client.Customer.Kyc(ctx, "<CUSTOMER_ID>", data)
if err != nil {
log.Fatal("error", err.Error())
return
}
}
{
"message": "<string>"
}{
"message": "<string>",
"values": {}
}{
"message": "<string>",
"values": {}
}{
"message": "<string>",
"values": {}
}