What is FedNow?

FedNow

FedNow is the Federal Reserve’s instant payments service. Participating banks can send and receive US dollar credits in seconds, 24 hours a day. Acceptance is final. It sits next to RTP as a second instant rail, not as a replacement for ACH.

How does FedNow work?

A participating bank submits a payment to the Federal Reserve. The Reserve posts it to the banks’ master accounts and notifies both sides. The receiver can use the funds as soon as its bank accepts. There is no end-of-day batch for the payment itself.

FedNow vs RTP

Speed and finality look the same to a customer. The operator and the set of reachable banks differ. Some banks are on one network, some on both. Your processor chooses the path. Your ledger should record the movement the same way either way.

FedNow vs ACH

ACH is batched, cheaper, and can debit an account. FedNow is instant, more expensive, and built for credits. Do not promise FedNow speed on an ACH pull. Do not run FedNow traffic through an ACH recon file and hope the timestamps match.

How it works with Blnk

Blnk records the instant payout. The Federal Reserve and the participating banks still move the funds.

For a payout, the source is the customer wallet and the destination is @PayoutUSD_FedNow. Hold it inflight until the bank accepts, then commit. Void the post if the send fails.

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

Record a FedNow payout in four steps:

  1. Name the source and destination

    The source is the customer wallet. The destination is @PayoutUSD_FedNow.

  2. Record the transfer inflight

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

    record-fednow.ts
    await blnk.Transactions.create({
      precise_amount: 25000,
      precision: 100,
      reference: 'fednow_out_20260816_001',
      currency: 'USD',
      source: 'customer_wallet_id',
      destination: '@PayoutUSD_FedNow',
      description: 'Payout via FedNow',
      inflight: true,
      meta_data: {
        rail: 'fednow',
        message_id: '20260816FRNY001',
        receiving_routing: '021000021',
        customer_id: 'cus_8f21a4',
      },
    });
  3. Commit the acceptance or void a failed send

    Commit when the bank accepts. Void the post if the send fails. 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 FedNow activity file

    Upload the FedNow activity file in reconciliation, not an ACH file.