ECG & meters

Look up Electricity Company of Ghana meters, then create prepaid or postpaid utility purchases. Responses use KNOS field names — never upstream vendor identifiers.

How to use

  1. POST /meters/lookup (scope meters:lookup) with meter + phone → copy meterId, meterNumber, and category.
  2. POST /transactions with scopes transactions:create and ecg:purchase, plus productId from the catalog (e.g. ecg-ecg).
  3. For prepaid tokens and callbacks, see ECG webhooks.

Meter lookup

Scope: meters:lookup

POSThttps://confident-elephant-309.convex.site/v1/meters/lookup
Request
curl -sS https://confident-elephant-309.convex.site/v1/meters/lookup \  -H "Authorization: Bearer $KEY" \  -H "Content-Type: application/json" \  -d '{    "meterNumber": "0503123456",    "phoneNumber": "0241234567"  }'
200 OK (sandbox)
{  "phoneNumber": "0240000000",  "notice": "Sandbox meter lookup",  "meters": [    {      "meterId": "sbx-meter-1",      "meterNumber": "0503123456",      "meterName": "Sandbox Meter",      "meterAddress": "Sandbox Address",      "accountNumber": "0503123456",      "category": "PREPAID",      "balance": null    }  ]}

Create ECG purchase

Scopes: transactions:create, ecg:purchase

FieldRequiredNotes
productYesecg | ecg_prepaid | ecg_postpaid
productIdYesPartner code (e.g. ecg-ecg) or legacy id
amountYesGHS
meterNumberYesFrom lookup
meterIdRecommendedFrom lookup
categoryYesPREPAID | POSTPAID
phoneNumberRecommendedCustomer phone
POSThttps://confident-elephant-309.convex.site/v1/transactions
Request
curl -sS https://confident-elephant-309.convex.site/v1/transactions \  -H "Authorization: Bearer $KEY" \  -H "Content-Type: application/json" \  -d '{    "idempotencyKey": "ecg-order-001",    "product": "ecg",    "productId": "ecg-ecg",    "amount": 50,    "meterNumber": "0503123456",    "meterId": "sbx-meter-1",    "category": "PREPAID",    "phoneNumber": "0241234567"  }'
201 Created
{  "transaction": {    "id": "511260",    "reference": "511260",    "status": "pending",    "kind": "purchase",    "environment": "sandbox"  }}