# Bills (/docs/guides/bills)

Bill payments are paid from your wallet. Reading the catalogue needs `bills:read`; validating and paying needs `bills:create`.

1. **Browse** with `GET /bills/categories`, `GET /bills/billers?category=ELECTRICITY` and `GET /bills/products?serviceCode=...`.
2. **Validate** the meter, smartcard or account with `POST /bills/validate` and show the customer name it returns.
3. **Pay** with `POST /bills`:

```bash
curl https://api.creddot.com/api/v1/bills \
  -H "x-api-key: $CREDDOT_API_KEY" -H "x-api-secret: $CREDDOT_API_SECRET" \
  -H "x-idempotency-key: bill-20261011-001" -H "content-type: application/json" \
  -d '{
    "category": "ELECTRICITY",
    "serviceCode": "ikeja-electric",
    "productCode": "prepaid",
    "customerId": "1111111111111",
    "amountMinor": "500000",
    "currency": "NGN",
    "phoneNumber": "+2348012345678",
    "reference": "BILL-20261011-001"
  }'
```

4. **Get the result.** Providers can take a while. If the status is still pending, call `POST /bills/{id}/requery` or wait for the webhook. Electricity tokens are returned by `GET /bills/{id}` once the payment succeeds.

See the exact parameters for each step in the [API reference](/docs/api-reference).
