Vehicle Insurance Integration Guide¶
Covers both Third-party (vhcl-tprt-1111) and Comprehensive (vhcl-cmpr-1111) products.
Product Overview¶
| Third-party | Comprehensive | |
|---|---|---|
| Product code | vhcl-tprt-1111 |
vhcl-cmpr-1111 |
| Coverage | Damage to third-party vehicle in an accident | Third-party + own vehicle damage, theft, fire |
| Cover period | 1 year | 1 year |
| Premium basis | Fixed | Based on vehicle value |
Integration Flow¶
Both products use the standard 4-step flow. See the Quickstart Guide for a complete walkthrough using third-party insurance.
Returning customer? If this customer has purchased insurance through your platform before, you already have their
consumer_id— skip Step 2 and use it directly in Step 3. See the Consumer Management Guide.
Step 1 — Get Premium Quote¶
Third-party (fixed premium — no extra fields needed):
curl -X POST https://octamile-api.azurewebsites.net \
-H "Content-Type: application/json" \
-d '{
"userInfo": {
"id": "YOUR_PARTNER_ID",
"athrzt": { "id": "YOUR_AUTH_ID", "key": "YOUR_AUTH_KEY" }
},
"cmmnd": {
"cmmnd": "dump ipck_vhcl-tprt-1111*PRMM",
"seed": {
"insrncDrtn": "1y"
}
}
}'
Comprehensive (premium depends on vehicle value):
curl -X POST https://octamile-api.azurewebsites.net \
-H "Content-Type: application/json" \
-d '{
"userInfo": {
"id": "YOUR_PARTNER_ID",
"athrzt": { "id": "YOUR_AUTH_ID", "key": "YOUR_AUTH_KEY" }
},
"cmmnd": {
"cmmnd": "dump ipck_vhcl-cmpr-1111*PRMM",
"seed": {
"vhclValueForInsrnc": 4500000,
"insrncDrtn": "1y"
}
}
}'
vhclValueForInsrnc is the vehicle's insured value in Naira. Send as a number (e.g., 4500000). Minimum: 500000. Use the Vehicle Valuation Service if the consumer does not provide a value — see the Vehicle Valuation Guide.
Response:
Step 2 — Register Consumer¶
Third-party (minimum required fields):
{
"cmmnd": {
"cmmnd": "prfl entity",
"seed": {
"type": "s",
"class": "h",
"name": { "first": "Chidi", "last": "Nwosu" },
"gender": "m",
"dob": { "date": "1985-11-20" },
"addrss": { "addrss": "45 Broad Street, Lagos Island" },
"phoneNo": "+2348031234567",
"eMail": "chidi.nwosu@email.com"
}
}
}
Comprehensive (requires government ID in addition to the above):
{
"cmmnd": {
"cmmnd": "prfl entity",
"seed": {
"type": "s",
"class": "h",
"name": { "first": "Chidi", "last": "Nwosu" },
"gender": "m",
"dob": { "date": "1985-11-20" },
"socialID": {
"type": "nidd",
"id": "12345678901",
"image": "BASE64_ENCODED_ID_SCAN"
},
"addrss": { "addrss": "45 Broad Street, Lagos Island" },
"phoneNo": "+2348031234567",
"eMail": "chidi.nwosu@email.com"
}
}
}
socialID.type accepted values: "nidd" (NIN), "dlcn" (driver's licence), "ipss" (passport), "vcrd" (voter's card), "bvnn" (BVN).
Response: Returns a 32-character id. Store this as the consumer's ID.
Step 3 — Request Policy¶
Third-party:
{
"cmmnd": {
"cmmnd": "entt_{CONSUMER_ID}: insure",
"seed": {
"ctgry": "vhcl",
"type": "tprt",
"pckg": "1111",
"id": "YOUR_32_CHAR_TRANSACTION_REF",
"insrncDrtn": "1y",
"addtnlFact": {
"brand": "Toyota",
"model": "Camry",
"year": "2019",
"chsssId": "JTDBE32KX30123456",
"engineId": "2AR1234567",
"rgstrtId": "KJA123BC"
}
}
}
}
Comprehensive (additionally requires vehicle value and proof of ownership):
{
"cmmnd": {
"cmmnd": "entt_{CONSUMER_ID}: insure",
"seed": {
"ctgry": "vhcl",
"type": "cmpr",
"pckg": "1111",
"id": "YOUR_32_CHAR_TRANSACTION_REF",
"insrncDrtn": "1y",
"addtnlFact": {
"brand": "Toyota",
"model": "Camry",
"year": "2019",
"chsssId": "JTDBE32KX30123456",
"engineId": "2AR1234567",
"rgstrtId": "KJA123BC",
"vhclValueForInsrnc": 4500000,
"proofOfOwnrsh": "BASE64_ENCODED_OWNERSHIP_DOC"
}
}
}
}
Required Fields — Both Products¶
| Field | Type | Description |
|---|---|---|
ctgry |
string | "vhcl" |
type |
string | "tprt" (third-party) or "cmpr" (comprehensive) |
pckg |
string | Always "1111" |
id |
string | Your 32-char lowercase alphanumeric transaction ref |
addtnlFact.brand |
string | Vehicle make (e.g., "Toyota") |
addtnlFact.model |
string | Vehicle model (e.g., "Camry") |
addtnlFact.year |
string | Year of manufacture |
addtnlFact.chsssId |
string | Chassis / VIN number |
addtnlFact.engineId |
string | Engine number |
addtnlFact.rgstrtId |
string | Registration plate — no hyphens (e.g. KJA123BC) |
insrncDrtn |
string | Cover duration: "7d", "1m", "3m", "6m", "1y" |
Additional Fields — Comprehensive Only¶
| Field | Type | Description |
|---|---|---|
addtnlFact.vhclValueForInsrnc |
number (float) | Insured vehicle value in Naira — e.g., 4500000 |
addtnlFact.proofOfOwnrsh |
string | Base64-encoded ownership document (e.g., vehicle licence scan). Optional. If provided, the policy is auto-approved and a certificate issued immediately. If omitted, the policy is placed in Pending status and requires manual review before the certificate is issued. |
Type notes:
vhclValueForInsrncmust be a number, not a string — send4500000, not"4500000". Minimum value is500000.yearmust be a string (e.g.,"2019", not2019).proofOfOwnrshis optional — omit the field entirely if the document is not available at checkout. Do not send""ornull. All other blank or missing optional fields should also be omitted entirely.
Response¶
A successful policy request returns:
id: 75 means the request was accepted for processing. The policy is now queued — proceed to Step 4 to poll for the outcome and retrieve the certificate.
Step 4 — Check Policy Status¶
Third-party:
Comprehensive:
Full request:
curl -X POST https://octamile-api.azurewebsites.net \
-H "Content-Type: application/json" \
-d '{
"userInfo": {
"id": "YOUR_PARTNER_ID",
"athrzt": { "id": "YOUR_AUTH_ID", "key": "YOUR_AUTH_KEY" }
},
"cmmnd": {
"cmmnd": "dump entt_{CONSUMER_ID}|insr_vhcl-tprt-1111-{TX_ID}*STATUS"
}
}'
Status values¶
status |
Meaning | Next step |
|---|---|---|
"p" |
Pending — NSIA is processing the policy | Continue polling |
"a" |
Approved — policy number in response | Done |
"d" |
Declined — see statusNote for the reason |
Do not retry; contact Octamile |
Polling: In test mode, approval is instant — status is "a" on the first check. In live mode, poll every 5–10 seconds; vehicle policies typically approve within 60 seconds.
Approved response (live mode):
In test mode, the response also includes
certUrl— a demo certificate link for integration testing. In live mode, onlypolicyNois returned.
Common Decline Reasons¶
| Issue | Likely cause | Fix |
|---|---|---|
| Policy declined | Vehicle details don't match national vehicle records | Verify chassis, engine, and plate numbers against physical documents |
| Comprehensive declined | Proof of ownership unclear | Re-scan the vehicle licence, ensure image is readable |
| Premium mismatch | Vehicle value changed between quote and purchase | Re-run Step 1 before collecting payment |
See also¶
- Error Reference — full list of error codes and fixes
- Webhooks — receive push notifications instead of polling
- Consumer Management — register and reuse consumer profiles