afriref.dev
Central-bank rates, VAT, minimum wages and public holidays for Angola, Burkina Faso, Benin, Botswana, Democratic Republic of the Congo, Central African Republic, Republic of the Congo, Côte d
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Live 402 challenge
Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.
{
"error": "Payment required",
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x1F0409ccD20A2fb497d4DeCeF4E17e9d0688FeA6",
"amount": "1000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://afriref.dev/v1/answers/income-tax",
"tags": [
"reference-data",
"central-bank",
"interest-rates",
"vat",
"tax",
"minimum-wage",
"public-holidays",
"africa",
"nigeria",
"kenya",
"ghana",
"tanzania",
"uganda",
"rwanda",
"egypt",
"morocco",
"cote-divoire",
"senegal",
"ethiopia",
"benin",
"niger",
"burkina-faso",
"togo",
"mali",
"cameroon",
"gabon",
"chad",
"congo",
"central-african-republic",
"equatorial-guinea"
],
"mimeType": "application/json",
"description": "Government reference data series",
"serviceName": "afriref - Pan-African government reference data"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"pathParams": {
"series": "income-tax",
"country": "answers"
},
"queryParams": {}
},
"output": {
"type": "json",
"example": {
"unit": "percent",
"notes": "CUT of 125bps on 14 Jul 2026 — the brief that launched this file warned not to assume direction; the direction is DOWN and has been down since Nov 2025 (19.00% → 18.50% → 17.50% → 17.00% → 15.75%, i.e. 325bps of easing in eight months). The same 130th CPM cut the Facilidade Permanente de Cedência de Liquidez from 18.00% to 16.75% and the Facilidade Permanente de Absorção de Liquidez from 16.00% to 14.75% — the corridor is symmetric at ±100bps around the Taxa BNA. Rationale given: 'a desaceleração consistente da inflação observada, bem como na perspectiva da manutenção dessa tendência no curto prazo'; the CPM revised its end-2026 inflation projection DOWN to 8.6% (±1pp) and 2026 GDP growth UP to 3.6%. EFFECTIVE DATE TRAP: BNA CPM communiqués do NOT state a separate entry-into-force date for the Taxa BNA — the decision is taken and published on the second day of the meeting and the rate is shown as current on the BNA homepage from that day, so effective_from is the communiqué date (14 Jul 2026), not a later settlement date. Do not confuse the Taxa BNA with LUIBOR (the interbank offered rate; on 24 Jul 2026 overnight 12.03%, 1M 15.34%, 3M 15.94%) or with the two standing-facility rates — those are quoted on the same BNA homepage panel and are frequently mis-served as 'the Angolan policy rate'. Next CPM: 131.ª reunião, Luanda, 14-15 September 2026. ACCESS NOTE: www.bna.ao is an Angular hash-routed SPA — plain HTTP fetches of https://www.bna.ao/ return only the site chrome and any /#/... deep link returns an empty shell; the content is served from POST https://www.bna.ao/service/rest/generic/sharepoint/v2/search and GET https://www.bna.ao/service/rest/generic/sharepoint/multi/search?whichParam=[{ID:<n>}]&whichUrl=Anúncios/Notícias. A source-watcher must render JavaScript or hit that JSON endpoint; the CPM communiqué IDs are sequential (1218 = 130th, 1180 = 129th, 1155 = 128th, 1123 = 127th, 1089 = 126th).",
"stale": false,
"value": 15.75,
"series": "policy-rate",
"source": {
"url": "https://www.bna.ao/#/pt/publicacoes-e-media/comunicacao/comunicados/detalhe/1218",
"name": "BNA — Comunicado da 130.ª Reunião do Comité de Política Monetária, Malanje, 13 e 14 de Julho de 2026: 'Reduzir a Taxa BNA de 17,00% (dezassete por cento) para 15,75% (quinze vírgula setenta e cinco por cento)'"
},
"country": "AO",
"disclaimer": "Independent service, not affiliated with any government. Verify against the cited official source before legal or financial use.",
"effective_from": "2026-07-14",
"last_confirmed": "2026-07-24"
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"pathParams": {
"type": "object",
"required": [
"country",
"series"
],
"properties": {
"series": {
"enum": [
"policy-rate",
"vat",
"minimum-wage",
"public-holidays",
"cpi",
"corporate-tax",
"income-tax",
"fx-reference"
],
"type": "string",
"description": "Reference series id"
},
"country": {
"enum": [
"ao",
"bf",
"bj",
"bw",
"cd",
"cf",
"cg",
"ci",
"cm",
"dz",
"eg",
"et",
"ga",
"gh",
"gq",
"ke",
"ls",
"ma",
"ml",
"mu",
"mz",
"na",
"ne",
"ng",
"rw",
"sn",
"sz",
"td",
"tg",
"tn",
"tz",
"ug",
"za",
"zm"
],
"type": "string",
"description": "ISO country code"
}
}
},
"queryParams": {
"type": "object",
"properties": {},
"additionalProperties": false
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object",
"required": [
"country",
"series",
"value",
"effective_from",
"last_confirmed",
"source",
"stale"
],
"properties": {
"unit": {
"type": "string"
},
"notes": {
"type": "string"
},
"stale": {
"type": "boolean",
"description": "True when past the expected update cycle — treat with caution"
},
"value": {
"description": "Number for rates/wages; array of {date,name} for holiday calendars"
},
"series": {
"type": "string"
},
"source": {
"type": "object",
"required": [
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"name": {
"type": "string"
}
}
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code"
},
"components": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"rate"
],
"properties": {
"name": {
"type": "string"
},
"rate": {
"type": "number"
}
}
},
"description": "Optional. Breakdown of a composite rate into its named statutory components (present only where applicable, e.g. Ghana VAT)."
},
"effective_from": {
"type": [
"string",
"null"
],
"format": "date"
},
"effective_rate": {
"type": "number",
"description": "Optional. Combined effective rate where statutory levies stack on top of the standard rate (e.g. Ghana VAT 15% + NHIL 2.5% + GETFund 2.5% = 20%). Present only where it differs from value."
},
"last_confirmed": {
"type": "string",
"format": "date",
"description": "When this value was last verified against the official source"
}
}
}
}
}
}
},
"routeTemplate": "/v1/:country/:series"
}
},
"x402Version": 2
}Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.05 USDC on Base to 0x1F04…8FeA6. The signed payment is good for 5 minutes.
- Paid to
- 0x1F04…8FeA6
- USD Coin contract
- 0x8335…02913
- Payment window
- 5 minutes
- As published
- 50000 smallest units
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x1F0409ccD20A2fb497d4DeCeF4E17e9d0688FeA6",
"amount": "50000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"body": {
"country": "ao",
"taxable_income": 5000000
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"tax": 615000,
"status": "ok",
"country": "AO",
"question": {
"period": "year",
"currency": "NGN",
"taxable_income": 5000000
},
"breakdown": [],
"net_of_tax": 4385000,
"marginal_rate": 18,
"effective_rate": 12.3
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"country",
"taxable_income"
],
"properties": {
"country": {
"enum": [
"ao",
"bf",
"bj",
"bw",
"cd",
"cf",
"cg",
"ci",
"cm",
"dz",
"eg",
"et",
"ga",
"gh",
"gq",
"ke",
"ls",
"ma",
"ml",
"mu",
"mz",
"na",
"ne",
"ng",
"rw",
"sn",
"sz",
"td",
"tg",
"tn",
"tz",
"ug",
"za",
"zm"
],
"type": "string",
"description": "ISO country code"
},
"taxable_income": {
"type": "number",
"description": "Taxable income in the country's local currency, in the schedule's own period basis (annual for most, monthly for CI/UG/ET/CR). NOT gross pay — reliefs are applied before this."
}
}
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object",
"required": [
"status",
"tax",
"effective_rate",
"breakdown"
],
"properties": {
"tax": {
"type": "number",
"description": "Statutory income tax on the taxable income"
},
"status": {
"type": "string"
},
"tax_unit": {
"type": "object",
"description": "Present for UVT/UTA/UIT/BPC schedules — the unit's currency value used to scale the bands"
},
"breakdown": {
"type": "array",
"description": "Per-bracket workings: band, rate, taxable-in-band, tax"
},
"disclaimer": {
"type": "string"
},
"net_of_tax": {
"type": "number"
},
"provenance": {
"type": "object",
"description": "The statutory instrument the answer rests on: effective_from, last_confirmed, official source URL, notes"
},
"scope_note": {
"type": "string",
"description": "Explicit boundary: this is tax on taxable income, NOT net take-home (reliefs + social security excluded)"
},
"marginal_rate": {
"type": "number"
},
"effective_rate": {
"type": "number"
}
}
}
}
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-07-27 10:31Z
- Last indexed by Roundhouse
- 2026-08-26 10:30Z
- Last enriched (probe, favicon, geo)
- 2026-09-11 21:16Z
- x402 version
- 2
- Max timeout
- 300s
- Liveness probe
- HTTP 405
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 3 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service afriref.dev and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=afriref.dev' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://afriref.dev/v1/answers/income-tax, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402, or use an organization key from https://roundhouseai.io/dashboard/team. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.