SCR — Credit Information System

Query Bacen's Sistema de Informações de Crédito for the document behind a connected Open Finance item, and read the payload the Banco Central returns.

View as Markdown

The SCR (Sistema de Informações de Crédito) is the Banco Central do Brasil's official registry of credit operations. Every financial institution in the country reports to it: loans, financing, limits, guarantees and co-obligations above R$200. It is the source itself, not a score inferred from it.

Pluggy exposes the SCR behind a connected Open Finance item. The item supplies the CPF or CNPJ and stands as the evidence of the account holder's consent.

Available on request

The SCR is available on request. Talk to us to have it enabled on your subscription — without it the endpoint returns SCR_FEATURE_NOT_ENABLED.

Consent is your responsibility

Any SCR consultation depends on prior authorization from the credit operations holder. Your institution is responsible for requesting that authorization, and for meeting the consultation prerequisites, clarification messages, and the registration and storage of authorizations set out in current regulation — see Resolução CMN n° 5.037.

Requirements#

Before the first call:

  1. The SCR feature enabled on your subscription.
  2. A connected Open Finance item. Direct connectors are not eligible.
  3. That item's CPF or CNPJ known to us — it is what we query Bacen with.

An item that fails either of the last two returns SCR_ITEM_NOT_SUPPORTED.

Consult the SCR#

GET /items/{id}/scr
ParameterInDescription
idpathThe item whose account holder you want to consult
fromqueryFirst base date, as YYYYMM. Optional
toqueryLast base date, as YYYYMM. Optional
bash
curl --request GET \
  --url 'https://api.pluggy.ai/items/d0e8448e-0156-4b4a-ae6c-3e2a6d9bff5c/scr?from=202604&to=202607' \
  --header 'X-API-KEY: YOUR_API_KEY'

Full parameter and schema detail lives in the API referenceAPI.

Base dates are months, and they lag#

The SCR does not work in days. Bacen consolidates one base date (data-base) per month, and each one only becomes complete a few months later — institutions are still delivering their reports in the meantime.

Two consequences worth designing around:

  • Asking for the current month returns nothing. Bacen has not closed it yet.
  • When you omit from and to, Pluggy consults the last 4 base dates, ending 2 months back from today. In September 2026 that is 202604 to 202607.

If you send only one bound, the window anchors on it: ?to=202501 returns 202410 through 202501.

Each base date carries docProc and volProc — the percentage of expected documents and volume already incorporated. A recent base date with low coverage is a partial picture, not an empty one.

Response#

The response is Bacen's own payload, forwarded unchanged. Field names, codes and structure are the SCR's, so a value you read here is the same value an institution reads at the source.

json
{
  "dtbConsult": "202604 a 202607",
  "cdCli": "11222333",
  "tpCli": "2",
  "lsDtb": [
    {
      "dtb": 202607,
      "docProc": "99.8",
      "volProc": "99.9",
      "qtdIfs": 4,
      "qtdCongFinc": 3,
      "dtbIniRel": "201803",
      "coobAss": 0,
      "coobRec": 0,
      "lsOp": [
        {
          "mod": "0203",
          "oriRec": "0101",
          "indx": "01",
          "varCamb": "00",
          "resVenc": { "v20": 12500.0, "v40": 12500.0, "v110": 37500.0 },
          "lsGar": [{ "tp": "0501", "qtd": 1 }]
        }
      ]
    }
  ]
}

Top level#

FieldTypeDescription
dtbConsultstringThe base dates consulted
cdClistringThe consulted document: the CPF for an individual, or the 8-digit CNPJ root for a company
tpClistring"1" for an individual, "2" for a legal entity
lsDtbarrayOne entry per consulted base date. A base date with no data is still listed
listaDeMensagensDeValidacaoarrayValidation messages raised by Bacen for the request

Inside a base date (lsDtb[])#

FieldTypeDescription
dtbnumberThe base date, as YYYYMM. Numeric, not a string
msgstringBacen's message for this base date, when it has one
docProcstringPercentage of the expected 3040 documents already incorporated by Bacen, excluding exempted institutions
volProcstringPercentage of the expected operation volume already accepted for the base date
qtdIfsnumberNumber of financial institutions where the holder has operations
qtdCongFincnumberNumber of financial conglomerates. Compare against qtdIfs to tell real counterparty diversification from apparent
dtbIniRelstringStart of the holder's relationship with the national financial system
coobAssnumberCo-obligation assumed by the holder in credit assignments, in BRL
coobRecnumberCo-obligation received in credit assignments, in BRL
lsOparrayOperation groups

Inside an operation group (lsOp[])#

The SCR does not return contracts one by one. Operations are aggregated by the combination of modality, source of funds, index and exchange variation, so one entry can represent several contracts of the same nature.

FieldTypeDescription
modstringModality code — what kind of credit it is
oriRecstringSource-of-funds code
indxstringReference rate or index code
varCambstringExchange rate variation code
subJDiscstringPresent when the operation is under dispute: "D" disagreement, "J" sub judice, "JD" both
resVencobjectBalances split by maturity vertex — see below
lsGararrayGuarantees backing the group, by type (tp) and count (qtd)
lsInfAdarrayComplementary information reported for the group

The codes behind mod, oriRec, indx, varCamb and tp are Bacen's own. Their meaning is published in the DOC3040 reference — read them there rather than inferring them.

Maturity vertices (resVenc)#

resVenc distributes the group's balance across 30 vertices, in BRL. Only the vertices that carry a value are present. They fall into three families:

FamilyWhat it means
Not yet duePayments whose date has not arrived. The boundary is generous — a payment up to 14 days late still counts here, so short operational delays are not read as default. Measures commitment, not trouble: what matters is the shape of the curve over time
OverduePayments more than 14 days late, graded into progressively older buckets. Two debts of the same value, one 20 days late and one 200, are opposite situations. Read the migration between buckets month over month: value moving down the ladder is recovery, moving up is a default in progress
Special categoriesA few vertices are not time windows at all; they represent states or commitments that do not fit the maturity ruler

The exact window behind each individual vertex code is defined by the DOC3040 reference.

Errors#

StatusCodeWhat it means
400SCR_INVALID_REQUESTThe base date range was rejected. Check that from and to are YYYYMM and that from is not after to
403SCR_FEATURE_NOT_ENABLEDThe SCR is not enabled on your subscription
404ITEM_NOT_FOUNDNo such item, or its authorization has been revoked
422SCR_ITEM_NOT_SUPPORTEDThe item is not an Open Finance connection, or its CPF/CNPJ is missing or malformed
500SCR_FETCH_ERRORWe could not complete the consultation
502SCR_SERVICE_UNAVAILABLEBacen's SCR service is unavailable. Retry later

A 502 carries a correlationId under data. Quote it when you report the failure to us — it is what lets us trace the exact consultation.

json
{
  "code": 502,
  "codeDescription": "SCR_SERVICE_UNAVAILABLE",
  "message": "Bacen's SCR service is temporarily unavailable. Please try again later.",
  "data": { "correlationId": "8047f6e9-bb9e-4b04-8515-e2210dc4c544" }
}

Design for outages

Bacen's SCR service has extended outages. Design for 502 — retry with backoff, and do not treat an unavailable consultation as an absence of credit history.

Was this page helpful?