Wire overview
A wire is a Fedwire funds transfer, in or out, carried as ISO 20022 messages. This page covers the messages the bank builds and reads, how to send a wire, and the other kinds of wire the API has.
What a wire is here
The Wire Transfer object holds one Fedwire transfer. Its direction is outbound or inbound, and its kind is customer, bank or return. A simulator plays the Fedwire Funds Service today. The bank exchanges these messages with it, each under a head.001.001.03 header:
| Message | What the bank does with it |
|---|---|
pacs.008.001.08 | Customer credit transfer: built for a wire a customer sends, read for one that arrives. local_instrument is CTRC. |
pacs.009.001.08 | Bank transfer of the bank's own funds, sent and received. local_instrument is BTRC. |
pacs.004.001.10 | Payment return, sent and received. |
pacs.002.001.10 | The service's status report on a value message: ACSC settled, PDNG pending, RJCT rejected. |
camt.056.001.08 | Return request, sent and received. |
camt.029.001.09 | The answer to a return request: CNCL, RJCR or PDCR. |
admi.007.001.01, admi.002.001.01 | Receipt acknowledgement and message reject, the answers to a nonvalue message. |
Send a wire
POST /transfers/wire sends a customer wire from an account. It requires an Idempotency-Key. A customer's token also needs a step-up within the last five minutes, or the answer is step_up_required.
account_idstringRequiredThe account that pays. It must be open and free of debit restrictions.
amountintegerRequiredMinor units. Must be positive.
currency_codestringRequiredISO 4217. It must be the account's currency.
counterpartyobjectRequiredThe receiving bank and the beneficiary. aba, bank_name, account_number and name are required. aba is a nine-digit routing number with a valid check digit; any other value answers payments.invalid_routing_number. Optional: address (up to three lines of 35 characters), city, state, postal_code and country.
memostringOptionalInformation for the beneficiary. The message carries up to four lines of 35 characters.
What happens to the request
- The account's approval policy and payment limits are checked. A refusal is
payments.approval_requiredorpayments.limit_exceeded. - A
pending_debithold reserves the amount. If the available balance cannot cover it and the account's overdraft decision does not pay it, the answer isledger.insufficient_available. - The beneficiary's name is screened against the sanctions lists. Any result other than
clearstores the wire asheld_for_reviewand sends nothing. The outbound fraud rules run next and can hold it the same way. - If Fedwire is not taking customer transfers, the wire is stored as
queuedand leaves at the next opening. A cycle takes them from 9:00 p.m. ET the evening before a banking day until 6:00 p.m. ET. - Otherwise the bank builds the pacs.008, names the originator from the customer record (legal name and address), and sends it. On
ACSCthe wire issettled: the account is debited and the hold released.
The response is the wire in the state it reached. States and notifications lists every state.
IMAD, OMAD and UETR
imad is the input message accountability data the bank assigns when a message leaves: the cycle date, an eight-character source and a six-digit sequence. omad is the output message accountability data the service returns when it accepts the message. uetr is the unique end-to-end transaction reference, and value_date the Fedwire cycle date the wire settles on.
Bank transfers
Treasury moves the bank's own funds with POST /rails/wire/bank-transfers: a pacs.009 paid from a GL account. It takes gl_code, amount, currency_code (USD), receiver_aba, receiver_name and operator. Only operations staff and the operations service may call it. The transfer is always created held_for_review: a second operator approves it on the review route, and the operator who asked for it is answered forbidden. A bank transfer that arrives is booked to the transit account, GL 2320, as received until operations classify it.
International
Two other resources send money abroad, and neither is a Fedwire. An International Wire (/transfers/international-wire) is a CBPR+ pacs.008 addressed by the creditor agent's BIC, over a network that is also a simulator. An International Transfer (/transfers/iat) is an ACH entry of the IAT class.
Testing
The simulated service settles an outbound wire at once. POST /simulate/transfers/wire/receive plays another bank wiring one of the bank's account numbers, and POST /simulate/transfers/wire/bank-receive delivers a pacs.009. See Sandbox and testing.