You need to detect, track, and use Banxico’s policy moves inside your software the moment they’re published. By the end of this article you’ll fetch the Banxico Overnight Rate (BANXICO_RATE) from the Interest Rates API, interpret effective dates and units correctly, compute spreads and monthly payments from the returned values, and wire up all seven endpoints—latest, historical, time series, fluctuation, OHLC, convert, and symbols—into production-grade fintech workflows.
What BANXICO_RATE Represents and Why It Matters
BANXICO_RATE is the Banco de México (Banxico) overnight policy rate as delivered by the Interest Rates API under the symbol BANXICO_RATE. In practical terms, it is the primary policy benchmark for MXN-denominated funding conditions. Lenders, treasury desks, and risk models use it as a reference for pricing variable-rate loans, setting deposit rates, and calibrating macro scenarios that affect Mexico’s financial markets.
Key points for developers and analysts:
- Symbol: BANXICO_RATE
- Category: central bank
- Currency: MXN
- Frequency in the API: monthly
- Expression: percent per annum (p.a.)
Monthly frequency means you should treat updates as occurring at most once per month in the dataset exposed by the API. Effective dates in responses indicate when the rate value applies. For monthly symbols, the Interest Rates API uses the last day with data within that month when you query an explicit date.
For general documentation and uptime information, see interestratesapi.com and the MCP.
How BANXICO_RATE Is Modeled in the Interest Rates API
The Interest Rates API normalizes and serves central bank benchmarks, including Banxico’s overnight rate, as JSON through a REST interface. All endpoints use HTTP GET and authenticate via the api_key query parameter. Base URL:
https://interestratesapi.com/api/v1/
For BANXICO_RATE:
- Returned “rates” values are numeric percentages (e.g., 6.5 means 6.5% p.a.).
- “dates” (when present) map symbols to effective dates for the latest available observation.
- “currencies” map symbols to their currency (MXN for BANXICO_RATE).
- Monthly behavior: historical queries resolve to the last available date within the requested month if the exact date has no observation.
The examples below are authoritative samples from the documentation. Where sample values appear, treat them as illustrative unless explicitly noted as a live example. See interestratesapi.com for service details and to integrate with your stack.
Endpoint 1: Catalogue of Symbols (Discover BANXICO_RATE)
Use /symbols to confirm availability, metadata (frequency, currency), and to filter by category or currency. For BANXICO_RATE, category=central_bank and base=MXN are the relevant filters for discovery flows.
cURL
curl -s "https://interestratesapi.com/api/v1/latest?api_key=YOUR_API_KEY&symbols=BANXICO_RATE"
Python (requests)
import requests
resp = requests.get(
"https://interestratesapi.com/api/v1/symbols",
params=dict(category="central_bank", base="MXN", api_key="YOUR_API_KEY")
)
symbols = resp.json()
print(symbols)
JavaScript (fetch)
const res = await fetch(
"https://interestratesapi.com/api/v1/symbols?category=central_bank&base=MXN&api_key=YOUR_API_KEY"
);
const json = await res.json();
console.log(json);
PHP
<?php
$url = "https://interestratesapi.com/api/v1/symbols?category=central_bank&base=MXN&api_key=YOUR_API_KEY";
$json = file_get_contents($url);
$data = json_decode($json, true);
print_r($data);
?>
JSON response (shape)
{
"success": true,
"date": "2026-09-30",
"base": "MXN",
"rates": {
"BANXICO_RATE": 6.5
},
"dates": {
"BANXICO_RATE": "2026-09-30"
},
"currencies": {
"BANXICO_RATE": "MXN"
},
"base_filter_note": null
}
Explanation:
- success: boolean status.
- symbols: array of symbol objects. For BANXICO_RATE you will see symbol, name, category=central_bank, currency_code=MXN, and frequency=monthly.
Endpoint 2: Latest BANXICO_RATE
Fetch the most recent observation and its effective date. This is the most common call for dashboards and loan pricing logic.
OFFICIAL cURL (copy verbatim)
OFFICIAL JSON (copy verbatim)
How to read this:
- rates.BANXICO_RATE is the latest policy rate level in percent per annum.
- dates.BANXICO_RATE is the effective date of that observation. For monthly symbols, this will be the last date with data in the month.
- base and currencies confirm MXN context. Use these for validation and UI labeling.
Python (requests)
import requests
resp = requests.get(
"https://interestratesapi.com/api/v1/latest",
params=dict(api_key="YOUR_API_KEY", symbols="BANXICO_RATE")
)
data = resp.json()
banxico = data["rates"]["BANXICO_RATE"]
as_of = data["dates"]["BANXICO_RATE"]
print(f"BANXICO_RATE = {banxico}% p.a. (effective {as_of})")
JavaScript (fetch)
const response = await fetch(
"https://interestratesapi.com/api/v1/latest?api_key=YOUR_API_KEY&symbols=BANXICO_RATE"
);
const data = await response.json();
const value = data.rates["BANXICO_RATE"];
const effDate = data.dates["BANXICO_RATE"];
console.log(`BANXICO_RATE = ${value}% p.a. (effective ${effDate})`);
PHP
<?php
$url = "https://interestratesapi.com/api/v1/latest?api_key=YOUR_API_KEY&symbols=BANXICO_RATE";
$json = file_get_contents($url);
$data = json_decode($json, true);
$value = $data["rates"]["BANXICO_RATE"];
$eff = $data["dates"]["BANXICO_RATE"];
echo "BANXICO_RATE = {$value}% p.a. (effective {$eff})";
?>
Endpoint 3: Historical (Value on a Specific Date)
Get the rate that applied on a given calendar date. For monthly symbols, the Interest Rates API resolves your date to the last day with data in that month.
cURL
JSON response (example)
Notes:
- rates map: use rates["BANXICO_RATE"] for the value.
- The API ensures an appropriate effective observation within the month.
- Values shown are illustrative per official examples.
Python (requests)
import requests
params = dict(date="2025-06-15", symbols="BANXICO_RATE", api_key="YOUR_API_KEY")
resp = requests.get("https://interestratesapi.com/api/v1/historical", params=params)
print(resp.json())
JavaScript (fetch)
const res = await fetch(
"https://interestratesapi.com/api/v1/historical?date=2025-06-15&symbols=BANXICO_RATE&api_key=YOUR_API_KEY"
);
console.log(await res.json());
PHP
<?php
$url = "https://interestratesapi.com/api/v1/historical?date=2025-06-15&symbols=BANXICO_RATE&api_key=YOUR_API_KEY";
echo file_get_contents($url);
?>
Endpoint 4: Time Series (Between Two Dates)
Pull a continuous series you can chart or feed into analytics. For BANXICO_RATE, you’ll typically request a monthly span over your analysis window.
cURL
JSON response (example)
Notes:
- rates.BANXICO_RATE is a date-to-value map.
- frequencies clarifies the series sampling.
- Use start_date and end_date to validate your requested window.
Python (requests)
import requests
params = dict(
start="2025-10-17",
end="2026-10-17",
symbols="BANXICO_RATE",
api_key="YOUR_API_KEY"
)
resp = requests.get("https://interestratesapi.com/api/v1/timeseries", params=params)
series = resp.json()
banxico_series = series["rates"]["BANXICO_RATE"]
for d, v in banxico_series.items():
print(d, v)
JavaScript (fetch)
const url = "https://interestratesapi.com/api/v1/timeseries?start=2025-10-17&end=2026-10-17&symbols=BANXICO_RATE&api_key=YOUR_API_KEY";
const ts = await fetch(url).then(r => r.json());
Object.entries(ts.rates["BANXICO_RATE"]).forEach(([date, value]) => {
console.log(date, value);
});
PHP
<?php
$url = "https://interestratesapi.com/api/v1/timeseries?start=2025-10-17&end=2026-10-17&symbols=BANXICO_RATE&api_key=YOUR_API_KEY";
$json = file_get_contents($url);
$data = json_decode($json, true);
foreach ($data["rates"]["BANXICO_RATE"] as $date => $value) {
echo $date . " " . $value . PHP_EOL;
}
?>
Endpoint 5: Fluctuation (Change Statistics)
Compute the net change, percentage change, high, and low between two dates. Use this for alerts and report generators around Banxico decisions.
cURL
JSON response (example)
Fields you will use:
- start_value and end_value: endpoints for your window.
- change and change_pct: direct spread and percentage move.
- high and low: extents over the period for chart bands and stress analysis.
Python (requests)
import requests
params = dict(
start="2025-10-17",
end="2026-10-17",
symbols="BANXICO_RATE",
api_key="YOUR_API_KEY"
)
res = requests.get("https://interestratesapi.com/api/v1/fluctuation", params=params).json()
fx = res["rates"]["BANXICO_RATE"]
print(fx["start_value"], fx["end_value"], fx["change"], fx["change_pct"])
JavaScript (fetch)
const url = "https://interestratesapi.com/api/v1/fluctuation?start=2025-10-17&end=2026-10-17&symbols=BANXICO_RATE&api_key=YOUR_API_KEY";
const data = await fetch(url).then(r => r.json());
const stats = data.rates["BANXICO_RATE"];
console.log(stats.start_value, stats.end_value, stats.change, stats.change_pct);
PHP
<?php
$url = "https://interestratesapi.com/api/v1/fluctuation?start=2025-10-17&end=2026-10-17&symbols=BANXICO_RATE&api_key=YOUR_API_KEY";
$json = file_get_contents($url);
$data = json_decode($json, true)["rates"]["BANXICO_RATE"];
echo implode(", ", [$data["start_value"], $data["end_value"], $data["change"], $data["change_pct"]]);
?>
Endpoint 6: OHLC (Candlestick Aggregation)
Get open, high, low, close and data_points per period to display candle charts and summarize within-month behavior. OHLC is computed from daily data on-the-fly.
cURL
JSON response (example)
Interpretation:
- open/high/low/close: intra-period derived values.
- data_points: count of underlying daily observations used to compute the OHLC for that period.
Python (requests)
import requests
params = dict(
symbols="BANXICO_RATE",
period="monthly",
start="2025-10-17",
end="2026-10-17",
api_key="YOUR_API_KEY"
)
ohlc = requests.get("https://interestratesapi.com/api/v1/ohlc", params=params).json()
bars = ohlc["rates"]["BANXICO_RATE"]
for bar in bars:
print(bar["period"], bar["open"], bar["high"], bar["low"], bar["close"], bar["data_points"])
JavaScript (fetch)
const url = "https://interestratesapi.com/api/v1/ohlc?symbols=BANXICO_RATE&period=monthly&start=2025-10-17&end=2026-10-17&api_key=YOUR_API_KEY";
const ohlc = await fetch(url).then(r => r.json());
ohlc.rates["BANXICO_RATE"].forEach(p => {
console.log(p.period, p.open, p.high, p.low, p.close, p.data_points);
});
PHP
<?php
$url = "https://interestratesapi.com/api/v1/ohlc?symbols=BANXICO_RATE&period=monthly&start=2025-10-17&end=2026-10-17&api_key=YOUR_API_KEY";
$json = file_get_contents($url);
$data = json_decode($json, true)["rates"]["BANXICO_RATE"];
foreach ($data as $bar) {
echo implode(", ", [$bar["period"], $bar["open"], $bar["high"], $bar["low"], $bar["close"], $bar["data_points"]]) . PHP_EOL;
}
?>
Endpoint 7: Convert (Loan Interest Cost Comparison)
Compare total simple-interest costs between two benchmarks over a term. This is useful for UX that educates borrowers about the sensitivity of payments to benchmark choices. The example below compares BANXICO_RATE against another central bank symbol to illustrate the output shape.
cURL
JSON response (example)
Fields:
- from/to.symbol and rate: latest values used for the comparison.
- total_interest and total_payment: simple-interest arithmetic for the given amount and term_months.
- difference.rate_spread and interest_saved: spread and savings relative to the “from” leg.
Python (requests)
import requests
params = dict(
from="BANXICO_RATE",
to="ECB_MRO",
amount=100000,
term_months=12,
api_key="YOUR_API_KEY"
)
res = requests.get("https://interestratesapi.com/api/v1/convert", params=params).json()
print(res["difference"]["rate_spread"], res["difference"]["interest_saved"])
JavaScript (fetch)
const url = "https://interestratesapi.com/api/v1/convert?from=BANXICO_RATE&to=ECB_MRO&amount=100000&term_months=12&api_key=YOUR_API_KEY";
const cmp = await fetch(url).then(r => r.json());
console.log(cmp.difference.rate_spread, cmp.difference.interest_saved);
PHP
<?php
$url = "https://interestratesapi.com/api/v1/convert?from=BANXICO_RATE&to=ECB_MRO&amount=100000&term_months=12&api_key=YOUR_API_KEY";
$json = file_get_contents($url);
$data = json_decode($json, true);
echo $data["difference"]["rate_spread"] . " " . $data["difference"]["interest_saved"];
?>
Practical Interpretation: Units, Effective Dates, Business Days
Units and conventions:
- Rates are returned in percent per annum (e.g., 6.5 means 6.5% p.a.).
- dates fields indicate the effective date of the returned observation.
- For monthly series like BANXICO_RATE, a historical request resolves to the last day with data within the month. Plan your monthly rollups and billing cycles around this behavior.
Business days and publication cadence:
- BANXICO_RATE is monthly in this dataset. Intra-month changes will be reflected per the series’ sampling once the monthly observation is available.
- If you schedule nightly jobs, set tolerance for weekends and MX business holidays; the same latest value may persist until the next observation.
Compute Spreads and Monthly Payments Without Guessing Numbers
Spread against another benchmark:
- Given two rates r1 and r2 (both in percent), spread = r1 - r2.
- Example usage: use the latest endpoint to get BANXICO_RATE and another symbol; subtract values at equal effective dates to derive an apples-to-apples spread.
Monthly payment using simple interest for a short-term loan (illustrative, not amortized):
- Principal P, annual rate R% (convert to decimal r = R/100), term in months m.
- Total interest (simple) = P × r × (m/12).
- Monthly payment (simple equal allocation) = (P + Total interest) / m.
For amortizing loans, replace the simple-interest approach with the standard annuity formula using a monthly rate r_m = r/12 and payment = P × r_m / (1 - (1 + r_m)^(-m)). Use BANXICO_RATE as the reference component of your APR; add a lender-specific spread before computing payments.
Production Integration Details: Caching, Retries, Rate Limits
Recommendations:
- Cache latest BANXICO_RATE responses until the next expected publication window or for several hours to reduce calls.
- For scheduled historical and time series backfills, use stable date ranges and memoize results; historical data changes are rare outside of corrections.
- On 429 responses, observe Retry-After and rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
- Gracefully handle 404s (no data for range), 422 validation errors (date format must be Y-m-d), and 401/403 auth errors. Error shape is success=false with an error message, and some 404s include details.
Always pass your API key via the api_key query parameter. All endpoints are HTTP GET. Base URL must be https://interestratesapi.com/api/v1/.
Error Handling Examples
- 401: Ensure api_key is present and valid. Example: append ?api_key=YOUR_API_KEY to your URL.
- 403: Account not authorized—surface a clear message to admins.
- 404: No symbols matched or no data for the requested date/range—prompt users to adjust the date window.
- 422: Validation error (e.g., date format not Y-m-d or invalid symbol)—sanitize input before calling.
- 429: Back off using Retry-After; display a friendly “temporarily busy” notice in dashboards.
Putting It Together: End-to-End BANXICO_RATE Flow
A typical flow in lending or treasury apps might be:
- Discover and validate BANXICO_RATE via /symbols (ensure category=central_bank, currency MXN).
- Pull the /latest value for real-time pricing references and show the dates.BANXICO_RATE as the effective date in the UI.
- Use /historical for EOM snapshots and month-over-month comparisons.
- Build charts from /timeseries and /ohlc for trend and candle views.
- Run /fluctuation for alerting (e.g., change_pct threshold triggers).
- Offer a loan-cost tool with /convert to explain benchmark sensitivity to users.
You can start integrating today at interestratesapi.com. To obtain an API key, use the link below.
Quick Reference: Code Patterns for GET + api_key
Python requests pattern:
import requests
response = requests.get(
'https://interestratesapi.com/api/v1/latest',
params=dict(symbols='BANXICO_RATE', api_key='YOUR_API_KEY')
)
data = response.json()
JavaScript fetch pattern:
const response = await fetch(
'https://interestratesapi.com/api/v1/latest?symbols=BANXICO_RATE&api_key=YOUR_API_KEY'
);
const data = await response.json();
Use Cases with BANXICO_RATE
- Loan origination systems (MXN): Price adjustable-rate loans off BANXICO_RATE plus a spread; show effective dates for compliance.
- Treasury dashboards: Track monthly BANXICO_RATE with candle summaries using OHLC; issue alerts on change_pct from /fluctuation.
- Macro and risk research: Pull multi-year /timeseries for scenario analysis and stress testing; compute monthly rollups.
- Fintech consumer apps: Educate users with /convert comparisons and explain how benchmark changes affect interest costs.
FAQ
Q: What unit does BANXICO_RATE use?
A: Percent per annum. Treat the numeric value as a percentage (e.g., 6.5 = 6.5% p.a.).
Q: How should I interpret dates for BANXICO_RATE?
A: Use dates.BANXICO_RATE from /latest as the effective date of the most recent observation. For /historical with a date inside a month, the API returns the last day with data within that month.
Q: How often does BANXICO_RATE update?
A: In the Interest Rates API, BANXICO_RATE is modeled as a monthly series. Cache accordingly and plan refreshes around monthly publication.
Q: Can I compute a monthly payment from BANXICO_RATE?
A: Yes. Convert the returned percent to a decimal annual rate, decide whether you’re using simple interest or an amortizing formula, and then compute payments. Add your product’s spread to BANXICO_RATE before calculating APR-based payments.
Q: What happens if I exceed my request quota?
A: You’ll receive HTTP 429 with Retry-After and X-RateLimit-* headers. Back off and retry after the indicated interval.
Ship your BANXICO_RATE integration now. Use the links below to obtain an API key and explore the docs and capabilities:
Need more context before you start? Visit interestratesapi.com and Get started with Interest Rates API to bring central bank and interbank rates into your application logic with minimal code.