Billing & credits
Only POST /lookup is billed. GET /me, POST /report, consents, and webhook
management are free. Each lookup is charged per data section returned, plus a
verification fee when a fresh ID or credit check is run for that farmer.
How a lookup is priced
total = Σ (data fee for each returned section) + any verification fees
Data fees (per section, NGN)
| Section | Fee |
|---|---|
identity |
25 |
bvn_nin_data |
30 |
credit_history |
50 |
outstanding_loans |
20 |
transaction_volume |
20 |
farms |
40 |
underwriting_value |
45 |
wallet |
15 |
socioeconomic_profile |
20 |
Verification fees (added only when a fresh check runs)
| When | Breakdown key | Fee |
|---|---|---|
bvn_nin_data requested → fresh BVN check |
verification_fee.bvn |
50 |
bvn_nin_data requested → fresh NIN check |
verification_fee.nin |
35 |
credit_history requested → credit check (basic) |
verification_fee.credit_check |
80 |
credit_history requested → credit check (advanced) |
verification_fee.credit_check |
150 |
The credit check fee is skipped when a recent check is on file for that farmer, so repeat lookups of the same farmer can cost less.
Worked example — a bank's full lookup
A bank requesting all five of its sections for a farmer needing fresh verification:
| Line | NGN |
|---|---|
| riwe_fee.identity | 25 |
| riwe_fee.bvn_nin_data | 30 |
| riwe_fee.credit_history | 50 |
| riwe_fee.outstanding_loans | 20 |
| riwe_fee.transaction_volume | 20 |
| verification_fee.bvn | 50 |
| verification_fee.nin | 35 |
| verification_fee.credit_check | 80 |
| Total charged | 310 |
The exact breakdown is returned inside every successful lookup under data.billing:
"billing": {
"amount_charged": 310,
"currency": "NGN",
"credits": 31000,
"breakdown": {
"riwe_fee.identity": 25,
"riwe_fee.bvn_nin_data": 30,
"riwe_fee.credit_history": 50,
"riwe_fee.outstanding_loans": 20,
"riwe_fee.transaction_volume": 20,
"verification_fee.bvn": 50,
"verification_fee.nin": 35,
"verification_fee.credit_check": 80
}
}
Paying less: request only the sections you need
By default a lookup returns all of your allowed sections. Pass a sections array to
narrow it and pay only for those:
curl -X POST https://api.riwe.io/v1/rupa/lookup \
-H "X-API-KEY: rk_live_YOUR_SECRET" \
-H "Content-Type: application/json" \
-d '{ "rupa_id": "rp-7lif9u", "sections": ["identity", "credit_history"] }'
Wallet & credits
- Lookups draw from your partner wallet (its balance is shown by
GET /measwallet_balance, in NGN).creditsin the billing block is the same value expressed in Riwe's internal credit unit. - Top up your wallet from the partner dashboard (Riwe admin can also credit it).
- If the balance is too low, the lookup is not performed and returns
402with the amount required and the price breakdown — you are not charged. - If a lookup fails after charging (rare, internal error), the amount is automatically refunded.
Insufficient‑balance response
{
"success": false,
"message": "Insufficient wallet balance for this lookup.",
"data": {
"required_amount": 65,
"breakdown": { "riwe_fee.identity": 25, "riwe_fee.farms": 40 }
}
}
Ruralpass