What is a wire transfer?

Wire

A wire is a bank-to-bank transfer sent over a wholesale network such as Fedwire or CHIPS. It is used for large or time-sensitive payments. Wires are usually same-day and hard to reverse once the receiving bank has accepted them. Fees are higher than ACH.

How does a wire transfer work?

The sending bank debits the sender and sends an instruction on the wire network. The receiving bank credits the beneficiary when it accepts. Cutoffs are earlier than ACH. Fees are higher. A wrong account number is painful because there is no cheap return window like ACH.

Wire vs ACH

ACH is a retail batch network. A wire is a wholesale message. ACH can take days and can come back. A wire is meant to be final the same day. Use wires for size and certainty. Use ACH for volume and cost.

Domestic vs international wires

A US domestic wire often travels on Fedwire. A cross-border wire often travels on SWIFT as a message, then settles through correspondent banks. SWIFT is the message. The correspondent chain is the movement. Your ledger still records one obligation per hop you are responsible for.

How it works with Blnk

Blnk records the wire obligation. The sending bank still transmits the message.

For a payout, the source is the customer wallet and the destination is @PayoutUSD_Wire. Hold it inflight until the bank confirms, then commit. Void it if the bank rejects the wire.

We use @PayoutUSD_Wire because it is a system balance that belongs to the organization. Blnk calls these internal balances.

Record a wire payout in four steps:

  1. Name the source and destination

    The source is the customer wallet. The destination is @PayoutUSD_Wire. The amount stays on that internal balance until the bank confirms.

  2. Record the transfer inflight

    Create the transaction with inflight: true. Settled balances stay unchanged until the bank confirms.

    record-wire.ts
    await blnk.Transactions.create({
      precise_amount: 2500000,
      precision: 100,
      reference: 'wire_out_20260816_001',
      currency: 'USD',
      source: 'customer_wallet_id',
      destination: '@PayoutUSD_Wire',
      description: 'Payout via wire',
      inflight: true,
      meta_data: {
        rail: 'wire',
        imad: '20260816MMQFMP7B000123',
        beneficiary_name: 'Ada Lovelace',
        customer_id: 'cus_8f21a4',
      },
    });
  3. Commit the confirmation or void a rejection

    Commit when the bank confirms. Void the post if the bank rejects the wire. See update inflight.

    Commit
    await blnk.Transactions.updateStatus(
      'txn_c4e70eb8-e4d6-4e04-a2e2-92a43b969e0c',
      { status: 'commit' },
    );
    Void
    await blnk.Transactions.updateStatus(
      'txn_c4e70eb8-e4d6-4e04-a2e2-92a43b969e0c',
      { status: 'void' },
    );
  4. Match the wire report

    Upload the wire report in reconciliation and match each line to the committed or voided post.