Bill payments
Sell airtime, data, cable TV, electricity, and betting top-ups.
Value-added services (VAS) debit your Payinto account to pay a biller. This module is called vas.
Discover the catalog
Find the IDs you need by moving from service to biller to product.
curl https://api.payinto.co/api/v1/business/vas/services/airtime/billers \
--header "Authorization: Bearer $PAYINTO_SECRET_KEY"curl https://api.payinto.co/api/v1/business/vas/billers/$BILLER_ID/products \
--header "Authorization: Bearer $PAYINTO_SECRET_KEY"You can use a service's UUID or its code: airtime, data, internet_service, cable_tv, electricity, betting, flight, or gift_card. Hyphens also work, as in cable-tv. Each service returns its transaction_limits and fees.
Validate the customer
For cable TV and electricity, confirm the account first, and show the returned name to your customer.
curl https://api.payinto.co/api/v1/business/vas/verify/electricity \
--header "Authorization: Bearer $PAYINTO_SECRET_KEY" \
--header "Content-Type: application/json" \
--data '{
"product_id": "0196431f-4a20-7b11-8c30-1f2e3d4c5b6a",
"meter_number": "45012345678"
}'The electricity response includes min_amount, max_amount, and any outstanding balance.
Pay
Send a merchant_reference so you can retry safely.
curl https://api.payinto.co/api/v1/business/vas/pay/airtime \
--header "Authorization: Bearer $PAYINTO_SECRET_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data '{
"biller_id": "0196431f-1122-7a10-9d21-aa11bb22cc33",
"product_id": "0196431f-4a20-7b11-8c30-1f2e3d4c5b6a",
"country_code": "NG",
"phone_number": "08012345678",
"amount": 50000,
"merchant_reference": "airtime-10003"
}'Recipient field by service
| Endpoint | Recipient field |
|---|---|
POST /vas/pay/airtime | phone_number, country_code |
POST /vas/pay/data | phone_number, country_code |
POST /vas/pay/cable-tv | smart_card_number |
POST /vas/pay/electricity | meter_number |
POST /vas/pay/betting | customer_id |
Every payment also needs biller_id, product_id, and amount. debit_account_id is optional and defaults to your main account.
Confirm the result
Call GET /transactions/tsq/{reference} with your merchant_reference to read the final status. For electricity, the transaction includes utility_token and utility_units when they're available.