Overview
The Customers API enables you to create, retrieve, update, and delete customer profiles. Use these endpoints to manage customer identity details, contact information, and track customers across transactions for reporting and compliance.
Create a new customer
Use Case
This endpoint is used to create a new customer.
Create Customer Request Body
Creating a customer for a naira virtual account, or for a card, takes different fields from the ones below. See Customer Requirements for virtual accounts, and Card KYC for cardholders. Not sure which applies? Read Which KYC endpoint do I use?.
A valid and unique email address used to identify and contact the customer. It also serves as a primary login credential.
First name of the customer. This is typically used for identification and personalization in communications.
Last name or surname of the customer. Combined with the first name to form the full legal name.
Customer’s active phone number, formatted in international standard (e.g., +233XXXXXXXXX). May be used for verification and notifications. Must be unique across your customers: see the note below.
Three-letter ISO 3166-1 alpha-3 country code (e.g. 'NGA', 'USA', 'GBR').
The type of customer account to create. Accepted values: 'individual' for personal accounts or 'business' for company accounts.
A unique, client-generated identifier for the customer. Useful for idempotency and for correlating the customer with records in your own system.
We match customers on email, phone_number and BVN (id_number). If you send an email, phone number or BVN that already belongs to one of your customers, you get 201 Created with that existing customer, and the other fields you sent are ignored. Compare the returned email, phone number and name with what you sent, and if they differ, one of those details is already taken.
Create Customer Response
Returns a Customer Response.
Standard response structure for all customer endpoints.
Top-level flag indicating whether the request was processed successfully.
Human-readable status message describing the outcome.
Envelope wrapping the created customer record.
Unique identifier assigned to the customer. Use it in subsequent endpoints (get, update, blacklist).
The customer's given name.
The customer's family name or surname.
Email address associated with the customer.
The customer account type: 'individual' or 'business'.
Identifier of the company this customer belongs to.
UUID of the dashboard user or API client that created this customer. It is an audit field, not something you need to supply or match.
Whether the customer account is currently active. Blacklisted customers return false.
Stringified JSON of additional metadata attached to the customer (e.g. '{}' when empty).
RFC 3339 / ISO 8601 timestamp of when the customer was created (UTC).
RFC 3339 / ISO 8601 timestamp of the most recent update to the customer record (UTC).
Top-level response metadata (support and debugging info).
Unique identifier for this API request, useful for log correlation and support.
Top-level RFC 3339 / ISO 8601 server timestamp of when the response was generated (UTC).
Update Customer
Use Case
This endpoint is used to update an existing customer's information.
The unique identifier of the customer you want to update
Update Customer Request Body
Customer's first name.
Customer's last name.
Whether the customer is active.
Only include the fields you want to change — any field omitted from the request body keeps its current value.
Update Customer Response
Returns an updated CustomerResponse..
The response is identical to that of Customer Response. Refer to that section for field explanations.
List Customers
Use Case
Retrieve a paginated list of customers, optionally filtering on id, reference, email, customer_type, or is_active. Pass any combination of these as query parameters on the GET /api/customers endpoint.
Query Parameters
Filter by the customer's system-generated UUID.
Filter by the customer's external reference if you attached one.
Filter by the customer's email address (exact match).
Filter by account type: 'individual' or 'business'.
Filter by active status — 'true' for active customers, 'false' for blacklisted/inactive.
Response
Returns data.customers[] with cursor-based pagination — has_more, next_cursor, prev_cursor, page_size, and total. Pass next_cursor on the next request to page forward.
Customer fields are identical to the Create Customer Response shape. Refer to that section for per-field explanations. Customers created with full KYC also include country, date_of_birth, id_type, id_number, dial_code, phone_number, line1, city, state, and postal_code.
Get Customer by ID
Use Case
Retrieve a single customer by its system-generated UUID, passed as a path parameter on the GET /api/customers/:customerId endpoint.
Path Parameters
The customer's system-generated UUID.
Response
Returns the customer object directly at data.
Customer fields are identical to the Create Customer Response shape. Refer to that section for per-field explanations.