Skip to main content

Smart contract payments troubleshooting

Use this guide to troubleshoot common issues when accepting non-custodial payments through Volet.com smart contracts on Ethereum, BNB Smart Chain and TRON.

Find the issue below and follow the recommended steps. For contract addresses, parameters and error definitions, see Smart contract reference.

Wallet and network issues​

IssuePossible causeHow to resolve
Wallet connection rejectedCustomer rejected the request or the wallet is lockedAsk the customer to unlock their wallet and reconnect
MetaMask not detectedNo compatible browser wallet is installed or availableInstall MetaMask or connect using a supported WalletConnect wallet
Wrong EVM networkWallet is connected to a different network than the one selected at checkoutRequest a network switch and verify the chain ID
WalletConnect connection failsInvalid Project ID, incorrect configuration or unsupported wallet/networkCheck the Reown project configuration and supported networks
TronLink not detectedExtension is not installed, enabled or unlockedInstall or unlock TronLink and refresh the page
Wrong TRON networkWallet is connected to a test network or an unexpected networkSwitch to TRON Mainnet and verify the active network

Always verify the wallet address and selected network again before initiating a payment, especially after a wallet connection or network switch.

USDT approval issues​

USDT payments may require an approval transaction before the payment processor can transfer tokens.

IssuePossible causeHow to resolve
Approval transaction rejectedCustomer rejected the request in their walletAllow the customer to retry approval
Insufficient allowanceThe processor is not authorised to spend the required amountCheck allowance() and request approval for the required amount
Ethereum USDT approval failsExisting non-zero allowance cannot be changed directly to another non-zero amountApprove 0, wait for confirmation, then approve the required amount
Insufficient USDT balanceCustomer does not have enough tokens for the total paymentCheck balanceOf() against previewPayment().totalPay
Approval succeeded but payment is pendingApproval was completed, but the payment transaction has not been submitted or verifiedCheck the current allowance, then initiate or verify the separate payment transaction

Important: A successful approve() transaction is not a completed payment. Only the payment processor's transfer() transaction can be used to verify the order payment.

Transaction and contract errors​

Error or issuePossible causeHow to resolve
InvalidTotalAmountValidationNative value or callValue does not match the expected payment totalCall previewPayment() again and submit the returned totalPay
SellerIsBuyerBuyer and merchant wallet addresses are identicalCheck that the merchant receiving wallet differs from the connected buyer wallet
SellerZeroAddressMerchant receiving address is the zero addressConfigure a valid merchant wallet
AmountIsZeroPayment amount is zeroValidate the order amount before submitting the transaction
CommissionExceedsAmountProcessing fee cannot be deducted from the requested amountReview the order amount and fee setting
SellerNotWhitelistedMerchant receiving wallet is not authorised by the processorContact Volet.com to check the wallet's authorisation
EnforcedPausePayment processing is paused in the contractStop submitting payments through the affected processor and contact Volet.com
Token transfer failsInsufficient token balance, allowance or token-specific restrictionsVerify the token contract, balance, allowance and selected network
Insufficient gasCustomer does not have enough ETH or BNB for network feesAsk the customer to maintain sufficient native coin balance
Insufficient TRON resourcesCustomer has insufficient Energy, Bandwidth or available TRXReview resource requirements and available TRX
TRON OUT_OF_ENERGYContract execution exhausted the available Energy or configured fee limitEstimate resource consumption and review the transaction's feeLimit
TronGrid HTTP 429API rate limit exceededUse a server-side API key and retry requests with backoff

Contract errors depend on the deployed processor. See Smart contract reference for error definitions.

Payment remains pending​

An order may remain pending even after a customer submits a transaction.

SituationWhat to checkRecommended action
Transaction hash returned, but no receiptTransaction may not yet be included in a blockContinue checking the same txid
Transaction executed but is not finalizedRequired network finality has not been reachedWait for finality before completing the order
USDT approval confirmed, but no payment foundOnly the approval transaction was submittedCheck whether a separate payment transaction exists
Transaction succeeded, but order is still pendingPayment details may not match the order, or backend verification may be incompleteCompare the processor, asset, recipient, amount and contract call against the order
TRON transaction is visible but not solidifiedTransaction has not yet appeared in SolidityNode dataContinue checking the solidified transaction receipt
RPC request fails or times outProvider is temporarily unavailableRetry verification without marking the transaction as failed
Customer closed or refreshed the checkoutBrowser session ended before payment confirmationContinue verification through the backend reconciliation worker
Checkout expired before payment confirmationTransaction may confirm after the checkout window closesKeep tracking submitted payment attempts and reconcile late payments

Transaction succeeded, but the order is not marked paid​

A successful blockchain transaction does not necessarily mean that the correct order was paid.

Your backend must confirm:

  1. The transaction used the expected payment processor contract.
  2. The asset and merchant receiving wallet match the order.
  3. The payment amount and fee settings are correct.
  4. The merchant received the expected funds.
  5. The transaction reached the required blockchain finality.
  6. The transaction hash has not already been used for another order.

If any required detail does not match, do not automatically mark the order as paid. Keep the payment under review for investigation.

For the full verification process, see Payment verification and order tracking.

Contact support​

If the issue persists, contact Volet.com and provide:

  • Blockchain network and asset.
  • Payment transaction hash (txid), if available.
  • Approximate date and time of the transaction.
  • Merchant order ID.
  • Payment processor contract address.
  • Error message or description of the issue.

You can contact our team through Volet.com support.

Security: Never share wallet seed phrases, private keys or secret API credentials.