Fedwire ISO 20022 and FedNow, from an operations desk
Published 22 July 2026
10 min read
fedwire iso 20022
A US bank does not have one ISO 20022 migration. It has Fedwire, FedNow, CHIPS and whatever its correspondents send under CBPR+, and each carries the same payment in a slightly different shape.
Fedwire
The Federal Reserve moved the Fedwire Funds Service to the ISO 20022 format in a single day cutover in July 2025, rather than running a long coexistence. Operationally that made the change sharp and clean: after the cutover there was one format, and processes that had been quietly dependent on the old fixed field structure had to be ready on the day.
For reconciliation the gain is the same as everywhere else: structured parties, room for richer remittance data, and identifiers that can be matched as keys. The catch is that a domestic message under the Fed's guidelines is not identical to a CBPR+ message, so rules written for one corridor do not transfer unchanged to the other.
This console matches the first rows a side. It left out
statement
and
ledger
.
Nothing in the rows left out is counted below.
To run a full file,
.
8 exact ·
1 under tolerance ·
24 rows
Break
Amount
Difference and suggested action
Classification
BRK-001
Aged 0d
$219,105.40
2026-09-03 · both sides
REF//FX/SPOT/7741 · INTERBANK FX DESK
Amount differs by 164.80 USD (0.075%)
Re-price the ledger leg on the correspondent rate source for the value date and post 164.80 USD to FX variance.
FX RATE SOURCE
→ Treasury Ops
BRK-002
Aged 4d
$187,650.00
2026-08-30 · ledger
PAY/90012/R · KESTREL LOGISTICS
Posted in the ledger, not on the statement
Trace the posting to its instruction, repair the reference and re-present it, or reverse it if the payment was returned.
MISSING REFERENCE
→ Payments Ops
BRK-003
Aged 0d
$123,760.00
2026-09-03 · both sides
REF//TRF/554121 · HALCYON TRADING
Statement 61,880.00 vs ledger 123,760.00 (50% short)
Split the ledger posting and match the settled leg; leave the residual 61,880.00 USD open against the same reference.
PARTIAL SETTLEMENT
→ Payments Ops
BRK-004
Aged 0d
$3,410.00
2026-09-03 · statement
REF//CHG/Q3FEES · CORRESPONDENT CHARGES
On the statement, nothing in the ledger
Post 3,410.00 USD to the charges account for the period and add it to the standing accrual so it stops surfacing as a break.
FEE NOT ACCRUED
→ Finance
·
·
Audit note:
→
Everything matched under these tolerances.
Tighten the date or amount tolerance to see the breaks it was absorbing.
Correspondent statement
camt.053 · NOSTRO USD
Value date
Reference
Amount
Counterparty
2026-09-02
REF//NONREF/2026090301
1,284,500.00
ACME MANUFACTURING
2026-09-02
REF//INV/88231
96,400.00
NORDVEST SHIPPING
2026-09-03
REF//TRF/554120
452,180.25
HALCYON TRADING
2026-09-03
REF//FX/SPOT/7741
218,940.60
INTERBANK FX DESK
2026-09-01
REF//SEPA/33421
74,220.00
LINDQVIST AS
2026-09-03
REF//CHG/Q3FEES
3,410.00
CORRESPONDENT CHARGES
2026-09-03
REF//TRF/554121
61,880.00
HALCYON TRADING
2026-09-02
REF//PAY/90012
187,650.00
KESTREL LOGISTICS
2026-09-02
REF//INV/88245
242,015.00
BRIGHTLINE FOODS
2026-09-03
REF//TRF/554133
18,905.50
MERIDIAN PARTS
2026-09-01
REF//PAY/90044
505,300.00
VANTAGE ENERGY
2026-09-03
REF//INV/88260
132,640.75
ORION TEXTILES
Internal nostro ledger
Core banking export
Value date
Reference
Amount
Counterparty
2026-09-02
NONREF/2026090301
1,284,500.00
ACME MANUFACTURING
2026-09-02
INV/88231
96,400.00
NORDVEST SHIPPING
2026-09-03
TRF/554120
452,180.25
HALCYON TRADING
2026-09-03
FX/SPOT/7741
219,105.40
INTERBANK FX DESK
2026-08-31
SEPA/33421
74,220.00
LINDQVIST AS
2026-09-02
PAY/90012
187,650.00
KESTREL LOGISTICS
2026-09-03
TRF/554121
123,760.00
HALCYON TRADING
2026-08-30
PAY/90012/R
187,650.00
KESTREL LOGISTICS
2026-09-02
INV/88245
242,015.00
BRIGHTLINE FOODS
2026-09-03
TRF/554133
18,905.50
MERIDIAN PARTS
2026-09-01
PAY/90044
505,300.00
VANTAGE ENERGY
2026-09-03
INV/88260
132,640.75
ORION TEXTILES
Matched pairs are tinted on both sides. Breaks carry the brass left rule and appear in the worklist.
Sample data only. Matching runs in your browser; classification is written by the model when you press Run.Matching done in your browser. Writing classifications…Classifications written by the model on this run. Decision support, not a compliance determination.The classification model was unavailable, so the built-in rule classifier wrote these. Same matching, same numbers.This console classifies up to 12 runs a minute and this run went over, so the built-in rule classifier wrote these. Same matching, same numbers. Wait a minute for the model, or
.
The model wrote the first 8 classifications.
The rule classifier wrote the rest ().
FedNow launched on ISO 20022 in 2023, so there is no legacy shape to migrate from. What changes for operations is not the format but the clock: instant settlement, 24 hours a day, means reconciliation cannot be a nightly batch habit. Positions move at the weekend, and an exception that ages for two days aged over a period when nobody was looking.
Files and reports arrive more often and are smaller.
Aging thresholds have to be set in hours for some item types, not days.
Returns and rejects need to be tied to the original in near real time.
Weekend and holiday coverage becomes an operating model question, not a technology one.
CHIPS and the correspondent view
CHIPS operates its own ISO 20022 based messaging for large value clearing, with its own usage rules. Add correspondents sending CBPR+ messages, and a US bank reconciling a nostro position can meet three or four flavours of the same standard in one day. This is normal, and it is the strongest practical argument for a reconciliation layer that treats format as a property of the source rather than as a system-wide assumption.
Rail
Format basis
Reconciliation implication
Fedwire Funds
ISO 20022 under Fed guidelines, cutover July 2025
Domestic rules differ from CBPR+, so matching rules are per source
FedNow
ISO 20022 from launch, instant, always on
Continuous reconciliation and hour-level aging
CHIPS
ISO 20022 based, own usage rules
Netting and settlement finality change what a match means
Correspondent, cross border
CBPR+
End to end id survival is the key question
Swipe the table sideways to read every column.
Why a single day cutover was the easier choice
Coexistence sounds safer than a cutover and is usually harder to operate. Running two formats in parallel means every downstream process needs two paths, two sets of rules and a way to reconcile across both, for as long as the window lasts. The Fedwire approach put the difficulty into one weekend of preparation instead of spreading it over two years of dual running.
The operational lesson generalises. Wherever you have a choice about a format change on a source you control, the shorter the period in which two shapes exist, the smaller the permanent complexity. Where you do not have the choice, which is most correspondent relationships, the answer is to make format a per source setting so that dual running costs configuration rather than code.
The always on problem, in detail
Instant rails break assumptions that a batch reconciliation never had to state. The most important one is that there is a moment each day when the books stop moving. On an always on rail there is no such moment, so every part of the process that implicitly relied on it has to be reconsidered.
Batch assumption
Why it fails on an instant rail
What replaces it
A daily cut-off defines the population
Activity continues through the cut-off
A rolling window, reconciled continuously
Aging is counted in days
A two day old item may have aged over a weekend nobody staffed
Aging in hours for the item types that need it
Returns arrive in the next batch
A return can arrive minutes after the original
Return matched to the original as it arrives
Staffing follows business hours
Exposure accrues at 2am on a Sunday
An explicit coverage decision, documented
One statement proves the day
The day never closes cleanly
Position proved continuously, statement used for confirmation
Swipe the table sideways to read every column.
None of this requires a different matching engine. It requires the aging and escalation configuration to be expressed in hours where the rail is instant, and it requires somebody to have decided what happens to an exception raised outside working hours. That second decision is an operating model choice that software cannot make for you.
Three rails, one account, one reconciliation
A US bank reconciling its own position frequently sees the same commercial payment described three ways: an instruction in its payment engine, a settlement leg on one of the rails, and a posting on an account. The reconciliation is not between the rails, it is between what the bank instructed and what settled, and the rail decides the shape of the evidence. The product page for the two instant rails is instant payments reconciliation software.
Input
One outgoing payment, three records
Instruction: internal payment engine, reference INS/2026/44821, 250,000.00 USD, value 2026-09-03
Rail: Fedwire ISO 20022 message, own identifiers, settled same day
Account: ledger posting 250,000.00 USD, value 2026-09-03, plus a separate fee posting
Output
What matching has to handle
The identifier that ties instruction to settlement differs from the one on the account posting, so normalization rules are per source.
The fee arrives as a separate item and must not be treated as an amount difference on the payment.
A three way match, instruction to settlement to posting, catches the case where two of the three agree and the third does not.
Domestic guidelines are not CBPR+
The most common configuration error on US rails is reusing cross border rules domestically. Both are ISO 20022 and both look similar in a specification. The differences that matter are which elements are mandatory, how identifiers are populated, and what appears in remittance information. A matching rule that keys on a field that is mandatory under CBPR+ and optional domestically will work in testing and degrade quietly in production, which is the worst failure mode available.
The defensive habit is to write rules against fields you have verified are populated in real files from that specific source, and to review the assumption when the source changes anything. A source that changes shape should raise an ingestion exception rather than silently matching less.
What to measure on each rail
Exact match rate per rail, tracked separately, because a blended number hides which rail is degrading.
Time to first match, which on an instant rail is the honest measure of whether the reconciliation is keeping up.
Break age distribution in hours for instant flows and in days for correspondent flows.
Return and reject volume tied to originals, since an untied return is an investigation that has not started yet.
Fee items as a proportion of breaks, which tells you whether accruals are modelled or discovered.
What to change in the operating model
01Configure tolerances and aging per source, because a domestic instant payment and a cross border correspondent leg have nothing in common operationally.
02Reconcile intraday where the rail is intraday. An end of day statement on an always-on rail is a report about history.
03Classify breaks by cause so the difference between a Fedwire formatting habit and a correspondent truncation is visible in the data.
04Keep MT parsing alive for the flows that still use it, and stop treating it as a legacy embarrassment.
The weekend, and other times nobody planned for
An instant rail that runs continuously creates a category of operational risk that batch banking never had to name: exposure that accumulates while the building is empty. It is not a theoretical concern. A returned payment on a Saturday evening, a duplicate posting caused by a replayed batch, or a settlement that did not complete are all events that can happen at times when the reconciliation is running and nobody is reading the result.
There are three defensible answers and one indefensible one. You can staff the coverage, which is expensive and appropriate at some volumes. You can define which item types can wait until the next working day and document that decision, which is legitimate if the decision is explicit and reviewed. You can automate the handling for a narrow set of item types where the action is unambiguous, under maker-checker applied retrospectively. The indefensible answer is to leave it undefined and discover the position on Monday.
Decide which classifications may wait and which must page somebody, and write it down.
Set aging thresholds in hours for the item types that cannot wait, and make escalation automatic rather than dependent on a person noticing.
Distinguish an item that arrived out of hours from an item that has genuinely aged, so Monday morning is not a false alarm.
Record the out of hours decision itself, because an examiner reading a Monday morning action will ask when the exposure started.
Three way matching, and why two way is not enough here
A two way reconciliation compares the account posting with one other record and proves that two things agree. On a rail where an instruction, a settlement and a posting are three separate events with three separate identifiers, agreement between two of them does not prove very much. The case that two way matching misses is common: the instruction and the posting agree, and the settlement never happened, because the posting was made on an assumption rather than on a confirmation.
Three way matching, instruction to settlement to posting, catches it. It costs an extra source and an extra set of normalization rules, and it converts a class of silent failure into a visible break on the day it occurs rather than at month end. On rails where settlement finality is immediate and irreversible, that difference in timing is the whole value.
A note on scope
Rail rules and timelines change, and the details above describe the general shape rather than the current position of any scheme. Before making a plan, confirm the present state with the operator of each rail you use. What does not change is the operational conclusion: treat format, tolerance and aging as properties of the source, keep the ability to read older formats, and measure breaks by cause so that the difference between a rail habit and a real problem is visible in the data rather than in somebody's memory.
On a rail where settlement is final in seconds and available every hour of every day, an unreconciled item is a different kind of object from an unreconciled wire. There is no window in which a mistake can be recalled by agreement, and there is no overnight period during which the position is static and can be examined calmly. The reconciliation either keeps pace with settlement or it produces a position that is always slightly historical.
The practical consequence is that the exception process, not the matching, becomes the constraint. Matching more frequently is a configuration change. Having somebody available to work an exception at the moment it arises, with the authority to act on it, is an operating model change, and it is the part that institutions consistently underestimate when they add an instant rail to an existing operation.
Request for payment, and the reconciliation it implies
Request for payment introduces a message that is not itself a payment and that expects a response which may never arrive. That creates a population no traditional reconciliation models: requests sent, requests answered, requests declined and requests that simply expired. None of those are breaks, and all of them will look like breaks to a process that only understands instructed and settled. Modelling the request as its own state, with its own age and its own expected outcome, keeps that population out of the exception queue where it would otherwise generate constant noise.
Get started
Put your first reconciliation on rails
Create an account, and we will email you how onboarding works and what a first source connection looks like. The Reconciliation Break Resolver is open to try right now, on sample data, without an account.
Creating an account with the button above needs no card; paid plans are paid on our payment processor's secure page. Sample data only in the demo. BankAutomation is operations software, not a regulated service.