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 an access 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 'Authorization: Basic REPLACE_BASIC_AUTH' \
  --header 'content-type: application/json' \
  --header 'x-moov-version: SOME_STRING_VALUE' \
  --data '{"partnerAccountID":"d290f1ee-6c54-4b01-90e6-d701748f0851","merchantPaymentMethodID":"4c4e7f8e-81f4-4f3d-8f6f-6f6e7f8e4c4e","amount":{"currency":"USD","value":10000},"display":{"title":"Example Payment Link","description":"This is an example payment link.","callToAction":"pay"},"customer":{"requirePhone":true},"payment":{"allowedMethods":["card-payment","ach-debit-collect"]}}'
200 400 401 403 404 409 422 429 500 504
The request completed successfully.
{
  "amount": {
    "currency": "USD",
    "value": 10000
  },
  "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
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The server could not understand the request due to invalid syntax.
{
  "error": "string"
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request contained missing or expired authentication.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The user is not authorized to make the request.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The requested resource was not found.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request conflicted with the current state of the target resource.
{
  "error": "string"
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request was well-formed, but the contents failed validation. Check the request for missing or invalid fields.
{
  "amount": {
    "currency": "string",
    "value": "string"
  },
  "display": {
    "callToAction": "string",
    "description": "string",
    "title": "string"
  },
  "expiresOn": "string",
  "maxUses": "string",
  "merchantPaymentMethodID": "string",
  "partnerAccountID": "string",
  "payment": {
    "achDetails": {
      "companyEntryDescription": "string",
      "originatingCompanyName": "string"
    },
    "allowedMethods": "string",
    "cardDetails": {
      "dynamicDescriptor": "string"
    }
  },
  "payout": {
    "allowedMethods": "string",
    "recipient": {
      "email": "string"
    }
  }
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
Request was refused due to rate limiting.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request failed due to an unexpected error.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request failed because a downstream service failed to respond.

x-request-id

string <uuid> required
A unique identifier used to trace requests.

Headers

x-moov-version

string
API version

Specify an API version.

API versioning follows the format vYYYY.QQ.BB, where

  • YYYY is the year
  • QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)
  • BB is the build number, starting at .01, for subsequent builds in the same quarter.
    • For example, v2024.01.00 is the initial release of the first quarter of 2024.

The latest version represents the most recent development state. It may include breaking changes and should be treated as a beta release.

Default: v2024.01.00

Path parameters

accountID

string <uuid> required

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
Show child attributes

currency

string required Pattern
A 3-letter ISO 4217 currency code.

value

integer<int64> required

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.
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
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.

For payouts, maxUses is always 1.

payment

object
Options for payment links used to collect payment.
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.
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.
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
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.

Show child attributes

email

string<email> <=255 characters required

Response

application/json

amount

object required
Show child attributes

currency

string required Pattern
A 3-letter ISO 4217 currency code.

value

integer<int64> required

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 identifying this payment link.

createdOn

string<date-time> required

customer

object required
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.
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 operating mode for an account.
Possible values: sandbox, production

partnerAccountID

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

status

string<enum> required
Possible values: active, used, disabled, expired

updatedOn

string<date-time> required

uses

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

disabledOn

string<date-time>

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.
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.
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.
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
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.

Show child attributes

email

string<email> <=255 characters required