Smart contract FAQ

Questions about smart contracts? Below you'll find answers to some of the question usually asked about by other partners.

How do interactions with smart contracts work at Wert?

Wert will send a transaction to your smart contract with the input data you provide us. This transaction should prompt your smart contract to send the token to the user’s wallet. Please note that, in this case, the payer (Wert) and receiver (the end-user) will not have the same wallet address, so your smart contract will need to allow for that. You can refer to the below diagram to understand the whole cycle.

What wallets will interact with my smart contract?

Wert will interact with your smart contract through two smart wallets. Our estimation wallet will perform dry runs to ensure the transaction can be completed, while our hot wallet will send the required crypto to your contract. If your smart contract requires wallets to be whitelisted, please ensure that you have whitelisted both. Contact us to get the list of Wert wallet addresses.

Will Wert transfer NFTs to my users?

No, Wert does not handle the NFT transfer. We send a crypto transaction to your smart contract to pay for the NFT, and your smart contract should transfer the NFT to the customer’s wallet address (i.e., the buyer’s and receiver’s addresses won’t be the same).

Which blockchains are supported?

Wert currently supports smart contracts on:

  • Arbitrum
  • Binance
  • Ethereum
  • Polygon
  • Tezos

You can find further details on what commodities are supported on each chain in supported coins and blockchains.

What are the requirements for Ethereum/Polygon smart contracts?

  • The smart contract should be verified on Etherscan/Polygonscan. If your contract can’t be verified, you can follow the instructions in verifying your smart contract.
  • The smart contract must invoke payable methods only; non-payable methods are not supported unless you use ERC-20 tokens like USDC or USDT.

What are the requirements for Tezos smart contracts?

All Tezos smart contracts are supported.

Should I verify testnet contracts?

Ethereum and Polygon smart contracts on testnets you’ll use in the sandbox must also be verified. Ethereum contracts should be verified on Etherscan (Goerli)/Etherscan (Sepolia), and Polygon contracts should be verified on Polygonscan (Mumbai).

If your contract can’t be verified, you can follow the instructions in verifying your smart contract.

Can I use a proxy contract?

You can. If you are using a proxy contract, please save the proxy address against the ABI of the implementation contract. You can follow the instructions in verifying your smart contract.

I want to use another language (not JavaScript) to sign my contract data. What should I do?

We recommend using our package as described in generate signed data. However, you can follow our example in signing a payment request and recreate it in any language you choose.

What data should I pass to Wert to execute my smart contract?

All the required details are in our NFT Module Widget documentation page.

How to display NFTs in the module’s interface?

You can show the NFT’s name and image, the author’s avatar, and the author’s and seller’s names in the payment module. To enable this, use our helper and include an extra object at module initialization. All necessary data about the NFT will be passed with the extra object . All the details are on our extra object documentation page.


If you pass the NFT’s URL to Wert, the user will be redirected to it from the email he receives after successfully passing KYC. This means that they can close the payment module and continue the purchase later from the same page.

Can smart contracts be paid using ERC-20s?

This is possible on networks compatible with Ethereum Virtual Machines (EVM), such as Ethereum and Polygon. What would happen is the following:

  1. You pass the necessary smart contract parameters to Wert.
  2. Wert’s smart wallet sends a transaction to your contract with the parameters included in your initial request.
  3. Your contract calls the ERC-20 contract to transfer the required amount of ERC-20 tokens from Wert’s smart wallet.
  4. ERC-20 tokens are transferred from Wert’s smart wallet to your contract.
  5. Your contract transfers the NFT/token to the end user’s wallet address.

You can refer to the diagram below for a representation of these steps.

What happens if a transaction that Wert sends to a smart contract fails?

To avoid this, we do a ‘dry run’ operation before sending a transaction to a smart contract. This helps ensure that the transaction can still be executed. In the unlikely event that the transaction still fails, a failover order will be created.

The failover order sends the amount that would be sent to the smart to contract (in crypto) to the user’s wallet, which they can then use to purchase another NFT. If the user does not want the crypto, they can contact us, and we will refund their card when they send back the crypto.

Documentation related to this page