Payment links

Create payment links with Moov to collect from cards, bank accounts, or Apple Pay.

Create a payment link from the API or the Dashboard that you can send to merchants through your chosen form of communication, such as email or SMS. Use the generated payment link code to create a QR code for in-person payments. You can use payment links to accept a payment.

The payment link flow authenticates a session that lets your customers securely create a Moov account and link payment methods before submitting payment through the link or QR code.

We strongly suggest using the Dashboard’s payment link process to create payment links. Visit our Dashboard documentation for more information.

Payment methods

To accept a payment, you can choose any or all of the following payment methods:

  • Apple Pay
  • Card
  • ACH debit collect

Payout payment links are coming soon

In the future, to send a payment, you’ll be able to choose any or all of the following payment methods:

  • Push to card
  • RTP credit
  • ACH credit same day
  • ACH credit standard

Brand settings

Moov offers light and dark mode brand settings, which you can set in the Dashboard or with the API. Colors you select for light and dark modes will be used as accent colors throughout the customer’s user experience, including the payment link UI.

When creating a payment link, you’re required to provide your partner ID, the merchant’s payment method ID and the payment amount. You have the option to require other data such as customer address or phone number, metadata, and a custom dynamic descriptor for the statement. You can also set an expiration date and limit on the amount of times a payment link can be used.

Once a payment link is created, you’ll receive a sharable URL and QR code. The URL will be in the following format: https://moov.money/{unique-payment-link}. URLs and QR codes can be found again in the Dashboard by navigating to Transfers > Payment links.

Use the payment links POST endpoint. You can limit the amount of times a payment link can be used with the maxUses field. By setting maxUses to 0, there is no limit on the amount of times the link can be used.

 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": 1204
    },
    "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": "WhlBdy *Yoga 11-12"
      },
      "achDetails": {
        "companyEntryDescription": "Gym Dues",
        "originatingCompanyName": "Whole Body Fit"
      }
    }
  }'\

Once a payment link is created, you can manage it through the API or the Dashboard. You can list all created payment links, find a specific one, update it, or disable it.

Retrieve

View a list of all payment links with the list payment links GET endpoint, or view an individual payment link with the retrieve payment links GET endpoint.

To list all payment links for an account, pass the accountID.

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

To retrieve a specific payment link for an account, pass the accountID and paymentLinkCode. The payment link code is provided in the initial POST response when created a payment link. You can use the list payment link endpoint to retrieve all payment links and their payment link codes.

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

Update

You have the ability to update certain properties of payment links with the payment links PATCH endpoint. You can update the amount, expiration date, display options, customer data, as well as payment and payout options.

To update a payment link, pass the accountID and paymentLinkCode.

 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
curl -X PATCH "https://api.moov.io/accounts/{accountID}/payment-links/{paymentLinkCode}" \
  -H "Authorization: Bearer {token}" \
  --data-raw '{
    "amount": {
      "currency": "USD",
      "value": 1204
    },
    "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"
      ],
      "cardDetails": {
        "dynamicDescriptor": "WhlBdy *Yoga 11-12"
      },
      "achDetails": {
        "companyEntryDescription": "Gym Dues",
        "originatingCompanyName": "Whole Body Fit"
      }
    }
  }'\

Disable

You can disable a payment link at any time. Customers will receive an error page if they try and access a disabled payment link. Use the payment links DEL endpoint to disable the link.

To delete (disable) a payment link, pass the accountID and paymentLinkCode.

1
2
curl -X DELETE "https://api.moov.io/accounts/{accountID}/payment-links/{paymentLinkCode}" \
  -H "Authorization: Bearer {token}" \

Get generated QR code

To facilitate in-person payments, you have the ability to generate a QR code for a customer to use with the payment links QR GET endpoint.

To generate a QR code, pass the accountID and paymentLinkCode.

1
2
curl -X GET "https://api.moov.io/accounts/{accountID}/payment-links/{paymentLinkCode}/qrcode" \
  -H "Authorization: Bearer {token}" \
Summary Beta