Skip to main content

CoreWave API Channel Documentation (Super Detailed)

Version: v1
Last Updated: 2026-03-03

This document is the implementation-level API reference for the API channel in this repository.

Export API Reference (.json) for Postman

0. Read This First (10-Second Mode)

0.1 Minimal Copy/Paste Bootstrap Calls

Authenticate:

curl --location '{{baseurl}}/api/auth/v1/authenticate' \
--header 'Content-Type: application/json' \
--data '{
"clientId": "YOUR_CLIENT_ID",
"clientSecret": "YOUR_CLIENT_SECRET"
}'

Template secured call:

curl --location '{{baseurl}}/api/account/v1/searchaccount?PageNumber=1&PageSize=10' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'request-reference: req-001-unique' \
--header 'Content-Type: application/json'

Hard health-check call (simple + safe):

curl --location '{{baseurl}}/api/product/v1/searchproducts?PageNumber=1&PageSize=1' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'request-reference: req-002-unique' \
--header 'Content-Type: application/json'

1. Platform Conventions

1.1 Base Pattern

  • Route pattern: /api/{module}/v1/{action}
  • Example: /api/account/v1/createcustomeraccount

1.2 Authorization

  • Authenticate via /api/auth/v1/authenticate with clientId and clientSecret.
  • Use Authorization: Bearer {token} on secured endpoints.
  • API-channel policy requires actor_type=api_client claim.

1.3 API Key Inactivity Rule

  • Unused API clients are auto-deactivated after 14 days.

1.4 Common Headers

  • Authorization: bearer {token}
  • Content-Type: application/json
  • request-reference: {unique_value} (recommended)

1.5 Amount Unit

  • Monetary values are in Naira (not kobo).

1.6 Institution-Level Integration Config

  • Bills, Transfer, and Card integrations are configured per institution in Configuration.
  • Shared gateway keys are appsettings fallback only.

2. Authentication (AUTH)

Base route: /api/auth/v1

2.1 POST /authenticate

Request:

{
"clientId": "string",
"clientSecret": "string"
}

Success:

{
"accessToken": "string",
"tokenType": "Bearer",
"expirationTime": 1700000000,
"tokenValiditySec": 3600
}

3. Module Order (Folder Alphabetical)

  1. Accounts (/api/account/v1)
  2. Account Lien (/api/accountlien/v1)
  3. Account Overdraft (/api/accountoverdraft/v1)
  4. Bills (/api/bills/v1)
  5. Cards (/api/card/v1)
  6. Fixed Deposits (/api/fixeddepositaccount/v1)
  7. Limits (/api/limit/v1)
  8. Loans (/api/loanaccount/v1)
  9. Operations (/api/operations/v1)
  10. Postings (/api/postings/v1)
  11. Product (/api/product/v1)
  12. Report (/api/report/v1)
  13. Transfer (/api/transfer/v1)

4. Endpoint Inventory (Complete)

FolderMethodEndpoint
AuthPOST/api/auth/v1/authenticate
AccountPOST/api/account/v1/createcustomeraccount
AccountPOST/api/account/v1/createaccount
AccountPOST/api/account/v1/creategroupcustomerinformation
AccountPUT/api/account/v1/updatecustomeraccount
AccountPUT/api/account/v1/updatecustomerinformation
AccountPUT/api/account/v1/updategroupcustomerinformation
AccountPUT/api/account/v1/activate
AccountPUT/api/account/v1/deactivate
AccountPUT/api/account/v1/unfreeze
AccountGET/api/account/v1/searchaccount
AccountGET/api/account/v1/getaccountbalancebyaccountnumber
AccountGET/api/account/v1/getbyaccountnumber
AccountGET/api/account/v1/getextendedbalancebyaccountnumber
AccountGET/api/account/v1/searchaccountofficers
AccountGET/api/account/v1/searchgroupcustomers
AccountGET/api/account/v1/searchindividualcustomers
AccountGET/api/account/v1/listbranches
AccountGET/api/account/v1/searchbranches
AccountPOST/api/account/v1/createvirtualaccount
AccountLienPOST/api/accountlien/v1/placelien
AccountLienPOST/api/accountlien/v1/updatelien
AccountLienPOST/api/accountlien/v1/unplacelien
AccountOverdraftPOST/api/accountoverdraft/v1/add
AccountOverdraftPUT/api/accountoverdraft/v1/update
AccountOverdraftPUT/api/accountoverdraft/v1/activate
AccountOverdraftPUT/api/accountoverdraft/v1/deactivate
AccountOverdraftGET/api/accountoverdraft/v1/search
BillsGET/api/bills/v1/billers
BillsGET/api/bills/v1/getcustomerinformation
BillsPOST/api/bills/v1/vend
BillsPOST/api/bills/v1/tsq
BillsGET/api/bills/v1/gettoken
BillsGET/api/bills/v1/search
CardGET/api/card/v1/searchcards
CardPOST/api/card/v1/addcardtoaccount
CardPUT/api/card/v1/interswitch/updatecardchannelaccess
CardGET/api/card/v1/providus/searchcards
CardPUT/api/card/v1/providus/setcardpin
CardPUT/api/card/v1/providus/blockunblockcard
CardPUT/api/card/v1/block
CardPUT/api/card/v1/unblock
CardDELETE/api/card/v1/delete/{id}
FixedDepositAccountPOST/api/fixeddepositaccount/v1/add
FixedDepositAccountPOST/api/fixeddepositaccount/v1/topup
FixedDepositAccountPOST/api/fixeddepositaccount/v1/liquidate
FixedDepositAccountPUT/api/fixeddepositaccount/v1/update
FixedDepositAccountGET/api/fixeddepositaccount/v1/search
LimitPUT/api/limit/v1/addupdateaccountlimit
LimitGET/api/limit/v1/getaccountlimit
LoanAccountPOST/api/loanaccount/v1/add
LoanAccountPOST/api/loanaccount/v1/disburseloan
LoanAccountPOST/api/loanaccount/v1/repayloan
LoanAccountPOST/api/loanaccount/v1/earlyrepaymentloan
LoanAccountPOST/api/loanaccount/v1/addgrouploan
LoanAccountPOST/api/loanaccount/v1/disbursegrouploan
LoanAccountPOST/api/loanaccount/v1/repaygrouploan
LoanAccountPUT/api/loanaccount/v1/update
LoanAccountGET/api/loanaccount/v1/search
LoanAccountGET/api/loanaccount/v1/viewloanschedule
LoanAccountGET/api/loanaccount/v1/searchgrouploan
LoanAccountGET/api/loanaccount/v1/grouploancreditbureau
LoanAccountGET/api/loanaccount/v1/grouploanaireview
LoanAccountGET/api/loanaccount/v1/loancreditbureau
LoanAccountGET/api/loanaccount/v1/loanaireview
OperationsGET/api/operations/v1/searchtillaccounts
OperationsGET/api/operations/v1/gettillbalancebyaccountnumber
OperationsPOST/api/operations/v1/uploaddocument
OperationsPUT/api/operations/v1/deletedocument
OperationsPOST/api/operations/v1/sendsms
OperationsPOST/api/operations/v1/sendemail
PostingsPOST/api/postings/v1/closeaccount
PostingsPOST/api/postings/v1/posttransaction
PostingsPOST/api/postings/v1/post
PostingsPOST/api/postings/v1/reversetransaction
ProductGET/api/product/v1/searchproducts
ReportGET/api/report/v1/requestcustomeraccountstatement
ReportGET/api/report/v1/exportcustomerstatement
ReportGET/api/report/v1/gettransactionreceipt
ReportGET/api/report/v1/requestcustomeraccounthistoryreport
ReportGET/api/report/v1/gettransactioncalloverreport
ReportGET/api/report/v1/getloanexpectationreport
ReportGET/api/report/v1/getloantrackingreport
ReportGET/api/report/v1/getsavingsaccrualhistory
TransferGET/api/transfer/v1/banks
TransferGET/api/transfer/v1/nameenquiry
TransferGET/api/transfer/v1/nameenquiry/local
TransferPOST/api/transfer/v1/balanceenquiry
TransferPOST/api/transfer/v1/localfundtransfer
TransferPOST/api/transfer/v1/outwardtransfer
TransferPOST/api/transfer/v1/fundstransfer
TransferGET/api/transfer/v1/tsq
TransferGET/api/transfer/v1/tsq/local
TransferGET/api/transfer/v1/search

5. Virtual Account Contract Notes (/api/account/v1)

5.1 Create Virtual Account

Endpoint: POST /api/account/v1/createvirtualaccount

Request fields:

  • Required: accountName, lastName, firstName, phoneNumber, email
  • Conditional: parentAccountNumber is required unless API key is already bound to a parent account.
  • Optional: referenceNumber, alias, otherNames, bvn, nin, maritalStatus, religion, homeTown, dateOfBirth, nationality, state, lga, identificationType, identificationNumber, pep, tin, employeeID, address, ignorePrefix, isBusinessAccount, accountType, paymentAmount, enhancedVirutalProxyPaymentDetails

Type mapping:

  • accountType=0 -> VirtualProxy
  • accountType=1 -> VirtualWallet
  • accountType=2 -> EnhancedVirtualProxy (requires paymentAmount > 0)

Business rules:

  • Parent settlement account must be corporate.
  • ProductID/productCode is not used for virtual account creation.
  • referenceNumber must be unique when provided.
  • Response data.accountNumber is the generated virtual account number.

enhancedVirutalProxyPaymentDetails item shape:

{
"accountNumber": "1000000001",
"amount": 1500
}

5.2 Virtual Account Retrieval Behavior

GET /api/account/v1/getbyaccountnumber?AccountNumber={virtualAccountNumber} returns:

  • isVirtualAccount=true
  • virtualAccountID (virtual-account internal ID)
  • settlementAccountNumber (parent account number)
  • id resolved as virtual-account ID for virtual queries

GET /api/account/v1/getaccountbalancebyaccountnumber?AccountNumber={virtualAccountNumber} returns:

  • accountNumber (queried virtual account number)
  • settlementAccountNumber (parent account number)
  • isVirtualAccount=true

GET /api/account/v1/searchaccount?AccountNumber={virtualAccountNumber}:

  • Supports virtual-account fallback when no regular account row matches.
  • Virtual rows include id, accountNumber, settlementAccountNumber, isVirtualAccount=true.

5.3 Virtual Account Update/State Operations

PUT /api/account/v1/updatecustomeraccount:

  • id must be a numeric internal ID.
  • id can be a regular account ID or virtual-account ID.
  • Virtual-account updates require API bypass approvals enabled.

PUT /api/account/v1/activate, deactivate, unfreeze:

  • Accept virtual account number as accountNumber.
  • Operate on the parent settlement account state.

6. Public Integration Notes

Detailed source appendices have been removed from this public documentation.

For safe integration, use:

If your team needs institution-specific field clarifications, request support through your CoreWave integration contact.