Small business | Moov Documentation

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, add surcharging for card transactions, 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 ×
Terms of service URL ×
Prefilled data ×

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 account or reused for many accounts. New accounts must agree to and accept the fee plan before it can go into effect. Moov offers two types of plans:

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:

Capabilities Fee plans Scopes

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:

Ask

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:

curl --X POST "https://api.moov.io/onboarding-invites" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2026.07.00" \
  --data-raw '{
    "returnURL": "https://mycompany.com/account",
    "termsOfServiceURL": "https://mycompany.com/terms-of-service",
    "scopes": [\
      "accounts.read",\
      "bank-accounts.read",\
      "bank-accounts.write",\
      "capabilities.read",\
      "capabilities.write",\
      "profile.read",\
      "profile.write",\
      "payment-methods.read",\
      "transfers.read",\
      "transfers.write",\
      "wallets.read"\
    ],
    "grantScopes": [\
      "accounts.read",\
      "bank-accounts.read",\
      "bank-accounts.write",\
      "capabilities.read",\
      "capabilities.write",\
      "profile.read",\
      "profile.write",\
      "payment-methods.read",\
      "transfers.read",\
      "transfers.write",\
      "wallets.read"\
    ],
    "capabilities": [\
      "transfers",\
      "wallet.balance"\
    ],
    "feePlanCodes": [\
      "b6134307-8922-4a72-bf3c-d0297bbe8a35"\
    ],
    "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:

Accounts Onboarding links

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:

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:

Moov.js Composable Drops

Send secure payment links with surcharge fees

Payment links are a secure way to collect payments from customers. Set up a transaction with a custom amount, or choose a product from your catalog. You can also add tip options or a surcharge fee (as shown in the example).

Payment links can be shared as a URL or QR code via email, SMS, or social media. When customers click on a link, they can pay using a credit card, debit card, or bank account.

When surcharging is enabled, you must follow card brand caps, as well as federal and state regulations. See our surcharge guide for details on compliance, disclosures, and regulations. Note - surcharging requires a review and registration process with Moov and some card brands before it can be enabled on accounts.

To add a surcharge to a credit card transaction, go to Checkout add-ons, toggle surcharging on, and enter an amount.

Ask

You can also create payment links with the API.

The example below adds a surcharge of $4.50 to cover processing costs. A surcharge is only applied to the payment link if the payment method is a credit card. Surcharges (and taxes) can be added to amountDetails when creating a payment link via the API.

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

Dashboard payment links Payment links Payment link API Surcharges

Facilitate in-person payments

Moov supports in-person payments via QR codes and Tap to Pay on iPhone and Android.

QR codes

QR codes are generated through 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.link/ and send it to customers.

Ask

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

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

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

Tap to Pay

Tap to Pay on iPhone and Android involves integrating with Moov's iOS SDK, MoovKit and Moov's Android SDK.

Tap to Pay on iPhone is compatible with devices that meet the following criteria:

To set up Tap to Pay on iPhone, you'll need to go through the following steps:

Tap to Pay on Android is compatible with devices that meet the following criteria:

Operating System

Hardware Features

Security Status

To set up Tap to Pay on Android, you'll need to go through the following steps:

Payment links Tap to Pay on iPhone Tap to Pay on Android

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:

Reversals in the Dashboard Reversals ACH cancellations Reversals API

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:

Card disputes Disputes in the Dashboard Disputes API.

Other resources

Test mode Dashboard Webhooks API SDKs