Skip to main content
On Ethereum, Base, Arbitrum, Optimism, Polygon, and BSC, a quote returns "scheme": "evm_7702". The sender signs twice with the same key:
  1. An EIP-7702 authorization, which lets their address run Bitnob’s paymaster router code for the transfer.
  2. An EIP-712 witness, which binds the router to exactly the transfer that was quoted.
The sender doesn’t need ETH, POL, or BNB. Bitnob pays the gas.

Request the quote

The request is the same as on every chain. Only chain, asset, and the address format change.
The sign block contains: The response also includes router_version, the router contract version this quote targets. Leave router_version out of the request unless Bitnob support has asked you to pin one.

Sign with a local key

This example uses ethers v6.14 or later, which can sign EIP-7702 authorizations. It’s suited to sandbox tests and to self-custody apps where your client code holds the user’s key.
sign-evm.mjs
Both values are 0x-prefixed 65-byte signatures (r, s, v), which is the format Submit expects. witness is standard EIP-712 typed data. On Base it looks like this:
verifyingContract is the sender’s own address, because EIP-7702 delegates it to the router. Amounts in message are in base units, such as 1000000 for 1 USDC. Show the user the decimal amounts from the quote, not these.

Sign with a hardware or custom signer

If your signer can’t take structured EIP-7702 or EIP-712 input, sign the two hashes in sign.digests directly. The result is the same pair of signatures.
Sign a digest without hashing it again. signMessage and personal_sign add the EIP-191 prefix and produce a different signature, which Submit rejects with 422.

Signing in the user’s browser wallet

Your user’s wallet has to support signing EIP-7702 authorizations for an arbitrary contract, and many browser extension wallets don’t yet allow it. Before you build on a wallet, test it in sandbox with a real quote. Embedded wallets and self-custody apps that hold the key in your own client code can use the local-key example above.

Submit and track

Send both signatures in one call to Submit signatures:
On EVM chains the status passes through assembled, when Bitnob has built the fully signed transaction, before pending and completed.

Common problems