Skip to main content
Payment links are the primary way you collect funds through Hypertron. Each link is tied to a workflow stage and a unique memo — when your client pays, Hypertron automatically attributes the payment to the correct link without ever exposing their wallet address to you. You can create a link in seconds from the dashboard, or programmatically via the API. Navigate to Dashboard → Payment Links (/dashboard/payment-links). You will see two creation cards side by side: one for a fixed-amount link and one for a flexible open-amount link.
1

Open the Payment Links page

In the left sidebar, click Payment Links. You must have your Freighter wallet connected before this page loads.
2

Fill in the link details

In the Create Payment Link card, complete the following fields:
FieldRequiredDescription
Amount (XLM)Yes (unless flexible)The fixed amount in XLM your client will pay.
PurposeNoA human-readable label for this payment (e.g. “Invoice #1042”).
Client nameNoThe name of the client you are sending this link to.
Workflow stageNoThe stage in your onboarding or payment workflow this link belongs to.
To create an open-amount link — where the client enters any amount — use the Pay Any Amount card instead. Toggle Flexible amount on and all amount validation is skipped.
3

Generate the link

Click Create link. Hypertron creates a database record and returns a shareable URL and QR code within a second.
4

Share with your client

Copy the link URL (format: https://your-domain/pay/{linkId}) or download the QR code. Send either to your client by any channel — email, chat, or embedded in an invoice.
The QR code payload is identical to the URL. If your client scans it with a mobile wallet, they land on the same payment page.

What you receive after creation

After the link is created, Hypertron returns the following values. You can see these in the dashboard or retrieve them from the API.
FieldExampleDescription
linkIdclx9z2a0f000008js...Unique database ID for this link.
urlhttps://app.hypertron.io/pay/clx9z...The shareable payment page URL.
qrPayloadSame as urlPayload encoded in the QR code.
memohpl_lf2k3x_a9bc12deThe Stellar transaction memo that identifies this payment.
amount250Fixed amount in XLM, or empty string if flexible.
destinationAddressGXXXXXXXX...The Stellar pool address funds are sent to.
The destinationAddress is Hypertron’s shared payment pool — not your own wallet. Funds accumulate in the pool and are attributed to you via the memo. To move funds to your wallet, use the Withdraw flow.
If you want to generate payment links programmatically — for example inside your own onboarding system — use the REST endpoint directly.

Request

curl --request POST \
  --url https://your-domain/api/payment-link \
  --header 'Content-Type: application/json' \
  --data '{
    "businessId": "YOUR_BUSINESS_ID",
    "amount": "250",
    "purpose": "Invoice #1042",
    "clientName": "Acme Corp",
    "workflowStage": "KYB complete"
  }'
For a flexible (open-amount) link, omit amount and add "flexibleAmount": true:
{
  "businessId": "YOUR_BUSINESS_ID",
  "flexibleAmount": true,
  "purpose": "Consultation fee",
  "clientName": "Jane Smith"
}

Request body fields

businessId
string
required
Your Hypertron business ID. Find it in Dashboard → Settings.
amount
string
Fixed amount in XLM. Required unless flexibleAmount is true.
flexibleAmount
boolean
Set to true to create an open-amount link where the client enters any value they choose.
purpose
string
Short label for the payment, shown on the payment page (e.g. "Invoice #1042").
clientName
string
Name of the client, shown on the payment page.
workflowStage
string
Workflow stage this link belongs to. Use any string that maps to your internal process (e.g. "KYB complete", "Contract signed").

Response

{
  "linkId": "clx9z2a0f000008js7y3q1a2b",
  "url": "https://your-domain/pay/clx9z2a0f000008js7y3q1a2b",
  "qrPayload": "https://your-domain/pay/clx9z2a0f000008js7y3q1a2b",
  "memo": "hpl_lf2k3x_a9bc12de",
  "amount": "250",
  "destinationAddress": "GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

Error responses

StatusErrorCause
400businessId requiredYou omitted the businessId field.
400amount required (or set flexibleAmount: true…)Fixed-amount link with no amount provided.
404Business not foundThe businessId does not match any record.
500Database errorThe server encountered a database error. Contact your administrator.
Retrieve all payment links for a business with a GET request:
curl "https://your-domain/api/payment-link?businessId=YOUR_BUSINESS_ID"
The response contains an array of link objects, each including url, paidAt (if paid), paymentTxHash, and commitmentTxHash.
Once a link is paid, paidAt is set and the link is marked as complete in the dashboard. Paid links cannot be reused — create a new link for each payment.