Skip to main content

Core Concepts

Smart Wallets

Every Zet-managed wallet is an ERC-4337 compliant smart contract wallet that lives on-chain.

Why smart accounts?

Deterministic addresses

When you create a wallet via the Zet API, the address is derived deterministically from the same factory contract, salt, and owner. This means:
  • The wallet address is identical on Base, BSC, and all supported EVM chains
  • No separate deployment step per chain — lazy deployment happens on first use
  • You can show users a single address for all chains

Gas sponsorship

Zet sponsors gas for all transactions executed through Zet-managed wallets. Your users never need to hold native tokens (ETH, BNB) for gas.

Custodial vs Non-Custodial

Zet supports both integration models:

Custodial (Zet-managed wallets)

Use walletId in your API calls. Zet handles everything:
  • Zet creates and manages the wallet
  • Transactions are signed and broadcast automatically
  • Gas is sponsored — zero native token balance needed
  • Best for: fintech apps, neobanks, custodial exchanges

Non-Custodial (bring your own wallet)

Use sourceAddress / destinationAddress in your API calls. Zet returns transaction data for the user to sign:
  • User controls their own wallet and keys
  • Zet returns unsigned transaction data (approvalData, transactionData)
  • User must sign and broadcast transactions themselves
  • Gas paid by the user
  • Best for: DeFi apps, self-custody wallets, advanced users

Transaction lifecycle

Every transaction follows the same lifecycle:
1

Quote

Request a price quote. Includes fees, rates, and estimated output. Valid for ~5 minutes.
2

Initiate / Execute

Submit the quote ID to start the transaction. For ramps, this returns deposit details. For swaps/transfers, execution begins immediately (custodial) or returns transaction data (non-custodial).
3

Pending

The transaction is in progress. For on-ramps, waiting for user’s bank transfer. For swaps, the route is being executed on-chain.
4

Completed / Failed

Terminal state. On completion, crypto is delivered and webhook fires. On failure, an errorMessage explains what went wrong.
Use webhooks for production to receive real-time status updates. Polling (GET /onramp/{id}) is available but webhooks are more efficient and reliable.

Fee structure

Zet charges transparent, predictable fees. All fees are included in the quote response — what you see is what you get.

On-ramp (Buy crypto with NGN)

Off-ramp (Sell crypto for NGN)

Swap

Cross-chain transfer

Platform fees in NGN are converted to the source token at the current market rate and deducted from the transaction.

Routing

Swaps and cross-chain transfers are routed through Zet’s multi-chain liquidity aggregator that finds the optimal path across:
  • DEXs: Multiple decentralized exchanges
  • Bridges: Multiple bridge protocols
The routing engine considers:
  • Best price across all available paths
  • Slippage tolerance (default: 0.3%)
  • Gas costs on source and destination chains
  • Bridge reliability and speed

Idempotency

Use the reference field when initiating transactions to ensure idempotency. If you retry a request with the same reference, Zet returns the existing transaction instead of creating a duplicate.