GrpHdr dict | CdtTrfTxInf dict |
|---|---|
{
"MsgId": "MSG123456789-dup0087",
"CreDtTm": "2023-04-15T10:30:00",
"NbOfTxs": 1
} | {
"PmtId": {
"EndToEndId": "EETR123456789"
},
"PmtTpInf": {
"CtgyPurp": "SALA"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 2000
},
"Dbtr": {
"Nm": "John Doe"
},
"DbtrAcct": {
"Id": {
"IBAN": "DE89370400440532013000"
}
},
"DbtrAgt": {
"FinInstnId": {
"BIC... |
{
"MsgId": "MSG123456790-dup0088",
"CreDtTm": "2023-04-15T10:35:00",
"NbOfTxs": 1
} | {
"PmtId": {
"EndToEndId": "EETR123456790"
},
"PmtTpInf": {
"CtgyPurp": "SUPP"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 3000
},
"Dbtr": {
"Nm": "Alice Johnson"
},
"DbtrAcct": {
"Id": {
"IBAN": "ES6600190022450687420235"
}
},
"DbtrAgt": {
"FinInstnId": {
... |
{
"MsgId": "MSG123456791-dup0089",
"CreDtTm": "2023-04-15T11:00:00",
"NbOfTxs": 1
} | {
"PmtId": {
"EndToEndId": "EETR123456791"
},
"PmtTpInf": {
"CtgyPurp": "INTC"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 500
},
"Dbtr": {
"Nm": "Charlie White"
},
"DbtrAcct": {
"Id": {
"IBAN": "DE89370400440532013000"
}
},
"DbtrAgt": {
"FinInstnId": {
... |
{
"MsgId": "MSG123456792-dup0090",
"CreDtTm": "2023-04-15T11:05:00",
"NbOfTxs": 1
} | {
"PmtId": {
"EndToEndId": "EETR123456792"
},
"PmtTpInf": {
"CtgyPurp": "CORT"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 1000
},
"Dbtr": {
"Nm": "Eve Black"
},
"DbtrAcct": {
"Id": {
"IBAN": "ES6600190022450687420235"
}
},
"DbtrAgt": {
"FinInstnId": {
"... |
{
"MsgId": "MSG123456793-dup0091",
"CreDtTm": "2023-04-15T11:10:00",
"NbOfTxs": 1
} | {
"PmtId": {
"EndToEndId": "EETR123456793"
},
"PmtTpInf": {
"CtgyPurp": "TREA"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 800
},
"Dbtr": {
"Nm": "Grace Red"
},
"DbtrAcct": {
"Id": {
"IBAN": "DE89370400440532013000"
}
},
"DbtrAgt": {
"FinInstnId": {
"BIC... |
{
"MsgId": "MSG123456794-dup0092",
"CreDtTm": "2023-04-15T11:15:00",
"NbOfTxs": 1
} | {
"PmtId": {
"EndToEndId": "EETR123456794"
},
"PmtTpInf": {
"CtgyPurp": "SALA"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 2500
},
"Dbtr": {
"Nm": "Ivy Pink"
},
"DbtrAcct": {
"Id": {
"IBAN": "ES6600190022450687420235"
}
},
"DbtrAgt": {
"FinInstnId": {
"B... |
{
"MsgId": "MSG123456795-dup0093",
"CreDtTm": "2023-04-15T11:20:00",
"NbOfTxs": 1
} | {
"PmtId": {
"EndToEndId": "EETR123456795"
},
"PmtTpInf": {
"CtgyPurp": "SUPP"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 5000
},
"Dbtr": {
"Nm": "Kara Orange"
},
"DbtrAcct": {
"Id": {
"IBAN": "DE89370400440532013000"
}
},
"DbtrAgt": {
"FinInstnId": {
"... |
{
"MsgId": "MSG123456796-dup0094",
"CreDtTm": "2023-04-15T11:25:00",
"NbOfTxs": 1
} | {
"PmtId": {
"EndToEndId": "EETR123456796"
},
"PmtTpInf": {
"CtgyPurp": "INTC"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 200
},
"Dbtr": {
"Nm": "Mia Gray"
},
"DbtrAcct": {
"Id": {
"IBAN": "ES6600190022450687420235"
}
},
"DbtrAgt": {
"FinInstnId": {
"BI... |
{
"MsgId": "MSG123456797-dup0095",
"CreDtTm": "2023-04-15T11:30:00",
"NbOfTxs": 1
} | {
"PmtId": {
"EndToEndId": "EETR123456797"
},
"PmtTpInf": {
"CtgyPurp": "CORT"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 400
},
"Dbtr": {
"Nm": "Olivia Black"
},
"DbtrAcct": {
"Id": {
"IBAN": "DE89370400440532013000"
}
},
"DbtrAgt": {
"FinInstnId": {
"... |
{
"MsgId": "MSG123456798-dup0096",
"CreDtTm": "2023-04-15T11:35:00",
"NbOfTxs": 1
} | {
"PmtId": {
"EndToEndId": "EETR123456798"
},
"PmtTpInf": {
"CtgyPurp": "TREA"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 600
},
"Dbtr": {
"Nm": "Quinn Red"
},
"DbtrAcct": {
"Id": {
"IBAN": "ES6600190022450687420235"
}
},
"DbtrAgt": {
"FinInstnId": {
"B... |
ISO 20022 100 — Free Sample (10 records)
This is a free 10-record sample of the full 100-record commercial dataset. Every record in this sample is a real, valid bfsi record — real records, just the data. you'd build by hand.
What's in this sample
- 10 records in
records.jsonl(NDJSON, one record per line) - Schema-validated: every record parses against the real industry-standard schema before publishing
- Ready to use: import directly into any bfsi pipeline — no transformation step needed
- Format: standard JSON Lines (
.jsonl), bfsi-native structure
Why these records hold up
Most synthetic datasets are "good enough" — they look like the right shape, but fail against real-world parsers. Cottonwood Development's datasets are generated and validated against the actual schema:
- Healthcare records validate as valid FHIR R4
Patientresources - Banking messages parse against the ISO 20022
pacs.008.001.10XSD - CRM records maintain referential integrity (customer → orders → line items)
- Invoice records have internally-consistent totals (subtotal + tax = total)
Every record passes schema validation before publishing. If it doesn't parse against the real spec, it doesn't ship.
Sample record
{
"GrpHdr": {
"MsgId": "MSG123456789",
"CreDtTm": "2023-04-15T10:30:00",
"NbOfTxs": 1
},
"CdtTrfTxInf": {
"PmtId": {
"EndToEndId": "EETR123456789"
},
"PmtTpInf": {
"CtgyPurp": "SALA"
},
"IntrBkSttlmAmt": {
"Ccy": "EUR",
"Amt": 2000
},
"Dbtr": {
"Nm": "John Doe"
},
"DbtrAcct": {
"Id": {
"IBAN": "DE89370400440532013000"
}
},
"DbtrAgt": {
"FinInstnId": {
"BIC": "DEUTDEFF"
}
},
"Cdtr": {
"Nm": "Jane Smith"
},
"CdtrAcct": {
"Id": {
"IBAN": "GB29NWBK60161331926819"
}
},
"CdtrAgt": {
"FinInstnId": {
"BIC": "BNPAFRPP"
}
}
}
}
Schema
The full dataset uses the following field structure:
| Field | Type | Description |
|---|---|---|
GrpHdr.MsgId |
string |
Unique message identifier |
GrpHdr.CreDtTm |
datetime |
ISO 8601 creation timestamp |
GrpHdr.NbOfTxs |
integer |
Number of transactions (1 per message) |
CdtTrfTxInf.PmtId.EndToEndId |
string |
End-to-end payment reference |
CdtTrfTxInf.PmtTpInf.CtgyPurp |
string |
Category purpose code (SALA, INTC, etc.) |
CdtTrfTxInf.IntrBkSttlmAmt.Amt |
decimal |
Settlement amount |
CdtTrfTxInf.IntrBkSttlmAmt.Ccy |
string |
ISO 4217 currency code (USD, EUR, GBP, etc.) |
CdtTrfTxInf.Dbtr.Nm |
string |
Debtor (sender) name |
CdtTrfTxInf.DbtrAcct.Id.IBAN |
string |
Debtor IBAN |
CdtTrfTxInf.Cdtr.Nm |
string |
Creditor (receiver) name |
CdtTrfTxInf.CdtrAcct.Id.IBAN |
string |
Creditor IBAN |
Use cases
- Test fixtures for payment processing systems
- Demo data for fintech applications
- ETL pipeline testing — validate payment ingestion
- Parser development for ISO 20022 implementations
- ML training for fraud detection, payment categorization
Get the full 100-record commercial dataset
This is a 10-record sample. The full commercial dataset contains 100 records for $25, Schema-validated, with full JSON representations of ISO 20022 pacs.008.001.10 messages.
Buy on Gumroad: https://bluecore8.gumroad.com/l/cottonwood-bfsi-100-records
About Cottonwood
A one-person data shop generating Schema-validated synthetic datasets for AI training, ML eval, and application testing. Every product is generated against an industry-standard schema and validated against the real parser before publishing. 100% synthetic, no real customer data, no legal overhead.
License
This sample is released under CC0 1.0 (public domain dedication). You can use it for any purpose, including commercial use, without attribution.
The full commercial dataset is sold under a separate license (see Gumroad product page for terms).
- Downloads last month
- 97