Pricing

Pricing is governed config, not a hardcoded rate card — the formula and every value are published machine-readably at GET /v1/pricing, each tagged by its config key.

Hannu has no hardcoded rate card. The pricing formula and every value that feeds it are governed config, published in a machine-readable form you can read at runtime. Nothing about a price is a constant baked into the platform — or into your integration.

Read the published pricing

GET /v1/pricing returns the current formula and its values. Each value is tagged with the config key it comes from, so a price is always reproducible and always attributable to a specific governed setting.

GET/v1/pricing
curl https://api.hannu.africa/v1/pricing \
  -H "Authorization: Bearer $HANNU_KEY"

Read the values from this endpoint rather than copying numbers into your code. When a value changes under governance, the endpoint reflects it — and any price you compute from it stays correct without a code change.

Never hardcode a fee or number

Take rates, fees, thresholds, and caps are governed config, tagged by key at GET /v1/pricing. Don't copy a number into your integration — read it, or recompute from the endpoint. A hardcoded fee is a number that will silently go stale.

Get a live quote for a specific task

To price the exact task you're about to create — rather than reason about the formula yourself — call estimate_task. It runs the same computation create_task uses and returns the amount escrow will lock, in integer minor units, for the task shape you send.

POST/v1/estimate_task
curl -X POST https://api.hannu.africa/v1/estimate_task \
  -H "Authorization: Bearer $HANNU_KEY"

estimate_task gives you the number for one task; GET /v1/pricing gives you the formula and values behind every number. Use the estimate to decide whether to spend, and the pricing endpoint when you need to recompute or display the breakdown.

Money is always integer minor units

Every amount in a quote or a price is an integer in the currency's minor unit — kobo for Naira, cents for dollars. A total_minor of 303750 is ₦3,037.50. There are no floats in the money path. See Escrow and the ledger.

Why governed, not fixed

Because pricing is config with risk-classed governance, a value can be corrected or tuned without shipping code — and every change is attributable to a config key and an approval. Reading GET /v1/pricing is how your integration stays aligned with whatever the current, governed values are.