Skip to content

Quick start

Here’s an overview of how you can get up and running with Moov. To get started on our platform, you’ll need to:

  • Create an account
  • Get your API keys
  • Create an access token

After completing these steps, you’ll be ready to link a bank account and initiate a transfer, which we’ll also cover in this guide.

tip
Moov.js is a browser-side JavaScript library for collecting sensitive data and interacting with our API. To get started with Moov.js, check out our Moov.js quick start guide.
Be sure to read up on Moov’s core concepts.

Create an account

If you don’t already have an account, create one here.

Get API keys

Once you have an account with Moov, you can retrieve your API keys. Set the permissions you want to designate for your API key.

Create an access token

Within your server-side application, you’ll generate a single-use access token containing information needed to communicate with your Moov account securely. Once you’ve generated this token, you can use it to make calls from the server or send it back to your client to use with Moov.js.

Diagram showing token generation process

Specify scopes: A scope is a permission that determines the limits of what a specific account can do on another account. For example, you may want an account to request money from another account but not pull money from another account. In other instances, you may want to set the scope for an account only to receive money from other accounts.

1
2
3
4
5
curl -X POST "https://api.moov.io/oauth2/token" \
  -u "client_id:client_secret" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "grant_type=client_credentials"
  --data-urlencode  "scopes=/accounts.write"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
const fetch = require("node-fetch");
const keys = Buffer.from(`${public_key}:${private_key}`).toString("base64");
const response = await fetch("http://api.moov.io/oauth2/token?grant_type=client_credentials", {
    method: "POST",
    headers: {
        "Authorization": `Basic ${keys}`,
        "Content-Type": "application/x-www-form-urlencoded"
    },
    body: {
      scopes: "scopes=/accounts.write"
    }
});
const data = await response.json();
const token = data.access_token;

Once you’ve completed these three steps, you can start moving money by adding accounts to pay, linking your bank account, and initiating a transfer.

Add an account to pay

To start paying others, you can set up others with Moov accounts. If you’d like to link a Moov account to an account in your system, you have the option to pass a foreign ID.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
curl -X POST https://api.moov.io/accounts
  -u {token}
  -H "Content-Type: application/json" \
  -data-raw '{
    "accountType": "business",
    "profile": {
      "business": {
        "legalBusinessName": "Whole Body Fitness LLC",
        "businessType": "llc",
      }
    }
  }'
1
2
3
4
5
6
7
8
9
moov.accounts.create({
  "accountType": "business",
  "profile": {
    "business": {
      "legalBusinessName": "Whole Body Fitness LLC",
      "businessType": "llc",
    }
  }
})
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
const fetch = require("node-fetch");
const response = await fetch(
  "http://api.moov.io/accounts", {
  method: "POST",
  headers: {
      "Authorization": `Bearer ${token}`,
      "Content-Type": "application/json"
  },
  body: {
    "accountType": "business",
    "profile": {
      "business": {
        "legalBusinessName": "Whole Body Fitness LLC",
        "businessType": "llc",
      }
    }
  }
});
const data = await response.json();
const token = data.access_token;

To move funds, you’ll need to link a bank account. Once the linked bank account has is verified, you are ready to move money.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
curl -X POST https://api.moov.io/accounts/{account_id}/bank-accounts \
  -u {token} \
  -H "Content-Type: application/json" \
  --data-raw '{
    "account": {
        "holderName": "Harley Avery",
        "holderType": "individual",
        "accountNumber": "XXXXXXXXXXXXXX",
        "bankAccountType": "checking",
        "routingNumber": "XXXXXXXXXXX"
    }
  }'

Initiate a transfer

Get the payment method

A payment method specifies the way a Moov account will be moving money. There are several different methods for transferring money with Moov—for example, you can transfer money from the Moov wallet, or you might want to pull funds from another account through ACH debit. Before making a transfer, you will need to get a payment method.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
curl -X GET https://api.moov.io/accounts/{application_account_id}/transfers-options \
  -u {token} \
  --data-raw '{
    "source": {
      "accountId": "UID",
    },
    "destination": {
      "accountId": "UID",
    },
    "amount": {
      "value": 100,
      "currency": "usd"
    }
  }'

Make the transfer

To initiate a transfer from your account, you’ll need to pass the following information to Moov:

  • Account information for the entity sending funds, also known as the “source”
    • By default, you have $10 in your Moov wallet you can use for your test transfer. If you’re using those funds for test transfer, the Moov wallet would be the source.
  • Account information for the entity receiving funds, also known as the “destination”
  • Amount
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
curl https://api.moov.io/accounts/{application_account_id}/transfers \
  -u {token} \
  --data-raw '{
    "source": {
      "paymentMethodID": "UID",
    },
    "destination": {
      "paymentMethodID": "UID",
    },
    "amount": {
      "value": 100,
      "currency": "usd"
    },
    "description": "Paying Jules for last 4 classes"
  }'

What’s next

Once you’ve gotten set up, you can continue to make transfers or accept payments. You can also customize your account settings, add team members, and manage roles and permissions in the Moov dashboard. Feel free to explore our API reference to see example requests/responses or get more context on a particular endpoint.