Skip to content

Portuna Sweep

Testnet live · mainnet soon

Sweep deposits to your hot wallet without gas top-ups

Each deposit address authorizes your own sweep contract once, via EIP-7702. The contract has no owner and no upgrades, and can send only to the hot wallet written into its code. We batch up to 300 deposits per transaction, paid from your own gas wallet. Keys never leave your custody.

Estimate your savings

Cost per USDT deposit, in gas units

Ethereum

−30%

Classic: top up, then transfer
62,297
With Portuna Sweep
43,608

BSC no service fee

−74%

Classic: top up, then transfer
50,667
With Portuna Sweep
13,257

The “With Portuna Sweep” figure is the sweep's gas plus our fee, counted in gas units; BSC has no fee. Repeat sweep in a batch of 50 on Ethereum and 200 on BSC, gas measured on forks of mainnet.

The problem

Every token deposit costs two transactions and leaves dust behind

  • A gas top-up for every address

    An address holding only USDT can't move it until someone sends it ETH or BNB. That is a second wallet to fund, a second transaction to sign and a second thing to watch — for every deposit.

  • Dust you will never collect

    Top-ups never match the gas exactly. The leftover native coin stays stranded on thousands of addresses, and collecting it costs more than it is worth.

  • Two transactions per deposit

    Top up, wait, transfer. At thousands of deposits a day, that is thousands of transactions to broadcast, track, speed up and retry.

How it works

Authorize once. Sweep in batches.

  1. 01

    Authorize once

    Each deposit address signs an EIP-7702 authorization for your own sweep delegate — a signature from your HSM, KMS or MPC, nothing sent on-chain. It travels with the address's first sweep.

  2. 02

    We batch

    Your backend asks the API to sweep a set of addresses. We pack up to 300 of them into one transaction sent from your gas wallet. An address that fails is skipped, the batch goes through.

  3. 03

    Funds land in your hot wallet

    The delegate can only send to the hot wallet written into its code. A signed webhook reports what was swept, what it cost, and why anything failed.

Many deposits, one transaction, one destination
Deposit addresses authorize once
  • 0x4f2c…9a1e 7702
  • 0x81d0…37bb 7702
  • 0xc6a9…02f4 7702
  • 0x1be7…d85c 7702
  • 0x9a03…6e17 7702

no ETH or BNB needed

1 tx

Batch transaction

  • gas paid by your gas wallet
  • up to 300 deposits

Your hot wallet

the only possible destination

Savings

What a sweep costs, measured

We benchmarked the classic sweep — top up the deposit with gas, then transfer — against our batched sweep on forks of Ethereum and BSC mainnet. The same benchmark table prices your fee.

Ethereum
−30% on every USDT and USDC sweep on Ethereum: you pay at most 70% of the classic cost, gas included
BSC
up to −75% on repeat sweeps on BSC, with no service fee: you pay network gas only
Transactions a month
1 transaction per batch of up to 300 deposits, instead of two per deposit

Cost per deposit, in gas units

Network and asset Classictop-up + transfer First sweep Repeat sweep
Ethereum
USDT 62,297 43,608 −30% 43,608 −30%
USDC 61,348 42,944 −30% 42,944 −30%
ETH 21,000 29,563 +41% 15,826 −25%
BSC
USDT 50,667 31,257 −38% 13,257 −74%
USDC 57,935 32,535 −44% 14,535 −75%
BNB 21,000 29,157 +39% 13,981 −33%

Batch of 50 on Ethereum and 200 on BSC, the sizes the service sends on mainnet. A first sweep carries the address's one-time authorization; a repeat sweep is every later deposit to the same address. Both include our fee, counted in gas units.

A first sweep of the native coin costs more than a plain transfer from the deposit, so sweep ETH and BNB from addresses already authorized for tokens.

At today's prices

10,000 USDT deposits a day on Ethereum: $3,266 a month the classic way, $2,286 with Portuna Sweep — $11,760 saved a year.

The same volume on BSC: $570 → $190 a month.

Gas 0.07 gwei, ETH $2,505; prices of Oct 10, 2026, 20:42 UTC.

Run your own numbers

Glamsterdam

Ethereum's next upgrade, already live on Sepolia, makes creating on-chain state far dearer for everyone. Repeat sweeps still save 30%; the first sweep of an address that holds only tokens costs about as much as the classic way (+2.7%, gas only, no fee). Permanent deposit addresses gain the most.

Security

Non-custodial by construction

You don't have to trust us with where the money goes. The code on your deposit addresses can do exactly one thing.

Read the security model
  • Your keys stay yours

    Deposit keys never leave your custody. You sign one authorization per address and can still send from it, or revoke the delegation, at any time.

  • One destination, hard-coded

    The delegate sends funds only to your hot wallet, written into its bytecode. A different hot wallet means a different contract and new signatures from you.

  • Only your batches

    The delegate obeys only your batcher, and the batcher only your gas wallet. Nobody else, other partners included, can trigger, redirect or block your sweeps.

  • No admin keys, no upgrades

    The contracts are immutable and have no owner: there is no role to steal and no switch to flip.

  • Check before you sign

    Contract addresses derive from open bytecode. verify-delegate recomputes your delegate and checks it on-chain before a single authorization is signed.

Networks

Ethereum, with BSC included

  • ETH

    Ethereum

    USDT, USDC and ETH. Standard rate: at most 70% of the classic cost, gas included.

    Testnet
    Sepolia · live
    Mainnet
    coming soon
  • BNB

    BSC

    No service fee

    USDT, USDC and BNB. You pay network gas and nothing else — two networks for the price of one.

    Testnet
    BSC testnet · live
    Mainnet
    coming soon

Pricing

Pay per successful transfer. Never more than classic.

  • Usage-based

    Gas plus a fee for each successful transfer, deducted from your prepaid gas wallet. No subscription.

  • Capped at 70%

    On Ethereum a token sweep costs at most 70% of the classic way, gas included. Our fee never takes a sweep above the classic cost.

  • BSC without a fee

    On BSC you pay the network gas and nothing else.

Pricing details

Large volumes? Terms are negotiable. sales@portuna.example

For developers

One API call per deposit

A REST API described in OpenAPI 3.1, SDKs for Go and TypeScript, and signed webhooks.

  • Authorizations from HSM, KMS or MPC. The SDKs turn a raw DER or r‖s signature into a valid EIP-7702 authorization and check it against the deposit address.
  • Idempotent by your IDs. Repeat a request with the same external_id and get the same sweep back.
  • Signed webhooks with retries. Swept, failed or rejected — with the exact gas and fee of every transfer.
  • Test and live keys. ptn_test_ keys work on testnets, ptn_live_ on mainnet.
Read the docs
API=https://api-testnet.portuna.io   # testnet

# Register a hot wallet; the service deploys its delegate
curl $API/v1/hot-wallets -H "Authorization: Bearer $API_KEY" \
  --json '{"chain_id": 11155111, "address": "0xYourHotWallet"}'
# → {"delegate": "0x…", "status": "pending", …}

# Sweep a deposit; the authorization is needed only for its first sweep
curl $API/v1/sweeps -H "Authorization: Bearer $API_KEY" --json '{
  "external_id": "dep-42",
  "chain_id": 11155111,
  "hot_wallet": "0xYourHotWallet",
  "account": "0xDepositAddress",
  "token": "USDT",
  "authorization": {"chain_id": 11155111, "address": "0xDelegate",
                    "nonce": 0, "y_parity": 1, "r": "0x…", "s": "0x…"}
}'
# → 202 {"id": "…", "status": "queued", …}
# queued; the result comes by webhook

FAQ

Questions processing teams ask

Do you hold our funds or keys?

No. Deposit keys stay in your custody, and funds move from deposit addresses straight to your hot wallet in the same transaction. The only money we handle is the native coin you prepay to your gas wallet to pay for gas.

What exactly does a deposit address sign?

An EIP-7702 authorization: “on chain N, my address runs the code of delegate D”, with the address's current nonce. It is valid on one chain only. D is your own delegate, returned by the API and verifiable from open bytecode.

Could you redirect our funds?

No. Your hot wallet is written into the delegate's bytecode, and the contracts have no owner and cannot be upgraded. Even someone holding your gas wallet's key could only sweep your deposits early — into your own hot wallet.

What happens if your service is down?

Nothing gets stuck. Deposit keys keep working: you can move funds from any address yourself, as before, and you can revoke the delegation to turn it back into a plain address.

Will our users notice anything?

No, they deposit to the same addresses as before. One exception: a sender that pays native coin with a hard 21,000 gas limit cannot pay an address that has code. Don't authorize addresses that receive such transfers, or revoke them.

How is the fee calculated?

For tokens, fee = max(0, 70% × classic benchmark − actual gas): you pay the larger of the gas and 70% of the classic cost. On BSC the rate is 0. Every sweep reports its gas, benchmark, rate and fee, so you can check each one.

Why does a first sweep differ from a repeat one?

The first sweep of an address carries its EIP-7702 authorization, which costs extra gas once. Every later deposit to the same address is a cheaper repeat sweep, so addresses that receive deposits again and again save the most.

Which networks and tokens?

Ethereum and BSC: USDT, USDC and the native coin. Testnets — Sepolia and BSC testnet — are live now; mainnet is coming soon.

How do we start?

Sign up in the console, issue a test API key, fund your gas wallet from a faucet, register a hot wallet and send your first sweep. No call with us needed.

Testnet live · mainnet soon

Try it on testnet today

Self-serve on Sepolia and BSC testnet. Mainnet access opens soon — tell us about your volumes and we'll get you ready.