Create payment link

Create a payment link that allows an end user to make a payment on Moov’s hosted payment link page.

To access this endpoint using a token you’ll need to specify the /accounts/{accountID}/transfers.write scope.

POST
/accounts/{accountID}/payment-links
cURL
curl --request POST \
  --url https://api.moov.io/accounts/{accountID}/payment-links \
  --header 'content-type: application/json' \
  --data '{"partnerAccountID":"c197cd40-7745-4413-8f3b-ec962d1b5225","merchantPaymentMethodID":"3afc7533-7095-43bb-b21a-5c4dc5568451","amount":{"currency":"USD","value":3492},"maxUses":5,"expiresOn":"2025-08-24T14:15:22Z","display":{"title":"Yoga Class","description":"Join us for a relaxing yoga class.","callToAction":"pay"},"customer":{"requireAddress":false,"requirePhone":true,"metadata":{"optional":"metadata"}},"payment":{"allowedMethods":["card-payment","apple-pay"],"cardDetails":{"dynamicDescriptor":"WhlBdy *Yoga"}}}'
200 400 422 429
Successfully created payment link.
A link and supporting information, used to initiate a payment or payout.
{
  "amount": {
    "currency": "USD",
    "value": 3492
  },
  "code": "uc7ZYKrMhi",
  "createdOn": "2025-01-09T17:09:13.333027807Z",
  "customer": {
    "metadata": {
      "optional": "metadata"
    },
    "requirePhone": true
  },
  "display": {
    "callToAction": "pay",
    "description": "Join us for a relaxing yoga class.",
    "title": "Yoga Class"
  },
  "expiresOn": "2025-08-24T14:15:22Z",
  "link": "https://moov.money/uc7ZYKrMhi",
  "maxUses": 5,
  "merchantAccountID": "34233b72-780c-4e0e-8b08-1bbe1bc878f4",
  "merchantPaymentMethodID": "3afc7533-7095-43bb-b21a-5c4dc5568451",
  "mode": "production",
  "partnerAccountID": "c197cd40-7745-4413-8f3b-ec962d1b5225",
  "payment": {
    "allowedMethods": [
      "card-payment",
      "apple-pay"
    ],
    "cardDetails": {
      "dynamicDescriptor": "WhlBdy *Yoga"
    }
  },
  "status": "active",
  "updatedOn": "2025-01-09T17:09:13.333027807Z",
  "uses": 0
}
Invalid request, an error message will be available in the response body.
Response for http requests that failed
{
  "error": "example error message"
}
Errors were found in one or more fields of the request body.
{
  "property1": null,
  "property2": null
}
Request was refused due to rate limiting.

Retry-After

number

Path parameters

accountID

string <uuid> required
ID of the account.

Body

application/json

Request to create a new payment link.

A payment link must include either payment or payout details, but not both. For payout payment links, maxUses will automatically be set to 1, as these are intended for a one-time disbursement to a specific recipient.

Note: The payout option is currently under development and is not yet available for general use.

amount

object required
An integer value representing money in a specific currency.
right_key Show child attributes

currency

string <=3 characters Pattern
A 3-letter ISO 4217 currency code.

value

integer<int64>
Quantity in the smallest unit of the specified currency. In USD this is cents, for example, $12.04 is 1204 and $0.99 is 99.

display

object required
Customizable display options for a payment link.
right_key Show child attributes

callToAction

string<enum> required

The text to be displayed on web form’s submit button.

If set to “auto” the UI will automatically select between “pay” and “confirm” for payments and payouts respectively.

Possible values: pay, book, subscribe, donate, confirm, auto

description

string required
A payment description displayed to the user.

title

string required
The payment page title displayed to the user.

merchantPaymentMethodID

string<uuid> required
The merchant’s preferred payment method ID. Must be a wallet payment method.

partnerAccountID

string<uuid> required
The partner’s Moov account ID.

customer

object
Specify customer input requirements for the payment link and provide optional metadata for the Moov account that will represent the customers who use it.
right_key Show child attributes

metadata

object
Optional free-form metadata for the Moov account that will represent this customer.

requireAddress

boolean
If true, a billing address is required when completing the payment form.

requirePhone

boolean
If true, a phone number is required when completing the payment form.

expiresOn

string<date-time>
An optional expiration date for this payment link.

maxUses

integer<int64>

An optional limit on the number of times this payment link can be used. On payouts, omitting this field or setting it to 0 will allow unlimited uses.

For payouts, maxUses is always 1.

payment

object
Options for payment links used to collect payment.
right_key Show child attributes

allowedMethods

array required
A list of payment methods that should be supported for this payment link.
Possible values: apple-pay, card-payment, ach-debit-collect

achDetails

object
Options for payment links used to collect an ACH payment.
right_key Show child attributes

companyEntryDescription

string [4 to 10] characters
An optional override of the default NACHA company entry description for a transfer.

originatingCompanyName

string [4 to 16] characters
An optional override of the default NACHA company name for a transfer.

cardDetails

object
Options for payment links used to collect a card payment.
right_key Show child attributes

dynamicDescriptor

string [4 to 22] characters
An optional override of the default card statement descriptor for a transfer. Accounts must be enabled by Moov to set this field.

payout

object
Options for payment links used to disburse funds.
right_key Show child attributes

allowedMethods

array required
A list of payment methods that should be supported for this payment link.
Possible values: push-to-card, rtp-credit, ach-credit-same-day, ach-credit-standard

recipient

object required

Specify the intended recipient of the payout.

This information will be used to authenticate the end user when they follow the payment link.

right_key Show child attributes

email

string<email>
Email address of the recipient.

Response

application/json
A link and supporting information, used to initiate a payment or payout.

amount

object required
An integer value representing money in a specific currency.
right_key Show child attributes

currency

string <=3 characters Pattern
A 3-letter ISO 4217 currency code.

value

integer<int64>
Quantity in the smallest unit of the specified currency. In USD this is cents, for example, $12.04 is 1204 and $0.99 is 99.

code

string required
Unique code of this payment link.

createdOn

string<date-time> required
The timestamp when this payment link was created.

customer

object required
Specify customer input requirements for the payment link and provide optional metadata for the Moov account that will represent the customers who use it.
right_key Show child attributes

metadata

object
Optional free-form metadata for the Moov account that will represent this customer.

requireAddress

boolean
If true, a billing address is required when completing the payment form.

requirePhone

boolean
If true, a phone number is required when completing the payment form.

display

object required
Customizable display options for a payment link.
right_key Show child attributes

callToAction

string<enum> required

The text to be displayed on web form’s submit button.

If set to “auto” the UI will automatically select between “pay” and “confirm” for payments and payouts respectively.

Possible values: pay, book, subscribe, donate, confirm, auto

description

string required
A payment description displayed to the user.

title

string required
The payment page title displayed to the user.

link

string<uri> required
Link to the payment landing page for this payment link.

merchantAccountID

string<uuid> required
The merchant’s Moov account ID.

merchantPaymentMethodID

string<uuid> required
The merchant’s preferred payment method ID. Must be a wallet payment method.

mode

string<enum> required
The mode this account is allowed to be used within.
Possible values: sandbox, production

partnerAccountID

string<uuid> required
The partner’s Moov account ID.

status

string<enum> required

The status of a payment link.

  • active: The payment link is active and can be used.
  • used: The payment link has reached it’s maxUses limit and is no longer active.
  • disabled: The payment link has been disabled and is no longer active.
  • expired: The payment link has expired and is no longer active.
Possible values: active, used, disabled, expired

updatedOn

string<date-time> required
The timestamp when this payment link was last updated.

uses

integer<int64> required
The number of times this payment link has been used.

disabledOn

string<date-time>
The timestamp when this payment link was disabled.

expiresOn

string<date-time>
An optional expiration date for this payment link.

lastUsedOn

string<date-time>
The timestamp when this payment link was last used.

maxUses

integer<int64>
An optional limit on the number of times this payment link can be used. For payouts, maxUses is always 1.

payment

object
Options for payment links used to collect payment.
right_key Show child attributes

allowedMethods

array required
A list of payment methods that should be supported for this payment link.
Possible values: apple-pay, card-payment, ach-debit-collect

achDetails

object
Options for payment links used to collect an ACH payment.
right_key Show child attributes

companyEntryDescription

string [4 to 10] characters
An optional override of the default NACHA company entry description for a transfer.

originatingCompanyName

string [4 to 16] characters
An optional override of the default NACHA company name for a transfer.

cardDetails

object
Options for payment links used to collect a card payment.
right_key Show child attributes

dynamicDescriptor

string [4 to 22] characters
An optional override of the default card statement descriptor for a transfer. Accounts must be enabled by Moov to set this field.

payout

object
Options for payment links used to disburse funds.
right_key Show child attributes

allowedMethods

array required
A list of payment methods that should be supported for this payment link.
Possible values: push-to-card, rtp-credit, ach-credit-same-day, ach-credit-standard

recipient

object required

Specify the intended recipient of the payout.

This information will be used to authenticate the end user when they follow the payment link.

right_key Show child attributes

email

string<email>
Email address of the recipient.