{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://github.com/api-evangelist/temenos-transact/json-schema/temenos-transaction-schema.json", "title": "Temenos Transact Banking Transaction", "description": "Represents a financial transaction in Temenos Transact (formerly T24) core banking system. A transaction is a debit or credit entry posted against a customer account, capturing the movement of funds with full audit trail including booking date, value date, narrative, counterparty details, and applied charges or exchange rates. Transactions are generated by various banking operations including fund transfers, payment orders, standing orders, direct debits, interest postings, and fee collections.", "type": "object", "required": [ "transactionId", "accountId", "debitOrCredit", "amount", "currency", "bookingDate" ], "properties": { "transactionId": { "type": "string", "description": "Unique system-generated transaction identifier assigned by Temenos Transact. Follows the format prefix plus numeric sequence (e.g., FT for fund transfers, PI for payment instructions).", "pattern": "^[A-Z]{2}[0-9]+$", "examples": [ "FT2014500001", "PI2014500032" ] }, "accountId": { "type": "string", "description": "Identifier of the account against which the transaction is posted. References an account arrangement created through the Arrangement Architecture.", "examples": [ "AA2014500001", "75821" ] }, "transactionType": { "type": "string", "description": "Classification of the transaction type indicating the nature of the financial operation that generated this entry.", "enum": [ "TRANSFER", "PAYMENT", "DEPOSIT", "WITHDRAWAL", "FEE", "INTEREST", "DIRECT_DEBIT", "STANDING_ORDER", "REVERSAL", "ADJUSTMENT", "FOREX", "CHEQUE", "CARD_PAYMENT", "ATM" ] }, "debitOrCredit": { "type": "string", "description": "Indicates whether the transaction is a debit (reducing account balance) or credit (increasing account balance) from the perspective of the account holder.", "enum": [ "DEBIT", "CREDIT" ] }, "amount": { "type": "number", "description": "Transaction amount in the account currency. Always expressed as a positive value; the debitOrCredit field indicates the direction.", "minimum": 0, "exclusiveMinimum": true, "examples": [ 1500.00, 250.75, 10000 ] }, "currency": { "type": "string", "description": "ISO 4217 currency code of the transaction amount. Typically matches the account currency unless a foreign currency transaction is involved.", "pattern": "^[A-Z]{3}$", "examples": [ "USD", "EUR", "GBP" ] }, "bookingDate": { "type": "string", "format": "date", "description": "The date the transaction was booked (posted) to the account ledger. This is the date the transaction appears on the account statement." }, "valueDate": { "type": "string", "format": "date", "description": "The value date used for interest calculation purposes. May differ from the booking date, particularly for future-dated payments or backdated corrections." }, "processingDate": { "type": "string", "format": "date", "description": "The date the transaction was processed by the system. Typically matches the booking date but may differ for batch-processed transactions." }, "reference": { "type": "string", "description": "Transaction reference number used for identification and reconciliation. May be system-generated or provided by the originator.", "examples": [ "REF2024001234", "PAY-2024-0001" ] }, "endToEndReference": { "type": "string", "description": "End-to-end reference that travels with the payment through the entire processing chain. Used for payment tracking and reconciliation across systems.", "maxLength": 35 }, "narrative": { "type": "string", "description": "Human-readable description of the transaction providing context about the payment purpose or origin.", "maxLength": 255, "examples": [ "Monthly salary payment", "Utility bill - Electric Company", "Transfer to savings" ] }, "counterparty": { "$ref": "#/$defs/Counterparty", "description": "Details of the other party involved in the transaction, such as the sender (for credits) or recipient (for debits)." }, "balance": { "type": "number", "description": "Running balance of the account after this transaction was applied. Provides a sequential view of account balance movement." }, "exchangeRate": { "$ref": "#/$defs/ExchangeRateInfo", "description": "Exchange rate information when the transaction involves currency conversion." }, "charges": { "$ref": "#/$defs/ChargesInfo", "description": "Charges and fees applied to this transaction." }, "statementNumber": { "type": "string", "description": "Identifier of the account statement period this transaction belongs to.", "examples": [ "2024-01", "12" ] }, "reversalIndicator": { "type": "boolean", "description": "Indicates whether this transaction is a reversal of a previously posted transaction.", "default": false }, "originalTransactionId": { "type": "string", "description": "Reference to the original transaction identifier when this entry is a reversal or correction." }, "transactionStatus": { "type": "string", "description": "Lifecycle status of the transaction within the Temenos Transact processing pipeline.", "enum": [ "Live", "Unauth", "Hold", "Reversed", "Pending" ], "default": "Live" }, "channel": { "type": "string", "description": "The banking channel through which the transaction was initiated.", "enum": [ "BRANCH", "ONLINE_BANKING", "MOBILE_BANKING", "ATM", "API", "BATCH", "SWIFT", "CLEARING" ] }, "paymentMethod": { "type": "string", "description": "The payment method or instrument used for this transaction.", "enum": [ "INTERNAL_TRANSFER", "SEPA_CREDIT", "SEPA_INSTANT", "SWIFT_MT103", "ACH", "DOMESTIC_CLEARING", "RTGS", "CHEQUE", "CARD", "CASH", "DIRECT_DEBIT" ] }, "categoryCode": { "type": "string", "description": "Transaction category code used for accounting and reporting classification within Temenos Transact.", "examples": [ "10001", "21001" ] }, "audit": { "$ref": "#/$defs/AuditInfo", "description": "Audit trail information for the transaction." } }, "if": { "properties": { "reversalIndicator": { "const": true } } }, "then": { "required": [ "originalTransactionId" ] }, "$defs": { "Counterparty": { "type": "object", "description": "Details of the counterparty in a banking transaction, identifying the other party and their account information.", "properties": { "accountId": { "type": "string", "description": "Account identifier of the counterparty. May be an internal Transact account ID or an external account number/IBAN." }, "name": { "type": "string", "description": "Name of the counterparty (individual or organization).", "maxLength": 140 }, "iban": { "type": "string", "description": "International Bank Account Number of the counterparty.", "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]{4,30}$" }, "bic": { "type": "string", "description": "Bank Identifier Code (SWIFT/BIC) of the counterparty's bank.", "pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$" }, "bankName": { "type": "string", "description": "Name of the counterparty's bank." }, "country": { "type": "string", "description": "Country code of the counterparty's bank (ISO 3166-1 alpha-2).", "pattern": "^[A-Z]{2}$" } } }, "ExchangeRateInfo": { "type": "object", "description": "Exchange rate details applied when a transaction involves currency conversion between the transaction currency and the account currency.", "properties": { "rate": { "type": "number", "description": "The exchange rate applied to the transaction.", "exclusiveMinimum": 0, "examples": [ 1.0856, 0.8523 ] }, "originalAmount": { "type": "number", "description": "The original transaction amount in the source currency before conversion.", "minimum": 0 }, "originalCurrency": { "type": "string", "description": "The source currency before conversion (ISO 4217).", "pattern": "^[A-Z]{3}$" }, "rateType": { "type": "string", "description": "The type of exchange rate applied.", "enum": [ "SPOT", "FORWARD", "NEGOTIATED", "MARKET" ] } } }, "ChargesInfo": { "type": "object", "description": "Details of charges and fees applied to a transaction, including the charge amount, currency, and bearer designation.", "properties": { "totalAmount": { "type": "number", "description": "Total charges applied to the transaction.", "minimum": 0 }, "currency": { "type": "string", "description": "Currency of the charges (ISO 4217).", "pattern": "^[A-Z]{3}$" }, "bearer": { "type": "string", "description": "Designation of who bears the charges. OUR = sender pays all, BEN = beneficiary pays all, SHA = charges shared.", "enum": [ "OUR", "BEN", "SHA" ] }, "breakdown": { "type": "array", "description": "Itemized breakdown of individual charges.", "items": { "type": "object", "properties": { "chargeType": { "type": "string", "description": "Type of charge.", "examples": [ "TRANSFER_FEE", "SWIFT_FEE", "CORRESPONDENT_FEE", "SERVICE_CHARGE" ] }, "amount": { "type": "number", "description": "Amount of this specific charge.", "minimum": 0 }, "currency": { "type": "string", "description": "Currency of this charge.", "pattern": "^[A-Z]{3}$" }, "description": { "type": "string", "description": "Human-readable description of the charge." } } } } } }, "AuditInfo": { "type": "object", "description": "Audit trail metadata capturing who created or modified the transaction and when.", "properties": { "createdBy": { "type": "string", "description": "User or system that created the transaction." }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the transaction was created." }, "authorizedBy": { "type": "string", "description": "User who authorized the transaction (for dual-authorization workflows)." }, "authorizedAt": { "type": "string", "format": "date-time", "description": "Timestamp when the transaction was authorized." }, "modifiedBy": { "type": "string", "description": "User who last modified the transaction." }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Timestamp of the last modification." } } } } }