Inshuwa Partner API
Insurance platform API for partners to manage clients, create quotations, process payments, and manage policies.
Authentication
All requests require a Bearer token (API key) in the Authorization header:
Authorization: Bearer <your-api-key>
Integration Flow
- Create a client — register individual or corporate policy holders
- Register vehicles (motor only) — associate vehicles with the client
- Browse products — find available insurance products for your partner account
- Create a quotation — get a draft policy with computed premiums
- Process payment — call
POST /payments/{quoteId}/paywith payment details - Track status — poll
GET /payments/transactions/{reference}/statusor wait for webhook - Download documents — certificates, schedules, receipts
Payment Methods
| Method | How to use |
|---|---|
| Mobile Money | Set payment.mobileMoneyAccountNumber to a Zambian phone (e.g. 0971234567) |
| Card | Set payment.cardDetails with billing address — response includes redirectUrl |
| PayLater | Omit payment object (partner must be pre-configured) |
| External | Partner settles outside the platform |
Webhooks
Configure a paymentCallbackUrl on your partner profile to receive POST notifications when payments complete.
IDs
All IDs in the API are hashed strings (e.g. kBX17BJ2). Use them as-is in route parameters and request bodies.
Contact
Servers
Get all individuals
Returns a paginated list of individual clients registered under your partner account.
Authorizations
Parameters
Query Parameters
Responses
Paginated list of individuals
Create Individual
Register a new individual client (policyholder). Required fields: firstName, lastName, phoneNumber, email, idNumber, idType. The returned id is used when creating quotations.
Authorizations
Request Body
Responses
Individual policyholder created
Get individual by ID
Returns a single individual client by hashed ID.
Authorizations
Parameters
Path Parameters
Responses
Individual policyholder
Update individual policy holder
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Get all corporates
Returns a paginated list of corporate clients registered under your partner account.
Authorizations
Parameters
Query Parameters
Responses
Paginated list of corporates
Create Corporate
Register a new corporate client (policyholder). Required fields: name, email, phoneNumber, taxPayerId (TPIN). The returned id is used when creating quotations.
Authorizations
Request Body
Responses
Corporate policyholder created
Get corporate by ID
Returns a single corporate client by hashed ID.
Authorizations
Parameters
Path Parameters
Responses
Corporate policyholder
Update corporate policy holder
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Get client vehicles
Returns all vehicles registered under a client.
Authorizations
Parameters
Path Parameters
Query Parameters
"HasPolicy""NoPolicy"Responses
List of vehicles
Create vehicle
Register a new vehicle for a client. Required fields: make, model, yearOfManufacture, registrationNumber, chassisNumber, engineNumber, motorRiskCategoryId.
Authorizations
Parameters
Path Parameters
Client ID
Request Body
Responses
Vehicle created
Search for vehicle by registration number
Authorizations
Parameters
Query Parameters
Responses
Success
Get RTSA anniversary dates for a vehicle
Get insurance status for a vehicle
Authorizations
Parameters
Query Parameters
Responses
Success
Get all products
Returns a paginated list of all insurance products available to your partner account, across all lines of business (motor, travel, general, life). Use the returned product id when creating quotations.
Authorizations
Parameters
Query Parameters
Responses
Paginated list of products
Get all motor products
Authorizations
Parameters
Query Parameters
Responses
Success
Get all travel products
Authorizations
Responses
Success
Get all life products
Get life product by ID
Get motor product by id
Authorizations
Parameters
Path Parameters
Responses
Success
Get travel product by id
Authorizations
Parameters
Path Parameters
Responses
Success
Motor quotation inquiry
Generate a premium estimate for a motor policy without creating a draft quotation. No quotation is persisted. Useful for showing the customer a price before committing.
Required fields: productId, duration, currency, startDate, policyHolder, risks (with motorRiskCategoryId, registration info, and sumInsured for comprehensive cover).
Authorizations
Request Body
Responses
Quotation inquiry result
Motor quotation comparison
Compare premiums across multiple motor insurance products for the same vehicle and coverage period. Returns a list of products with their computed premiums.
Authorizations
Request Body
Responses
Comparison results
Get motor quotations
Returns a paginated list of motor quotations.
Authorizations
Parameters
Query Parameters
"date-time""date-time"Responses
Paginated list of motor quotations
Create motor quotation
Create a formal motor insurance quotation for a registered client with existing registered vehicles. Returns a quoteId used to issue a policy via POST /payments/{quoteId}/pay.
Authorizations
Request Body
Responses
Motor quotation created
Get motor pricing for a risk category
Returns available pricing options for the given product and risk category. startDate defaults to today. endDate is optional but required for Comprehensive/TPFT products.
Authorizations
Request Body
Responses
Success
Motor Policies
Motor insurance policy management
Operations
Issue motor policy
Instant issue motor policy (no payment)
Create and issue a motor policy in a single step without initiating payment. Use this for PayLater (partner pre-configured for deferred billing) or external settlement (payment collected outside the platform).
Provide the product, client (policyHolder), vehicles (risks), and a reference for reconciliation.
Use /policies/motor/instant/issue/pay instead if you want to initiate payment in the same call.
Authorizations
Request Body
Responses
Motor policy issued instantly
Instant issue and pay motor policy
Create, issue, and initiate payment for a motor policy in a single step.
Payment options:
- Mobile money: set
payment.mobileMoneyAccountNumber - Card: set
payment.cardDetails— response includesredirectUrlto complete 3DS
The reference field is your unique transaction reference for reconciliation.
Authorizations
Request Body
Responses
Motor policy issued and paid
Renew motor policy
Renew an existing motor insurance policy.
Authorizations
Parameters
Path Parameters
Request Body
Responses
Motor policy renewed
Renew and pay motor policy
Renew and pay for a motor insurance policy in a single step.
Authorizations
Parameters
Path Parameters
Request Body
Responses
Motor policy renewed and paid
Extend motor policy
Extend and pay motor policy
Extend and pay for a motor insurance policy in a single step.
Authorizations
Parameters
Path Parameters
Request Body
Responses
Motor policy extended and paid
Get motor policies
Returns a paginated list of motor insurance policies.
Authorizations
Parameters
Query Parameters
"date-time""date-time"Responses
Paginated list of motor policies
Get motor risk categories
Get policy by vehicle registration
Get policy schedule document
Get insurance certificate
Get payment receipt
Get motor policy by id
Authorizations
Parameters
Path Parameters
Responses
Success
Get motor policy extension premiums
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Get motor policy renewal premiums
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Get all travel quotations
Authorizations
Parameters
Query Parameters
Responses
Success
Generate quotation for travel policy
Authorizations
Request Body
Responses
Success
Get travel quotation by ID
Renew travel policy using payment gateway
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Get all travel policies
Authorizations
Parameters
Query Parameters
Responses
Success
Issue instant travel policy
Authorizations
Request Body
Responses
Success
Get travel policy by Id
Authorizations
Parameters
Path Parameters
Responses
Success
Generate travel policy certificate
Issue travel policy
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Get life quotations
Create life quotation
Create a life insurance quotation. Returns a quoteId used to issue a policy.
Authorizations
Request Body
Responses
Life quotation created
Get life quotation by ID
Renew life policy using payment gateway
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Get all life policies
Authorizations
Parameters
Query Parameters
Responses
Success
Issue instant life policy
Authorizations
Request Body
Responses
Success
Get life policy by id
Authorizations
Parameters
Path Parameters
Responses
Success
Generate life policy certificate
Issue life policy
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Extend general policy
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Renew general policy
Renew an existing general insurance policy.
Authorizations
Parameters
Path Parameters
Request Body
Responses
General policy renewed
Instant issue general policy
Create and issue a general insurance policy in a single step.
Authorizations
Request Body
Responses
General policy issued instantly
Get all policies
Returns a paginated list of all insurance policies.
Authorizations
Parameters
Query Parameters
Responses
Paginated list of policies
Issue general policy
Authorizations
Parameters
Path Parameters
Responses
Success
Process payment for a quotation (any product type)
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Get transaction status by reference
Authorizations
Parameters
Path Parameters
Responses
Success
Get available payment gateways
Get callback delivery logs for a transaction
Authorizations
Parameters
Path Parameters
Responses
Success
Initiate Pula farmer premium payment
Authorizations
Request Body
Responses
Success
Get transaction details by reference
Authorizations
Parameters
Path Parameters
Responses
Success
Track my claims
Authorizations
Parameters
Query Parameters
Responses
Success
Intimate a claim against a covered loan
Identify the loan by loanId or partnerLoanReference — not both.
Authorizations
Request Body
Responses
An Intimated claim with the payable breakdown. Every money-moving step after this — check, approve, settle — stays with the insurer.
Get a claim
Authorizations
Parameters
Path Parameters
Responses
Success
Attach supporting documents to a claim
Authorizations
Parameters
Path Parameters
Request Body
Responses
Upload the files to your own storage first and post the URLs. The first upload moves the claim Intimated → Documented.
Credit Life Loans
Operations
Take loans off cover on early repayment
Identify each loan by loanId or partnerLoanReference — not both. No refund is given: the loan ended by repayment, not by a loss. A refund is only owed when cover ends through a claim — file an UnearnedPremium claim instead.
Authorizations
Request Body
Responses
The loans come off risk immediately. Any refund is raised as a payment requisition for the insurer to approve and settle — this call moves no money.
Get a covered loan
Authorizations
Parameters
Path Parameters
Responses
Success
Get a submission batch with its per-loan premiums
Authorizations
Parameters
Path Parameters
Responses
A batch and its loans. Read outstandingPremium to see what is still owed on cover that is already in force.
Pay a batch's premium
Mobile money or card only. The gateway is resolved from your account — do not send one. Returns while the payment is pending; the receipt is applied on confirmation.
Authorizations
Parameters
Path Parameters
Request Body
Responses
Pending while the payer approves on their handset. Poll GET /payments/transactions/{reference}/status — the premium is receipted automatically once the gateway confirms, not here.
Search covered loans on a policy
Authorizations
Parameters
Path Parameters
Query Parameters
Responses
Success
Place a batch of loans on cover
Authorizations
Parameters
Path Parameters
Request Body
Responses
The batch. Approved means the loans are on risk — note that outstandingPremium equals grossPremium, because approval does not collect money.
Place a single loan on cover
Mid-term addition. Behaves exactly like the batch endpoint with one row.
Authorizations
Parameters
Path Parameters
Request Body
Responses
A one-row Addition batch, otherwise identical to the batch endpoint.
Get the submission batches for a policy
Authorizations
Parameters
Path Parameters
Query Parameters
Responses
Success
Place a batch of loans on cover and pay for it in one call
Authorizations
Parameters
Path Parameters
Request Body
Responses
The batch and the collection started against it. Unlike the ordinary submit endpoint the batch comes back Pending and NOT on risk: on a prepaid policy the premium is what incepts cover. Poll GET /payments/transactions/{reference}/status — when the gateway confirms, the loans go on risk and the premium is receipted in one step, with no further call from you.
Get a covered loan by the partner reference it was submitted with
Authorizations
Parameters
Query Parameters
Responses
Success
Get the quotations
Authorizations
Parameters
Query Parameters
Responses
Quotations negotiated for your partner account. An empty array means onboarding is not finished — see the Credit Life guide.
Get a quotation's full rate terms
Authorizations
Parameters
Path Parameters
Responses
Success
Credit Life Policies
Operations
Buy credit life cover in one call
Authorizations
Request Body
Responses
The client, the policy, and the batch if borrowers were sent. The batch is already on risk with its premium outstanding — cover does not wait for the money. payment is present only if you asked for it, and comes back Pending: mobile money settles by callback, so poll GET /payments/transactions/{reference}/status and the premium is receipted automatically once the gateway confirms. If a payment could not be started the cover still stands and the reason is in paymentError.
Get policies
Authorizations
Parameters
Query Parameters
Responses
Success
Create a policy
Authorizations
Request Body
Responses
The policy, opened Active with the quotation's rate table frozen onto it.
Get policy
Authorizations
Parameters
Path Parameters
Responses
Success
Quote a loan without placing it on cover
Authorizations
Parameters
Path Parameters
Request Body
Responses
What the same loan would be charged. Nothing is written.
Download the policy premium register (bordereau) as CSV
Renew a policy
Authorizations
Parameters
Path Parameters
Responses
Opens the cover periods the policy owes and returns where that leaves it — no payment is initiated here. Each period goes on risk immediately unless the policy requires prepayment, in which case it stays pending until paid via schedules/{scheduleId}/pay or renew/pay. Clearing arrears reinstates lapsed cover from the date of payment onwards — a loss during the lapsed period stays uncovered.
InitiateRenewal a policy, carrying its outstanding loans into the new cover period
Authorizations
Parameters
Path Parameters
Request Body
Responses
Send the whole outstanding book: rows already on cover come back under skipped rather than being covered and charged twice, so the batch is priced only for what is genuinely new.
Get policy status
Authorizations
Parameters
Path Parameters
Responses
Whether the policy's cover is in force for the current period, and what is unpaid. InGrace means cover is still on risk but the period's premium is outstanding; it lapses at graceEndsAt.
InitiateRenewal a policy with a loan batch and pay for the period in one call
Authorizations
Parameters
Path Parameters
Request Body
Responses
The renewal batch and the collection started against it. On a prepaid policy the batch stays Pending and off risk until the gateway confirms, then incepts by itself — no second call from you.
Initiate Policy Renewal Payment
Authorizations
Parameters
Path Parameters
Request Body
Responses
Opens the current cover period and pays for it in one call — same request/response shape as schedules/{scheduleId}/pay. Only settles one outstanding period at a time; a policy with arrears spanning more than one period rejects this call, and each period is paid individually via schedules/{scheduleId}/pay instead. Poll GET /payments/transactions/{reference}/status — the premium is receipted, and the period incepted, once the gateway confirms.
Get policy renewal premiums
Authorizations
Parameters
Path Parameters
Responses
The renewal quote: same shape as GET status, so you can preview what renewing would open and cost before calling renew. Nothing is written — call this as often as you like.
Get the credit-life products
Authorizations
Responses
Products you may sell, with the terms each policy would be written on. Empty means none are assigned to your account.
Track my claims
Authorizations
Parameters
Query Parameters
Responses
Success
Intimate a death claim against a covered member
The claim is created Intimated for the insurer to assess; the payout is the member's sum assured. Identify the member by memberId or nrcNumber — not both.
Authorizations
Request Body
Responses
Success
Get a claim
Authorizations
Parameters
Path Parameters
Responses
Success
Attach supporting documents to a claim
Upload the file to storage first and post its URL here. The first upload moves an Intimated claim to Documented.
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Group Life Policies
Operations
Take members off cover
Identify members by memberIds or nrcNumbers — not both. Raises a deletion endorsement. No pro-rata premium refund is made on a group life exit — cover is annual and the premium is earned.
Authorizations
Request Body
Responses
Success
Get a covered member
Get the quotations negotiated for me — the terms a policy can be opened on
Authorizations
Parameters
Query Parameters
Responses
Success
Get a quotation's full rate terms
Authorizations
Parameters
Path Parameters
Responses
Success
Get an enrolment batch
Authorizations
Parameters
Path Parameters
Responses
Success
Get my group life policies
Authorizations
Parameters
Query Parameters
Responses
Success
Open a group life policy on an approved quotation
The policy freezes the quotation's age-rate table at creation, so later re-quoting cannot re-price cover already on risk. The policyholder is the quotation's corporate client and cannot be changed here.
Authorizations
Request Body
Responses
Success
Get a group life policy
Authorizations
Parameters
Path Parameters
Responses
Success
Search covered members on a policy
Authorizations
Parameters
Path Parameters
Query Parameters
Responses
Success
Enrol a batch of members
Straight-through: uploaded and approved in one call, which puts the members on risk. Approval does NOT collect money — the premium becomes due and is receipted separately as you remit, so cover starts while premium is still owed and outstandingPremium says how much. Approved, PartiallyReceipted or Receipted means covered; Pending means the batch was not approved and they are NOT covered. Set midTermAddition for a batch joining a policy already running — those members are pro-rated to the remaining period.
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Quote a census without enrolling anyone
Prices each member against the policy's frozen age-rate table and persists nothing. A non-zero freeCoverExcess means cover above the free cover limit is NOT automatically on risk and needs underwriting.
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Download the policy member register (bordereau) as CSV
Get the enrolment batches for a policy
Authorizations
Parameters
Path Parameters
Query Parameters
Responses
Success
Get a covered member by NRC number
Track my claims
Authorizations
Parameters
Query Parameters
Responses
Success
Intimate a funeral claim
Identify the household by memberId or nrcNumber — not both. Name the covered life: memberType MainMember for the principal, otherwise the relationship plus the beneficiaryId. The payout is the benefit tier for that life, not the whole household's cover.
Authorizations
Request Body
Responses
Success
Get a claim
Authorizations
Parameters
Path Parameters
Responses
Success
Attach supporting documents to a claim
Upload the file to storage first and post its URL here. The first upload moves an Intimated claim to Documented.
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Group Funeral Policies
Operations
Take households off cover
Identify households by memberIds or nrcNumbers — not both. Removes the principal and their beneficiaries and raises a deletion endorsement.
Authorizations
Request Body
Responses
Success
Get a covered household, including its registered beneficiaries
Authorizations
Parameters
Path Parameters
Responses
Success
Get the quotations negotiated for me — the terms a policy can be opened on
Authorizations
Parameters
Query Parameters
Responses
Success
Get a quotation's full rate and benefit terms
Authorizations
Parameters
Path Parameters
Responses
Success
Get an enrolment batch
Authorizations
Parameters
Path Parameters
Responses
Success
Get my group funeral policies
Authorizations
Parameters
Query Parameters
Responses
Success
Open a group funeral policy on an approved quotation
The policy freezes the quotation's age-rate table and benefit tiers at creation, so later re-quoting cannot re-price cover already on risk.
Authorizations
Request Body
Responses
Success
Get a group funeral policy
Authorizations
Parameters
Path Parameters
Responses
Success
Search covered households on a policy
Authorizations
Parameters
Path Parameters
Query Parameters
Responses
Success
Enrol a batch of households
Each member is a principal plus their beneficiaries (Spouse, Child, Parent), and each covered life is rated on its own age band. Straight-through: uploaded and approved in one call, which puts the households on risk. Approval does NOT collect money — the premium becomes due and is receipted separately as you remit, so cover starts while premium is still owed and outstandingPremium says how much. Approved, PartiallyReceipted or Receipted means covered; Pending means the batch was not approved and nobody is on risk.
Authorizations
Parameters
Path Parameters
Request Body
Responses
Success
Download the policy register (one row per covered life) as CSV
Get the enrolment batches for a policy
Authorizations
Parameters
Path Parameters
Query Parameters
Responses
Success
Get a covered household by the principal's NRC number
Authorizations
Parameters
Query Parameters
Responses
Success
