Checkout Links

Reusable hosted checkout URLs for products, campaigns, and no-code payment flows

Checkout links are reusable hosted payment URLs. They are the simplest way to publish a purchase flow without building your own checkout page.

The Dashboard list reports loaded checkout links. If links or their product details cannot load, use the corresponding retry button. Previously loaded links may remain visible with a warning; a failed read does not mean you have no links.

Best For

  • Product sales from landing pages
  • Email and SMS campaigns
  • QR codes for in-person sales or printed materials
  • No-code payment collection from the dashboard
  1. You create a checkout link in RevKeen.
  2. RevKeen generates a public checkout URL for that link.
  3. The customer opens the hosted checkout page and pays.
  4. RevKeen creates or updates the downstream billing objects for the purchase.

The exact public URL format can vary by environment and branded domain. Copy the link RevKeen generates instead of constructing the URL yourself.

  1. Go to Dashboard > Products > Checkout Links.
  2. Click New checkout link.
  3. Choose what the link offers: a collection (new products appear on the link automatically) or specific products picked by hand.
  4. Optionally preselect what starts in the customer's cart with Add in the cart preview — the customer adds or removes the rest. At most one subscription can start in the cart.
  5. Choose the checkout presentation you want RevKeen to use for the hosted flow (direct checkout, or multi-item review when Cart is installed).
  6. Configure optional behavior such as success URL, cancel URL, shipping collection, discounts, or expiry.
  7. Save the link and copy the generated public URL.

What You Can Configure

CapabilitySupported
One or more linked productsYes
Ad hoc line itemsYes
Success redirectYes
Cancel redirectYes
Shipping collectionYes
Promotion codesYes
Tax behaviorYes
Expiry timestampYes
MetadataYes
Link status managementYes
Hosted display mode selectionYes
Pay with inherit or thin overrideYes — default is the merchant Pay with setting. Optional Card only or Include Direct Debit.

Success URL placeholders

A success URL can include placeholders. RevKeen replaces them when it sends the buyer back to your site after payment.

PlaceholderReplaced with
{CHECKOUT_ID}The checkout ID
{TRANSACTION_ID}The transaction ID
{PAYMENT_ID}The payment ID
{CUSTOMER_ID}The customer ID
{AMOUNT}The amount charged, in minor units (for example, pence)
{CURRENCY}The currency code
{PORTAL_URL}A link to the customer portal
{CHECKOUT_STATUS_TOKEN}A token that can only read this checkout's status

None of these prove that a payment was made: anyone can type them into a URL. To show a confirmed state on your thank-you page, call:

curl "https://api.revkeen.com/public/checkout-status/$STATUS_TOKEN"

It returns { "status": "pending" | "complete" | "failed" | "expired" } and nothing else. The token expires 24 hours after payment. An unknown or expired token returns 404. Each IP address and each token can make 10 requests a minute.

The RevKeen thank-you element does this for you when its success URL includes rk_status={CHECKOUT_STATUS_TOKEN}.

Checkout links support different billing use cases:

ModeUse when
customYou want a general hosted payment link
invoiceYou want the link tied to a specific invoice
subscriptionYou want the link tied to a subscription flow

API Example

If you want to create links programmatically, use the payment-links API.

curl -X POST "https://api.revkeen.com/v2/payment-links" \
  -H "x-api-key: $REVKEEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Starter plan",
    "mode": "custom",
    "line_items": [
      {
        "price": "00000000-0000-0000-0000-000000000000",
        "quantity": 1
      }
    ],
    "success_url": "https://example.com/success",
    "cancel_url": "https://example.com/cancel",
    "allow_promotion_codes": true
  }'

Each kind of caller is checked a different way:

CallerCreateUpdate, activate, deactivate, expire, archiveWhat is checked
Team member in the dashboardYesYesTheir role: Owner, Admin, Finance or Developer
Secret API keyYesYesThe key's payment_links:write (or payment_links:*) scope
RevKeen Framer pluginYesNoThe member's current role, and the payment_links:write scope they granted. Amounts must come from an existing price
Other OAuth apps, the CLI and MCP clientsNoNoRefused with 403

An API key is checked against its scope, not against the current role of the team member who created it. Revoke a key when the person or system using it no longer needs to manage links.

Reserved metadata key

metadata.created_via is reserved for RevKeen. It records where a link was created, and RevKeen sets it only when a link is created through one of RevKeen's own apps.

If you send created_via in metadata when creating or updating a link, RevKeen silently drops it. The request still succeeds, and the rest of your metadata is stored. An update also cannot change or remove a created_via value that RevKeen set.

Billing schedule

Checkout links inherit the product billing schedule. There is no per-link schedule override. Set the cadence on the product (Configure Billing Schedule). Optional minimum commitment on the link does not replace that template.

To use a different schedule for one sale, create an invoice and turn on Customize for this invoice. That stores sale-time terms for that invoice only. The subscription created from the sale is then the runtime snapshot.

Status Lifecycle

Checkout links can move through the following states:

StatusMeaning
draftCreated but not yet active for customers
activeLive and usable
expiredNo longer usable because the link expired
completedUsed for a completed one-time flow

For operational management, RevKeen also supports active, inactive, and archived status transitions on the management endpoints.

Important Notes

  • Checkout links are designed to be reused. If you need a single checkout created per user action, use a checkout session instead.
  • Payment methods inherit Settings → Payments. A link can pin Card only or Include Direct Debit. Payers see Direct Debit, not Bank Debit.
  • If you need per-session method control such as card versus in-store, use the checkout-session API.
  • A link offering a collection that is turned off for checkout links, deleted, or empty shows an unavailable state to customers. Turn the collection back on or point the link somewhere else.
  • One subscription per cart: adding a subscription to the starting cart replaces any other subscription there. Usage products show in the preview but are billed later.

Owner: david · Reviewed 7 Sep 2026

On this page