# latamref — Latin American government reference data No account. No API key. No signup. Pay per call with x402. Human reading this? Start at https://latamref.dev/docs — a copy-paste quickstart. https://latamref.dev/countries browses every country and value with sources, https://latamref.dev/status is live service state, and https://latamref.dev/accuracy records where reference data (including ours) has been wrong. Clean, cited JSON for Latin American government reference values — central-bank policy rates, VAT, minimum wages, CPI inflation, corporate & personal income tax, and public holidays across 22 countries. Every response includes the official source URL, effective date, last_confirmed date and a stale flag. ## If you sell over x402, start here Making a cross-border digital sale? Before you settle, know who accounts for the VAT: - POST https://latamref.dev/v1/vat/determine {seller_country, buyer_country, buyer_type?} → place of supply, who accounts for VAT, rate basis, registration trigger — each cited to the statute (EU / UK / South Africa). Wallet-only buyer with no tax id → treated as B2C and flagged. Out-of-scope country pairs are refused FREE (422), never guessed. $0.10/call. ## Sources & licence Every value is compiled from official government sources — central banks, finance and labour ministries, revenue authorities, statistical offices — and each response cites the exact official source URL it was verified against. Independent service, not affiliated with any government. Verify against the cited official source before legal or financial use. ## How to call a paid endpoint (x402) 1. Call the endpoint with no payment. You get HTTP 402. The payment challenge is in the base64-encoded `payment-required` RESPONSE HEADER (the body is an empty `{}`); decode it to see price, asset (USDC), network (eip155:8453 = Base) and pay-to address. 2. Sign the payment with any x402 client — @x402/fetch wraps fetch and does steps 1-3 automatically. 3. Retry with the signed X-PAYMENT header. You get HTTP 200 + the data; the settlement receipt is returned in the PAYMENT-RESPONSE header. Bad input is rejected FREE (4xx before the payment gate) — you never pay to fail. Free, no payment: https://latamref.dev/catalog · https://latamref.dev/llms.txt · https://latamref.dev/openapi.json · public holidays. ## Evaluate before paying — one country is fully free Every BR series on this service is FREE: current value, /history, ?as_at=, full citations, everything. Try GET https://latamref.dev/v1/br/policy-rate right now, no payment, no key. It is the same paid surface every other country sits behind — exercise it, check the citations against the official sources, then pay for the countries you actually need. ## Alerts — we watch the official sources so you do not have to Reference values fail silently: a threshold that stood for 17 years moves in one budget speech, and every hard-coded copy of the old number becomes wrong overnight (South Africa's VAT registration threshold did exactly this on 1 April 2026 — R1 million became R2.3 million; see https://latamref.dev/accuracy). We fetch and hash every cited source daily, so we know WHEN a value changes, not just what it is. - POST https://latamref.dev/alerts {url, series: ["za/vat", ...]} — HMAC-signed webhook the moment a series you watch changes. REGISTERING IS FREE and the first 3 deliveries are free — after that each delivery costs one API-key call. Prefer polling? The change feed is FREE: GET https://latamref.dev/v1/changes. ## Pricing ladder - $0.001/call — any single series value or its history - $0.02 — full regional snapshot (/v1/all) · VAT breakdown · working-days calculator - $0.05 — minimum-wage compliance check · income-tax computation - $0.10 — gross-to-net payroll (NG, KE) · cross-border VAT determination · webhook alerts Licensed tiers / API keys: api@3l-groupconsulting.co.za ## Machine-readable discovery - x402 resource map: https://latamref.dev/.well-known/x402.json - Agent card: https://latamref.dev/.well-known/agent.json - OpenAPI: https://latamref.dev/openapi.json - MCP server (streamable HTTP): https://latamref.dev/mcp — tools: list_series, get_public_holidays (free); get_series, get_series_history, get_snapshot (paid via x402 or api_key) ## Calendar coverage, and what we refuse Holiday calendars currently span 2026–2027. Coverage is not uniform and the API tells you so rather than guessing: - A range outside a country's covered years is refused FREE (422, `calendar_coverage_exhausted`) with the exact covered period. We do not extrapolate: moving feasts, weekend-substitution days and ad-hoc proclamations are not derivable from prior years, so counting uncovered days would silently treat public holidays as working days. - For 2 calendars in this region the horizon is PERMANENT, not a backlog (`calendar_not_publishable_in_advance`, `permanent: true`). Islamic dates are confirmed by moon sighting days ahead; Hebrew and lunisolar festival dates are gazetted annually. Those responses name the specific blocking holidays and say what you can do instead — so do not queue a retry expecting the year to appear. - Some entries carry `date: null` with a `pending_window`: the holiday is statutory but the date is not yet gazetted. We publish the placeholder rather than inventing a date. - Holiday entries may carry a `note` explaining how that day behaves in that specific year (substitution, transfer, or why it was NOT moved). The `name` field is the stable holiday name and is safe to match on across years; `note` is the year-specific commentary. ## What we refuse to answer (and never charge for) Refusals are the point of this service, not a limitation of it. Every one below is FREE — validated before the payment gate, so you are never charged for a question we know we cannot answer well: - Out-of-coverage calendar ranges (above). - Countries where no single statutory rate exists (e.g. a VAT regime mid-transition) — refused with the explanation rather than collapsed to one misleading number. - Out-of-scope country pairs on /v1/vat/determine. - Settlement dates where we hold no verified convention for the market, or where the convention was not in force on the trade date — `no_verified_convention` / `convention_not_in_force_on_trade_date`, never a guessed cycle. Some series are deliberately ABSENT for the same reason: where a rate could not be verified against its own statute we omit the series rather than estimate it, and the endpoint 404s. ## Which of our numbers we actually read (`confidence`) Every series carries a machine-readable `confidence`, and the catalog can be filtered on it. This is unusual and it is deliberate: a value's weakest point is usually not the number but how it was obtained, and that belongs in a field rather than buried in a paragraph of notes. - `primary` — no verification limitation is recorded. NOTE this is the ABSENCE of a known problem, not a fresh re-verification: it says the value was taken from the source cited and nothing since has flagged otherwise. - `secondary` — corroborated across sources, but the primary instrument was NOT read. Nearly always because the publishing host blocks automated access (several government portals 403 bots outright, or serve a JavaScript viewer with no extractable text). - `attested` — NO primary source is publicly available to anyone. The value rests on an official statement about the instrument rather than the instrument itself. Two series today: Botswana does not publish Statutory Instruments online at all, and the Central African Republic decree appears on no government site, ILO NATLEX or any gazette. - `derived` — computed from another series we hold, not read from any document. - Filter: GET https://latamref.dev/catalog?confidence=primary (free; comma-separated levels accepted) Where confidence is not `primary`, `confidence_note` gives the specific limitation in our own words. ## Point-in-time reads (?as_at=YYYY-MM-DD) Any series accepts `?as_at=` and returns the value that was IN FORCE on that date, not today's. Back-dated payroll recalculation and prior-year filings need this, and picking the right row out of a full history yourself is a derivation that fails quietly — the wrong row still looks plausible. - GET https://latamref.dev/v1/{country}/{series}?as_at=2023-06-15 The answer carries `as_at`, `point_in_time: true` and `superseded_on`, so a historical value can never be mistaken for a live one. IT REFUSES RATHER THAN FALLING BACK: ask for a date before the earliest value we hold, or one after a value lapsed with no recorded successor, and you get a FREE 422 naming the earliest date we do hold. Returning the current value for a 2023 question would be the wrong number in the right shape. Bad dates are rejected free too, before the payment gate. ## Provenance — the evidence behind every citation - GET https://latamref.dev/provenance (free) — fleet-wide snapshot coverage - GET https://latamref.dev/provenance/{country}/{series} (free) — the sources behind one endpoint Citing a source is a claim. We fetch each cited document, record a sha256 over the exact bytes, and re-check daily, so you can see WHEN we verified against it and whether it has CHANGED since. Two things surface that a last-verified date cannot: rot (the document no longer resolves) and drift (it still resolves but its bytes changed, meaning the page you would follow no longer says what we read). Failure states are distinguished honestly — `gone` (404/410) is not the same as `blocked_to_automation` (the host refuses bots; a person can still open it), and we do not claim a live source is dead. We publish the fingerprint, not the mirrored document. ## Accuracy record - https://latamref.dev/accuracy — documented cases where widely-published reference values are wrong, each traced to the governing instrument, AND every error we have found in our own served data. The second half is the point: a vendor publishing only other people's mistakes is marketing. ## Human-readable pages - https://latamref.dev/countries — every country held - https://latamref.dev/{country} — e.g. /za — all series with values, sources and freshness - https://latamref.dev/{country}/{series} — e.g. /za/vat — value, what it means, earlier values, provenance - https://latamref.dev/sitemap.xml ## Series - GET /v1/ar/policy-rate — Argentina: BCRA monetary policy rate (abolished — endogenous-rate regime) - GET /v1/ar/vat — Argentina: VAT standard rate (IVA alícuota general) - GET /v1/ar/minimum-wage — Argentina: Salario Mínimo, Vital y Móvil (SMVM), monthly - GET /v1/ar/public-holidays — Argentina: Public holidays (feriados nacionales) (free) - GET /v1/ar/cpi — Argentina: CPI inflation (year-on-year) - GET /v1/ar/corporate-tax — Argentina: Corporate income tax rate - GET /v1/ar/income-tax — Argentina: Personal income tax brackets - GET /v1/bb/policy-rate — Barbados: Central bank policy rate — none in operation (structural null) - GET /v1/bb/vat — Barbados: VAT standard rate - GET /v1/bb/minimum-wage — Barbados: National minimum wage - GET /v1/bb/public-holidays — Barbados: Public holidays (free) - GET /v1/bb/cpi — Barbados: Inflation (point-to-point, year-on-year) - GET /v1/bb/corporate-tax — Barbados: Corporation tax rate - GET /v1/bb/income-tax — Barbados: Personal income tax rates - GET /v1/bo/policy-rate — Bolivia: BCB policy rate (none — quantity-targeted monetary regulation) - GET /v1/bo/vat — Bolivia: IVA standard rate (levied 'por dentro') - GET /v1/bo/minimum-wage — Bolivia: Salario Mínimo Nacional (SMN), monthly - GET /v1/bo/public-holidays — Bolivia: Public holidays (feriados nacionales) (free) - GET /v1/bo/cpi — Bolivia: CPI inflation (year-on-year) - GET /v1/bo/corporate-tax — Bolivia: Corporate income tax rate (IUE) - GET /v1/bo/income-tax — Bolivia: Personal income tax (RC-IVA, flat) - GET /v1/br/policy-rate — Brazil: Banco Central do Brasil taxa Selic meta - GET /v1/br/vat — Brazil: Consumption tax (no single VAT; fragmented system in dual-VAT transition) - GET /v1/br/minimum-wage — Brazil: Salário mínimo nacional - GET /v1/br/public-holidays — Brazil: Public holidays (free) - GET /v1/br/cpi — Brazil: CPI inflation (year-on-year) - GET /v1/br/corporate-tax — Brazil: Corporate income tax rate - GET /v1/br/income-tax — Brazil: Personal income tax brackets - GET /v1/br/fx-reference — Brazil: BCB reference exchange rates (PTAX) - GET /v1/bz/policy-rate — Belize: Policy interest rate — NONE (structural null; the BZ$2 : US$1 peg is the nominal anchor) - GET /v1/bz/vat — Belize: General Sales Tax (GST) standard rate - GET /v1/bz/minimum-wage — Belize: National minimum wage (hourly) - GET /v1/bz/public-holidays — Belize: Public and bank holidays (free) - GET /v1/bz/cpi — Belize: CPI inflation (year-on-year) - GET /v1/bz/corporate-tax — Belize: Corporate income tax rate — NONE (structural null; Belize levies a gross-receipts business tax instead) - GET /v1/bz/income-tax — Belize: Personal income tax — exemption threshold and rate - GET /v1/cl/policy-rate — Chile: Tasa de Política Monetaria (TPM) - GET /v1/cl/vat — Chile: IVA tasa general - GET /v1/cl/minimum-wage — Chile: Ingreso Mínimo Mensual (IMM) - GET /v1/cl/public-holidays — Chile: Feriados legales (free) - GET /v1/cl/cpi — Chile: CPI inflation (year-on-year) - GET /v1/cl/corporate-tax — Chile: Corporate income tax rate - GET /v1/cl/income-tax — Chile: Personal income tax brackets - GET /v1/co/policy-rate — Colombia: Banco de la República tasa de intervención - GET /v1/co/vat — Colombia: IVA tarifa general - GET /v1/co/minimum-wage — Colombia: Salario mínimo mensual legal vigente (SMMLV) - GET /v1/co/public-holidays — Colombia: Public holidays (festivos) (free) - GET /v1/co/cpi — Colombia: CPI inflation (year-on-year) - GET /v1/co/corporate-tax — Colombia: Corporate income tax rate - GET /v1/co/income-tax — Colombia: Personal income tax brackets - GET /v1/co/fx-reference — Colombia: TRM — representative market exchange rate - GET /v1/cr/policy-rate — Costa Rica: BCCR monetary policy rate (TPM) - GET /v1/cr/vat — Costa Rica: IVA standard rate - GET /v1/cr/minimum-wage — Costa Rica: Minimum wage (lowest generic monthly rate) - GET /v1/cr/public-holidays — Costa Rica: Public holidays (free) - GET /v1/cr/cpi — Costa Rica: CPI inflation (year-on-year) - GET /v1/cr/corporate-tax — Costa Rica: Corporate income tax rate - GET /v1/cr/income-tax — Costa Rica: Personal income tax brackets - GET /v1/do/policy-rate — Dominican Republic: BCRD monetary policy rate (TPM) - GET /v1/do/vat — Dominican Republic: ITBIS standard rate - GET /v1/do/minimum-wage — Dominican Republic: Minimum wage (lowest non-sectorized tier — microempresas) - GET /v1/do/public-holidays — Dominican Republic: Public holidays (free) - GET /v1/do/cpi — Dominican Republic: CPI inflation (year-on-year) - GET /v1/do/corporate-tax — Dominican Republic: Corporate income tax rate - GET /v1/do/income-tax — Dominican Republic: Personal income tax brackets - GET /v1/ec/policy-rate — Ecuador: BCE policy rate (none — fully dollarized economy) - GET /v1/ec/vat — Ecuador: IVA standard rate - GET /v1/ec/minimum-wage — Ecuador: Salario Básico Unificado (SBU), monthly - GET /v1/ec/public-holidays — Ecuador: Public holidays (feriados nacionales) (free) - GET /v1/ec/cpi — Ecuador: CPI inflation (year-on-year) - GET /v1/ec/corporate-tax — Ecuador: Corporate income tax rate - GET /v1/ec/income-tax — Ecuador: Personal income tax brackets - GET /v1/gt/policy-rate — Guatemala: Banguat tasa de interés líder de política monetaria - GET /v1/gt/vat — Guatemala: IVA standard rate - GET /v1/gt/minimum-wage — Guatemala: Minimum wage (lowest rate in the activity x circumscription matrix) - GET /v1/gt/public-holidays — Guatemala: Public holidays (free) - GET /v1/gt/cpi — Guatemala: CPI inflation (year-on-year) - GET /v1/gt/corporate-tax — Guatemala: Corporate income tax rate - GET /v1/gt/income-tax — Guatemala: Personal income tax brackets - GET /v1/gy/policy-rate — Guyana: Bank of Guyana Bank Rate (rediscount rate) - GET /v1/gy/vat — Guyana: Value-Added Tax standard rate - GET /v1/gy/minimum-wage — Guyana: National Minimum Wage (private sector) - GET /v1/gy/public-holidays — Guyana: Public holidays (free) - GET /v1/gy/cpi — Guyana: CPI inflation (year-on-year) - GET /v1/gy/corporate-tax — Guyana: Corporation tax standard rate (non-commercial company) - GET /v1/gy/income-tax — Guyana: Personal income tax rates - GET /v1/hn/policy-rate — Honduras: Tasa de Política Monetaria (TPM) - GET /v1/hn/vat — Honduras: Impuesto Sobre Ventas (ISV) - GET /v1/hn/minimum-wage — Honduras: Salario Mínimo - GET /v1/hn/public-holidays — Honduras: Días Feriados Nacionales (free) - GET /v1/hn/cpi — Honduras: Inflación Interanual (IPC) - GET /v1/hn/corporate-tax — Honduras: Impuesto Sobre la Renta - Personas Jurídicas - GET /v1/hn/income-tax — Honduras: Impuesto Sobre la Renta - Personas Naturales (Tabla Progresiva 2026) - GET /v1/jm/policy-rate — Jamaica: Bank of Jamaica policy rate (rate on DTI current account balances at BOJ) - GET /v1/jm/vat — Jamaica: General Consumption Tax (GCT) standard rate - GET /v1/jm/minimum-wage — Jamaica: National minimum wage (per 40-hour week) - GET /v1/jm/public-holidays — Jamaica: Public holidays (free) - GET /v1/jm/cpi — Jamaica: CPI inflation (point-to-point, year-on-year) - GET /v1/jm/corporate-tax — Jamaica: Corporate income tax rate - GET /v1/jm/income-tax — Jamaica: Personal income tax rates and threshold - GET /v1/mx/policy-rate — Mexico: Banxico overnight target rate - GET /v1/mx/vat — Mexico: IVA standard rate - GET /v1/mx/minimum-wage — Mexico: General minimum wage (daily) - GET /v1/mx/public-holidays — Mexico: Public holidays (free) - GET /v1/mx/cpi — Mexico: CPI inflation (year-on-year) - GET /v1/mx/corporate-tax — Mexico: Corporate income tax rate - GET /v1/mx/income-tax — Mexico: Personal income tax brackets - GET /v1/mx/fx-reference — Mexico: Banxico FIX exchange rate - GET /v1/ni/policy-rate — Nicaragua: BCN Tasa de Referencia Monetaria (TRM) - GET /v1/ni/vat — Nicaragua: IVA standard rate - GET /v1/ni/minimum-wage — Nicaragua: Minimum wage (sectoral schedule) - GET /v1/ni/public-holidays — Nicaragua: Public holidays (free) - GET /v1/ni/cpi — Nicaragua: CPI inflation (year-on-year) - GET /v1/ni/corporate-tax — Nicaragua: Corporate income tax rate - GET /v1/ni/income-tax — Nicaragua: Personal income tax brackets - GET /v1/pa/policy-rate — Panama: Monetary policy rate - GET /v1/pa/vat — Panama: ITBMS (VAT) standard rate - GET /v1/pa/minimum-wage — Panama: Minimum wage (lowest general statutory floor) - GET /v1/pa/public-holidays — Panama: National public holidays (free) - GET /v1/pa/cpi — Panama: CPI inflation (year-over-year) - GET /v1/pa/corporate-tax — Panama: Corporate income tax (ISR personas jurídicas) - GET /v1/pa/income-tax — Panama: Personal income tax (ISR personas naturales) - GET /v1/pe/policy-rate — Peru: BCRP tasa de referencia - GET /v1/pe/vat — Peru: IGV standard rate - GET /v1/pe/minimum-wage — Peru: Remuneración Mínima Vital (RMV) - GET /v1/pe/public-holidays — Peru: Feriados nacionales (free) - GET /v1/pe/cpi — Peru: CPI inflation (year-on-year) - GET /v1/pe/corporate-tax — Peru: Corporate income tax rate - GET /v1/pe/income-tax — Peru: Personal income tax brackets - GET /v1/py/policy-rate — Paraguay: BCP monetary policy rate (TPM) - GET /v1/py/vat — Paraguay: IVA standard rate - GET /v1/py/minimum-wage — Paraguay: Salario mínimo legal (monthly) - GET /v1/py/public-holidays — Paraguay: Public holidays (free) - GET /v1/py/cpi — Paraguay: CPI inflation (year-on-year) - GET /v1/py/corporate-tax — Paraguay: Corporate income tax rate - GET /v1/py/income-tax — Paraguay: Personal income tax brackets - GET /v1/sv/policy-rate — El Salvador: Central bank policy rate - GET /v1/sv/vat — El Salvador: VAT (IVA) standard rate - GET /v1/sv/minimum-wage — El Salvador: Minimum wage (lowest general statutory floor) - GET /v1/sv/public-holidays — El Salvador: Public holidays (free) - GET /v1/sv/cpi — El Salvador: CPI inflation (year-on-year) - GET /v1/sv/corporate-tax — El Salvador: Corporate income tax (ISR) standard rate - GET /v1/sv/income-tax — El Salvador: Personal income tax (ISR) brackets - GET /v1/tt/policy-rate — Trinidad and Tobago: CBTT Repo Rate (repurchase rate) - GET /v1/tt/vat — Trinidad and Tobago: Value Added Tax standard rate - GET /v1/tt/minimum-wage — Trinidad and Tobago: National Minimum Wage (hourly) - GET /v1/tt/public-holidays — Trinidad and Tobago: Public holidays (free) - GET /v1/tt/cpi — Trinidad and Tobago: CPI inflation (year-on-year) - GET /v1/tt/corporate-tax — Trinidad and Tobago: Corporation tax standard rate - GET /v1/tt/income-tax — Trinidad and Tobago: Personal income tax rates - GET /v1/uy/policy-rate — Uruguay: BCU tasa de política monetaria (TPM) - GET /v1/uy/vat — Uruguay: IVA tasa básica - GET /v1/uy/minimum-wage — Uruguay: Salario Mínimo Nacional (SMN), monthly - GET /v1/uy/public-holidays — Uruguay: Public holidays (feriados) (free) - GET /v1/uy/cpi — Uruguay: CPI inflation (year-on-year) - GET /v1/uy/corporate-tax — Uruguay: Corporate income tax rate - GET /v1/uy/income-tax — Uruguay: Personal income tax brackets History: GET /v1/{country}/{series}/history?from=YYYY-MM-DD&to=YYYY-MM-DD — e.g. GET /v1/ar/policy-rate/history?from=2026-01-01 Changes + freshness (FREE, unmetered): GET /v1/changes?since=YYYY-MM-DD — what changed, plus how many of our 157 series were re-verified against their official source in the last 1/7/30/90 days, and which one has gone longest without a check. `since` is optional (defaults to 30 days). ## Answers (computed verdicts, POST JSON) - POST /v1/answers/wage-check {country, amount, period, schedule?} — at/above/below the statutory minimum? Pass "schedule" to be measured against a sectoral/zonal/grade floor instead of the general one (Kenya 55, South Africa 24); omit it and we say so, because "above the national floor" is not "compliant". Keys: GET /catalog ($0.05) - POST /v1/answers/vat {country, amount, mode?, band?} — net/tax/gross breakdown incl. levy components. Pass "band" for a statutory reduced/zero/super-reduced rate; we publish what each band covers in the authority's own words but do not classify supplies into bands. Keys: GET /catalog ($0.02) - POST /v1/answers/working-days {country, from, to} — working days, holidays hit, next working day ($0.02) - POST /v1/answers/income-tax {country, taxable_income} — statutory income tax + per-bracket workings ($0.05) - POST /v1/answers/settlement-date {trade_date, calendars[], business_days | market + instrument_class} — settlement/value date: T+n business days across one or more national statutory calendars intersected, with a per-day trail, each calendar's basis and source, and the market cycle cited to its primary instrument where we hold one ($0.05). Cited cycles and what we deliberately refuse to cite: GET /settlement-conventions (free) - POST /v1/vat/determine {seller_country, buyer_country, buyer_type?} — cross-border VAT treatment of a digital-services sale: place of supply, who accounts, rate basis, registration trigger, with the applied rule cited to the statute. EU, UK, South Africa; unknown buyer → B2C-default, flagged; out-of-scope pairs refused FREE (422), never guessed, never charged ($0.10)