Skip to content

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:

{
  "status": "a",
  "crtfct": "/9j/4AAQSkZJRgABAQAA...",
  "crtfctType": "jpg"
}

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_id stored in your database after Step 2
  • [ ] Transaction reference (tx_id) stored after Step 3
  • [ ] Step 4 polling implemented (or webhook registered)
  • [ ] crtfct decoding 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. KJA123BC not KJA-123-BC)
  • [ ] year sent as string ("2019" not 2019)
  • [ ] vhclValueForInsrnc sent as number, not string (4500000 not "4500000") — Comprehensive only
  • [ ] Proof of ownership available for Comprehensive policies (proofOfOwnrsh) — omit field entirely if unavailable; do not send "" or null

Marine Export (MEXX)

  • [ ] voyage field is an array of objects: [{"origin": "..."}, {"destination": "..."}] — not strings
  • [ ] proformaInvoice reference available
  • [ ] Cargo value in Naira (not USD)

Goods-in-Transit (GTRN)

  • [ ] dprtrDateTime and estmtdArrvlDateTime in addtnlFact
  • [ ] goodsValue is a number in Naira

Travel (LTIX)

  • [ ] departureDate and returnDate in addtnlFact during Step 3
  • [ ] passportNo, occupation, nokName, nokRelationship, nokPhone provided
  • [ ] destination country and travelPlan specified

Device Warranty (PHNN)

  • [ ] uIdnt (IMEI) provided
  • [ ] Step 4 returns policyNo (not crtfct) — 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