Transfers
Webhooks
Start a transfer
The source and destination payment methods you choose set the rail, and with it the cost, speed, and risk. See choose a payment method to compare them.
A 2xx response to a create transfer request means Moov accepted the transfer, not that money moved. To create transfers, retry them safely, list them, or manage them in the Dashboard, see create & manage transfers.
Track a transfer as it moves
Each rail moves money on its own schedule:
- Cards authorize in seconds, then settle overnight at the card brand's cutoff.
- ACH moves in batches. A transfer waits for the next cutoff, and banking days are Monday through Friday.
- Instant payments (RTP or FedNow) and push to card run in seconds or minutes, 24/7/365.
A transfer has an overall status, and each leg has its own rail status, such as cardDetails.status or achDetails.status. Both change over time, and the transfer.updated webhook tells you when. The statuses & webhooks guide lists all statuses and associated webhooks.
Bank holidays
Transfers created on a bank holiday process on the next banking day, and card settlement due on a holiday shifts to the next banking day. Instant payments (RTP or FedNow) and push to card run every day. The Dashboard shows a notice before an upcoming holiday, and the Federal Reserve publishes the full schedule.
Federal Reserve holidays are New Year's Day, Martin Luther King Jr. Day, Presidents' Day, Memorial Day, Juneteenth, Independence Day, Labor Day, Columbus Day, Veterans Day, Thanksgiving Day, and Christmas Day.
Where the money lands
Money you collect lands in the receiving account's Moov wallet, not directly in a bank account. Card payments, pulls from cards, and ACH debits all credit a wallet. To get money to a bank account or card, you pay it out from the wallet, either one transfer at a time or automatically with a daily sweep.
A wallet's availableBalance only counts incoming funds once their transfer completes, and money you send out leaves it right away. See wallet balance.
The exception is a bank-to-bank ACH transfer: an ACH debit into Moov and an ACH credit out of Moov, in a single transfer. The funds pass through Moov without landing in a wallet you can spend from. See ACH.
Moov may temporarily hold incoming funds for review, for example on a new account or on unusually high volume. See fund a wallet.
Undo a payment
A completed payment isn't always final. A payment is cancelable until it moves. After that, the options depend on the rail:
| Rail | Before it moves | After it moves |
|---|---|---|
| Card | A reversal cancels the authorization until settlement | The same reversal becomes a refund, debited from the wallet right away |
| ACH | Cancel until the debit or credit originates | No refunds; send a new transfer in the opposite direction |
| Instant payments, push to card | — | Final once sent |
| Wallet to wallet | — | Send a new transfer back |
When something goes wrong
Some payments fail on the way, and some come back after they've completed. A cardholder can dispute a card payment, and a bank can return an ACH debit or credit weeks later. Moov takes that money back from the wallet that received it, even if it's already been paid out, so the wallet can go negative. Keep listening for webhooks after a payment completes.
Statuses & webhooks lists each case, the webhook that signals it, and what to do.
Timing by rail
The modeler uses this timing. Each rail's guide has the details.
| Rail | Cutoff | When funds arrive | How to undo | Can still come back |
|---|---|---|---|---|
| Card payment | Card brand settlement cutoff, early the next morning | Next banking day by 1:00 PM ET | Reversal cancels before settlement, refunds after | Disputes, debited from the wallet when the chargeback arrives |
| Pull from card | None, 24/7/365 | On authorization, for supported cards | Refund | Disputes |
| ACH debit | Same-day windows at 10:00 AM, 2:15 PM, and 4:15 PM ET | Morning of the second banking day; same day with faster ACH | Cancel until the debit originates | Returns, usually within 2 banking days; unauthorized returns up to 60 days after the effective date |
| Daily sweep | Sweep closes at 4:00 PM ET on banking days | Same day by 6:00 PM ET (same-day ACH), next banking day (standard ACH), or seconds (instant) | Not applicable; each payout is a transfer you can follow | A failed payout pauses the sweep until a new bank account is verified |
| Same-day ACH | Same-day windows at 10:00 AM, 2:15 PM, and 4:15 PM ET | Same banking day if created before the 4:15 PM ET cutoff | Cancel until the credit originates | The receiving bank can return it, usually within 2 banking days |
| Standard ACH | 5:30 PM ET | Next banking day | Cancel until the credit originates | The receiving bank can return it, usually within 2 banking days |
| Instant (RTP or FedNow) | None, 24/7/365 | Seconds | Final once sent | None after completion |
| Push to card | None, 24/7/365 | Within 30 minutes for fast funds cards | Final once the issuer approves it | None after completion |
| Wallet transfer | None | Immediately | Send a new transfer back | None after completion |
FAQ
Why did a transfer fail?
Can I re-start a transfer that never completed?
queued) can be replayed by Moov, but transfers with the failed status are in a "terminal state," meaning they cannot be replayed in our system. For reinitiating transfers that were in a terminal state, you will need to create a brand new transfer with the same details.How do I retrieve a large number of transfers?
count). For large result sets, use cursor pagination: when more transfers are available, the response includes an X-Next-Cursor header. Pass its value as the cursor query parameter, with the same filters and count, to get the next page. Filters such as startDateTime and endDateTime, status, and accountIDs keep each page to the transfers you need.Create & manage
Create Moov transfers with the API or Dashboard, retry safely with idempotency keys, get transfer options, and paginate transfer history with cursors.
Payment methods
Choose a Moov payment method by speed and undo option, see valid source and destination pairs, the capabilities each needs, and transfer limits.
Schedules
Automate future-dated and recurring transfers with the Moov schedules API or Dashboard, using an RRULE recurrence or your own list of occurrence dates.
Transfer groups
Chain Moov transfers into a group that runs in sequence, so a customer payment can be split to a platform and service providers with a shared groupID.
Receipts
Send branded email receipts to payers for single transfers or every occurrence in a schedule with the Moov receipts API, including refund and failure emails.
Statuses & webhooks
Transfer statuses, transfer responses, the webhooks that track each transfer, why transfers fail or are reversed, and what to do about each case.
Transfers API reference
Endpoints, parameters, and examples for this area.