Skip to main content
Lead is migrating the Wire API from V1 to V2. All partners must migrate to V2 before Lead’s migration deadline. V1 will be deprecated after the migration window closes. This guide describes what changed, what you need to update, and the timeline for completing your migration. This page is updated when additional changes occur, with those changes recorded in the Changelog at the top of the page.
This guide will be updated as decisions are finalized.

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 requires country 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".
The same applies to 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_code required
  • corridor_type: "domestic"business_identifier_code not 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 into line_two or line_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:
v2 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 into local_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.
Planned for 2027The wire status lifecycle changes are deferred until after the V2 rollout. Partners will receive at least three months’ notice before any status is removed. No action is required for the V2 migration itself.
The planned changes differ by direction:
  • Outgoing wires: scheduled, processing, and cancel_pending will be deprecated, leaving the lifecycle createdunder_reviewposted / rejected / canceled.
  • Incoming wires: under_review will become an active status (and the wire.under_review webhook will begin firing for incoming wires), leaving the lifecycle under_reviewposted / rejected.

Example Wire V2 Object

Detailed API Changes by Endpoint

Create a Wire: POST /v2/wires V2 Request Example
List All Wires: 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.