Quick start

The quick start guide brings you through the process of signing up for Moov, getting authorized for production, and creating user accounts.

This guide focuses on the quickest and easiest way to get set up and create your first merchant account with Moov - through our Dashboard. After setting up an account and adding users and merchants, you can complete more complex operations with Moov. While many operations can be completed in the Dashboard, you have other integration options. View the full reference guides by clicking on the cards below:

See our integration guide for more information. Also check out our glossary for a list of terms associated with Moov.

Sign up for Moov

Use the Moov Dashboard to create a Moov account. You’ll instantly have access to a test account. To be approved for a production account that can move money, you’ll need to provide more details about your business. A representative from Moov will reach out to you to complete your profile.

An individual with administrator or developer permissions is required to take the actions laid out in this guide.

Create API keys

To use Moov’s API, you’ll need to generate keys. In the Dashboard, navigate to Developers and click the New API key button. Test mode and production mode each require their own API keys. To create an API key:

  1. Name the API key (we suggest giving it a name that relates to the purpose)
  2. Make sure to copy the key and save it in a secure place
  3. Add any domains you’ll use for testing and production
  4. Optional: Include a note to remind you where the key is stored

Read the API keys documentation for more information. If you’re ready to jump into production mode, make sure to take any necessary precautions if you’ve previously been using test mode.

Optional: Explore test mode

While test mode is optional, we strongly suggest you try it out. In test mode, test data is automatically enabled in the Dashboard, which allows you to explore how the platform works. Make sure you’re in test mode by using the account switcher on the top left of the Dashboard view.

Toggle for test account in Moov Dashboard

Try out the following:

  • Add a bank account
  • Initiate verification
  • Initiate a transfer
  • Initiate a return

Switch to production mode

When you’re ready to switch to production mode, use the account switcher to change modes. Before you start using production mode, make sure to:

  • Have your production API key
  • Switch out the account ID anywhere it’s hard coded
  • Set up new webhook URLs if you used any in test mode

Onboard with hosted onboarding

Moov’s hosted onboard flow allows you to select capabilities, pre-fill existing information, and select a fee plan before sending a merchant a link to a secure session to finish the sign up process. A merchant can be redirected to your app upon completion.

All PII goes straight to Moov, so you won’t be responsible for storing or handling sensitive user data.

You’ll pre-fill information and send a secure session link to a co-branded UI to your merchant. The merchant can start and pause the process, picking up where they leave off. During the process, the merchant will give you permission to perform actions on their behalf, as well as agree to the terms of service agreement and pricing disclosure.

Merchant onboarding flow

You can track the status of a merchant’s application by navigating to the onboarding links section of the Dashboard. Visit our hosted onboarding guide for more details.

Determine Capabilities

Capabilities indicate what an account is able to do. Before you begin the hosted onboarding process, decide what capabilities the account will need:

  • Transfer: Authorize debit transfers
  • Wallet: Store funds with Moov
  • Send funds: Send funds to another account
  • Collect funds: (business accounts only): Collect funds from another account
  • Card issuing beta: (business accounts only): Provide a virtual card to a merchant

Each capability has different data and verification requirements depending on whether the account represents an individual, or a business. You should familiarize yourself with capability requirements before moving on to the next step.

See our capabilities section for more information.

Choose pricing fee plan

During the onboarding process, you’ll also select a fee plan for your merchant, which they will agree to as part of their terms of service platform agreement. After selecting a plan, the pricing disclosure will show the rates for the following:

  • ACH
  • Instant payments (AFT, OCT, RTP)
  • Card acquiring
  • Transaction management fees
  • Platform fees
  • Network fees

With a cost plus plan, card networks’ interchange fees and Moov’s processing markup are passed along to the merchant. With a flat rate plan, you can lump all the processing fees together with a flat rate customized for each merchant.

When you create a fee plan, you can use it once, or reuse it and assign it to many merchants. A merchant must accept the fee plan and enter into a fee agreement before it can go into effect.

Choose billing plan

See our pricing guide for more information and details on billable events.

Alternative: Onboard with Moov.js and Drops

While Moov strongly suggests our hosted onboarding process, you can also use our onboarding Drops. Drops are pre-built, customizable UI components that take care of the entire account creation workflow within your application. The Drop interacts directly with Moov’s API using JWTs to securely send data between your end users browser and Moov. Drops provide a secure flow, and PII goes straight to Moov, so you won’t be responsible for storing or handling sensitive user data.

The Drop is an HTML element with properties accessed through JavaScript using a reference to the moov-onboarding element.

1
<moov-onboarding></moov-onboarding>
1
2
const onboarding = document.querySelector('moov-onboarding');
onboarding.token = 'eyjh...';

See our onboarding Drop guide for detailed instructions. Also see our Moov.js and Drops 101 guides for general information.

Funding source

A merchant will add their bank account as funding source during their onboarding process. When a merchant adds their bank account, it sets the verification process in motion. If their bank supports instant micro-deposit, they will be required to check their bank account and enter the the MV### code that appears in the transaction description.

Otherwise, they will need to complete the traditional micro-deposit process by entering in the two amounts that appear in their bank account.

See our funding sources section for more information.

Integrate & initialize

You can complete various operations in the Dashboard, but complex transactions will require a more robust integration. With a server-side integration, you are responsible for handling and storing sensitive user information. With a client-side integration, you can use Moov.js to streamline interactions with the API and avoid storing or handling sensitive information yourself.

Server-side: Basic authentication

You can use your API public and private keys with Basic authentication.

Set the Authorization header to Basic <credentials>, where credentials is the Base64 encoding of public key and private key.

1
"Authorization": "Basic <credentials>"
Only use this method if you are developing a server-side integration. If you are developing a client-side integration, use OAuth instead.

Client-side: OAuth with JWT

You can set up authentication with OAuth and initialize Moov.js in your application. When making requests to Moov from a browser, you can use OAuth with JSON Web Tokens (JWT).

If using a client-side integration, you’ll also need to work with scopes. A scope is a permission that limits how a specific account can interact with another account.

Initialize

The following examples show how to initialize Moov with your chosen integration.

1
mc := moov.NewClient()
1
const moov = Moov(token);

Move money

After successfully creating a merchant account with a funding source, you’re ready to move money. Before initiating a transfer, you’ll need to get a payment method. You can retrieve a list of all available payment methods for an account by entering the account ID and the amount of the transfer. For example, you can transfer money from a Moov wallet, or pull funds from another account. The Dashboard will list available payment methods when you create a transfer.

For the purposes of this guide, we’ll be providing cURL and Go SDK examples. Explore the integration options at the top of this guide for other examples.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
curl -X POST "https://api.moov.io/transfer-options" \
  -H "Authorization: Bearer {token}" \
  --data-raw '{
    "amount": {
      "value": 100,
      "currency": "USD"
    }
    "destination": {
      "accountID": "UUID"
    },
    "source": {
      "accountID": "UUID"
    }
  }'\
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
const moov = new Moov(credentialsObject);

const transferOptions = {
  amount: {
    value: 100, 
    currency: "USD"
  },
  destination: {
    accountID: UUID
  },
  source: {
    accountID: UUID
  }
}

const options = await moov.transfers.getTransferOptions(transferOptions);

Finally, to initiate a transfer, provide the two payment method IDs and the amount you want to send.

 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."
  }'\
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16

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.",
})

View the money movement section for more information.

Next steps

Check out our webhook section where you can view all of the available webhooks and a how-to set up guide.

Summary Beta