Help Center Developer Docs Payment Links API

Payment Links API

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_url parameter, 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