Standard Industry Reporting Format (SIRF) — Format Reference

SIRF is a JSON Lines format for bulk consumer credit data reporting. Each file contains one header record followed by one or more account records, one JSON object per line, no array wrapper.


File Structure

Every SIRF file begins with a Header record on the first line. All subsequent lines are Account records. A recordType discriminator field is present on every record.

Line 1:  Header record   — format version, reporting period, and portfolio metadata
Line 2+: Account record  — one consumer credit account per line

Header Record

The first record in every SIRF file. Validated against schemas/sirf.schema.json ($defs/header).

Field Type Required Description
recordType const "Header" Yes Discriminator. Always "Header".
sirfVersion const "2.0" Yes SIRF format version this file conforms to. Always "2.0".
reportingStartDate string (date) Yes Start of the reporting period, inclusive. Format: YYYY-MM-DD.
reportingEndDate string (date) Yes End of the reporting period, inclusive. Format: YYYY-MM-DD.
portfolioId string Yes Portfolio identifier. Lowercase kebab-case, institution-prefixed. See Identifiers.
recordCount integer Yes Number of account records in the file, excluding the header. Minimum: 1.

Account Record

Validated against schemas/sirf.schema.json ($defs/accountRecord).

Each account record groups three objects: the individual (person), their address (address), and the account data (account).

Field Type Required Description
recordType const "Account" Yes Discriminator. Always "Account".
person object Yes The individual associated with the account. See Person.
address object Yes UK residential address. See Address.
account object Yes The account data. See Account.
{ "recordType": "Account", "person": { … }, "address": { … }, "account": { … } }

Account

The account object holds all account data. Validated against schemas/sirf.schema.json ($defs/account).

Core Fields

Field Type Required Description
accountId string Yes Account identifier within the lender’s system. Pattern: ^[A-Za-z0-9-]+$.
accountType string (enum) Yes Credit product category. See Account Types.
status string (enum) Yes Monthly payment performance indicator. See Status Values.

Conditional Fields

Revolving Credit Fields

creditLimit, minimumPayment, cashAdvances, and cashAdvancesCount are only valid on CreditCard, ChargeCard, and Budget accounts. They are prohibited on all other account types.

Field Type On CreditCard On ChargeCard / Budget On all other types
creditLimit integer Required Required Prohibited
minimumPayment integer Required Optional Prohibited
cashAdvances integer Optional Optional Prohibited
cashAdvancesCount integer Optional Optional Prohibited

creditLimit, minimumPayment, and cashAdvances are monetary amounts in whole GBP pounds. Minimum: 0. cashAdvancesCount is a non-negative integer.

Delinquency Field

Field Type When status is Delinquent1–Delinquent6 Otherwise
daysPastDue integer Required Optional

daysPastDue is a non-negative integer representing the number of days the account is past due.

Optional Fields

Field Type Description
startDate string (date) Date the account was opened. Format: YYYY-MM-DD.
repayment integer Scheduled repayment amount per period in GBP. Minimum: 0.
repaymentPeriod integer Total repayment periods at origination. Minimum: 1.
currentBalance integer Outstanding balance in GBP at the point of reporting. May be negative.
paymentFrequency string (enum) How often scheduled repayments are made. See Payment Frequencies.
portfolioId string Portfolio the account belongs to. Used only when the record is sent on its own by HTTP POST; omit in JSON Lines files, where the header’s portfolioId applies. Pattern: ^[a-z0-9-]+$. See Delivery.
accountIdChange string Updated account identifier, provided when the accountId for this account has changed. Processors should replace the previous accountId with this value. Pattern: ^[A-Za-z0-9-]+$.
accountSubtype string (enum) Further classification within the account type. Values: Residential, BuyToLet, Flexible.
closeDate string (date) Date the account was closed. Format: YYYY-MM-DD. Omit if the account is still open.
startBalance integer Balance in GBP at the time the account was opened. Minimum: 0.
flags array of objects Special condition markers, each with an optional period. Multiple flags may be applied simultaneously, but each flag type at most once per account. Omit the field entirely if none apply. See Flags.

Components

Person

Field Type Required Description
customerId string No The lender’s own identifier for the customer, the same across all of that customer’s accounts with the lender. Pattern: ^[A-Za-z0-9-]+$.
title string (enum) No Honorific. Values: Mr, Mrs, Ms, Miss, Mx, Dr.
firstName string Yes Given name. Minimum 2 characters.
middleName string No Middle name or names.
lastName string Yes Family name. Minimum 2 characters.
suffix string No Name suffix, e.g. Junior, Senior, III.
dob string (date) Yes Date of birth. Format: YYYY-MM-DD.
email string No Email address. Pattern: ^[^@\s]+@[^@\s]+\.[^@\s]+$.
phone string No Phone number in E.164 format, UK country code, digits only. Pattern: ^44\d{10}$.

Address

line1 and postalCode are required. All other fields are optional.

Field Type Required Description
subBuilding string No Sub-unit, e.g. Flat 3, Unit B.
buildingName string No Named building, e.g. Rose Cottage.
buildingNumber string No Street number as a string, e.g. 5A.
line1 string Yes Primary street address line.
line2 string No Secondary address line, e.g. locality or district.
city string No Town or city.
postalCode string Yes UK postcode including the internal space, e.g. NG8 1JD. Pattern: ^[A-Z]{1,2}\d[A-Z\d]?\s\d[A-Z]{2}$.
deliveryPoint string No Royal Mail UDPRN. 8-digit numeric string. Pattern: ^\d{8}$.

Enumeration Values

Account Types

Value
HirePurchase
UnsecuredLoan
Mortgage
Budget
CreditCard
ChargeCard
CurrentAccount
BasicBankAccount

Status Values

Delinquent1–6 represent months in arrears.

Value Description
Unclassified Status not yet classified
Dormant Account is dormant
UpToDate Account is up to date
Delinquent1 1 month in arrears
Delinquent2 2 months in arrears
Delinquent3 3 months in arrears
Delinquent4 4 months in arrears
Delinquent5 5 months in arrears
Delinquent6 6 months in arrears
Defaulted Account has defaulted

Payment Frequencies

Value
Monthly
Weekly
Fortnightly
Quarterly
Annually
Irregular

Flags

Each entry in flags is an object identifying the condition and, optionally, the period it applies. Multiple flags may be applied simultaneously, but each flag type may appear at most once per account. Omit the flags field entirely if none apply.

Field Type Required Description
type string (enum) Yes The condition. One of the values below.
startDate string (date) No Date the flag started to apply (inclusive). Format: YYYY-MM-DD.
endDate string (date) No Date the flag stopped applying (inclusive). Format: YYYY-MM-DD. Omit while the flag still applies. Must be after startDate when both are present.
"flags": [
  { "type": "Arrangement", "startDate": "2024-11-01" },
  { "type": "Queried", "startDate": "2024-09-02", "endDate": "2024-10-15" }
]

Flag Types

Value Description
Deceased Deceased
Partial Partial settlement
DebtAssigned Debt assigned (non CRA member)
DebtSold Debt sold to an existing member
GoneAway Gone away
Recourse Debt is subject to recourse
VoluntaryTermination Account has been voluntarily terminated by the account holder
Arrangement Arrangement
DebtManagement Debt management programme
PaidThirdParty Debt has been paid by a third party
Queried Account query
TransientAssociation Transient association

Conventions

Dates

All dates are strings in YYYY-MM-DD format with zero-padded months and days. Non-zero-padded dates such as 2023-2-5 are non-conforming.

Monetary Amounts

Monetary amounts are JSON integers in whole GBP pounds, rounded to the nearest pound (e.g. £498.75 is reported as 499). Decimal values are invalid. Currency is always GBP — no currency field is needed. All monetary amounts have a minimum of 0, except currentBalance, which may be negative.

Identifiers

  • accountId and customerId — alphanumeric characters and hyphens, mixed case. Pattern: ^[A-Za-z0-9-]+$.
  • portfolioId (in the Header, and in account for records sent by HTTP POST) — lowercase kebab-case, prefixed with the reporting institution’s slug. Pattern: ^[a-z0-9-]+$. Example: farringdon-mortgages.

Postcodes

UK postcodes must include the internal space. NG8 1JD is valid; NG81JD is not. Pattern: ^[A-Z]{1,2}\d[A-Z\d]?\s\d[A-Z]{2}$.


Examples

The first line of every SIRF file, shown pretty-printed. In a file it appears on a single line.

{
  "recordType": "Header",
  "sirfVersion": "2.0",
  "reportingStartDate": "2025-02-01",
  "reportingEndDate": "2025-02-28",
  "portfolioId": "farringdon-mortgages",
  "recordCount": 5
}

Sample 1 — Mortgage (Residential, with close date)

A residential mortgage with accountSubtype and closeDate set.

{
  "recordType": "Account",
  "person": {
    "customerId": "FAR-C10482",
    "title": "Mrs",
    "firstName": "Patricia",
    "lastName": "Okafor",
    "dob": "1968-07-30"
  },
  "address": {
    "buildingName": "Rose Cottage",
    "buildingNumber": "8",
    "line1": "Church Lane",
    "line2": "Clifton",
    "city": "Bristol",
    "postalCode": "BS8 4CD"
  },
  "account": {
    "accountId": "POK-7714",
    "accountType": "Mortgage",
    "accountSubtype": "Residential",
    "status": "UpToDate",
    "startDate": "2018-03-01",
    "closeDate": "2025-03-01",
    "repayment": 499,
    "repaymentPeriod": 300,
    "currentBalance": 87450,
    "paymentFrequency": "Monthly"
  }
}

Sample 2 — Credit Card (with minimum payment and cash advances)

A CreditCard account showing creditLimit, minimumPayment, cashAdvances, and cashAdvancesCount.

{
  "recordType": "Account",
  "person": {
    "customerId": "FAR-C55213",
    "title": "Mr",
    "firstName": "Marcus",
    "lastName": "Bell",
    "dob": "1983-12-07",
    "email": "m.bell@example.co.uk",
    "phone": "447911234567"
  },
  "address": {
    "buildingNumber": "9",
    "line1": "Fernside Close",
    "city": "Norwich",
    "postalCode": "NR3 2HT"
  },
  "account": {
    "accountId": "MBL-7722",
    "accountType": "CreditCard",
    "status": "UpToDate",
    "startDate": "2020-11-01",
    "repayment": 150,
    "repaymentPeriod": 60,
    "currentBalance": 2340,
    "paymentFrequency": "Monthly",
    "creditLimit": 7500,
    "minimumPayment": 47,
    "cashAdvances": 300,
    "cashAdvancesCount": 1
  }
}

Sample 3 — Unsecured Loan with delinquency fields and flags

An UnsecuredLoan in arrears with daysPastDue, startBalance, a current Arrangement flag, and a Queried flag that has ended.

{
  "recordType": "Account",
  "person": {
    "customerId": "FAR-C31057",
    "title": "Ms",
    "firstName": "Sarah",
    "middleName": "Louise",
    "lastName": "Mitchell",
    "dob": "1985-03-22"
  },
  "address": {
    "buildingNumber": "14",
    "line1": "Birchwood Avenue",
    "line2": "Headingley",
    "city": "Leeds",
    "postalCode": "LS6 2AB"
  },
  "account": {
    "accountId": "SML-4821",
    "accountType": "UnsecuredLoan",
    "status": "Delinquent2",
    "startDate": "2023-06-01",
    "daysPastDue": 62,
    "repayment": 185,
    "repaymentPeriod": 36,
    "startBalance": 6660,
    "currentBalance": 3421,
    "paymentFrequency": "Monthly",
    "flags": [
      {
        "type": "Arrangement",
        "startDate": "2024-11-01"
      },
      {
        "type": "Queried",
        "startDate": "2024-09-02",
        "endDate": "2024-10-15"
      }
    ]
  }
}

Batch File

A complete SIRF JSON Lines file — 1 header and 5 account records:

{"recordType":"Header","sirfVersion":"2.0","reportingStartDate":"2025-02-01","reportingEndDate":"2025-02-28","portfolioId":"farringdon-mortgages","recordCount":5}
{"recordType":"Account","person":{"customerId":"FAR-C10482","title":"Mrs","firstName":"Patricia","lastName":"Okafor","dob":"1968-07-30"},"address":{"buildingName":"Rose Cottage","buildingNumber":"8","line1":"Church Lane","line2":"Clifton","city":"Bristol","postalCode":"BS8 4CD"},"account":{"accountId":"POK-7714","accountType":"Mortgage","accountSubtype":"Residential","status":"UpToDate","startDate":"2018-03-01","closeDate":"2025-03-01","repayment":499,"repaymentPeriod":300,"currentBalance":87450,"paymentFrequency":"Monthly"}}
{"recordType":"Account","person":{"customerId":"FAR-C20931","title":"Mr","firstName":"James","lastName":"Thornton","dob":"1979-11-14","email":"j.thornton@example.com","phone":"447700900142"},"address":{"buildingNumber":"42","line1":"Maple Street","city":"Manchester","postalCode":"M1 4BT"},"account":{"accountId":"JTH-2293","accountType":"CreditCard","status":"UpToDate","startDate":"2021-09-15","repayment":75,"repaymentPeriod":60,"currentBalance":1240,"paymentFrequency":"Monthly","creditLimit":5000,"minimumPayment":25,"cashAdvances":200,"cashAdvancesCount":2}}
{"recordType":"Account","person":{"customerId":"FAR-C31057","title":"Ms","firstName":"Sarah","middleName":"Louise","lastName":"Mitchell","dob":"1985-03-22"},"address":{"buildingNumber":"14","line1":"Birchwood Avenue","line2":"Headingley","city":"Leeds","postalCode":"LS6 2AB"},"account":{"accountId":"SML-4821","accountType":"UnsecuredLoan","status":"Delinquent2","startDate":"2023-06-01","daysPastDue":62,"repayment":185,"repaymentPeriod":36,"startBalance":6660,"currentBalance":3421,"paymentFrequency":"Monthly","flags":[{"type":"Arrangement","startDate":"2024-11-01"},{"type":"Queried","startDate":"2024-09-02","endDate":"2024-10-15"}]}}
{"recordType":"Account","person":{"title":"Mr","firstName":"David","lastName":"Nkosi","dob":"1995-06-12"},"address":{"buildingNumber":"31","line1":"Wellington Street","city":"Sheffield","postalCode":"S1 4ER"},"account":{"accountId":"DNK-8856","accountType":"HirePurchase","status":"UpToDate","startDate":"2022-09-01","repayment":320,"repaymentPeriod":60,"currentBalance":12800,"paymentFrequency":"Monthly"}}
{"recordType":"Account","person":{"customerId":"FAR-C48820","title":"Ms","firstName":"Eleanor","lastName":"Griffiths","dob":"1961-03-28"},"address":{"buildingName":"Willowbank House","buildingNumber":"5","line1":"Riverside Way","city":"Exeter","postalCode":"EX2 4AB"},"account":{"accountId":"EGR-1147","accountType":"Mortgage","accountSubtype":"BuyToLet","status":"Defaulted","startDate":"2015-06-01","closeDate":"2024-11-30","repayment":612,"repaymentPeriod":240,"currentBalance":0,"paymentFrequency":"Monthly","flags":[{"type":"Partial","startDate":"2024-11-30"}]}}