Create a link
Create a reusable hosted checkout with a fixed price.
Returns the link with its hosted checkout at url. Every customer who pays it creates a new payment with the link's link_id.
Body
amountstring RequiredThe price as a decimal string incurrency, with at most two decimal places:"49.00"withUSDis $49.00, and"49.5"and"49"are accepted too. A JSON number returns 400invalid_request. From the equivalent of $1.00 up to 1,000,000.00 in the currency.currencystringUSD, EUR, GBP, CAD, AUD. Defaults to USD.namestringWhat the customer is paying for, up to 80 characters. It becomes the description of each payment made through the link, shown on the receipt.descriptionstringMore about it, shown in the checkout's details, up to 300 characters.success_urlstringWhere checkout sends the customer after paying, withpayment_idadded to its query. Usehttps://;http://works only forlocalhostand127.0.0.1. Defaults to the redirect in your checkout settings, then the receipt.
Errors
- 400
invalid_requestA field is missing, unknown or out of range.fieldnames it.
Any request can also fail on its key or its body. See errors.
Request
curl -X POST "https://api.402pay.co/api/v1/links" \
-H "Authorization: Bearer $PAY402_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Team plan, monthly",
"description": "Everything in Pro for up to 10 people.",
"amount": "199.00",
"currency": "USD"
}'const response = await fetch("https://api.402pay.co/api/v1/links", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.PAY402_SECRET_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Team plan, monthly",
description: "Everything in Pro for up to 10 people.",
amount: "199.00",
currency: "USD"
}),
});
const { data } = await response.json();import os
import requests
response = requests.post(
"https://api.402pay.co/api/v1/links",
headers={
"Authorization": f"Bearer {os.environ['PAY402_SECRET_KEY']}",
},
json={
"name": "Team plan, monthly",
"description": "Everything in Pro for up to 10 people.",
"amount": "199.00",
"currency": "USD"
},
)
data = response.json()["data"]Response201 Created
{
"data": {
"id": "lnk_nt842tPNne3lf0ka",
"kind": "link",
"code": "v6e4mrczwg",
"url": "https://checkout.402pay.co/checkout/v6e4mrczwg",
"name": "Team plan, monthly",
"description": "Everything in Pro for up to 10 people.",
"amount": "199.00",
"currency": "USD",
"success_url": null,
"status": "active",
"disabled_at": null,
"payments_count": 0,
"volume": {
"amount": "0.00",
"currency": "USD"
},
"created_at": "2026-09-26T21:22:46.992Z",
"updated_at": "2026-09-26T21:22:46.992Z"
}
}