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.
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"}}}'
{
"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
}
{
"error": "example error message"
}
{
"property1": null,
"property2": null
}
Response headers
Retry-After
number
Path parameters
accountID
string
<uuid>
required
Body
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
<=3 characters
Pattern
value
integer<int64>
display
object
required
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.
pay
,
book
,
subscribe
,
donate
,
confirm
,
auto
description
string
required
title
string
required
merchantPaymentMethodID
string<uuid>
required
partnerAccountID
string<uuid>
required
customer
object
Show child attributes
metadata
object
requireAddress
boolean
requirePhone
boolean
expiresOn
string<date-time>
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
Show child attributes
allowedMethods
array
required
apple-pay
,
card-payment
,
ach-debit-collect
achDetails
object
Show child attributes
companyEntryDescription
string
[4 to 10] characters
originatingCompanyName
string
[4 to 16] characters
cardDetails
object
Show child attributes
dynamicDescriptor
string
[4 to 22] characters
payout
object
Show child attributes
allowedMethods
array
required
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
string<email>
Response
amount
object
required
Show child attributes
currency
string
<=3 characters
Pattern
value
integer<int64>
code
string
required
createdOn
string<date-time>
required
customer
object
required
Show child attributes
metadata
object
requireAddress
boolean
requirePhone
boolean
display
object
required
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.
pay
,
book
,
subscribe
,
donate
,
confirm
,
auto
description
string
required
title
string
required
link
string<uri>
required
merchantAccountID
string<uuid>
required
merchantPaymentMethodID
string<uuid>
required
mode
string<enum>
required
sandbox
,
production
partnerAccountID
string<uuid>
required
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’smaxUses
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.
active
,
used
,
disabled
,
expired
updatedOn
string<date-time>
required
uses
integer<int64>
required
disabledOn
string<date-time>
expiresOn
string<date-time>
lastUsedOn
string<date-time>
maxUses
integer<int64>
maxUses
is always 1.
payment
object
Show child attributes
allowedMethods
array
required
apple-pay
,
card-payment
,
ach-debit-collect
achDetails
object
Show child attributes
companyEntryDescription
string
[4 to 10] characters
originatingCompanyName
string
[4 to 16] characters
cardDetails
object
Show child attributes
dynamicDescriptor
string
[4 to 22] characters
payout
object
Show child attributes
allowedMethods
array
required
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
string<email>