Changelog
Changelog
Why We’re Moving to Wires V2
Wires V2 prepares our API for upcoming Fedwire ISO 20022 requirements while also introducing several improvements to the wires experience. The primary breaking change is a new hybrid address format. V2 replaces the fully unstructured V1 address with an ISO-compatible address object that requirescountry and town_name, while still allowing up to two free-form address lines. V2 also introduces stricter validation for rail-bound text fields.
Since these changes require a new API version, we are also including several related improvements in the same migration, including corridor classification, consolidated routing identifiers, and enum-based return and rejection reasons.
Although the Fedwire release has been rescheduled from November 2026 to November 2027, Lead is still moving forward with Wires V2 so partners can adopt these improvements now and be prepared for the future Fedwire requirements.
Timeline
The detailed migration runbook including the per-program cutover sequence, V1 deprecation timing, and maintenance windows will be shared as the migration plan is finalized. Contact your TAM with questions about your specific timeline.
Summary of Breaking Changes
1. Update Wire Creation (POST /v2/wires)
Several fields in the request body have changed. The top-level diff:
1a. corridor_type Is Now Required
Set to "domestic" or "international". This value drives the validation rules for several other fields below.
In addition, you may also include the new optional ultimate_debtor object:
1b. Routing Number Moved To local_routing_identifier.value
creditor_agent.routing_number no longer exists in v2. Pass the 9-digit ABA routing number through creditor_agent.local_routing_identifier.value instead. This field is required when corridor_type is "domestic".
instructed_agent if you use it.
1c. business_identifier_code (BIC) Is Now Corridor-type Conditional
In v1, BIC was informally required for international wires. In v2 this is enforced:
corridor_type: "international"→business_identifier_coderequiredcorridor_type: "domestic"→business_identifier_codenot accepted
1d. creditor.address Is Restructured
v2 adopts an ISO 20022 hybrid address format. line_three is removed and two new required fields are added: town_name and country.
If you were putting city/state/country intoline_twoorline_three, split those values into the new structured fields.
1e. Read-only Fields Removed From Request Schemas
In v1,payment_identifiers and remittance_details included several readOnly fields that were silently ignored in requests. In v2 these are absent from the request schema entirely — sending them will cause an error. If your code serializes a full wire object back into a create request, strip these fields first.
payment_identifiers — only end_to_end_identification is accepted; remove:
message_identification,uetr,instruction_identification,return_identification
remittance_details — only message_to_creditor and transfer_purpose are accepted; remove:
payment_notification,message_to_receiving_fi,fi_to_fi_message
2. Update Wire Return Reasons
POST /v2/wires/{wire_id}/return renames return_code to reason and replaces ISO 20022 codes with human-readable strings.
v1 request:
Full Mapping
3. Handle New Response Fields
v2 wire responses include new fields. You don’t have to use them, but you should not break if they appear.Detailed Changes
Wire V2 Object
The V2 wire object keeps the overall V1 shape and field names, with a focused set of ISO-driven additions and changes. The most significant differences from V1 are the hybrid address model, the consolidation of routing numbers intolocal_routing_identifier, the new corridor_type and initiating_party fields, and the move from raw ISO codes to normalized enums on return reasons.
Key Changes vs. V1
Statuses
Wire statuses are unchanged from V1 for this migration. The full status set (created, scheduled, processing, posted, under_review, rejected, canceled, cancel_pending) continues to be returned as it is today.
The planned changes differ by direction:
- Outgoing wires:
scheduled,processing, andcancel_pendingwill be deprecated, leaving the lifecyclecreated→under_review→posted/rejected/canceled. - Incoming wires:
under_reviewwill become an active status (and thewire.under_reviewwebhook will begin firing for incoming wires), leaving the lifecycleunder_review→posted/rejected.
Example Wire V2 Object
Detailed API Changes by Endpoint
Create a Wire:POST /v2/wires
V2 Request Example
GET /v2/wires
Retrieve a Wire:
GET /v2/wires/{wire_id}
Update a Wire:
PATCH /v2/wires/{wire_id}
Cancel a Wire:
POST /v2/wires/{wire_id}/cancel
Return a Wire:
POST /v2/wires/{wire_id}/return
Request Return:
POST /v2/wires/{wire_id}/request_return
For the full request and response schema, see the Return Requests guide.
Reject Return Request:
POST /v2/wires/{wire_id}/reject_return_request
For the full request and response schema, see the Return Requests guide.

