Wire Transfers (Fedwire / SWIFT)
The wire transfer endpoint initiates domestic Fedwire transfers and cross-border SWIFT transfers through a single API call. PayPlus automatically selects Fedwire for USD-to-USD domestic transfers and SWIFT for international or cross-currency transfers, or you can specify the rail explicitly.
Rail Selection
| Scenario | Rail Used | Notes |
|---|---|---|
| USD transfer to a US bank (domestic) | Fedwire | Real-time RTGS settlement. Fedwire operates MonβFri within operating hours only. |
| USD transfer to a non-US bank | SWIFT (USD correspondent chain) | Routes through your institution's USD correspondent bank. |
| Non-USD currency transfer (EUR, GBP, etc.) | SWIFT | PayPlus applies the configured correspondent routing for the currency pair. |
| Bank-to-bank cover payment | Fedwire (pacs.009) or SWIFT (MT 202/pacs.009) | Specify "transferType": "bank_transfer" in the request. |
Initiate a Wire Transfer
Creates a wire transfer instruction. Fedwire payments are submitted immediately if the request is received during Fedwire operating hours; otherwise, they are queued for the next operating session. SWIFT payments are submitted to SWIFTNet immediately upon approval and compliance clearance.
Request Body Parameters
| Field | Type | Description | |
|---|---|---|---|
transferType | string | Optional | "customer_transfer" (default β customer credit transfer, pacs.008) or "bank_transfer" (interbank/cover payment, pacs.009). |
amount | integer | Required | Amount in cents (USD, or target currency if currency is specified). No maximum for Fedwire; SWIFT limits vary by correspondent arrangement. |
currency | string | Optional | ISO 4217 currency code. Default: "USD". Non-USD currencies automatically route to SWIFT. |
valueDate | string (date) | Optional | Requested value date in YYYY-MM-DD format. For Fedwire, this is always today (RTGS, no future dating). For SWIFT, future value dating is supported. Must be a banking day in the beneficiary's country. |
originator | object | Required | Ordering customer or institution. See Originator Object. |
beneficiary | object | Required | Beneficiary customer or institution. See Beneficiary Object. |
beneficiaryBank | object | Required | Beneficiary's bank. For Fedwire: routingNumber (ABA). For SWIFT: bic (8 or 11 chars). |
intermediaryBank | object | Optional | Intermediary/correspondent bank for SWIFT correspondent chains. Fields: bic, name, address. |
remittanceInfo | string | Optional | Unstructured remittance information. Passed in pacs.008 RmtInf/Ustrd. Maximum 140 characters (Fedwire); 210 characters (SWIFT MT 103 field 70). |
purposeCode | string | Optional | ISO 20022 purpose code (e.g., BEXP for business expenses, DIVI for dividends). Required for some cross-border SWIFT corridors. |
referenceId | string | Optional | Your system reference. Maximum 35 characters. Passed in pacs.008 EndToEndId. |
Originator Object (Wire)
| Field | Type | Description | |
|---|---|---|---|
name | string | Required | Full name of originating customer or institution. |
accountNumber | string | Required | Originating account number at the sending bank. |
routingNumber | string | Fedwire: Required | Sending bank ABA routing number. |
address | object | Required | Full address. Required for Travel Rule compliance: street, city, state, postalCode, country (ISO 3166-1 alpha-2). |
lei | string | Optional | Legal Entity Identifier (20 characters). Required in pacs.008 for large financial institutions per Fedwire ISO 20022 rules. |
Example Request β Fedwire (Domestic USD)
POST /v2/payments/wire HTTP/1.1
Host: api.payplus.yourbank.internal
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...
Content-Type: application/json
Idempotency-Key: c1d2e3f4-a5b6-7c8d-9e0f-1a2b3c4d5e6f
{
"transferType": "customer_transfer",
"amount": 250000000,
"currency": "USD",
"originator": {
"name": "Acme Corporation",
"accountNumber": "100200300",
"routingNumber": "021000021",
"address": {
"street": "1 Liberty Plaza",
"city": "New York",
"state": "NY",
"postalCode": "10006",
"country": "US"
}
},
"beneficiary": {
"name": "Riverdale Real Estate Trust",
"accountNumber": "778899001122",
"address": {
"street": "500 North Michigan Ave",
"city": "Chicago",
"state": "IL",
"postalCode": "60611",
"country": "US"
}
},
"beneficiaryBank": {
"routingNumber": "071000013",
"name": "JPMORGAN CHASE BANK NA"
},
"remittanceInfo": "RE CLOSING - 500 N MICHIGAN AVE CHICAGO IL 60611",
"purposeCode": "RPRE",
"referenceId": "CLOSING-2026-03-15-001"
}
Response
202 Accepted (Fedwire submissions are asynchronous β settlement confirmation arrives via webhook)
{
"data": {
"paymentId": "pmt_wire_f3a1b9c7d2e4",
"rail": "fedwire",
"status": "approved",
"amount": 250000000,
"currency": "USD",
"uetr": "9c2e4f6a-8b0d-1e3f-5a7c-9d1e3f5a7c9d",
"referenceId": "CLOSING-2026-03-15-001",
"createdAt": "2026-03-15T10:45:00Z",
"estimatedSettlement": "2026-03-15T11:00:00Z"
}
}
Get Wire Transfer Status
Returns current status and details of a wire transfer. The uetr field (Unique End-to-End Transaction Reference) is present for all ISO 20022 wire transfers and can be used for SWIFT gpi tracking queries.
Wire Payment Status Values
| Status | Description |
|---|---|
validated | Format validation passed; awaiting approval |
pending_approval | Awaiting dual-control approval (typical for high-value wires) |
compliance_hold | OFAC screening hold β Compliance Officer action required |
approved | Approved; queued for Fedwire operating hours (if after-hours) or immediate submission (if during hours) |
submitted | Submitted to Fedwire or SWIFTNet; awaiting settlement confirmation |
settled | Fedwire settlement confirmed (RTGS, immediate) or SWIFT correspondent confirmed receipt |
recall_pending | Recall request submitted (camt.056); awaiting beneficiary bank response |
recalled | Funds returned following successful recall |
recall_rejected | Recall request rejected by beneficiary bank |
rejected | Rejected by PayPlus compliance or by Fedwire/SWIFT network |
Request Wire Recall
Initiates a payment recall request for a settled wire transfer. PayPlus submits a camt.056 (Payment Cancellation Request) to the beneficiary bank via Fedwire or SWIFT. Recall is not guaranteed β the beneficiary bank may reject the recall if funds have been applied to the beneficiary account.
Request Body
{
"reason": "DUPL",
"reasonDetail": "Duplicate wire transfer β original payment ref CLOSING-2026-03-14-001 was resent in error.",
"requestorContactName": "Sarah Johnson",
"requestorContactPhone": "+1-212-555-0100"
}
Recall Reason Codes
| Code | Description |
|---|---|
DUPL | Duplicate payment β same payment sent twice |
TECH | Technical error β payment sent due to system error |
FRAD | Fraudulent origin β payment initiated without authorization |
CUST | Requested by the ordering customer β wrong beneficiary or wrong amount |
AM09 | Wrong amount β amount different from what was intended |
Response
202 Accepted
{
"data": {
"recallId": "rcl_9e3c7f1a2b4d",
"paymentId": "pmt_wire_f3a1b9c7d2e4",
"status": "recall_pending",
"camt056MsgId": "CNCL202603150001",
"submittedAt": "2026-03-15T14:00:00Z",
"responseDeadline": "2026-03-20T18:00:00Z"
}
}
Get Recall Status
Returns the current status of a recall request. Subscribe to the wire.recall.resolved webhook event for real-time notification of the beneficiary bank's response.
Wire Payment Object Reference
| Field | Type | Description |
|---|---|---|
paymentId | string | Unique PayPlus identifier. Format: pmt_wire_{16 chars} |
rail | string | "fedwire" or "swift" |
transferType | string | "customer_transfer" or "bank_transfer" |
status | string | Current payment status |
amount | integer | Amount in cents in the specified currency |
currency | string | ISO 4217 currency code |
uetr | string | Unique End-to-End Transaction Reference (UUID v4). Globally unique across all ISO 20022 payment networks. |
imad | string | Input Message Accountability Data (Fedwire only). Available after status = "submitted". |
omad | string | Output Message Accountability Data (Fedwire only). Available after status = "settled". |
swiftGpiStatus | string | SWIFT gpi tracker status (SWIFT only): ACSP, ACCC, RJCT, PDNG. |
settlementTimestamp | string | ISO 8601 timestamp of settlement confirmation. Present when status = "settled". |
referenceId | string | Your system's reference identifier (passed as pacs.008 EndToEndId) |