Try it live at orchestra.flashnet.xyz/onramp.
How It Works
- Your app calls
POST /v1/orchestration/onrampwith the destination chain, asset, recipient address, and BTC amount in sats. - Orchestra creates a Lightning invoice, builds the order, and returns a Cash App deeplink.
- The user opens the deeplink (or scans a QR code), pays in Cash App.
- Orchestra receives the Lightning payment, swaps BTC to the destination asset, and delivers it.
Why It’s Cheap
Cash App charges zero fees on Lightning payments. Orchestra charges 0.05% on the swap. There are no intermediary fees, no card processing fees, and no withdrawal fees. Compare this to traditional onramps:| Provider | Typical fee |
|---|---|
| Card-based onramps | 1.5-3.5% |
| Bank transfer onramps | 0.5-1.5% |
| Cash App + Orchestra | ~0.05% |
Cash App Limits
Cash App allows up to $999 in Lightning payments per rolling 7-day window. Limits reset at the top of the next hour after the 7-day window passes.Supported Routes
The onramp endpoint accepts any destination that Orchestra supports from a Lightning BTC source:lightning:BTC -> solana:USDClightning:BTC -> base:USDClightning:BTC -> base:USDTlightning:BTC -> base:ETHlightning:BTC -> solana:SOLlightning:BTC -> spark:USDBlightning:BTC -> ethereum:USDClightning:BTC -> arbitrum:USDClightning:BTC -> tron:USDT- Many more routes…
lightning:BTC. The amount is always in sats.
Integration
Get a price estimate
Use the estimate endpoint to show the user what they’ll receive before committing.Response:
Create the onramp order
A single call creates the Lightning invoice, builds the order, and returns the Cash App deeplink.Response:
Open Cash App
On mobile, redirect the user to the deeplink. On desktop, display the deeplink as a QR code for the user to scan with their phone. Use The Lightning invoice expires at
shortUrl when sharing payment links in messages or emails.expiresAt (2 minutes from creation). If the user doesn’t pay in time, create a new onramp order.API Reference
POST /v1/orchestration/onramp
Requires authentication (Authorization: Bearer <api_key>) and idempotency (X-Idempotency-Key).
Request body:
| Field | Required | Type | Notes |
|---|---|---|---|
destinationChain | Yes | string | Target chain (e.g., solana, base) |
destinationAsset | Yes | string | Target asset (e.g., USDC, ETH) |
recipientAddress | Yes | string | Destination address on the target chain |
amount | Yes | string | BTC amount in sats (integer string) |
slippageBps | No | number | Slippage tolerance in basis points (default: 50) |
appFees | No | array | Inline affiliate fees (mutually exclusive with affiliateId) |
affiliateId | No | string | Registered affiliate ID (mutually exclusive with appFees) |
| Field | Type | Notes |
|---|---|---|
orderId | string | Operation ID for tracking |
quoteId | string | Underlying quote ID |
depositAddress | string | BOLT11 Lightning invoice |
paymentLinks.cashApp | string | Cash App deeplink URL |
paymentLinks.shortUrl | string | Short redirect URL (302s to Cash App deeplink) |
amountIn | string | BTC amount in sats |
estimatedOut | string | Estimated output in destination asset smallest units |
feeAmount | string | Platform fee |
feeBps | number | Fee rate in basis points |
totalFeeAmount | string | Total fees (platform + app fees) |
feeAsset | string | Fee denomination |
route | string[] | Pipeline steps |
expiresAt | string | ISO timestamp when the Lightning invoice expires |
Affiliate Fees
The onramp endpoint supports the same affiliate fee model as the standard quote flow. Pass eitherappFees (inline) or affiliateId (registered) to collect fees on each onramp transaction.
Next Steps
- API Overview for authentication and error handling
- Order Lifecycle for status transitions and webhook payloads
- Webhooks for real-time order updates