amountOut. Each click creates a fresh Lightning invoice at the current market rate and redirects to a Lightning-compatible payment app. The link itself never expires.
Pay Links build on the same pipeline as the fiat onramp. The difference is that the onramp specifies BTC input (sats), while Pay Links specify stablecoin output (exact-out).
How it works
- Partner calls
POST /v1/pay-linkswith a destination chain, asset, recipient address, and desired output amount. - Orchestra returns a
shortIdandshortUrl. - Anyone who opens the URL gets a fresh Lightning invoice sized to deliver the exact output amount at current market rates.
- After payment, Orchestra swaps BTC to the destination asset and delivers it.
What can I build with pay links?
- Payment requests: “Pay me $50 USDC” as a link. Share via text, email, QR code, or embed in a website.
- Invoicing: Generate a link per invoice line item. The recipient pays the exact amount without manual entry.
- Donations and tips: A fixed-amount link on a profile or stream overlay.
- Recurring collection: Reuse the same link for repeated payments to the same address.
Which destinations are supported?
Pay Links support any stablecoin destination that Orchestra supports from a Lightning BTC source:| Chain | Assets |
|---|---|
| Spark | USDB |
| Solana | USDC |
| Base | USDC, USDT |
| Ethereum | USDC, USDT |
| Arbitrum | USDC, USDT |
| Optimism | USDC, USDT |
| Polygon | USDC |
| Tempo | USDC, PathUSD |
| Tron | USDT |
| Plasma | USDT |
Integration
Share the link
Share the The default link serves a landing page with OpenGraph metadata (title, image) for rich previews in iMessage, WhatsApp, Twitter, etc., then redirects the user to pay the Lightning invoice.If you want to handle your own messaging previews or embed the link in a custom UI, use the
shortUrl anywhere. On click:- Orchestra creates an exact-out Lightning quote (BTC sats calculated from the desired stablecoin output at current rates).
- A fresh BOLT11 invoice is generated.
- The browser redirects to
https://cash.app/launch/lightning/{invoice}. - The user’s Lightning-compatible app opens with the payment ready.
/go variant to skip the landing page and go straight to quote creation and payment redirect:Track orders from a pay link
Each click creates a standard Orchestra order. Track them the same way as any other order: via webhooks or polling.List all orders created from a specific pay link:
Frontend integration
Pay Links share the browser-side deep link patterns with Onramp. For the Cash App navigation trick, the SSE order-tracking hook, the API-key proxy pattern, and the pipeline-progress UI, see Deep link best practices.API reference
POST /v1/pay-links
Create a new pay link. Requires authentication and idempotency. Request body:| Field | Required | Type | Notes |
|---|---|---|---|
destinationChain | Yes | string | Target chain (e.g., solana, base, tron) |
destinationAsset | Yes | string | Target asset (USDB, USDC, USDT, or PathUSD, depending on chain) |
recipientAddress | Yes | string | Destination address on the target chain |
amountOut | Yes | string | Desired output in smallest units (e.g., "50000000" = $50 USDC) |
affiliateId | No | string | Registered affiliate ID for fee collection |
label | No | string | Partner-facing label (max 255 chars) |
GET /v1/pay-links
List pay links for the authenticated partner. Supportslimit, offset, and includeDisabled query parameters.
GET /v1/pay-links/:id
Get a single pay link by ID.DELETE /v1/pay-links/:id
Disable a pay link (soft delete). The link returns 404 after disabling. Requires idempotency.What are the fees?
The sender’s Lightning invoice is sized to cover the desired output plus all fees. Platform fees use custom pricing based on route and volume. Affiliate fees are variable, configured per affiliate.Affiliate fees
Pay links support affiliate fees through theaffiliateId field. Register an affiliate via PUT /v1/affiliates/:affiliateId first, then reference it when creating the pay link.
The affiliate fee is added on top of the Lightning invoice amount. The sender pays more sats to cover the recipient’s exact output plus all fees. The recipient’s amountOut is unaffected.
Pricing
Each click computes a fresh exact-out quote. The Lightning invoice amount reflects:- The desired stablecoin output on the destination chain.
- Platform fee (route-dependent).
- Affiliate fees (if configured).
- BTC/USDB swap rate at the moment of the click.
amountOut.
Next steps
- Fiat Onramp for the input-denominated variant
- Order Lifecycle for status tracking
- Webhooks for real-time order updates