Going Live¶
How to switch from test mode to live mode and what changes when you do.
Test Mode vs Live Mode¶
Every partner account starts in test mode.
| Test mode | Live mode | |
|---|---|---|
| Policies | Auto-approved instantly | Routed to real insurers |
| Certificates | Sample cert URL (certUrl) |
Real cert — Base64 image or PDF (crtfct) |
| Premiums | Not billed | Billable — collect payment before Step 3 |
| Consumer data | Safe to use dummy data | Use real consumer details |
| Insurer checks | Skipped | Active — incorrect data causes declines |
You can confirm which mode a request ran in from the environment field on the response.
Switching Mode¶
Your environment is decided by the authorization key you send — the key itself sets the mode, exactly like test/live keys on a payment platform.
- Use your Test key for sandbox integration — nothing real is issued, nothing is billed.
- Use your Live key for production — real, billable policies are issued.
To move an integration to production, point it at your Live key (typically by swapping the key in your production environment). No dashboard toggle is required, and no per-request flag changes. See Test vs Live Keys for how to tell your keys apart.
Existing single-key partners: if you were issued a single key before test/live keys existed, that key is unpinned and its environment follows the environment badge in the top-right of the Partner Dashboard (amber = TEST, green = LIVE). Toggling the badge switches the mode for all subsequent API calls from your account — your integration is unchanged.
Certificate Response Format Changes¶
In live mode, Step 4 returns a base64-encoded certificate:
Decode and store it:
import base64
data = base64.b64decode(response['crtfct'])
with open(f"certificate.{response['crtfctType']}", 'wb') as f:
f.write(data)
Some products return policyNo instead of a certificate — see the product-specific guide.
Before You Go Live — Checklist¶
All products¶
- [ ] Full 4-step flow tested end-to-end in test mode
- [ ]
consumer_idstored in your database after Step 2 - [ ] Transaction reference (
tx_id) stored after Step 3 - [ ] Step 4 polling implemented (or webhook registered)
- [ ]
crtfctdecoding and storage implemented - [ ] Payment collected from consumer before Step 3
Vehicle — Third-party and Comprehensive¶
- [ ] Chassis number, engine number, and registration plate match physical documents exactly — our insurer verifies against the national database; mismatches cause declines
- [ ] Registration plate sent without hyphens (e.g.
KJA123BCnotKJA-123-BC) - [ ]
yearsent as string ("2019"not2019) - [ ]
vhclValueForInsrncsent as number, not string (4500000not"4500000") — Comprehensive only - [ ] Proof of ownership available for Comprehensive policies (
proofOfOwnrsh) — omit field entirely if unavailable; do not send""ornull
Marine Export (MEXX)¶
- [ ]
voyagefield is an array of objects:[{"origin": "..."}, {"destination": "..."}]— not strings - [ ]
proformaInvoicereference available - [ ] Cargo value in Naira (not USD)
Goods-in-Transit (GTRN)¶
- [ ]
dprtrDateTimeandestmtdArrvlDateTimeinaddtnlFact - [ ]
goodsValueis a number in Naira
Travel (LTIX)¶
- [ ]
departureDateandreturnDateinaddtnlFactduring Step 3 - [ ]
passportNo,occupation,nokName,nokRelationship,nokPhoneprovided - [ ]
destinationcountry andtravelPlanspecified
Device Warranty (PHNN)¶
- [ ]
uIdnt(IMEI) provided - [ ] Step 4 returns
policyNo(notcrtfct) — store and display as the policy reference
Common Live-Mode Issues¶
| Issue | Likely cause | Fix |
|---|---|---|
| Vehicle policy declined | Chassis / engine / plate doesn't match national records | Re-verify details against physical documents |
| Comprehensive declined | Proof of ownership image unreadable | Re-scan, ensure image is clear |
| Premium mismatch | Vehicle value changed between Steps 1 and 3 | Always re-run Step 1 immediately before checkout |
Status stays "p" for >10 min |
Insurer processing delay | Poll SR20 every 30s — push notifications are not currently supported |
crtfct absent, policyNo returned |
Product uses policy number as certificate | Display policyNo — this is the certificate reference |