Skip to main content
A customer is the single, canonical record for one of your end-users. The same customer is used for wallets and cards — you never create the customer twice. Provide the fields a card would need up front and the one record satisfies both.
This is the canonical customer endpoint. It supersedes the older POST /api/v1/business/customers create call — use POST /api/v1/customers for all new integrations.

Create or update a customer

Signature required: Yes · Scope: customers:write Upsert semantics: if you pass an externalId (your own stable id) that already exists, the record is updated in place — so a repeat is safe and stays in sync with your system.

Request body

Supplying a bvn (or any ID field) does not raise the customer’s KYC tier. A tier only moves when Numero itself verifies the evidence — see below. This is deliberate: a provider accepting a payload is not proof anyone checked it.

Request example

Response

id is our canonical customer id. Your externalId and the per-provider issuer ids (for cards) all resolve to this one record.

Read a customer

Scope: customers:write. Returns the same customer object as the upsert, including the live kycTier and capabilities.

Submit KYC (verify identity, raise the tier)

Signature required: Yes · Scope: kyc:write Submit one identity item at a time. Numero verifies it through a real provider check (billed to your account), records the pass, and recomputes the customer’s tier from everything verified so far. A tier only rises when a check genuinely passes — never from a value you merely supply. Default ladder (admin-configurable): BVN → tier 1 (receive external); BVN + NIN + a government ID → tier 2 (pay out, card); + address → tier 3 (elevated limits).
Each response is the updated customer with the new kycTier and capabilities. Submitting an item whose category is already verified is idempotent — it is not re-charged.
The tiers, their requirements, and their limits are configured by your Numero admin and may differ from the defaults shown here. Always read kycTier and capabilities from the response rather than hard-coding the ladder.