Skip to main content
POST
Create or update a customer 🔒

Authorizations

X-Numero-Api-Key
string
header
required

Your business API key (live_key_...). Issued on approval; managed in Dashboard → Settings → Developer.

X-Numero-Signature
string
header
required

Base64(HMAC-SHA256(publicApiKey, input)) over the raw request body (POST) or canonicalized query string (signed GET). Also send X-Numero-Signature-Version: v2. Required on money-movement / state-changing endpoints (marked 🔒).

The HMAC key is your Public Key as raw UTF-8 bytes — a SECRET despite the name, and a different value from the X-Numero-Api-Key authentication header. Signing with the API key will never produce a valid signature.

Body

application/json

All fields are optional. Supply externalId to make the call idempotent and to keep the record in sync with your own system.

externalId
string

Your own stable id for this customer. Repeating a call with the same value updates that customer.

firstName
string
lastName
string
email
string<email>
phoneNumber
string
dateOfBirth
string<date>
country
string

ISO 3166-1 alpha-2 (NG

bvn
string

Stored for later verification. A BVN you assert does not raise the customer's tier — only a successful KYC check does.

address1
string
address2
string
city
string
state
string
zipcode
string
idType
string
idNumber
string
idDocumentFrontUrl
string<uri>
idDocumentBackUrl
string<uri>
metadataJson
string

Opaque merchant metadata

profiles
enum<string>[]

Which profiles to attach — card and/or billing. Explicit rather than inferred from which fields are populated.

Available options:
card,
billing

Response

The customer

Canonical response envelope for the public surface. data on success, error on failure.

data
object
required

One customer, with everything they own attached.

error
object | null
required
meta
object
required