Caricash Nova Platform
Home
Home
  1. Customers
  • Default module
    • Clients
      • PBAC for Customer Authentication
      • Create Clients
    • Internal
      • Accounts, Transactioins and Ledger Implementatioin
      • Ensure real-time balance guarantees
      • Web App Scaffold
      • Database Migrations Guide
      • Microservices
      • Service Implementation
      • TO-DO
      • Authentication & Authorization
    • Customers
      • Onboarding
  • Release Schedule
    • Agency Operations
      • Agent APIs Specs
        • auth
          • POST /v1/agent/auth/login
          • POST /v1/agent/auth/logout
          • POST /v1/agent/auth/refresh
          • POST /v1/agent/auth/device-bind
          • POST /v1/agent/auth/otp/request
          • POST /v1/agent/auth/otp/verify
        • agent
          • GET /v1/agent/me
          • PATCH /v1/agent/me
          • GET /v1/agent/outlet
          • GET /v1/agent/capabilities
        • kyc
          • POST /v1/kyc/customers
          • POST /v1/kyc/customers/{customer_id}/upgrade
          • POST /v1/kyc/customers/{customer_id}/rekcy
          • GET /v1/kyc/customers/{customer_id}/status
        • transactions
          • POST /v1/txns/cashin
          • POST /v1/txns/cashout
          • POST /v1/txns/p2p/assist
          • GET /v1/txns/{txn_id}
          • POST /v1/txns/{txn_id}/reverse
        • wallets
          • GET /v1/wallets/{wallet_id}/balance
          • GET /v1/wallets/{wallet_id}/transactions
        • float
          • GET /v1/float
          • POST /v1/float/topup
          • POST /v1/float/redeem
          • GET /v1/float/instructions/{instruction_id}
        • commissions
          • GET /v1/agents/{agent_id}/commissions
          • POST /v1/agents/{agent_id}/commissions/payouts/preview
          • POST /v1/agents/{agent_id}/commissions/payouts/accept
        • disputes
          • POST /v1/disputes
          • GET /v1/disputes/{case_id}
          • POST /v1/disputes/{case_id}/attachments
        • reports
          • GET /v1/reports/eod
          • POST /v1/reports/eod/close
          • GET /v1/reports/txns
          • GET /v1/reports/float
        • content
          • GET /v1/announcements
        • training
          • GET /v1/training/courses
          • POST /v1/training/quizzes/{quiz_id}/submit
        • ussd
          • POST /v1/ussd/session
          • POST /v1/ussd/agent/menu
        • ops
          • GET /v1/health
      • Agent Scope
        • Agent Scope
    • Customer Operations
      • Customer Scope
        • Customer & Merchant Scope
    • Schemas
      • Agent Ops APIs
  • Nova Core Banking Service API
    • core
      • Create account
      • Get account
      • Get balances
      • Create posting (double-entry)
      • Reverse posting
      • Check limits
      • Generate statement
    • Schemas
      • Schemas
        • Amount
        • Account
        • BalanceSet
        • PostingEntry
        • Posting
        • Hold
        • LimitCheckResponse
        • SavingsProduct
        • OverdraftLine
        • StatementRequest
        • Error
Home
Home
  1. Customers

Onboarding

Customer API Documentation#

Base URL#

/api/v1/customers

Create Customer#

POST /

Request#

Headers
Authorization: Bearer <token>
Content-Type: application/json
X-Correlation-ID: <optional trace id>
Body (application/json)
{
  "userId": "uuid",
  "avatar": "https://…",           // optional
  "countryId": "uuid",             // optional
  "nationalityId": "uuid"          // optional
}

Response#

201 Created
{
  "id": "uuid",
  "user": { "id": "uuid" } | null,
  "customerRef": "CXX12345678",
  "avatar": "https://…" | null,
  "countryId": "uuid" | null,
  "country": { "id":"uuid","name":"…","code":"…"} | null,
  "nationalityId": "uuid" | null,
  "nationality": { "id":"uuid","name":"…","code":"…"} | null,
  "kycStatus": "PENDING" | "APPROVED" | "REJECTED",
  "createdAt": "2025-07-23T13:24:00.000Z",
  "updatedAt": "2025-07-23T13:24:00.000Z"
}

Get Customer by ID#

GET /:id

Response#

200 OK
Same payload as Create Customer response.

Update Customer#

PATCH /:id

Request#

Body (application/json)
{
  "userId": "uuid",                // optional
  "avatar": "https://…",           // optional
  "countryId": "uuid",             // optional
  "nationalityId": "uuid"          // optional
}

Response#

200 OK
Same payload as Create Customer response, with updated timestamps.

Delete Customer#

DELETE /:id

Response#

204 No Content

Restore Customer#

POST /:id/restore

Response#

200 OK
Same payload as Create Customer response.

List Customers#

GET /

Query Parameters#

page (number, default 1)
limit (number, default 20)
customerRefContains (string, optional)
kycStatus (string, optional)
countryId (uuid, optional)
nationalityId (uuid, optional)

Response#

200 OK
[
  { /* customer DTO */ },
  { /* ... */ }
]
Response Metadata
X-Pagination-Total: <total>
X-Pagination-Page: <page>
X-Pagination-Limit: <limit>
X-Pagination-Total-Pages: <totalPages>

Onboard Customer#

POST /onboard

Request#

Body (application/json)
{
  "userId": "uuid",
  "phoneNumber": "+123456789",
  "strategyId": "uuid",
  "secretHash": "…",
  "avatar": "https://…",           // optional
  "countryId": "uuid",             // optional
  "nationalityId": "uuid",         // optional
  "config": { /* arbitrary key/value */ }  // optional
}

Response#

201 Created
{
  "customerId": "uuid",
  "phoneNumberId": "uuid",
  "authenticatorId": "uuid"
}

Error Responses#

400 Bad Request
{
  "errorCode": "VALIDATION_ERROR",
  "message": "...",
  "details": { "field": "…" }
}
401 Unauthorized
{
  "errorCode": "UNAUTHORIZED",
  "message": "Authentication token is invalid or missing."
}
409 Conflict
{
  "errorCode": "DUPLICATE_ENTITY",
  "message": "Customer with reference '…' already exists."
}
500 Internal Server Error
{
  "errorCode": "INTERNAL_SERVER_ERROR",
  "message": "…"
}

Notes#

customerRef is read-only and always generated by the server.
Use X-Correlation-ID for request tracing.
Validate phoneNumber in E.164 format on the client.
Modified at 2025-07-23 11:19:21
Previous
Authentication & Authorization
Next
POST /v1/agent/auth/login
Built with