Small business

Moov is your single vendor for running and managing a modern payment solution that will reduce costs for your small business.

This guide focuses on the quickest and easiest way to get started with the features of Moov we think you’ll find most useful running a small business. Onboard customers to a secure payment platform, send payment link QR codes, and smoothly handle refunds and disputes.

Moov offers a variety of integration options to get started. Use Drops or the Dashboard UIs for a low to no-code solution, or choose the API or one of many SDKs for more complex integrations.

For the purposes of this guide, we’ll provide Dashboard and API examples.

Onboard customers

As you move through the onboarding process to create Moov accounts, some data is required while other data is optional. To view our full onboarding guides, visit the Dashboard or main onboarding guides.

Onboarding data Required
Capabilities
Fee plan
Scopes
Return URL X
Terms of service URL X
Prefilled data X

Capabilities determine what each Moov account can do, such as receiving transfers, or sending money to others. For risk and fraud protection purposes, we require detailed information when requesting capabilities. For example, we’ll request more details if an account wants to collect funds than we would for an account receiving funds.

Pricing & fee plans can be assigned to one merchant or reused for many merchants. Merchants must agree to and accept the fee plan before it can go into effect. Moov offers two types of plans:

  • Cost plus: With a cost plus plan, card networks’ interchange fees and Moov’s processing markup are passed along to the merchant. Cost plus plans are beneficial for merchants with a high and varied transaction volume that prefer to have more control over fees. Fees are broken down into a more digestible and transparent format.
  • Flat rate: With a flat rate plan, you can lump all the processing fees together with a flat rate customized for each merchant. Flat plans are beneficial for merchants with a low transaction volume that prefer a predictable solution over lowering cost as much as possible.

Scopes are used to determine what can be done with the account once it’s onboarded. For example, the /accounts.read scope provides access to view all connected user accounts and the /accounts/{accountID}/files.read scope provides access to view or upload files associated with a Moov account.

Read more on required data in our documentation:

Moov will send the terms of service platform agreement as part of the onboarding process through the Dashboard. Everyone with a Moov account must agree to and accept the terms of service before using Moov.

The following clip demonstrates how to create a new onboarding link in the Dashboard:

You’ll need to generate and send a terms of service platform agreement as part of the onboarding process. Everyone with a Moov account must agree to and accept the terms of service before using Moov. If you’re using the API, an SDK, or Moov Drops to onboard, see the terms of service platform agreement guide for more information and instructions.

The following is a sample request to create an onboarding invite with all available data:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
curl --X POST "https://api.moov.io/onboarding-invites" \
  -H "Authorization: Bearer {token}" \
  --data-raw '{
    "returnURL": "https://mycompany.com/account",
    "termsOfServiceURL": "https://mycompany.com/terms-of-service",
    "scopes": [
     "accounts.read"
    ],
    "capabilities": [
      "transfers",
      "wallet"
    ],
    "feePlanCodes": [
      "merchant-direct"
    ],
    "prefill": {
      "mode": "production",
      "accountType": "business",
      "profile": {
        "business": {
          "legalBusinessName": "LBM Lenders LLC",
          "doingBusinessAs": "LBM Lenders",
          "businessType": "llc",
          "address": {
            "addressLine1": "123 Main Street",
            "addressLine2": "Apt 302",
            "city": "Boulder",
            "stateOrProvince": "CO",
            "postalCode": "80301",
            "country": "US"
          },
          "phone": {
            "number": "8185551212",
            "countryCode": "1"
          },
          "email": "amanda@classbooker.dev",
          "website": "www.lbmlenders.com",
          "description": "Financial institution for personal lending",
          "taxID": {
            "ein": {
              "number": "123-45-6789"
            }
          },
          "industryCodes": {
            "naics": "522291",
            "sic": "6141",
            "mcc": "6141"
          },
          "primaryRegulator": "FDIC"
        }
      },
      "metadata": {
        "property1": "string",
        "property2": "string"
      },
      "termsOfService": {
        "token": "kgT1uxoMAk7QKuyJcmQE8nqW_HjpyuXBabiXPi6T83fUKRJkA3dsFID6fzitMpm2qrOh4"
      },
      "foreignID": "4528aba-b9a1-11eb-8529-0242ac13003",
      "customerSupport": {
        "phone": {
          "number": "8185551212",
          "countryCode": "1"
        },
        "email": "amanda@classbooker.dev",
        "address": {
          "addressLine1": "123 Main Street",
          "addressLine2": "Apt 302",
          "city": "Boulder",
          "stateOrProvince": "CO",
          "postalCode": "80301",
          "country": "US"
        },
        "website": "www.lbmlenders.com"
      },
      "settings": {
        "cardPayment": {
          "statementDescriptor": "LBM Lenders"
        },
        "achPayment": {
          "companyName": "LBM Lenders"
        }
      }
    }
  }'\

Read more about accounts and onboarding in our documentation:

Use form shortening

Use the enrichment API to find publicly available information to autofill form fields based on an email address. With the enrichment API you can:

  • Autocomplete addresses
  • Get avatars
  • Look up bank by routing number
  • List industries
  • Enrich business profile

If you’re using a Moov.js integration, you can use Moov’s pre-built Drops UI for form shortening. Read more in the Moov.js documentation:

Payment links are a secure way to collet payments from customers. Payment links can be shared via email, SMS, or social media. When customers click on a link, they can pay using a credit card, debit card, or bank account.

A payment link can be sent as a URL or QR code.

You can also create payment links with the API.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
curl -X POST "https://api.moov.io/accounts/{accountID}/payment-links" \
  -H "Authorization: Bearer {token}" \
  --data-raw '{
    "accountID": "c197cd40-7745-4413-8f3b-ec962d1b5225",
    "merchantPaymentMethodID": "3afc7533-7095-43bb-b21a-5c4dc5568451",
    "amount": {
      "currency": "USD",
      "value": 1500
    },
    "maxUses": 0,
    "expiresOn": "2025-08-24T14:15:22Z",
    "display": {
      "title": "string",
      "description": "string",
      "callToAction": "pay"
    },
    "customer": {
      "requireAddress": true,
      "requirePhone": true,
      "metadata": {
        "property1": "string",
        "property2": "string"
      }
    },
    "payment": {
      "allowedMethods": [
        "apple-pay",
        "card-payment",
        "ach-debit-collect"
      ],
      "cardDetails": {
        "dynamicDescriptor": "Monthly payment 08-25"
      },
      "achDetails": {
        "companyEntryDescription": "Monthly dues",
        "originatingCompanyName": "Quahog & Co"
      }
    }
  }'\

Facilitate in-person payments

For in-person payments, use the QR code generated with the payment links process. Once a payment link has been created in the Dashboard, you’ll be presented with a URL and QR code to copy and send. If you’re using the API, the payment link code will be in the response. You can append the code to the payment link URL https://moov.money/ and send it to customers.

Sharable link and QR code

The following is an example response when creating a payment link. The payment link URL with the code would be https://moov.money/3QLHtONjd5.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
  "amount": {
    "currency": "USD",
    "value": 100000
  },
  "code": "3QLHtONjd5",
  "createdOn": "2025-01-09T17:09:13.33Z",
  "customer": {
    "requirePhone": true
  },
  "display": {
    "callToAction": "pay",
    "description": "This is an example payment link.",
    "title": "Example Payment Link"
  },
  "link": "https://moov.money/3QLHtONjd5",
  "merchantAccountID": "34233b72-780c-4e0e-8b08-cbbe1bc878f8",
  "merchantPaymentMethodID": "4c4e7f8e-81f4-4f3d-8f6f-6f6e7f8e4c4e",
  "mode": "sandbox",
  "partnerAccountID": "d290f1ee-6c54-4b01-90e6-d701748f0851",
  "payment": {
    "allowedMethods": [
      "card-payment",
      "ach-debit-collect"
    ]
  },
  "status": "active",
  "updatedOn": "2025-01-09T17:09:13.33Z",
  "uses": 0
}

You can also use the payment link GET endpoint to retrieve the QR code.

Moov is currently developing tap to pay for iPhone and Android. View our product roadmap for updated progress.

Handle reversals & refunds

Moov’s reversal process offers a robust solution for returning funds to a cardholder, regardless of the current state of the transfer. When possible, a reversal cancels the transfer, reversing the authorization and swiftly returning funds. If a reversal is not possible, a refund is initiated instead.

Moov automatically moves your request into the reversal or refund flow depending on settlement status and type, such as a full or partial refund.

For ACH transfers, depending on settlement status, you also have the option of cancelling the ACH transfer directly. If a transfer is cancelable, you will have a Cancel option within the Dashboard.

Read more about reversals, refunds, and cancellations in our documentation:

Handle disputes

The Dashboard will notify you of any disputes that come in and the deadline in which they will need to be handled. You can choose to accept the dispute and facilitate a refund, or challenge the dispute by submitting evidence.

Within the Dashboard, you can view, accept, challenge, delete, and update disputes, as well as view, upload, and update dispute evidence. Moov currently supports RDR (Visa Rapid Dispute Resolution) decisioned pre-disputes and chargebacks from all card networks.

To accept the dispute, click the Refund button and follow the refund procedure.

If you challenge the dispute, the Dashboard will guide you through uploading and submitting evidence, such as proof of purchase or terms of service.

Read more about disputes in our documentation:

Other resources

Summary Beta