Endpoints
Management requires a server key;POST and DELETE require X-Idempotency-Key.
POST /v1/pay-links:201 { payLink }.GET /v1/pay-links:{ payLinks }.limitdefaults to 200, clamps to 1..1000;offsetdefaults to 0. UseincludeDisabled=trueto include disabled links.GET /v1/pay-links/:id:{ payLink }.DELETE /v1/pay-links/:id:{ ok: true }; disables the URL without cancelling existing orders.
GET /pay/:shortId serves HTML: mobile handoff or desktop navigation to /go?n=.... /go returns a mobile 302 to Cash App or desktop QR HTML. The same completed nonce reuses its order and invoice. These links do not extend invoice expiry. Onramp short URLs reuse one order and do not support /go.
Request body
destinationChain,destinationAsset: required. Assets:USDB,USDC,USDT,PathUSD. Chains: Spark, Solana, configured CCTP-forward destinations, excluding Hedera. The pair must have a configuredlightning:BTCroute.recipientAddress: required destination address.- Exactly one of
amountOutoramountFiatUsd; amount modes determine fees and delivery.amountOutis a positive integer string in destination smallest units representing whole cents; fractional cents return400 invalid_request.amountFiatUsdis"1.00"to"50000.00". - Optional
affiliateId: registered affiliate. Optionallabel: up to 255 characters, returned as webhookpayLinkLabel.
Example
Create a link targeting 25 USDC on Base:Replace
SERVER_KEY with your fn_... key. Use a new X-Idempotency-Key for each operation and reuse it when retrying that same request. Amounts are integer strings in the asset’s smallest unit: "100000" is 0.001 BTC; "50000000" is 50 USDC on Base. Read each asset’s decimals from /routes.payLinkId and payLinkLabel in webhooks. History has no pay-link filter; query by recipientAddress and match webhook payLinkId.