Skip to content

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

  • amount string Required
    The price as a decimal string in currency, with at most two decimal places: "49.00" with USD is $49.00, and "49.5" and "49" are accepted too. A JSON number returns 400 invalid_request. From the equivalent of $1.00 up to 1,000,000.00 in the currency.
  • currency string
    USD, EUR, GBP, CAD, AUD. Defaults to USD.
  • name string
    What the customer is paying for, up to 80 characters. It becomes the description of each payment made through the link, shown on the receipt.
  • description string
    More about it, shown in the checkout's details, up to 300 characters.
  • success_url string
    Where checkout sends the customer after paying, with payment_id added to its query. Use https://; http:// works only for localhost and 127.0.0.1. Defaults to the redirect in your checkout settings, then the receipt.

Errors

  • 400 invalid_request
    A field is missing, unknown or out of range. field names 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"
  }'
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"
  }
}