> For the complete documentation index, see [llms.txt](https://docs.nexusglobalpayments.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nexusglobalpayments.org/nexus-operation-apis/operational-data-feed.md).

# Operational Data Feed

Operational Data Feed: transaction-level operational data by API, the same data set presented on the Transaction Dashboard.

## Retrieve the Operational Data Feed

> Access the Transaction Dashboard's data for automated exception monitoring and operational follow-up. Every first request requires fromDate and toDate: at most 31 inclusive Nexus Days within 13 calendar months, with no future dates. Filter directly by optional status; omitting it includes all source statuses unless another supplied filter narrows them. There is no view parameter or implicit current/pending/overdue/historical population. To retrieve today's activity, set both dates to today in SGT. pendingAgeBucket optionally narrows current PDNG within those dates; it never waives the date range. Date-free single-UETR lookup is provided by Track and Trace, not this feed.\
> \
> \### Relationship to the Reconciliation Report (camt.054)\
> \
> Each record is a reduced, normalised JSON representation of the corresponding camt.054 \`Ntry\`: the fields below correspond to camt.054 elements, but the feed is not a lossless copy of every field the file carries. It is not authoritative and is not a camt.054 message; the file remains the authoritative daily record. \`uetr\` is the primary match key in both channels.\
> \
> \| camt.054 element | Feed field |\
> \| --- | --- |\
> \| \`Ntry/Amt\` + \`Ccy\` | \`entryAmount\` |\
> \| \`Ntry/CdtDbtInd\` | \`creditDebitIndicator\` |\
> \| \`Ntry/Sts/Prtry\` | \`status\` |\
> \| \`Ntry/BookgDt/DtTm\` | \`bookingDateTime\` |\
> \| \`Ntry/BkTxCd\` | \`bankTransactionCode\` |\
> \| \`NtryDtls/TxDtls/Refs\` | \`references\` |\
> \| \`AmtDtls/InstdAmt\` and \`CcyXchg\` | \`amountDetails.instructedAmount\`, \`amountDetails.currencyExchange\` |\
> \| \`AmtDtls/TxAmt\` and \`CcyXchg\` | \`amountDetails.transactionAmount\` |\
> \| \`Chrgs/Rcrd\` (\`Amt\`, \`Agt\`) | \`charges\` (\`amount\`, \`currency\`, \`agent\`) |\
> \| \`RltdPties/DbtrAcct/Id\` | \`debtorAccount\` |\
> \| \`RltdPties/CdtrAcct/Id\` | \`creditorAccount\` |\
> \| \`RltdAgts/InstgAgt\` | \`instructingAgent\` |\
> \| \`RltdAgts/InstdAgt\` | \`instructedAgent\` |\
> \| \`RltdAgts/DbtrAgt\` | \`debtorAgent\` |\
> \| \`RltdAgts/CdtrAgt\` | \`creditorAgent\` |\
> \| \`RltdAgts/IntrmyAgt1\` | \`intermediaryAgent1\` |\
> \| \`RltdAgts/IntrmyAgt2\` | \`intermediaryAgent2\` |\
> \| \`RltdDts/AccptncDtTm\` | \`acceptanceDateTime\` |\
> \| \`RltdDts/IntrBkSttlmDt\` | \`interbankSettlementDate\` |\
> \
> Available only here, with no camt.054 counterpart: \`statusSource\`, \`acceptedAt\`, \`updatedAt\`, \`finalStatusAt\`, \`rejectionReason\`, \`pendingReason\`, \`pendingAgeSeconds\`, \`destinationAmount\`, \`sourceCountry\`, \`destinationCountry\`, \`direction\`, and the charge record's \`type\`, \`bearer\` and \`creditDebitIndicator\`. Note that camt.054 carries the status code but no status reason, so a rejected or pending payment has a reason here and none in the file.\
> \
> \`direction\`, \`creditDebitIndicator\` and \`bankTransactionCode.family\` are three equivalent views of the same role and never disagree: an outbound payment is \`DBIT\` with family \`IRCT\`, an inbound payment is \`CRDT\` with family \`RRCT\`.\
> \
> \`acceptedAt\` is the instant Nexus recorded the acceptance: it assigns the Nexus Day, drives the date filters and starts pending age. \`acceptanceDateTime\` is the acceptance timestamp set by the Source PSP, copied from the pacs.008 as in camt.054.\
> \
> Agents are identified as in camt.054: by BIC, LEI or clearing-system member ID, with \`scheme\` naming the form and \`id\` carrying the value.\
> \
> Both channels carry the debtor and creditor account identifiers copied from the pacs.008, for reconciliation. Neither carries names, addresses, proxy values (mobile number, email address or national ID) or remittance information. Account identifiers are not query filters and must not be logged.\
> \
> A logical query is its first request plus all valid cursor continuations. Continue using only cursor; the cursor inherits the validated dates, page size, filters and snapshot. A valid continuation remains permitted after the published new-query allowance is exhausted, including across midnight, until the cursor expires. A new first-request retry or an expired-cursor restart is a new logical query.\
> \
> HTTP 429 identifies rate, concurrency, daily-allowance or duplicate-query rejection and always supplies Retry-After. A range above 31 inclusive Nexus Days returns 400 RANGE\_TOO\_WIDE. Exceeding the published query-cost or total-result guards returns 422 QUERY\_TOO\_LARGE or RESULT\_TOO\_LARGE; narrow the range or add filters, never accept a silently truncated result. A result larger than one page is not an error.\
> \
> Pagination example: start with fromDate=20260916, toDate=20260916, status=PDNG and pageSize=2. The firstPage response contains two records and nextCursor. Request the next page with that cursor alone; do not repeat pageSize, dates or status. The lastPage response contains the remaining record and omits both nextCursor and cursorExpiresAt. All pages retain the same dataAsOf and evaluatedAt. Example cursor values and expiry are illustrative, not published production lifetimes.

```json
{"openapi":"3.1.0","info":{"title":"Nexus Operations IPSO API","version":"0.4.0"},"tags":[{"name":"OperationalDataFeed","description":"Operational Data Feed: transaction-level operational data by API, the same data set presented on the Transaction Dashboard."}],"servers":[{"url":"https://{environment}.operations.nexus.net","description":"Operations reporting endpoint.","variables":{"environment":{"default":"prod","enum":["pat","prod"],"description":"Deployment environment subdomain."}}}],"security":[{"nexusOAuth":["operations.transactions.read"],"mutualTLS":[]}],"components":{"securitySchemes":{"nexusOAuth":{"type":"oauth2","description":"Operations client-credentials access token. Validate exact approved issuer, Operations audience, signature/JWKS, expiry, scopes, active IPSO and environment. Present the Operations certificate at token issuance and verify its SHA-256 thumbprint against cnf.x5t#S256 on every call. Aggregate quotas by the trusted IPSO identity across credentials; human sessions never grant machine scopes. Never log tokens or derive identity from request headers. Every request additionally carries an RFC 9421 message signature (Signature-Input, Signature, and Content-Digest when it has a body) produced with the IPSO's Operations signing key pair.","flows":{"clientCredentials":{"tokenUrl":"https://auth.nexus.net/realms/nexus-operations/protocol/openid-connect/token","scopes":{"Operations.reports":"Read IPSO daily report manifests and download links","operations.transactions.read":"Read the IPSO operational transaction dataset","operations.service-requests.create":"Create supported ServiceNow tickets addressed to NGO, NGP, an authorised counterparty IPSO or a selected FXP; grants no reporting, fulfilment or approval rights"}}}}},"parameters":{"FromDate":{"name":"fromDate","in":"query","description":"Required with toDate on every first request, including status-filtered and pending-age queries; omitted only with cursor, which inherits the dates. Inclusive Nexus Day in YYYYMMDD, the same date format as the camt.054 date parameter and manifest nexusDay, at most 31 inclusive days within the retained history window. Missing, invalid or out-of-retention dates are 400 INVALID_REQUEST; an otherwise valid range over 31 days is 400 RANGE_TOO_WIDE.","schema":{"$ref":"#/components/schemas/ReportDate"}},"ToDate":{"name":"toDate","in":"query","description":"Required with fromDate on every first request. Inclusive Nexus Day in YYYYMMDD, not before fromDate or after today's SGT date. The inclusive day count is date difference plus one. Set both dates to today to retrieve today's activity; there is no implicit date default. Cursor continuation inherits the original range; date-free first requests are never accepted.","schema":{"$ref":"#/components/schemas/ReportDate"}},"SendingIpso":{"name":"sendingIpso","in":"query","description":"Sending IPS as a registered IPSOId, which combines the IPS BIC and its currency (BIC.CurrencyCode) and therefore identifies the sending IPS and the sending currency in one key. Must be inside the authenticated IPSO's authorised scope.","schema":{"$ref":"#/components/schemas/IPSOId"}},"ReceivingIpso":{"name":"receivingIpso","in":"query","description":"Receiving IPS as a registered IPSOId, combining the IPS BIC and its currency (BIC.CurrencyCode) and therefore identifying the receiving IPS and the receiving currency in one key. Supply sendingIpso and receivingIpso together to select one directed corridor.","schema":{"$ref":"#/components/schemas/IPSOId"}},"Direction":{"name":"direction","in":"query","description":"Relative to the authenticated IPSO; omitted means both.","schema":{"type":"string","enum":["inbound","outbound"]}},"PspId":{"name":"pspId","in":"query","description":"Own domestic PSP, matched exactly against the agent id whatever its scheme: a BIC, an LEI or a clearing-system member ID. Matches creditorAgent on an inbound payment, debtorAgent on an outbound one, and either domestic side when direction is omitted. Prefer retrieving once and splitting locally instead of a separate query per PSP.","schema":{"type":"string","minLength":1,"maxLength":35}},"Status":{"name":"status","in":"query","description":"Optional current source-owned payment status, directly filtering transactions inside the required Nexus acceptance-date range. Omit to include all statuses unless another filter narrows them. A pendingAgeBucket intersects the population with current PDNG; a different status yields an empty eligible result.","schema":{"$ref":"#/components/schemas/PaymentStatus"}},"StatusSource":{"name":"statusSource","in":"query","description":"Who supplied the current payment status, not ingestion provenance.","schema":{"$ref":"#/components/schemas/StatusSource"}},"PendingAgeBucket":{"name":"pendingAgeBucket","in":"query","description":"Optional filter for current PDNG, intersected with the mandatory dates and every other supplied filter. Intervals measured from Nexus acceptance: [0,5m), [5m,1h), [1h,8h), [8h,30h), [30h,retention]. It implies PDNG when status is omitted; a non-PDNG status yields an empty eligible result. Valid for any permitted date range, including today; does not waive dates or create or imply a ticket.","schema":{"type":"string","enum":["under_5m","5m_to_1h","1h_to_8h","8h_to_30h","overdue"]}},"PageSize":{"name":"pageSize","in":"query","description":"First-page size from 1 to 2,500 records. Values above the maximum are 400 INVALID_REQUEST, never silently capped. Cursor pages inherit this size; pageSize cannot accompany cursor. The pagination examples request two records per page.","schema":{"type":"integer","minimum":1,"maximum":2500}},"Cursor":{"name":"cursor","in":"query","description":"Opaque continuation; must be the only parameter. Binds IPSO/environment, original dates/filters/page size, ordering, snapshot, evaluation time and admitted logical query. An expired, invalid or cross-scope cursor is 400 INVALID_REQUEST, never a silent restart. Authorisation is rechecked on every continuation.","schema":{"type":"string","minLength":1}},"SignatureInputBodyless":{"name":"Signature-Input","in":"header","required":true,"description":"RFC 9421 signature metadata for a request without a body, per the Nexus HTTP Message Signature Profile v1 (RFC 9421, RFC 9530). One dictionary member labelled `nexus` whose covered components are exactly `\"@method\" \"@authority\" \"@path\" \"@query\"`, followed by `\"if-none-match\"` when that header is sent. `@query` is always covered; an empty query serialises as `?`, so query parameters cannot be added or removed undetected. Signature parameters, emitted in this order: `created` and `expires` (Unix seconds; `expires` = `created` + 300; the receiver rejects `created` more than ±5 minutes from its clock or a signature past `expires`), `keyid` (base64url SHA-256 thumbprint of the signer's signing public key, registered at onboarding; a missing, unknown, expired or revoked key id is rejected - never resolved to a default key), `alg` (always `rsa-pss-sha512`) and `tag` (always `nexus-v1`). The signature parameters are signed through the `@signature-params` line of the signature base. A missing, malformed or non-conforming value is rejected with AE005.","schema":{"type":"string","maxLength":512,"pattern":"^nexus=\\(\"@method\" \"@authority\" \"@path\" \"@query\"( \"if-none-match\")?\\);created=[0-9]{1,15};expires=[0-9]{1,15};keyid=\"[A-Za-z0-9_-]{43}\";alg=\"rsa-pss-sha512\";tag=\"nexus-v1\"$"}},"Signature":{"name":"Signature","in":"header","required":true,"description":"RFC 9421 signature value: one dictionary member labelled `nexus` holding an RFC 8941 byte sequence - the **standard base64** (not base64url) RSASSA-PSS signature using SHA-512 (`rsa-pss-sha512`), computed over the RFC 9421 signature base built from the components and parameters declared in `Signature-Input`. Produced with the sender's own signing private key; the receiver verifies it against the sender's registered signing public key resolved from `keyid`. With the minimum RSA-3072 key the signature is 384 bytes, i.e. 512 base64 characters. A missing, malformed or non-verifying signature is rejected with AE005. The signing key depends on the API path: operations on the Operations host are signed with the IPSO's Operations signing key pair, and Track and Trace, which uses the Payment Processing security model, with the IPSO's payment signing key pair. A key registered for the other path does not verify and is rejected with AE005.","schema":{"type":"string","minLength":520,"maxLength":1400,"pattern":"^nexus=:[A-Za-z0-9+/]+={0,2}:$"}}},"schemas":{"ReportDate":{"type":"string","pattern":"^[0-9]{8}$","description":"A real YYYYMMDD Nexus date; validate calendar and retrieval-window rules."},"IPSOId":{"type":"string","minLength":15,"maxLength":15,"pattern":"^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}[A-Z0-9]{3}\\.[A-Z]{3}$","description":"Canonical immutable IPSOId value object: ISO 9362 11-character uppercase BIC, a dot and ISO 4217 currency code. Must resolve to the registered IPSO in the authenticated environment; syntax alone grants no communication entitlement. Not a country code, display name, email or ServiceNow sys_id."},"PaymentStatus":{"type":"string","enum":["ACCC","RJCT","PDNG","BLCK"],"description":"Nexus-observed source state, not a domestic balance or booking. The same values as camt.054 Ntry/Sts/Prtry; the file does not use Ntry/Sts/Cd. ACWP is received by Nexus but never sent, so it does not appear in this feed or in report totals."},"StatusSource":{"type":"string","enum":["NEXUS","DESTINATION"]},"TransactionPage":{"description":"One page of at most 2,500 records from a logical query spanning at most 31 inclusive Nexus Days. Use nextCursor for remaining records; the page cap is not a total-result cap.","type":"object","additionalProperties":false,"required":["authoritative","items","returnedCount","dataAsOf","evaluatedAt","dataQuality"],"dependentRequired":{"nextCursor":["cursorExpiresAt"],"cursorExpiresAt":["nextCursor"]},"properties":{"authoritative":{"const":false},"items":{"type":"array","maxItems":2500,"items":{"$ref":"#/components/schemas/Transaction"}},"returnedCount":{"type":"integer","minimum":0,"maximum":2500,"description":"Equals items length; not total matching population."},"dataAsOf":{"type":"string","format":"date-time"},"evaluatedAt":{"type":"string","format":"date-time"},"dataQuality":{"$ref":"#/components/schemas/DataQuality"},"nextCursor":{"type":"string","minLength":1},"cursorExpiresAt":{"type":"string","format":"date-time"}}},"Transaction":{"type":"object","unevaluatedProperties":false,"allOf":[{"$ref":"#/components/schemas/TransactionState"},{"if":{"required":["status"],"properties":{"status":{"enum":["ACCC","BLCK"]}}},"then":{"required":["bookingDateTime"]},"else":{"not":{"required":["bookingDateTime"]}}},{"if":{"required":["status"],"properties":{"status":{"const":"PDNG"}}},"then":{"required":["pendingAgeSeconds"]},"else":{"not":{"required":["pendingAgeSeconds"]}}},{"anyOf":[{"properties":{"direction":{"const":"outbound"},"creditDebitIndicator":{"const":"DBIT"},"bankTransactionCode":{"properties":{"family":{"const":"IRCT"}}}}},{"properties":{"direction":{"const":"inbound"},"creditDebitIndicator":{"const":"CRDT"},"bankTransactionCode":{"properties":{"family":{"const":"RRCT"}}}}}]}],"required":["entryAmount","creditDebitIndicator","bankTransactionCode","references","amountDetails","charges","debtorAccount","creditorAccount","instructingAgent","instructedAgent","debtorAgent","creditorAgent","intermediaryAgent1","intermediaryAgent2","direction","sourceCountry","destinationCountry"],"description":"One Operational Data Feed record: a reduced, normalised JSON representation of the corresponding camt.054 Ntry, plus the operational facts the file does not carry. It is not a lossless copy of every field the file carries.\n\nThe following feed fields correspond to camt.054 elements: entryAmount and creditDebitIndicator to Ntry/Amt and Ntry/CdtDbtInd, status to Ntry/Sts/Prtry (the file carries the status in the proprietary branch; Cd is not used), bookingDateTime to Ntry/BookgDt/DtTm, bankTransactionCode to Ntry/BkTxCd, references to NtryDtls/TxDtls/Refs, amountDetails to AmtDtls (InstdAmt and TxAmt), charges to Chrgs/Rcrd, debtorAccount and creditorAccount to RltdPties/DbtrAcct/Id and RltdPties/CdtrAcct/Id, instructingAgent, instructedAgent, debtorAgent, creditorAgent, intermediaryAgent1 and intermediaryAgent2 to RltdAgts, and acceptanceDateTime and interbankSettlementDate to RltdDts. The representation is JSON rather than XML, so the same facts can be matched across both channels without the file's element nesting or attributes. Agents carry every identification form the file allows: BIC, LEI or clearing-system member ID. charges carries Nexus-derived enrichment fields that have no XML counterpart under Chrgs/Rcrd (see ChargeRecord).\n\nThe operational facts have no camt.054 counterpart and are available only here: statusSource, acceptedAt, updatedAt, finalStatusAt, rejectionReason, pendingReason, pendingAgeSeconds, destinationAmount, sourceCountry, destinationCountry and direction. direction, creditDebitIndicator and bankTransactionCode.family are three equivalent views of the same role and never disagree.\n\nStatus rules: bookingDateTime is present only for ACCC and BLCK, and pendingAgeSeconds only for PDNG.","properties":{"entryAmount":{"$ref":"#/components/schemas/EntryAmount","description":"Ntry/Amt with its Ccy: the entry amount in the currency of the reported Nexus clearing account."},"creditDebitIndicator":{"$ref":"#/components/schemas/CreditDebitIndicator"},"bookingDateTime":{"type":"string","format":"date-time","description":"Ntry/BookgDt/DtTm: the timestamp of completion in the Nexus Gateway. Present only for ACCC and BLCK. It is not evidence of a domestic account booking."},"bankTransactionCode":{"$ref":"#/components/schemas/BankTransactionCode"},"references":{"$ref":"#/components/schemas/TransactionReferences"},"amountDetails":{"$ref":"#/components/schemas/AmountDetails"},"charges":{"type":"array","minItems":2,"maxItems":2,"items":{"$ref":"#/components/schemas/ChargeRecord"},"allOf":[{"contains":{"properties":{"type":{"const":"SPSP"}}},"minContains":1,"maxContains":1},{"contains":{"properties":{"type":{"const":"DPSP"}}},"minContains":1,"maxContains":1}],"description":"Chrgs/Rcrd: exactly two records, one for the Source PSP fee (SPSP) and one for the Destination PSP fee (DPSP)."},"debtorAccount":{"$ref":"#/components/schemas/AccountIdentification","description":"RltdPties/DbtrAcct/Id: the debtor's account identifier, copied from the pacs.008."},"creditorAccount":{"$ref":"#/components/schemas/AccountIdentification","description":"RltdPties/CdtrAcct/Id: the creditor's account identifier, copied from the pacs.008."},"instructingAgent":{"$ref":"#/components/schemas/AgentIdentification","description":"RltdAgts/InstgAgt, copied from the pacs.008."},"instructedAgent":{"$ref":"#/components/schemas/AgentIdentification","description":"RltdAgts/InstdAgt, copied from the pacs.008."},"debtorAgent":{"$ref":"#/components/schemas/AgentIdentification","description":"RltdAgts/DbtrAgt, the Source PSP. Matched by pspId on an outbound payment."},"creditorAgent":{"$ref":"#/components/schemas/AgentIdentification","description":"RltdAgts/CdtrAgt, the Destination PSP. Matched by pspId on an inbound payment."},"intermediaryAgent1":{"$ref":"#/components/schemas/AgentIdentification","description":"RltdAgts/IntrmyAgt1, the Source SAP."},"intermediaryAgent2":{"$ref":"#/components/schemas/AgentIdentification","description":"RltdAgts/IntrmyAgt2, the Destination SAP."},"acceptanceDateTime":{"type":"string","format":"date-time","description":"RltdDts/AccptncDtTm: the acceptance timestamp set by the Source PSP, copied from the pacs.008. Not the Nexus acceptance; see acceptedAt."},"interbankSettlementDate":{"type":"string","format":"date","description":"RltdDts/IntrBkSttlmDt."},"direction":{"type":"string","enum":["inbound","outbound"],"description":"Operational view of the same role as creditDebitIndicator and bankTransactionCode.family, relative to the authenticated IPSO. No camt.054 counterpart."},"sourceCountry":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 source country. No camt.054 counterpart."},"destinationCountry":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 destination country. No camt.054 counterpart."},"destinationAmount":{"$ref":"#/components/schemas/EntryAmount","description":"Destination-leg amount and currency as presented on the Transaction Dashboard. No camt.054 counterpart: the file conveys the destination leg through instructedAmount and the applied exchange rate."},"pendingAgeSeconds":{"type":"number","minimum":0,"description":"Present only for current PDNG, calculated at the page evaluatedAt from acceptedAt. A read-only reporting calculation with no camt.054 counterpart."}}},"TransactionState":{"type":"object","required":["uetr","status","statusSource","acceptedAt","updatedAt"],"allOf":[{"if":{"required":["status"],"properties":{"status":{"const":"PDNG"}}},"then":{"not":{"required":["finalStatusAt"]}},"else":{"required":["finalStatusAt"],"not":{"required":["pendingReason"]}}},{"if":{"required":["status"],"properties":{"status":{"const":"RJCT"}}},"then":{"required":["rejectionReason"]},"else":{"not":{"required":["rejectionReason"]}}}],"description":"Optional facts are omitted if unavailable, never fabricated. Status rules: finalStatusAt is present for ACCC, RJCT and BLCK and absent for PDNG; rejectionReason is present only for RJCT; pendingReason only for PDNG. No raw messages, customer PII or full event history.","properties":{"uetr":{"$ref":"#/components/schemas/Uetr"},"status":{"$ref":"#/components/schemas/PaymentStatus"},"statusSource":{"$ref":"#/components/schemas/StatusSource"},"acceptedAt":{"type":"string","format":"date-time","description":"The instant Nexus recorded the transaction as accepted. It assigns the Nexus Day and is the basis of the date filters; pending age is measured from it. No camt.054 counterpart."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of the latest source payment-state update."},"finalStatusAt":{"type":"string","format":"date-time","description":"Present for ACCC, RJCT and BLCK; absent for PDNG."},"rejectionReason":{"$ref":"#/components/schemas/Reason","description":"Present only for RJCT, where it is required. camt.054 carries the status code but no status reason, so this fact has no counterpart in the file."},"pendingReason":{"$ref":"#/components/schemas/PendingReason","description":"Only for current PDNG. Omitted for any other status and whenever the reason is unknown. camt.054 carries the status code but no status reason, so this fact has no counterpart in the file."}}},"Uetr":{"type":"string","format":"uuid","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"},"Reason":{"type":"object","additionalProperties":false,"required":["code","description"],"properties":{"code":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"description":"Approved PII-free reason text, not raw participant/customer free text."}}},"PendingReason":{"type":"object","additionalProperties":false,"required":["code","description"],"description":"Why the payment is currently PDNG. Present only when the reason is known; absence is a missing fact, never an inferred outcome. Reporting classifies the reason from source facts and does not change payment state.","properties":{"code":{"$ref":"#/components/schemas/PendingReasonCode"},"description":{"type":"string","minLength":1,"description":"Approved PII-free reason text, not raw participant/customer free text."},"destinationReasonCode":{"type":"string","minLength":1,"description":"ISO 20022 StsRsnInf/Rsn/Cd exactly as supplied by the destination IPSO on its interim pacs.002. Omitted whenever the destination supplied no reason, and only ever present with code DESTINATION_PROCESSING. Never populated by Nexus from its own classification."}}},"PendingReasonCode":{"type":"string","enum":["AWAITING_DESTINATION_RESPONSE","DESTINATION_DELIVERY_UNCONFIRMED","DESTINATION_UNREACHABLE","UNDER_INVESTIGATION","INVALID_STATUS_RECEIVED","DESTINATION_PROCESSING"],"description":"Closed set of reasons a payment is currently PDNG. No value implies finality, a rejection or a completed payment, and none of them is a payment status in its own right. The first five are Nexus-observed (statusSource NEXUS); DESTINATION_PROCESSING is reported by the destination IPSO (statusSource DESTINATION). The set is closed: a response never carries a value outside it.\n\n| Code | Meaning |\n| --- | --- |\n| AWAITING_DESTINATION_RESPONSE | Dispatched to the destination IPSO; no status returned and the settlement timer has not expired. |\n| DESTINATION_DELIVERY_UNCONFIRMED | Delivery to the destination IPSO could not be confirmed after the retry policy was exhausted. Delivery is uncertain, not refused. |\n| DESTINATION_UNREACHABLE | Persistent connectivity, authentication or routing failure to the destination IPSO. |\n| UNDER_INVESTIGATION | The settlement timer expired and the enquiry cadence is running. This remains the reason for as long as enquiry continues, including after the investigation window closes; internal escalation and ticketing do not change it. |\n| INVALID_STATUS_RECEIVED | A destination status message arrived but failed validation, so no status was applied. A valid status message is still awaited. |\n| DESTINATION_PROCESSING | The destination IPSO reported the payment as still in progress. |"},"EntryAmount":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"$ref":"#/components/schemas/Amount"},"currency":{"$ref":"#/components/schemas/Currency"}},"description":"An amount with its currency, mirroring the camt.054 Amt element and its Ccy attribute. The currency always travels with the amount; never sum amounts across currencies."},"Amount":{"type":"string","pattern":"^(0|[1-9][0-9]{0,12})(\\.[0-9]{1,5})?$","description":"Exact non-negative decimal; preserve source precision and pair with currency. At most 18 total digits and 5 fractional digits, matching the XML amount limits."},"Currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Valid ISO 4217 code."},"CreditDebitIndicator":{"type":"string","enum":["CRDT","DBIT"],"description":"camt.054 CdtDbtInd. Direction of the entry relative to the reported Nexus clearing account. Equivalent to the direction field expressed in ISO vocabulary: an outbound payment is DBIT and an inbound payment is CRDT."},"BankTransactionCode":{"type":"object","additionalProperties":false,"required":["domain","family","subFamily"],"description":"camt.054 BkTxCd. Domain is always PMNT and subFamily always XBCT (cross-border credit transfer). Family encodes the Nexus role for this entry and is a third equivalent view of the same fact as direction and creditDebitIndicator.","properties":{"domain":{"type":"string","const":"PMNT","description":"BkTxCd/Domn/Cd."},"family":{"type":"string","enum":["IRCT","RRCT"],"description":"BkTxCd/Domn/Fmly/Cd. IRCT when Nexus acts as Source IPSO for this entry, RRCT as Destination IPSO."},"subFamily":{"type":"string","const":"XBCT","description":"BkTxCd/Domn/Fmly/SubFmlyCd."}}},"TransactionReferences":{"type":"object","additionalProperties":false,"required":["uetr","messageId","endToEndId"],"description":"camt.054 NtryDtls/TxDtls/Refs. Every value is copied unchanged from the original pacs.008 except clearingSystemReference, which Nexus assigns. UETR is the primary match key; the others are available for cross-validation. A reference the source did not supply is omitted rather than defaulted. messageId, endToEndId and uetr are required, as in the camt.054 file. MsgId follows the 35-character Nexus message-identifier format and the other references are at most 35 characters with Nexus character restrictions.","properties":{"messageId":{"$ref":"#/components/schemas/NexusMessageIdentifier","description":"Refs/MsgId."},"instructionId":{"$ref":"#/components/schemas/Max35Reference","description":"Refs/InstrId."},"endToEndId":{"$ref":"#/components/schemas/Max35Reference","description":"Refs/EndToEndId."},"uetr":{"$ref":"#/components/schemas/Uetr","description":"Refs/UETR. Identical to the record's own uetr; repeated here so the Refs group maps one-to-one onto the file."},"transactionId":{"$ref":"#/components/schemas/Max35Reference","description":"Refs/TxId."},"clearingSystemReference":{"$ref":"#/components/schemas/Max35Reference","description":"Refs/ClrSysRef, assigned by Nexus."}}},"NexusMessageIdentifier":{"type":"string","minLength":35,"maxLength":35,"pattern":"^[0-9]{8}NXPS081[A-Z0-9]{8}[A-Z0-9]{11}X$","description":"Nexus message identifier of the original pacs.008, 35 characters: YYYYMMDD + NXPS081 + sequence(8) + sender BIC-11 + literal X."},"Max35Reference":{"type":"string","minLength":1,"maxLength":35,"description":"Source-owned reference, at most 35 characters, as carried in the camt.054 file. Nexus character restrictions apply."},"AmountDetails":{"type":"object","additionalProperties":false,"required":["instructedAmount","transactionAmount"],"description":"camt.054 AmtDtls. The instructed amount with its embedded currency exchange. The instructed amount (AmtDtls/InstdAmt) and the transaction amount (AmtDtls/TxAmt) are distinct and must not be substituted for one another.","properties":{"instructedAmount":{"$ref":"#/components/schemas/EntryAmount","description":"AmtDtls/InstdAmt/Amt and its Ccy."},"currencyExchange":{"$ref":"#/components/schemas/CurrencyExchange","description":"AmtDtls/InstdAmt/CcyXchg. Omitted where no exchange applies."},"transactionAmount":{"$ref":"#/components/schemas/TransactionAmount"}}},"CurrencyExchange":{"type":"object","additionalProperties":false,"required":["sourceCurrency","exchangeRate"],"description":"camt.054 AmtDtls/InstdAmt/CcyXchg. Carries the agreed exchange rate applied to this payment. Transaction-time facts only; never re-derived from a current rate. SrcCcy and XchgRate are required and TrgtCcy is optional, as in the file. The same structure is used under both InstdAmt and TxAmt.","properties":{"sourceCurrency":{"$ref":"#/components/schemas/Currency","description":"CcyXchg/SrcCcy. Equal to the currency component of the sendingIpso key."},"targetCurrency":{"$ref":"#/components/schemas/Currency","description":"CcyXchg/TrgtCcy. Optional. Equal to the currency component of the receivingIpso key."},"exchangeRate":{"type":"string","pattern":"^(0|[1-9][0-9]{0,2})\\.[0-9]{8}$","description":"CcyXchg/XchgRate as an exact decimal string with exactly 8 fractional digits and at most 11 total digits (XSD totalDigits 11), as in the file. Required whenever currencyExchange is present."}}},"TransactionAmount":{"type":"object","additionalProperties":false,"required":["amount","currency","currencyExchange"],"description":"camt.054 AmtDtls/TxAmt: the transaction amount with its currency exchange. Distinct from the instructed amount.","properties":{"amount":{"$ref":"#/components/schemas/Amount","description":"AmtDtls/TxAmt/Amt."},"currency":{"$ref":"#/components/schemas/Currency","description":"The Ccy attribute of AmtDtls/TxAmt/Amt."},"currencyExchange":{"$ref":"#/components/schemas/CurrencyExchange","description":"AmtDtls/TxAmt/CcyXchg."}}},"ChargeRecord":{"type":"object","additionalProperties":false,"required":["amount","currency","creditDebitIndicator","type","bearer","agent"],"description":"One camt.054 Chrgs/Rcrd. Nexus publishes one record for the Source PSP fee and one for the Destination PSP fee, each in its own currency. Charge records are never netted or summed across currencies. The file carries exactly two Chrgs/Rcrd entries, each with its agent, and so does this feed. creditDebitIndicator, type and bearer are Nexus-derived enrichment: the file carries none of Rcrd/CdtDbtInd, Rcrd/Tp or Rcrd/Br.","properties":{"amount":{"$ref":"#/components/schemas/Amount","description":"Rcrd/Amt."},"currency":{"$ref":"#/components/schemas/Currency","description":"The Ccy attribute of Rcrd/Amt."},"creditDebitIndicator":{"$ref":"#/components/schemas/CreditDebitIndicator","description":"Nexus-derived enrichment. The camt.054 file does not carry CdtDbtInd on Chrgs/Rcrd."},"type":{"type":"string","enum":["SPSP","DPSP"],"description":"Nexus-derived enrichment; the camt.054 file does not carry Rcrd/Tp. SPSP is the Source PSP fee and DPSP the Destination PSP fee."},"bearer":{"type":"string","const":"DEBT","description":"Nexus-derived enrichment; the camt.054 file does not carry Rcrd/Br. Always DEBT under the Nexus scheme rules."},"agent":{"$ref":"#/components/schemas/AgentIdentification","description":"Rcrd/Agt/FinInstnId, the institution the charge applies to."}}},"AgentIdentification":{"type":"object","additionalProperties":false,"required":["scheme","id"],"description":"An agent institution as identified in camt.054 FinInstnId, copied from the pacs.008: exactly one of BICFI, LEI or ClrSysMmbId. scheme names the form and id carries the value; clearingSystemCode accompanies a clearing-system member ID when the source supplied it. Institutional identifier only, never customer data.","oneOf":[{"title":"BIC","properties":{"scheme":{"const":"BIC"},"id":{"$ref":"#/components/schemas/BIC"}},"not":{"required":["clearingSystemCode"]}},{"title":"LEI","properties":{"scheme":{"const":"LEI"},"id":{"$ref":"#/components/schemas/LEI"}},"not":{"required":["clearingSystemCode"]}},{"title":"Clearing-system member ID","properties":{"scheme":{"const":"CLEARING_MEMBER_ID"}}}],"properties":{"scheme":{"type":"string","enum":["BIC","LEI","CLEARING_MEMBER_ID"],"description":"BIC is FinInstnId/BICFI, LEI is FinInstnId/LEI and CLEARING_MEMBER_ID is FinInstnId/ClrSysMmbId/MmbId."},"id":{"type":"string","minLength":1,"maxLength":35,"description":"The identifier value, in the form named by scheme."},"clearingSystemCode":{"type":"string","minLength":1,"maxLength":5,"description":"FinInstnId/ClrSysMmbId/ClrSysId/Cd, an ISO external clearing system code. Only with CLEARING_MEMBER_ID; omitted when the source did not supply it."}}},"BIC":{"type":"string","pattern":"^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$","description":"ISO 9362 Business Identifier Code as carried in camt.054 FinInstnId/BICFI: a four-letter institution code, a two-letter ISO 3166-1 country code, a two-character location code and an optional three-character branch code, giving 8 or 11 characters. Institutional identifier only, never customer data."},"LEI":{"type":"string","pattern":"^[A-Z0-9]{18}[0-9]{2}$","description":"ISO 17442 Legal Entity Identifier as carried in camt.054 FinInstnId/LEI. Institutional identifier only, never customer data."},"AccountIdentification":{"type":"object","additionalProperties":false,"required":["scheme","id"],"description":"An account identifier copied from the pacs.008, as carried in camt.054 RltdPties/DbtrAcct/Id or RltdPties/CdtrAcct/Id. Identifier only: no account name, proxy, type or currency. Use it for reconciliation; it is not a query filter and must not be logged.","oneOf":[{"title":"IBAN","properties":{"scheme":{"const":"IBAN"},"id":{"pattern":"^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$"}}},{"title":"Other account identifier","properties":{"scheme":{"const":"OTHER"}}}],"properties":{"scheme":{"type":"string","enum":["IBAN","OTHER"],"description":"IBAN is Id/IBAN; OTHER is Id/Othr/Id, such as a domestic account number."},"id":{"type":"string","minLength":1,"maxLength":34,"description":"The account identifier, in the form named by scheme."}}},"DataQuality":{"type":"string","enum":["complete","partial","stale"]},"Error":{"type":"object","additionalProperties":false,"required":["statusCode","reasonCode","name","description"],"description":"Payment Processing-compatible rejection envelope. RJCT concerns this API request, not a payment state. Reason code and name must match the defined pair. Description is PII-free and does not reveal unauthorised object existence.","properties":{"statusCode":{"const":"RJCT"},"reasonCode":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","minLength":1}},"oneOf":[{"properties":{"reasonCode":{"const":"TE001"},"name":{"const":"INVALID_REQUEST"}}},{"properties":{"reasonCode":{"const":"TE099"},"name":{"const":"INTERNAL_ERROR"}}},{"properties":{"reasonCode":{"const":"AE001"},"name":{"const":"AUTH_TOKEN_MISSING"}}},{"properties":{"reasonCode":{"const":"AE002"},"name":{"const":"AUTH_TOKEN_INVALID"}}},{"properties":{"reasonCode":{"const":"AE003"},"name":{"const":"MTLS_AUTH_FAILED"}}},{"properties":{"reasonCode":{"const":"AE004"},"name":{"const":"ACCESS_DENIED"}}},{"properties":{"reasonCode":{"const":"AE005"},"name":{"const":"MESSAGE_SIGNATURE_INVALID"}}},{"properties":{"reasonCode":{"const":"BE901"},"name":{"const":"REPORT_NOT_FOUND"}}},{"properties":{"reasonCode":{"const":"BE902"},"name":{"const":"REPORT_NOT_READY"}}},{"properties":{"reasonCode":{"const":"BE903"},"name":{"const":"REPORT_OUTSIDE_RETRIEVAL_WINDOW"}}},{"properties":{"reasonCode":{"const":"BE904"},"name":{"const":"TRANSACTION_NOT_FOUND"}}},{"properties":{"reasonCode":{"const":"BE905"},"name":{"const":"RANGE_TOO_WIDE"}}},{"properties":{"reasonCode":{"const":"BE906"},"name":{"const":"QUERY_TOO_LARGE"}}},{"properties":{"reasonCode":{"const":"BE907"},"name":{"const":"RESULT_TOO_LARGE"}}},{"properties":{"reasonCode":{"const":"BE908"},"name":{"const":"RATE_LIMIT_EXCEEDED"}}},{"properties":{"reasonCode":{"const":"BE909"},"name":{"const":"CONCURRENCY_LIMIT_EXCEEDED"}}},{"properties":{"reasonCode":{"const":"BE910"},"name":{"const":"DAILY_ALLOWANCE_EXCEEDED"}}},{"properties":{"reasonCode":{"const":"BE911"},"name":{"const":"IDENTICAL_QUERY_TOO_SOON"}}},{"properties":{"reasonCode":{"const":"BE912"},"name":{"const":"IDEMPOTENCY_KEY_CONFLICT"}}}]}},"headers":{"NoStore":{"description":"Prevent HTTP caching of participant responses and signed URLs. Authorised processing and retention of retrieved business data in IPSO systems is governed separately.","schema":{"type":"string","const":"no-store"}},"ResponseSignatureInput":{"description":"RFC 9421 signature metadata for a GET response, per the Nexus HTTP Message Signature Profile v1 (RFC 9421, RFC 9530). Signed by Nexus with its signing private key for this API path (the Nexus Operations signing key on the Operations host). Covered components: `\"@status\" \"content-type\" \"content-digest\"` on 200, or `\"@status\" \"etag\"` on 304, followed in both cases by the request-bound components `\"@method\";req \"@path\";req \"@query\";req`, which tie the response to the resource that was requested. Same `created`, `expires`, `keyid`, `alg` and `tag` rules as requests. The client MUST verify the response signature before using the response and MUST discard a response that fails verification.","required":true,"schema":{"type":"string","maxLength":512,"pattern":"^nexus=\\(\"@status\" (\"content-type\" \"content-digest\"|\"etag\") \"@method\";req \"@path\";req \"@query\";req\\);created=[0-9]{1,15};expires=[0-9]{1,15};keyid=\"[A-Za-z0-9_-]{43}\";alg=\"rsa-pss-sha512\";tag=\"nexus-v1\"$"}},"ResponseSignature":{"description":"RFC 9421 response signature: one dictionary member labelled `nexus` holding the standard base64 `rsa-pss-sha512` signature produced by the responding server over the signature base declared in the response `Signature-Input`. Verified by the client against the server's registered signing public key.","required":true,"schema":{"type":"string","minLength":520,"maxLength":1400,"pattern":"^nexus=:[A-Za-z0-9+/]+={0,2}:$"}},"ResponseContentDigest":{"description":"RFC 9530 SHA-512 digest of the exact response body bytes, covered by the response signature.","required":true,"schema":{"type":"string","pattern":"^sha-512=:[A-Za-z0-9+/]{86}==:$"}},"RetryAfter":{"description":"Mandatory on every policy 429 and on 409 REPORT_NOT_READY. Positive delay-seconds, rounded up to the earliest permitted retry; where several controls block the request, the longest known blocking delay is returned. A concurrency-only rejection does not reserve a slot. Honour this value as a minimum before bounded exponential backoff with jitter.","required":true,"schema":{"type":"integer","minimum":1}}},"responses":{"QueryBadRequest":{"description":"400 BE905 RANGE_TOO_WIDE for an otherwise valid range above 31 inclusive Nexus Days. TE001 INVALID_REQUEST covers missing dates, invalid/reversed/future/out-of-retention dates, unsupported status values, pageSize outside 1..2500, invalid/expired/cross-scope cursors, cursor mixed with filters and unknown or repeated parameters. Narrow or correct the request; never retry unchanged.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"properties":{"name":{"enum":["INVALID_REQUEST","RANGE_TOO_WIDE"]}}}]}}}},"Unauthorized":{"description":"401 AE001 AUTH_TOKEN_MISSING, AE002 AUTH_TOKEN_INVALID, AE003 MTLS_AUTH_FAILED or AE005 MESSAGE_SIGNATURE_INVALID. Includes wrong issuer or audience, certificate-binding mismatch, and presenting an Operations reporting token to Track and Trace or a payment token to a reporting operation. AE005 applies to every operation: the RFC 9421 signature is missing, malformed, does not cover the required components or does not verify, the keyid is unknown, expired, revoked or registered for the other (payment or Operations) path, created/expires is outside the tolerance window, or the Content-Digest does not match the body. A TLS handshake rejection may have no HTTP response.","headers":{"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"403 AE004 ACCESS_DENIED. Valid credentials lack the operation scope, active IPSO identity or environment entitlement. Machine scopes and human Portal grants are independent; no participant identity supplied in a query can override the credential-derived scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"QueryGuardrailExceeded":{"description":"422 BE906 QUERY_TOO_LARGE when the bounded query exceeds the published execution or scan-cost guard, or BE907 RESULT_TOO_LARGE when the total logical result exceeds the published row or byte guard. The 2,500 page maximum is not a total-result threshold. Narrow the range or add filters. Never return a truncated success or continue an invalidated partial result as complete.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"properties":{"name":{"enum":["QUERY_TOO_LARGE","RESULT_TOO_LARGE"]}}}]}}}},"FeedThrottled":{"description":"429 BE908 RATE_LIMIT_EXCEEDED (new logical queries), BE909 CONCURRENCY_LIMIT_EXCEEDED (in-flight HTTP requests, including pages), BE910 DAILY_ALLOWANCE_EXCEEDED (logical queries for the Nexus Day), or BE911 IDENTICAL_QUERY_TOO_SOON (the same normalised query re-admitted inside its cooldown). Valid cursor continuation is subject only to concurrency, not the other three counters. Every rejection includes Retry-After; where multiple controls block, the longest known blocking delay is returned. A rejected attempt neither extends a cooldown nor consumes allowance.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"properties":{"name":{"enum":["RATE_LIMIT_EXCEEDED","CONCURRENCY_LIMIT_EXCEEDED","DAILY_ALLOWANCE_EXCEEDED","IDENTICAL_QUERY_TOO_SOON"]}}}]}}}},"InternalError":{"description":"500 TE099 INTERNAL_ERROR. Use bounded backoff within the applicable usage controls; contact the Service Desk if persistent.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unavailable":{"description":"503 native response: source/publication/quota service unavailable or token validation cannot safely complete. Fail closed, never return false empty/ready data or bypass limits. Retry only within published limits.","headers":{"Retry-After":{"description":"Optional suggested positive delay-seconds for transient unavailability; when supplied, honour it within the usage controls.","schema":{"type":"integer","minimum":1}}}},"PerimeterError":{"description":"Native HTTP perimeter response, including 405 (Allow header), 502 and 504. No Nexus JSON error-body guarantee for these failures. Per-IPSO policy 429 responses use the explicit typed contract. Bounded retry only for transient failures."}}},"paths":{"/v1/operational-transactions":{"get":{"tags":["OperationalDataFeed"],"operationId":"listOperationalTransactions","summary":"Retrieve the Operational Data Feed","description":"Access the Transaction Dashboard's data for automated exception monitoring and operational follow-up. Every first request requires fromDate and toDate: at most 31 inclusive Nexus Days within 13 calendar months, with no future dates. Filter directly by optional status; omitting it includes all source statuses unless another supplied filter narrows them. There is no view parameter or implicit current/pending/overdue/historical population. To retrieve today's activity, set both dates to today in SGT. pendingAgeBucket optionally narrows current PDNG within those dates; it never waives the date range. Date-free single-UETR lookup is provided by Track and Trace, not this feed.\n\n### Relationship to the Reconciliation Report (camt.054)\n\nEach record is a reduced, normalised JSON representation of the corresponding camt.054 `Ntry`: the fields below correspond to camt.054 elements, but the feed is not a lossless copy of every field the file carries. It is not authoritative and is not a camt.054 message; the file remains the authoritative daily record. `uetr` is the primary match key in both channels.\n\n| camt.054 element | Feed field |\n| --- | --- |\n| `Ntry/Amt` + `Ccy` | `entryAmount` |\n| `Ntry/CdtDbtInd` | `creditDebitIndicator` |\n| `Ntry/Sts/Prtry` | `status` |\n| `Ntry/BookgDt/DtTm` | `bookingDateTime` |\n| `Ntry/BkTxCd` | `bankTransactionCode` |\n| `NtryDtls/TxDtls/Refs` | `references` |\n| `AmtDtls/InstdAmt` and `CcyXchg` | `amountDetails.instructedAmount`, `amountDetails.currencyExchange` |\n| `AmtDtls/TxAmt` and `CcyXchg` | `amountDetails.transactionAmount` |\n| `Chrgs/Rcrd` (`Amt`, `Agt`) | `charges` (`amount`, `currency`, `agent`) |\n| `RltdPties/DbtrAcct/Id` | `debtorAccount` |\n| `RltdPties/CdtrAcct/Id` | `creditorAccount` |\n| `RltdAgts/InstgAgt` | `instructingAgent` |\n| `RltdAgts/InstdAgt` | `instructedAgent` |\n| `RltdAgts/DbtrAgt` | `debtorAgent` |\n| `RltdAgts/CdtrAgt` | `creditorAgent` |\n| `RltdAgts/IntrmyAgt1` | `intermediaryAgent1` |\n| `RltdAgts/IntrmyAgt2` | `intermediaryAgent2` |\n| `RltdDts/AccptncDtTm` | `acceptanceDateTime` |\n| `RltdDts/IntrBkSttlmDt` | `interbankSettlementDate` |\n\nAvailable only here, with no camt.054 counterpart: `statusSource`, `acceptedAt`, `updatedAt`, `finalStatusAt`, `rejectionReason`, `pendingReason`, `pendingAgeSeconds`, `destinationAmount`, `sourceCountry`, `destinationCountry`, `direction`, and the charge record's `type`, `bearer` and `creditDebitIndicator`. Note that camt.054 carries the status code but no status reason, so a rejected or pending payment has a reason here and none in the file.\n\n`direction`, `creditDebitIndicator` and `bankTransactionCode.family` are three equivalent views of the same role and never disagree: an outbound payment is `DBIT` with family `IRCT`, an inbound payment is `CRDT` with family `RRCT`.\n\n`acceptedAt` is the instant Nexus recorded the acceptance: it assigns the Nexus Day, drives the date filters and starts pending age. `acceptanceDateTime` is the acceptance timestamp set by the Source PSP, copied from the pacs.008 as in camt.054.\n\nAgents are identified as in camt.054: by BIC, LEI or clearing-system member ID, with `scheme` naming the form and `id` carrying the value.\n\nBoth channels carry the debtor and creditor account identifiers copied from the pacs.008, for reconciliation. Neither carries names, addresses, proxy values (mobile number, email address or national ID) or remittance information. Account identifiers are not query filters and must not be logged.\n\nA logical query is its first request plus all valid cursor continuations. Continue using only cursor; the cursor inherits the validated dates, page size, filters and snapshot. A valid continuation remains permitted after the published new-query allowance is exhausted, including across midnight, until the cursor expires. A new first-request retry or an expired-cursor restart is a new logical query.\n\nHTTP 429 identifies rate, concurrency, daily-allowance or duplicate-query rejection and always supplies Retry-After. A range above 31 inclusive Nexus Days returns 400 RANGE_TOO_WIDE. Exceeding the published query-cost or total-result guards returns 422 QUERY_TOO_LARGE or RESULT_TOO_LARGE; narrow the range or add filters, never accept a silently truncated result. A result larger than one page is not an error.\n\nPagination example: start with fromDate=20260916, toDate=20260916, status=PDNG and pageSize=2. The firstPage response contains two records and nextCursor. Request the next page with that cursor alone; do not repeat pageSize, dates or status. The lastPage response contains the remaining record and omits both nextCursor and cursorExpiresAt. All pages retain the same dataAsOf and evaluatedAt. Example cursor values and expiry are illustrative, not published production lifetimes.","parameters":[{"$ref":"#/components/parameters/FromDate"},{"$ref":"#/components/parameters/ToDate"},{"$ref":"#/components/parameters/SendingIpso"},{"$ref":"#/components/parameters/ReceivingIpso"},{"$ref":"#/components/parameters/Direction"},{"$ref":"#/components/parameters/PspId"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/StatusSource"},{"$ref":"#/components/parameters/PendingAgeBucket"},{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/Cursor"},{"$ref":"#/components/parameters/SignatureInputBodyless"},{"$ref":"#/components/parameters/Signature"}],"responses":{"200":{"description":"Scoped operational page of at most the requested pageSize, with an absolute maximum of 2,500 records. Empty items means no authorised match, not a failed source query. Use nextCursor for additional pages of the same logical query; both cursor fields are absent on the final page.","headers":{"Cache-Control":{"$ref":"#/components/headers/NoStore"},"Signature-Input":{"$ref":"#/components/headers/ResponseSignatureInput"},"Signature":{"$ref":"#/components/headers/ResponseSignature"},"Content-Digest":{"$ref":"#/components/headers/ResponseContentDigest"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionPage"}}}},"400":{"$ref":"#/components/responses/QueryBadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/QueryGuardrailExceeded"},"429":{"$ref":"#/components/responses/FeedThrottled"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/Unavailable"},"default":{"$ref":"#/components/responses/PerimeterError"}}}}}}
```
