Ingress Message Format

Required and optional fields for transaction messages sent to the Kafka ingress topic.

The ingress message format expected is Array<Transaction> or just a single Transaction where Transaction contains at least the following fields. You can provide further fields inside the meta object that the engine will include in the egress message, but the engine itself will not use the fields.

Ingress message schema

FieldType                       RequiredDescription
transactionIdString (max 36)YesUnique identifier for the transaction.
accountIdString (max 36)YesUnique identifier for the account.
userIdString (max 36)NoUnique identifier for the customer.
accountTypeString (max 10)YesThe account type. Permitted values as follows:"cash" - current accounts;
"card" - credit cards;
"savings" - savings accounts;
"investment" - investment accounts;
"loan" - loan accounts;
"mortgage" - mortgage accounts;
"pension" - pension accounts
txCodeString (max 64)YesThe transaction code. Permitted values as follows:"DEB" - general debit card transaction;
"CR" - general bank credit;
"TFR" - general transfer to/from;
")))" - contactless purchase;
"DD" - direct debit;
"SO" - standing order;
"BGC" - bank giro credit;
"ATM" - cash withdrawal;
"CHQ" - cheque;
"CHG" - bank chargeFor credit card transactions or if unsure for a transaction set to the empty string "".Although we do accept more; please supply us a list of the transaction codes you'd like to use and we'll either let you know if they are supported or how you can map onto our transaction codes.
dateDate (max 35)YesThe date and time of the transaction in ISO 8601 format (date-time).
descriptionString (max 256)YesThe transaction description, or statement reference. It is commonly a combination of the merchant name and merchant location.
amountNumberYesThe transaction amount in major units.
currencyString (max 3)YesThe currency of the transaction, e.g. GBP, EUR
statusString (max 7)NoThe transaction status: pending or posted.
merchantCategoryCodeString (max 4)NoMCC code for the merchant’s primary activities. A maximum 4 digit string which we will left pad with 0s to make 4 digits if necessary.
cardPresentBooleanNoIndicates if the cardholder was present when the transaction occurred. Note that, online purchases are considered card holder not present. Only card holder present transactions are eligible for geotagging. Commonly derived from the POS entry mode: e.g. “07” is contactless chip read so card present. Do not specify or set to true if unknown/unsure; the engine uses this field as part of the estimation of a more accurate card present flag.
metaObjectNoAdditional data for storage/pass-through.

Example

{
    "transactionId": "123456",
    "accountId": "5382358854398",
    "userId": "5382358854398",
    "accountType": "cash",
    "txCode": ")))",
    "date": "2025-10-20T13:46:57.329Z",
    "description": "Tesco BriLL 293484 SS",
    "amount": -10.99,
    "currency":"GBP",
    "status": "posted",
    "merchantCategoryCode": "5411",
    "cardPresent": true,
    "meta": {
        "sourceSystem": "hex",
        "authorisedBy": "PStibbons",
        "yearOfCreation": "Year of the Luminous Lemur"
    }
}