Payment Links API
Create a payment link
POST /v1/payment-links
Headers
X-API-Key: brykto_live_sk_...
Content-Type: application/json
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
amount |
number | Yes | Must be greater than 0 |
currency |
string | Yes | 2 to 8 characters |
description |
string | Yes | 1 to 128 characters. Shown to the customer |
customer_name |
string | No | Up to 128 characters |
customer_email |
string | No | Up to 256 characters |
customer_id |
string | No | Your own customer reference |
order_id |
string | No | Your own order reference. Returned on the webhook |
description is required
Unlike most optional-looking fields, omitting description returns 422. It is the only text your customer reads on the pay page.
import requests
response = requests.post(
"https://bryktopay.com/v1/payment-links",
headers={"X-API-Key": API_KEY},
json={
"amount": 49.90,
"currency": "USD",
"description": "Order 1042",
"order_id": "1042",
},
timeout=10,
)
response.raise_for_status()
payment = response.json()
const response = await fetch("https://bryktopay.com/v1/payment-links", {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: 49.90,
currency: "USD",
description: "Order 1042",
order_id: "1042",
}),
});
if (!response.ok) throw new Error(await response.text());
const payment = await response.json();
curl -X POST https://bryktopay.com/v1/payment-links \
-H "X-API-Key: brykto_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"amount": 49.90,
"currency": "USD",
"description": "Order 1042",
"order_id": "1042"
}'
Response
201 Created
{
"request_id": "3f9a1c2e-7b4d-4f81-9c22-1a5e6d8b0f33",
"amount": 49.9,
"currency": "USD",
"receive_asset": "USDC",
"rail": "stellar",
"description": "Order 1042",
"destination_tag": null,
"stellar_memo": "a1b2c3d4e5f6",
"expires_at": "2026-08-17T12:30:00+00:00",
"created_at": "2026-08-17T12:00:00+00:00"
}
| Field | Notes |
|---|---|
request_id |
UUID. Build the pay page address from this |
receive_asset |
What the merchant is paid in: USDC, USDT0, RLUSD, XLM or XRP |
rail |
The network: stellar or xrpl |
destination_tag |
Set on the XRP Ledger, null on Stellar |
stellar_memo |
Set on Stellar, null on the XRP Ledger |
There is no checkout URL in the response
Build it yourself:
https://bryktopay.com/pay/{request_id}
Expiry
| Created from | Lifetime |
|---|---|
| This API | 30 minutes |
| The dashboard | 7 days |
Do not email an API-created link
Thirty minutes is not long enough to survive an inbox. See Invoicing from your system for the pattern that works.
What this API does not do
Worth knowing before you design around it.
- No return URL. There is no
redirect_urlparameter, so a payment created here cannot send the customer back to your site. Use the embed if you need that. - No status endpoint. You cannot poll a payment. The webhook is the only notification.
- No list or cancel endpoint. Both live in the dashboard only.
Next steps
- Webhooks - how you find out a payment completed
- Invoicing from your system - working around the 30 minute lifetime