# Verify bill

> POST /api/v1/bills/verify

Source: https://useroutegate.com/docs/api/public/verifyBill

Authenticate with a bearer API key (`rg_test_` in test mode, `rg_live_` in live).

## Request

```bash
curl -X POST https://api.useroutegate.com/api/v1/bills/verify \
  -H "Authorization: Bearer $ROUTEGATE_API_KEY" \
  -H "Idempotency-Key: ord-00042-a1" \
  -H "Content-Type: application/json" \
  -d '{
  "service": "<service>",
  "biller": "<biller>",
  "network": "mtn",
  "account_number": "<account_number>",
  "meter_number": "<meter_number>",
  "smartcard_number": "<smartcard_number>",
  "meter_type": "prepaid"
}'
```

## Response

`200`

```json
{
  "success": false,
  "code": "<code>",
  "message": "<message>",
  "data": {
    "customer_name": "<customer_name>",
    "customer_address": "<customer_address>",
    "account_number": "<account_number>",
    "biller": "<biller>",
    "service": "<service>",
    "meter_type": "<meter_type>",
    "outstanding_amount_kobo": 0,
    "minimum_amount_kobo": 0,
    "current_package": "<current_package>",
    "due_date": "<due_date>"
  }
}
```

## Error

`401` Error envelope

```json
{
  "success": false,
  "data": "<data>",
  "message": "<message>",
  "code": "<code>"
}
```

## Give this to your coding agent

Read `https://useroutegate.com/docs/api/public/verifyBill.md` and implement this call. Keep one `Idempotency-Key` per attempt at the same order, treat `202` as accepted and resolve the final state from the webhook. Amounts are integers in kobo.
