Brazil's central bank (Banco Central do Brasil) publishes the average revolving credit card rate for individuals as series 25477 in its SGS time-series service. The API is public, needs no key and returns JSON.
curl -s "https://api.bcb.gov.br/dados/serie/bcdata.sgs.25477/dados?formato=json&dataInicial=01/09/2025&dataFinal=30/09/2026" Each row looks like {"data":"01/09/2026","valor":"15.29"}. The value is the monthly rate in percent, as a string, and the date is always day 01 of the month.
What I got
- September 2026: 15.29% per month.
- September 2025: 15.23% per month.
- The monthly rate stayed between 14.90% (Jan 2026) and 15.44% (May 2025) over the last 24 months.
Turning monthly into yearly
The API gives monthly only. The yearly rate is (1 + m)^12 - 1:
m = 0.1529 print(round(((1 + m) ** 12 - 1) * 100, 2)) # 451.44 R$ 1,000 left untouched for 12 months at that rate becomes about R$ 5,514 (1000 * 1.1529 ** 12). In Brazil, Law 14.690/2023 caps interest and fees at 100% of the original debt, so the real ceiling is double.
Gotchas
-
valoris a string with a dot, not a comma. - Date params use
dd/mm/aaaa, not ISO. - The series is the average reported by institutions, not the rate on your card.
I put the full 24-month table and the method on a page (in Portuguese), with sentences ready to cite: https://tobbofin.com/calculadoras/juros-do-cartao-banco-central/. I work on Tobbo, a personal finance app for Android that connects to Brazilian banks through Open Finance. The page is ours.
Source: Banco Central do Brasil, SGS series 25477, checked on 2026-11-09.