Wire Transfers (Fedwire / SWIFT)

Rails: Fedwire Funds (domestic) Β· SWIFT (cross-border) Settlement: Real-time (Fedwire) Β· T+1 to T+3 (SWIFT) Message Standard: ISO 20022 pacs.008 / pacs.009

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

ScenarioRail UsedNotes
USD transfer to a US bank (domestic)FedwireReal-time RTGS settlement. Fedwire operates Mon–Fri within operating hours only.
USD transfer to a non-US bankSWIFT (USD correspondent chain)Routes through your institution's USD correspondent bank.
Non-USD currency transfer (EUR, GBP, etc.)SWIFTPayPlus applies the configured correspondent routing for the currency pair.
Bank-to-bank cover paymentFedwire (pacs.009) or SWIFT (MT 202/pacs.009)Specify "transferType": "bank_transfer" in the request.

Initiate a Wire Transfer

POST /v2/payments/wire

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

FieldTypeDescription
transferTypestringOptional"customer_transfer" (default β€” customer credit transfer, pacs.008) or "bank_transfer" (interbank/cover payment, pacs.009).
amountintegerRequiredAmount in cents (USD, or target currency if currency is specified). No maximum for Fedwire; SWIFT limits vary by correspondent arrangement.
currencystringOptionalISO 4217 currency code. Default: "USD". Non-USD currencies automatically route to SWIFT.
valueDatestring (date)OptionalRequested 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.
originatorobjectRequiredOrdering customer or institution. See Originator Object.
beneficiaryobjectRequiredBeneficiary customer or institution. See Beneficiary Object.
beneficiaryBankobjectRequiredBeneficiary's bank. For Fedwire: routingNumber (ABA). For SWIFT: bic (8 or 11 chars).
intermediaryBankobjectOptionalIntermediary/correspondent bank for SWIFT correspondent chains. Fields: bic, name, address.
remittanceInfostringOptionalUnstructured remittance information. Passed in pacs.008 RmtInf/Ustrd. Maximum 140 characters (Fedwire); 210 characters (SWIFT MT 103 field 70).
purposeCodestringOptionalISO 20022 purpose code (e.g., BEXP for business expenses, DIVI for dividends). Required for some cross-border SWIFT corridors.
referenceIdstringOptionalYour system reference. Maximum 35 characters. Passed in pacs.008 EndToEndId.

Originator Object (Wire)

FieldTypeDescription
namestringRequiredFull name of originating customer or institution.
accountNumberstringRequiredOriginating account number at the sending bank.
routingNumberstringFedwire: RequiredSending bank ABA routing number.
addressobjectRequiredFull address. Required for Travel Rule compliance: street, city, state, postalCode, country (ISO 3166-1 alpha-2).
leistringOptionalLegal 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

GET /v2/payments/wire/{paymentId}

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

StatusDescription
validatedFormat validation passed; awaiting approval
pending_approvalAwaiting dual-control approval (typical for high-value wires)
compliance_holdOFAC screening hold β€” Compliance Officer action required
approvedApproved; queued for Fedwire operating hours (if after-hours) or immediate submission (if during hours)
submittedSubmitted to Fedwire or SWIFTNet; awaiting settlement confirmation
settledFedwire settlement confirmed (RTGS, immediate) or SWIFT correspondent confirmed receipt
recall_pendingRecall request submitted (camt.056); awaiting beneficiary bank response
recalledFunds returned following successful recall
recall_rejectedRecall request rejected by beneficiary bank
rejectedRejected by PayPlus compliance or by Fedwire/SWIFT network

Request Wire Recall

POST /v2/payments/wire/{paymentId}/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.

Recall Is Not Reversal A recall request is a request β€” not a reversal. The beneficiary bank must agree to return the funds. For SWIFT, the SWIFT gSRP (global Stop and Recall) process is used. For Fedwire, the Federal Reserve facilitates the recall inquiry but cannot force the return of funds. Contact the beneficiary bank directly in parallel with the API recall request.

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

CodeDescription
DUPLDuplicate payment β€” same payment sent twice
TECHTechnical error β€” payment sent due to system error
FRADFraudulent origin β€” payment initiated without authorization
CUSTRequested by the ordering customer β€” wrong beneficiary or wrong amount
AM09Wrong 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

GET /v2/payments/wire/{paymentId}/recall

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

FieldTypeDescription
paymentIdstringUnique PayPlus identifier. Format: pmt_wire_{16 chars}
railstring"fedwire" or "swift"
transferTypestring"customer_transfer" or "bank_transfer"
statusstringCurrent payment status
amountintegerAmount in cents in the specified currency
currencystringISO 4217 currency code
uetrstringUnique End-to-End Transaction Reference (UUID v4). Globally unique across all ISO 20022 payment networks.
imadstringInput Message Accountability Data (Fedwire only). Available after status = "submitted".
omadstringOutput Message Accountability Data (Fedwire only). Available after status = "settled".
swiftGpiStatusstringSWIFT gpi tracker status (SWIFT only): ACSP, ACCC, RJCT, PDNG.
settlementTimestampstringISO 8601 timestamp of settlement confirmation. Present when status = "settled".
referenceIdstringYour system's reference identifier (passed as pacs.008 EndToEndId)
← Instant Payments Next: Webhooks β†’