Cash out a wallet

Follow this step by step guide to cash out funds from a Moov wallet with our API, SDKs, or Moov.js.

This guide covers how to cash out funds from a Moov wallet. If you’re looking to cash out funds but haven’t yet linked and verified a bank account, see our step by step guide on linking bank accounts.

There are other things you can do with wallet funds, such as:

  • Spend on an issued card
  • Transfer funds to another Moov wallet

For the purposes of this guide, we’ll cover cashing out funds through a wallet-to-bank transfer.

Get accountID

The first step is identifying theaccountID 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

1
2
curl -X GET "https://api.moov.io/accounts/" \
  -H "Authorization: Bearer {token}" \

List account reference

1
2
3
mc := moov.NewClient()

mc.ListAccounts(ctx)

List account reference

1
2
3
const moov = new Moov(credentialsObject);

moov.accounts.list();

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

1
2
3
4
5
curl -X GET "https://api.moov.io/accounts/{accountID}/payment-methods \
  -H "Authorization: Bearer {token}" \
  --data-raw '{
    "accountID"
  }'\

List payment methods reference

1
2
3
mc := moov.NewClient()

mc.ListPaymentMethods(ctx, account.AccountID)

List payment methods reference

1
2
3
const moov = new Moov(credentialsObject);
const accountID = "accountID";
moov.accounts.paymentMethods.list({accountID});

List payment methods reference

1
2
3
const moov = Moov(token);
const accountID = "accountID";
moov.accounts.paymentMethods.list({accountID});

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, you can choose the payment method ID associated with one of the following payment method types surfaced in the response:

  • ach-credit-standard
  • ach-credit-same-day
  • rtp-credit

To learn more about the timing associated with these payment methods, read our guides on ACH and RTP:

Create the transfer

Using the payment method IDs you got from step 2, you can now initiate a transfer. Once the transfer has completed, the funds will settle in the destination bank account.

Create transfer reference

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
curl -X POST "https://api.moov.io/transfers" \
  -H "Authorization: Bearer {token}" \
  -H "X-Idempotency-Key: UUID" \
  -H "X-Wait-For: rail-response" \
  --data-raw '{
    "amount": {
      "value": 100,
      "currency": "USD"
    },
    "destination": {
      "paymentMethodID": "UUID"
    },
    "source": {
      "paymentMethodID": "UUID"
    },
    "description": "Optional transaction description."
  }'\

Create transfer reference

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
mc := moov.NewClient()

mc.CreateTransfer(ctx, moov.CreateTransfer{
  Amount: moov.Amount{
    Currency: "usd",
    Value:    100, // $1.00
  },
  Destination: moov.CreateTransfer_Destination{
    PaymentMethodID: "UUID",
  },
  Source: moov.CreateTransfer_Source{
    PaymentMethodID: "UUID", 
  },
  Description: "Optional transaction description.",
})

Create transfer reference

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
const moov = new Moov(credentialsObject);

const transfer = await moov.transfers.create({
  amount: {
    value: 100,
    currency: "USD"
  },
  destination: {
    paymentMethodID: "UUID"
  },
  source: {
    paymentMethodID: "UUID"
  },
  description: "Optional transaction description."
});

Track the status of the transfer

After you’ve created the bank-to-wallet transfer, you can track the status of the transfer by retrieving the transfer or using webhooks.

Retrieve a transfer reference

1
2
curl -X GET "https://api.moov.io/transfers/{transferID}" \
  -H "Authorization: Bearer {token}" \

Retrieve a transfer reference

1
2
3
mc := moov.NewClient()

mc.GetTransfer(ctx, TransferID)

Retrieve a transfer reference

1
2
3
const moov = new Moov(credentialsObject);

const transfer = await moov.transfers.getTransfer(transferID);

To use webhooks to track the transfer’s status, you can subscribe to the transfer.updated event. Read our webhooks guide to learn more.

Next steps

Beyond cashing out a wallet, you may also want to know how to use wallet funds to send payouts, or generally keep track of your wallet balance.

Summary Beta