Cash out a wallet

Cash out a Moov wallet by creating a transfer from the wallet to a linked bank account. To cash out automatically every day, set up sweeps instead.

Before you start

  • The account has a send-funds capability for the rail you'll use (send-funds.ach or send-funds.instant-bank)
  • A linked bank account on the receiving account
  • Enough availableBalance in the wallet to cover the amount and any payout fee

Choose a speed

Destination payment method Funds arrive Details
instant-bank-credit Seconds, 24/7/365 (RTP or FedNow) Instant payments
ach-credit-same-day End of the same banking day, if created before the cutoff ACH cutoff times
ach-credit-standard Next banking day ACH processing speed

rtp-credit also appears on eligible bank accounts, but use instant-bank-credit instead (rtp-credit will be deprecated). Per-transfer limits are in transfer limits.

Cash out with the API

To cash out from the Dashboard instead, create a transfer with the wallet as the source.

Get accountID

Identify the accountID for the Moov account with the wallet you would like to cash out. If you don't already have it, you can use the list accounts GET endpoint as shown below.

List account reference

curl -X GET "https://api.moov.io/accounts" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2026.07.00"

Select the payment methods for the transfer

Get the paymentMethodIDs to use as the source and destination when creating a transfer in the next step.

List payment methods reference

curl -X GET "https://api.moov.io/accounts/{accountID}/payment-methods" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2026.07.00"

A successful response will return an array of payment methods of different types. For the transfer source, you'll select the payment method ID associated with the moov-wallet payment method type.

For the transfer destination, choose the bank account payment method for the speed you picked: instant-bank-credit, ach-credit-same-day, or ach-credit-standard.

Create the transfer

Create the transfer with the payment method IDs from step 2. When it completes, funds settle in the destination bank account.

Create transfer reference

curl -X POST "https://api.moov.io/accounts/{accountID}/transfers" \
  -H "Authorization: Bearer {token}" \
  -H "x-idempotency-key: UUID" \
  -H "X-Wait-For: rail-response" \
  -H "x-moov-version: v2026.07.00" \
  --data-raw '{
    "amount": {
      "value": 100,
      "currency": "USD"
    },
    "destination": {
      "paymentMethodID": "string"
    },
    "source": {
      "paymentMethodID": "string"
    },
    "description": "Optional transaction description."
  }'

Track the status of the transfer

Track the status of the wallet-to-bank transfer by retrieving it or with webhooks. The transfer status is completed when the bank account has been credited.

Retrieve a transfer reference

curl -X GET "https://api.moov.io/accounts/{accountID}/transfers/{transferID}" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2026.07.00"

Subscribe to the transfer.updated webhook event to get each status change. Until an ACH credit originates, you can cancel it. Instant payments are final once sent.

Next steps