Guide

Share a payment link

Payment links are reusable checkout URLs you can drop into an email, invoice, or social bio. Each payer gets their own invoice and address automatically.

Fixed-price links

Use amount_mode: "fixed" with an amount_usd for a set price — perfect for a product, plan, or one-off charge.

const res = await fetch("https://markgroup.app/api/v1/payment-links", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.MG_API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    amount_mode: "fixed",
    amount_usd: 100,
    title: "Pro plan",
    description: "Monthly Pro subscription",
  }),
})

const link = await res.json()
// Share link.link_url anywhere.

Flexible-amount links

Use amount_mode: "flexible" to let the payer choose how much to send — ideal for donations, tips, or pay-what-you-want. Optionally bound it with min_amount_usd and max_amount_usd.

body: JSON.stringify({
  amount_mode: "flexible",
  min_amount_usd: 5,
  max_amount_usd: 500,
  title: "Support our work",
})

Share and get paid

Share the returned link_url. When someone opens it, a fresh invoice and deposit address are created just for them, so one link can collect many independent payments. Reconcile them like any other payment.

One link, many payments

Because each visit mints its own invoice, you can safely reuse a single link across every customer — there's no address reuse between payers.

To match incoming payments back to a link, list payments and follow each one to its invoice. See Reconcile payments.