Skip to main content
POST
Register new customer

Overview

POST /customers registers a new customer in your company and submits their KYC documents to Cartevo’s verification provider. This endpoint accepts the documents as uploaded files (multipart/form-data). For URL-based document submission, use POST /customers/enroll instead. After creation, the customer’s kyc_status starts as PENDING and transitions to APPROVED (or REJECTED) once the upstream verification completes — typically within minutes for automated checks.

When to use it

  • You hold the customer’s KYC documents locally as image/PDF files (e.g. uploaded by the customer through your app).
  • You want a single round-trip rather than uploading documents to your own storage first.
For comparison:

Prerequisites

  • Your company has completed KYB and is in APPROVED status.
  • You have a government-issued ID document for the customer (front; back required for some types).

Request

Headers

Query parameters

Body fields

File constraints

  • Accepted MIME types: image/jpeg, image/png, application/pdf.
  • Recommended resolution: ≥ 200 DPI; the entire document edge-to-edge visible; no glare; legible text.
  • Max file size: 10 MB per file (operational guidance — the upstream verifier may reject larger or lower-quality files).

Example

Response

201 — Customer created

Note on KYC status: This response does not include a kyc_status field. KYC verification runs asynchronously after creation. Listen for the relevant webhook (customer.created is fired immediately; KYC outcome events will be added separately) or poll GET /customers/{id} to check the status.

Error responses

Webhooks fired

  • customer.created — emitted immediately after the customer record is persisted.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

enroll
string

Enroll customer on Provider

Example:

"true"

Body

multipart/form-data
email
string<email>
required
Example:

"john.doe@example.com"

first_name
string
required
Required string length: 3 - 255
Example:

"John"

last_name
string
required
Required string length: 3 - 255
Example:

"Doe"

country
string
required
Required string length: 2 - 255
Example:

"Nigeria"

street
string
required
Required string length: 2 - 255
Example:

"123 Main Street"

city
string
required
Required string length: 2 - 255
Example:

"Lagos"

state
string
required
Required string length: 2 - 255
Example:

"Lagos State"

postal_code
string
required
Required string length: 3 - 255
Example:

"100001"

country_iso_code
string
required
Required string length: 1 - 255
Example:

"CM"

country_phone_code
string
required
Required string length: 1 - 255
Example:

"+234"

phone_number
string
required
Required string length: 3 - 255
Example:

"8012345678"

identification_number
string
required
Required string length: 1 - 255
Example:

"12345678901"

id_document_type
enum<string>
required
Available options:
NIN,
PASSPORT,
VOTERS_CARD,
DRIVERS_LICENSE
Example:

"NIN"

date_of_birth
string<date>
required
Example:

"1990-01-15"

id_document_front
file
required
id_document_back
file

Response

Customer registered successfully

success
boolean
Example:

true

statusCode
integer
Example:

200

message
string
Example:

"Data retrieved successfully"

data
object