Sluice

Get paid in USDC on Solana, from whatever your customer holds.

Share a link. Your customer pays with what they already hold. You receive exactly the invoiced USDC in your Solana wallet, or straight into yield, and nothing counts until Solana itself shows it.

One exception, by design: a private payment adds a tag of 0.000001 to 0.000999 USDC on top of the invoice, so Sluice can find it on Solana without Aurora's transaction hashes.

Payments from Base, Arbitrum, Ethereum, Tron and Bitcoin flow through Sluice into the merchant's USDC on Solana, or into Kamino.
  • 210 assets
  • 30+ networks
  • 17 mainnet runs you can re-check
  • Refunds automatic

Paid live on mainnet from Base, Arbitrum and Optimism, and from a non-EVM wallet on Tron. Every one of those runs is under Live proof.

1. Sign the invoice

The merchant's Solana wallet signs amount, address and how it settles. Change one character and the checkout refuses the link.

2. Pay with what you hold

USDC on Base, ETH on Arbitrum, USDT on Tron, BTC and more. Connect a wallet, or scan a QR from any wallet or exchange.

3. Solana has the last word

The page reads the merchant's balance on Solana itself. A provider's "success" is only a hint. Short, late or failed payments go back to the payer.

Your checkout in three steps

  1. YouYour name and Solana address, checked on Solana as you paste it
  2. How you get paidUSDC in your wallet, or straight into your own Kamino position
  3. Your linkA pay link or a permanent pay page, with a live preview and a QR

One page that never expires

For tips, top-ups and a QR on the counter. Each merchant gets a permanent address per network: customers send any amount from whatever they hold, whenever they like, and it arrives as USDC on Solana. Nothing to quote, nothing to connect.

Live on mainnet: on 4 Nov, 1.10 USDC sent on Base to a merchant's permanent address arrived as 1.089777 USDC on Solana 14 seconds later, checked on Solana. It is the first row under Live proof.

See a permanent pay page

Invoices that earn from the first second

Payment rails leave money idle until someone moves it. With Sluice a customer on Base can pay an invoice and, in one atomic Solana transaction run through Aurora Intents Connect, the USDC is supplied to Kamino and the yield-bearing cUSDC lands in the merchant's own token account. The payer's account never holds the position, and the order's reference travels with the deposit, so the payment is findable from Solana alone.

Sluice's fee rides in the same transaction. On these invoices the payer adds 0.5% on top, sent to Sluice's own account in the very transaction that settles into Kamino, so the merchant still gets exactly the invoice. The fee account and the rate are pinned in the checkout, which shows the fee before the wallet opens and refuses a transaction that asks for anything else.

  1. BasePayer signs once, sends USDC
  2. NEAR IntentsRoutes it to Solana
  3. KaminoSupplies USDC, mints cUSDC
  4. MerchantOwns the position

For APIs and agents

The same rail works without a browser. A Sluice API answers 402 Payment Required with its price in USDC on Solana. The buyer pays from any supported chain and calls again. The server delivers exactly once, only after it has read the USDC credit on Solana, and returns a signed receipt.

A hosted one is live. Ask it for its price:

curl -i https://sluice-api.swiftbotlab.workers.dev/api/report/9cYFzrmHRcsYzLhAWsNemzCy75ZhETn2px4MS8oDDReR

Then create an order with your own refund address, send the exact amount it quotes from your own wallet, and call again with X-Sluice-Order. The receipt key is published at /.well-known/sluice.json. Every step, with the headless buyer that checks the quote against NEAR Intents' public record before it pays:

$ python3 cli/sluice_buy.py https://sluice-api.swiftbotlab.workers.dev/api/report/<address> \
    --pay base:USDC --key-file payer.key --max-usd 0.30
402: price 0.2 USDC on Solana -> 9cYF…DReR
order ord_…: send 0.2121… via base:USDC to 0x…
  quote independently checked with NEAR Intents: recipient, amount, asset, refund address
deposit ok: https://basescan.org/tx/0x…
  SETTLED: Paid: verified on Solana
receipt signature valid: True; body hash matches: True
Solana settlement re-verified: True

Live proof on mainnet

Seventeen real payments, refunds and redemptions from Base, Arbitrum, Optimism and Tron. Each row shows what was verified on 4 Nov, read from Aurora and Solana, and where every unit of the payment went, Sluice's own fee included. Press Check live to read both again from your browser, right now.

Verified 4 Nov, 17:36 UTC: all 17 rows read from Aurora and Solana mainnet. Every hash opens the explorer. With JavaScript on, Check live reads both again from your browser.

One invoice, start to finish (4 Nov): 5.00 USDC from Base into the merchant's Kamino position, Sluice's fee in the same transaction, then redeemed

A 5.00 USDC invoice paid from Base, settled into Kamino, with Sluice's fee
5.452 USDC sent on Base reached the payer's own Solana account as 5.19 USDC. Then one Intents Connect transaction, signed by the payer's Solana wallet, supplied exactly 5.00 USDC to Kamino with the cUSDC going to the merchant, paid Sluice's 0.5% fee (0.025 USDC) to Sluice's account and attached the order reference
Verified 4 Nov, 17:36 UTC: Aurora: success, 0.000882 returned to the payer · refund 0x1c06…4d048f · Solana: merchant +4.134567 cUSDC, Kamino +5 USDC ✓

5.452 USDC sent, 0.000882 refunded and 0.0024 USDC refund gas. The 5.448718 USDC swapped became 5.19 USDC in the payer's own Solana account, after 0.257261 Solana delivery (it includes opening the payer's Solana USDC account, once) and 0.001457 Aurora's 2 bps fee and the solver's price. That account supplied 5.00 USDC to Kamino for the merchant, paid Sluice's 0.025 USDC fee, paid a 0.149068 USDC Intents Connect fee (it includes opening Sluice's fee account, once) and kept 0.015932.

Where every unit went
Sent on Base5.452 USDC
swapped5.448718 USDC
refunded to the payer (the excess)0.000882 USDC
refund fee (gas for the refund transaction)0.0024 USDC
Swapped5.448718 USDC
to the payer's own Solana account (Intents Connect)5.19 USDC
Solana delivery fee (from the quote), including opening the payer's Solana USDC account (once per payer)0.257261 USDC
Aurora's 2 bps fee and the solver's price0.001457 USDC
Reached the payer's own Solana account, which then ran one transaction5.19 USDC
supplied to Kamino for the merchant (who got 4.134567 cUSDC)5.00 USDC
Sluice's fee, 0.5% of the invoice, to Sluice's own account (pinned in the audit)0.025 USDC
Intents Connect fee, to its relayer (pinned in the audit), including opening Sluice's fee account (once)0.149068 USDC
left in the payer's own Solana account0.015932 USDC
The merchant redeemed the 5.00 USDC position
One transaction signed by the merchant's own wallet burned the 4.134567 cUSDC and paid 5.000006 USDC (the 5.00 supplied plus interest) into its own USDC account, 25 minutes after the deposit
Verified 4 Nov, 17:36 UTC: Solana: merchant −4.134567 cUSDC, +5.000006 USDC in its own account ✓

The merchant burned 4.134567 cUSDC and received 5.000006 USDC: the 5.00 supplied plus 0.000006 interest, for a 0.000005 SOL network fee.

Where every unit went
USDC paid into the merchant's own account, for 4.134567 cUSDC burned5.000006 USDC
the 5.00 USDC supplied on 4 Nov5.00 USDC
interest earned since0.000006 USDC

0.000005 SOL network fee, paid by the merchant

Also run on 4 Nov: a non-EVM payer on Tron, a permanent address, two refunds, a second chain, the hosted 402 API, the first redemption

Paid from TRX on Tron, a non-EVM wallet
A Tron wallet signed one plain TRX transfer, 4.026148 TRX to the invoice's Tron deposit address (plus 1.1 TRX of Tron network fees for opening that address), and 1.272 USDC arrived for the merchant on Solana 2 min 39 s later
Verified 4 Nov, 17:36 UTC: Aurora: success · Solana: merchant +1.272 USDC ✓

4.026148 TRX sent, 0.013381 left over, too small to refund. The 4.012767 TRX swapped became 1.272 USDC to the merchant, after 0.010028 USDC Solana delivery and about $0.0043 Aurora's 10 bps fee and the solver's price.

Where every unit went
Sent on Tron4.026148 TRX
swapped4.012767 TRX
left over after the swap, not refunded (less than the 1.30 TRX refund fee)0.013381 TRX
Swapped (Aurora values it at $1.2859)4.012767 TRX
to the merchant on Solana (read from Solana)1.272 USDC
Solana delivery fee (from the quote)0.010028 USDC
Aurora's 10 bps fee and the solver's price≈$0.0043
Hosted 402 API, paid from Base USDC
sluice-api.swiftbotlab.workers.dev answered 402 with its price; the buyer sent 0.2122 USDC on Base and got the report exactly once, after the 0.20 USDC credit on Solana, with a signed receipt
Verified 4 Nov, 17:36 UTC: Aurora: success · Solana: merchant +0.2 USDC ✓

0.2122 sent = 0.20 to the merchant + 0.0122 USDC in fees (0.002071 left over, too small to refund, 0.010077 Solana delivery, 0.000052 Aurora's 2 bps fee and the solver's price).

Where every unit went
Sent on Base0.2122 USDC
swapped0.210129 USDC
left over after the swap, not refunded (less than the 0.0024 USDC refund fee)0.002071 USDC
Swapped0.210129 USDC
to the merchant on Solana (read from Solana)0.20 USDC
Solana delivery fee (from the quote)0.010077 USDC
Aurora's 2 bps fee and the solver's price0.000052 USDC
Permanent address, real money (Intents Deposits)
1.10 USDC sent on Base to the merchant's permanent address, with no quote and no form. 1.089777 USDC arrived on Solana 14 s later
Verified 4 Nov, 17:36 UTC: Aurora: received and delivered · Solana: merchant +1.089777 USDC ✓

1.10 sent = 1.089777 to the merchant + 0.010223 USDC for Solana delivery and Aurora's fee.

Where every unit went
Sent on Base to the permanent address1.10 USDC
to the merchant on Solana (read from Solana)1.089777 USDC
Solana delivery and Aurora's fee (Aurora's record of a permanent address does not split the two)0.010223 USDC
Overpaid invoice: the excess came back
0.30 USDC sent for a 0.25 invoice: exactly 0.25 to the merchant, and 0.037512 USDC back to the payer on Base 26 s later
Verified 4 Nov, 17:36 UTC: Aurora: success, 0.037512 returned to the payer · refund 0x32c8…36b135 · Solana: merchant +0.25 USDC ✓

0.30 sent = 0.25 to the merchant + 0.037512 refunded + 0.012488 USDC in fees (0.0024 refund gas, 0.010007 Solana delivery, 0.000081 Aurora's 2 bps fee and the solver's price).

Where every unit went
Sent on Base0.30 USDC
swapped0.260088 USDC
refunded to the payer (the excess)0.037512 USDC
refund fee (gas for the refund transaction)0.0024 USDC
Swapped0.260088 USDC
to the merchant on Solana (read from Solana)0.25 USDC
Solana delivery fee (from the quote)0.010007 USDC
Aurora's 2 bps fee and the solver's price0.000081 USDC
Short invoice: refunded
0.20 USDC sent for a 0.25 invoice: nothing reached the merchant, and 0.1976 USDC went back to the payer after the quote deadline (4 Nov, 14:58 UTC)
Verified 4 Nov, 17:36 UTC: Aurora: refunded 0.1976 to the payer (quote expired) · refund 0x3c26…ead7c9

0.20 sent = 0.1976 refunded + 0.0024 USDC refund fee. Nothing reached the merchant.

Where every unit went
Sent on Base0.20 USDC
refunded to the payer0.1976 USDC
refund fee (gas for the refund transaction)0.0024 USDC
Paid from ETH on Optimism
A second source chain: ETH on Optimism paid a 0.25 USDC invoice, and the 0.000021 ETH over-sent came back
Verified 4 Nov, 17:36 UTC: Aurora: success, 0.00002098 returned to the payer · refund 0x996f…e44c80 · Solana: merchant +0.25 USDC ✓

0.000133368898372899 ETH sent, 0.000020982670536664 refunded and 0.0000002600774 ETH refund gas. The 0.000112126150436235 ETH swapped became 0.25 USDC to the merchant, after 0.010007 USDC Solana delivery and about $0.0009 Aurora's 10 bps fee and the solver's price.

Where every unit went
Sent on Optimism0.000133368898372899 ETH
swapped0.000112126150436235 ETH
refunded to the payer (the excess)0.000020982670536664 ETH
refund fee (gas for the refund transaction)0.0000002600774 ETH
Swapped (Aurora values it at $0.2608)0.000112126150436235 ETH
to the merchant on Solana (read from Solana)0.25 USDC
Solana delivery fee (from the quote)0.010007 USDC
Aurora's 10 bps fee and the solver's price≈$0.0009
Merchant took its Kamino position out
The merchant's own wallet turned 0.124074 cUSDC back into 0.150041 USDC (the 0.15 supplied plus interest), paid into its own USDC account
Verified 4 Nov, 17:36 UTC: Solana: merchant −0.124074 cUSDC, +0.150041 USDC in its own account ✓

The merchant burned 0.124074 cUSDC and received 0.150041 USDC: the 0.15 supplied plus 0.000041 interest, for a 0.000005 SOL network fee.

Where every unit went
USDC paid into the merchant's own account, for 0.124074 cUSDC burned0.150041 USDC
the 0.15 USDC supplied on 1 Nov0.15 USDC
interest earned since0.000041 USDC

0.000005 SOL network fee, paid by the merchant

Earlier runs, 29 Oct to 3 Nov

Invoice settled into Kamino
One signature on Base: USDC supplied to Kamino, cUSDC in the merchant's own account, order reference attached
Verified 4 Nov, 17:36 UTC: Aurora: success, 0.000617 returned to the payer · refund 0x5043…dd2ce9 · Solana: merchant +0.124074 cUSDC, Kamino +0.15 USDC ✓

0.311943 USDC sent, 0.000617 refunded and 0.0024 USDC refund gas. The 0.308926 USDC swapped became 0.29883 USDC in the payer's own Solana account, after 0.010001 Solana delivery and 0.000095 Aurora's 2 bps fee and the solver's price. That account supplied 0.15 USDC to Kamino for the merchant, paid a 0.14683 USDC Intents Connect fee (it includes opening the merchant's new cUSDC account) and kept 0.002.

Where every unit went
Sent on Base0.311943 USDC
swapped0.308926 USDC
refunded to the payer (the excess)0.000617 USDC
refund fee (gas for the refund transaction)0.0024 USDC
Swapped0.308926 USDC
to the payer's own Solana account (Intents Connect)0.29883 USDC
Solana delivery fee (from the quote)0.010001 USDC
Aurora's 2 bps fee and the solver's price0.000095 USDC
Reached the payer's own Solana account, which then ran one transaction0.29883 USDC
supplied to Kamino for the merchant (who got 0.124074 cUSDC)0.15 USDC
Intents Connect fee, to its relayer (pinned in the audit), including rent for the merchant's new cUSDC account (0.00148844 SOL)0.14683 USDC
left in the payer's own Solana account0.002 USDC
Paid from Base USDC
0.50 USDC received; the 0.002659 USDC over-sent came back on its own
Verified 4 Nov, 17:36 UTC: Aurora: success, 0.002659 returned to the payer · refund 0x291a…7fe9d4 · Solana: merchant +0.5 USDC ✓

0.773463 sent = 0.50 to the merchant + 0.002659 refunded + 0.270804 USDC in fees (0.0024 refund gas, 0.268287 Solana delivery, 0.000117 Aurora's 2 bps fee and the solver's price).

Where every unit went
Sent on Base0.773463 USDC
swapped0.768404 USDC
refunded to the payer (the excess)0.002659 USDC
refund fee (gas for the refund transaction)0.0024 USDC
Swapped0.768404 USDC
to the merchant on Solana (read from Solana)0.50 USDC
Solana delivery fee (from the quote), including rent for the merchant's new USDC account (0.00148844 SOL)0.268287 USDC
Aurora's 2 bps fee and the solver's price0.000117 USDC
Refund: payer sent too little
0.40 sent for a 1.00 invoice; 0.3976 USDC refunded to the payer 30 s after the deadline
Verified 4 Nov, 17:36 UTC: Aurora: refunded 0.3976 to the payer (amount more than balance) · refund 0x7654…14071b

0.40 sent = 0.3976 refunded + 0.0024 USDC refund fee. Nothing reached the merchant.

Where every unit went
Sent on Base0.40 USDC
refunded to the payer0.3976 USDC
refund fee (gas for the refund transaction)0.0024 USDC
Private payment from Arbitrum ETH
Confidential Intents: the provider shows no hashes, the credit is found on Solana
Verified 4 Nov, 17:36 UTC: Aurora: success · Solana: merchant +0.5 USDC ✓

0.000222930139609761 ETH sent, 0.50 USDC to the merchant. Aurora publishes no amounts for a private payment, so the fee split is not public (the quote listed 45 bps of app fees).

Where every unit went
Sent on Arbitrum (the deposit transaction)0.000222930139609761 ETH
to the merchant on Solana (read from Solana)0.50 USDC
Signed link on this checkout
Signed link, deposit address and QR, paid from another wallet, verified by the page
Verified 4 Nov, 17:36 UTC: Aurora: success · Solana: merchant +0.15 USDC ✓

0.161561 sent = 0.15 to the merchant + 0.011561 USDC in fees (0.001531 left over, too small to refund, 0.010006 Solana delivery, 0.000024 Aurora's 2 bps fee and the solver's price).

Where every unit went
Sent on Base0.161561 USDC
swapped0.16003 USDC
left over after the swap, not refunded (less than the 0.0024 USDC refund fee)0.001531 USDC
Swapped0.16003 USDC
to the merchant on Solana (read from Solana)0.15 USDC
Solana delivery fee (from the quote)0.010006 USDC
Aurora's 2 bps fee and the solver's price0.000024 USDC
Filmed for the demo video
One take on the published checkout
Verified 4 Nov, 17:36 UTC: Aurora: success · Solana: merchant +0.15 USDC ✓

0.161535 sent = 0.15 to the merchant + 0.011535 USDC in fees (0.001495 left over, too small to refund, 0.009983 Solana delivery, 0.000057 Aurora's 2 bps fee and the solver's price).

Where every unit went
Sent on Base0.161535 USDC
swapped0.16004 USDC
left over after the swap, not refunded (less than the 0.0024 USDC refund fee)0.001495 USDC
Swapped0.16004 USDC
to the merchant on Solana (read from Solana)0.15 USDC
Solana delivery fee (from the quote)0.009983 USDC
Aurora's 2 bps fee and the solver's price0.000057 USDC
Intents Connect with order reference
Bridged into the payer's Solana account, which paid with the order reference attached
Verified 4 Nov, 17:36 UTC: Aurora: success · Solana: merchant +0.15 USDC ✓

0.000071028266525738 ETH sent, 0.00000067162053299 left over, too small to refund. The 0.000070356645992748 ETH swapped became 0.153555 USDC in the payer's own Solana account, after 0.009983 USDC Solana delivery and about $0.0003 Aurora's 10 bps fee and the solver's price. That account paid the merchant 0.15 USDC with the order reference, paid a 0.001556 USDC Intents Connect fee and kept 0.001999.

Where every unit went
Sent on Arbitrum0.000071028266525738 ETH
swapped0.000070356645992748 ETH
left over after the swap, not refunded (less than the 0.0000012 ETH refund fee)0.00000067162053299 ETH
Swapped (Aurora values it at $0.1637)0.000070356645992748 ETH
to the payer's own Solana account (Intents Connect)0.153555 USDC
Solana delivery fee (from the quote)0.009983 USDC
Aurora's 10 bps fee and the solver's price≈$0.0003
Reached the payer's own Solana account, which then ran one transaction0.153555 USDC
paid to the merchant, with the order reference (read from Solana)0.15 USDC
Intents Connect fee, to its relayer (pinned in the audit)0.001556 USDC
left in the payer's own Solana account0.001999 USDC
API call paid by the CLI
402, order, deposit, verified, report plus a signed receipt
Verified 4 Nov, 17:36 UTC: Aurora: success, 0.001639 returned to the payer · refund 0x8afb…df8a88 · Solana: merchant +0.4 USDC ✓

0.414193 sent = 0.40 to the merchant + 0.001639 refunded + 0.012554 USDC in fees (0.0024 refund gas, 0.010028 Solana delivery, 0.000126 Aurora's 2 bps fee and the solver's price).

Where every unit went
Sent on Base0.414193 USDC
swapped0.410154 USDC
refunded to the payer (the excess)0.001639 USDC
refund fee (gas for the refund transaction)0.0024 USDC
Swapped0.410154 USDC
to the merchant on Solana (read from Solana)0.40 USDC
Solana delivery fee (from the quote)0.010028 USDC
Aurora's 2 bps fee and the solver's price0.000126 USDC