Skip to navigation

Credit Registry

The person’s risk position at the Bank of Spain’s credit registry (CIRBE)

View as Markdown

Where it lives: in the Spain Public Administration results, at data.credit.registry. APIs with dedicated per-product results endpoints return this model directly.

The credit registry is the Bank of Spain’s record of the person’s debts: every loan, credit line and guarantee above the reporting threshold, entity by entity. It is the reference document for indebtedness analysis, and the official PDF report travels as an attachment.

The holder's risk position at a central credit register: in Spain, the Bank of Spain's CIRBE report, detailed (one row per operation and entity) or aggregated (operations grouped, no entities).

Every key the register prints comes twice: as its meaning (an enum, the same whatever the report's period) and as the printed code (the *_code fields).

Every amount is always present. One the report did not give — when the report could not be read — comes with currency *** and amount NaN: unknown, never zero.

product"credit_registry_data"Required
The product type identifier.
sub_familyenumRequired

Which report this is: detailed or aggregated — what the document turned out to be, not what was requested. A holder with nothing declared to the register only ever gets the aggregated report.

Allowed values:
fetch_datestringRequiredformat: "datetime"
Date this product was fetched.
countrystringRequiredformat: "country"
Country of the credit registry.
report_monthstringRequired

Period the operations correspond to, MM-YYYY.

holder_codestringOptional

The holder's code exactly as the report prints it (e.g. ES44444444A). Not reported when the report could not be read.

holder_namestringOptional

Full name or business name of the holder, as the report prints it. Not reported when the report could not be read: the attached report is then the only reference.

identifierobjectOptional
The holder's national identifier, from the report's holder code. Not reported when the report could not be read.
consultation_datestring or nullOptionalformat: "datetime"
When the register's data was taken, as the report states it.
total_drawnobjectOptional
Total drawn across every operation in the system. In an aggregated report, exact to the thousand.
total_overdueobjectOptional
Total overdue across every operation in the system.
total_arrearsobjectOptional
Total default interest and enforceable expenses in the system.
total_risk_availableobjectOptional
Total still available to draw in the system.
operationslist of objectsOptionalDefaults to []

The operations: one per operation in a detailed report, one per group in an aggregated one.

minor_riskslist of objectsOptionalDefaults to []
Entities whose accumulated risk is below the reporting threshold. Detailed reports only.
attachmentslist of objectsOptionalDefaults to []

The original report (PDF).

Operations

One entry per reported operation:

currencystringRequiredformat: "currency"

Currency the operation is contracted in. XXX means "other currencies".

entity_namestring or nullOptional
Name of the reporting entity. Detailed reports only.
entity_codestring or nullOptional

Bank of Spain code of the reporting entity (e.g. 0182). Detailed reports only.

operation_codestring or nullOptional
Unique code of the operation, as the entity reports it. Detailed reports only.
product_typeenum or nullOptional

Type of product: a loan, a lease, a guarantee… Empty only if the code is new to us; see product_type_code.

product_type_codestring or nullOptional

Product code as printed (e.g. V32).

intervention_natureenum or nullOptional

How the holder takes part: as the direct obligor, or as a guarantor of someone else's operation.

Allowed values:
intervention_nature_codestring or nullOptional

Intervention code as printed (e.g. T11).

collective_statusenum or nullOptional
Whether the holder answers jointly and severally, or collectively, with others. Empty when neither.
Allowed values:
collective_status_codestring or nullOptional

Code as printed (e.g. T33).

participants_numberinteger or nullOptional>=1
Number of participants in a joint and several or collective operation.
maturity_typeenum or nullOptional
Time left to maturity at the report's date.
Allowed values:
maturity_type_codestring or nullOptional

Maturity code as printed (e.g. L08).

real_guarantee_typeenum or nullOptional

Main real guarantee (collateral): a mortgage, a pledge… or none.

real_guarantee_type_codestring or nullOptional

Code as printed (e.g. G19).

real_guarantee_coverageenum or nullOptional
Whether the real guarantee covers all of the risk or part of it. Empty when there is no guarantee.
Allowed values:
real_guarantee_coverage_codestring or nullOptional

Code as printed (e.g. E14).

personal_guarantee_typeenum or nullOptional

Main personal guarantee beyond the holders' own, or none.

personal_guarantee_type_codestring or nullOptional

Code as printed (e.g. G10). Empty when there is no personal guarantee.

personal_guarantee_coverageenum or nullOptional
Whether the personal guarantee covers all of the risk or part of it.
Allowed values:
personal_guarantee_coverage_codestring or nullOptional

Code as printed (e.g. E15).

operation_statusenum or nullOptional

Special situation of the operation: refinanced, in default, written off… standard when none applies.

operation_status_codestring or nullOptional

Code as printed (e.g. I19). Empty when no special situation applies.

total_drawnobjectOptional
Amount drawn, overdue amounts included. In an aggregated report, exact to the thousand.
overdueobjectOptional
Part of the drawn amount that is overdue, with a first default over 90 days old.
arrearsobjectOptional
Part of the overdue amount that is default interest and enforceable expenses.
risk_availableobjectOptional
Amount still available to draw.

Minor risks

Positions below the detailed-reporting threshold, aggregated:

entity_namestringRequired
Name of an entity whose accumulated risk with the holder is below the reporting threshold.
entity_codestring or nullOptional
Bank of Spain code of the entity.
limit_amountobjectOptional

The reporting threshold: 1,000 EUR from period 01-2021, 9,000 EUR before.

When the Bank of Spain does not serve the report

The Bank of Spain serves the CIRBE report only to a person whose Cl@ve registration reaches the level it requires. When it does not, data.credit.registry is absent and the Spain Public Administration session says why in its messages: a clave_level_insufficient info message, located at ["data", "credit", "registry"]. Trying again in the same session does not change it: the level is a property of the person’s Cl@ve registration.

CIRBE is not a delinquency file

CIRBE and ASNEF are often confused, and they answer different questions:

CIRBEASNEF and other delinquency files
Who runs itThe Banco de España, by law.Private companies.
Who reports to itBanks and other credit institutions.Any creditor that is a member, telcos and utilities included.
What it listsEvery risk the person holds, current or not: loans, credit lines, cards, guarantees.Only unpaid debts.

So the two never carry the same amounts: someone with a mortgage paid on time is in CIRBE and not in ASNEF. CIRBE is read in the person’s name, from the Banco de España’s own site, with their consent. Delinquency files are not a source on this platform.