This reusable NFT marketplace payment integration testing checklist helps product, engineering, and QA teams validate wallet connections, crypto and card checkout, transaction states, webhooks, refunds, NFT delivery, and creator payouts before launch or after a major change.
Overview
Payment testing for an NFT marketplace is broader than confirming that a wallet can sign a transaction. A reliable integration must keep the order, payment provider, blockchain transaction, NFT transfer, marketplace inventory, and creator payout synchronized—even when one part is delayed or fails.
Use this checklist for a new NFT payment gateway, a wallet API, an embedded wallet, a card or fiat onramp, a new blockchain, or an SDK and API version upgrade. Test in a sandbox or testnet where available, then run a carefully controlled production verification with a low-risk listing and clear rollback procedures. Record the provider, chain, wallet type, token standard, API version, and environment for every test result.
Before testing, define the expected state transitions. For example: created, payment pending, payment confirmed, delivery pending, delivered, failed, refunded, or under review. Each state should have a customer-facing message, an internal record, and a safe recovery path. Do not treat a successful wallet signature as proof that the marketplace has received final payment.
For related operational controls, pair this checklist with the NFT Payment API Integration Guide and the NFT Checkout UX Troubleshooting Guide.
Checklist by scenario
1. Wallet connection and account setup
- Connect each supported browser wallet, mobile wallet, embedded wallet, and WalletConnect-compatible flow.
- Confirm that the marketplace identifies the correct public address and does not expose seed phrases or private keys.
- Test connecting, disconnecting, reconnecting, refreshing the page, and changing accounts during checkout.
- Verify that a user cannot pay from one address while the order or NFT delivery is assigned to another address without an explicit confirmation.
- Switch to an unsupported chain and confirm that the interface gives a clear recovery instruction rather than failing silently.
- Switch between supported chains and confirm that network, currency, contract address, token ID, and estimated fees update together.
- Test rejected connection requests, locked wallets, unavailable providers, wallet timeouts, and a user closing the wallet window.
2. Crypto checkout and transaction states
- Complete a normal purchase using the marketplace’s supported payment asset and confirm that the displayed amount matches the amount submitted.
- Test insufficient balance, insufficient gas, an expired quote, a stale listing, and a price change between checkout and confirmation.
- Reject the signature or transaction and verify that the order remains recoverable without being marked paid.
- Submit a transaction, close the browser, and return later. The marketplace should recover status from its backend rather than relying on the browser session.
- Test pending transactions, dropped transactions, failed transactions, and replaced or speed-up transactions. Confirm that only the valid transaction can complete the order.
- Check confirmation handling against the marketplace’s defined settlement rule. A transaction hash alone should not automatically trigger NFT delivery unless that behavior is intentional and risk-assessed.
- Attempt to reuse a transaction, order, payment intent, or signed payload and confirm that replay or duplicate fulfillment is blocked.
3. Card, fiat, and onramp checkout
- Run successful, declined, canceled, timed-out, and abandoned card-payment scenarios through the payment provider’s test tools.
- Confirm that a card authorization does not create duplicate NFT delivery when the browser retries or the provider sends the same event more than once.
- Test the transition from fiat payment to wallet creation or wallet connection, including users who leave before completing setup.
- Verify that the order displays the correct currency, conversion information, payment status, and next action without presenting an unconfirmed crypto amount as final.
- Test a provider dispute, refund, or chargeback event in the available sandbox. Define whether the NFT is held, delivery is reversed where technically possible, or the account is placed under review.
4. Webhooks, API reliability, and idempotency
- Send each relevant webhook twice and confirm that the second event does not create another order, transfer, payout, or email.
- Deliver events out of order and verify that the backend uses event timestamps, sequence data, or provider lookups rather than assuming arrival order.
- Test invalid signatures, unknown event types, malformed payloads, expired timestamps, and requests from untrusted sources.
- Force a timeout after the provider has accepted a payment. The retry should query or reconcile the existing payment instead of creating a new one.
- Confirm that webhook retries are logged with a correlation ID, attempt count, response code, and final disposition.
- Use idempotency keys for payment creation, order creation, NFT delivery, refunds, and payout initiation. Verify behavior when the same key is reused with identical and conflicting data.
5. NFT delivery, inventory, refunds, and payouts
- Complete delivery for every supported token standard and verify contract address, token ID, quantity, recipient address, and metadata reference.
- Test a sold-out listing, a concurrently purchased listing, a transfer failure, a contract revert, and a marketplace inventory update that arrives late.
- Confirm that the buyer receives a usable transaction link or status explanation and that support staff can locate the order from the wallet address, order ID, and transaction hash.
- Test full and partial refunds where supported. Confirm how fees, gas, creator royalties, platform fees, and payout reversals are represented in the ledger.
- Verify that creator payouts are calculated once, sent to the intended wallet, and held or retried safely when a payout transaction fails.
- Check that payout permissions follow the marketplace’s treasury controls. The NFT Treasury Wallet Access Review provides a useful companion for roles and approvals.
What to double-check
Build a test matrix rather than relying on one successful purchase. At minimum, map each combination of payment method, chain, wallet type, token or currency, token standard, user state, and failure state. Mark whether the case is automated, manual, or intentionally out of scope.
Double-check the provider’s current error codes and webhook schema, the SDK and API versions in use, supported chain identifiers, contract addresses, token decimals, gas estimation behavior, and confirmation rules. A small configuration mismatch can make a valid payment appear unpaid or send an asset to the wrong destination.
Review privacy and security boundaries as well. Logs should contain enough information to investigate an order but should not contain private keys, seed phrases, full payment credentials, or unnecessary personal data. Confirm that administrative tools cannot approve delivery or payouts without appropriate authorization and audit records.
Test observability before launch: alerts for stuck orders, repeated webhook failures, unexpected contract reverts, payout queues, reconciliation differences, and unusually high payment failure rates. A good NFT payment integration is not only one that works; it is one the team can diagnose when a provider, chain, or wallet behaves differently.
Common mistakes
- Testing only the happy path: Successful purchases do not reveal what happens after a rejected signature, browser closure, chain switch, or delayed confirmation.
- Trusting the client: Treat wallet-submitted data, displayed balances, and browser callbacks as untrusted until the backend verifies the payment and asset details.
- Using transaction hashes as unique order records: Maintain separate order, payment, delivery, and payout identifiers so reconciliation remains possible.
- Ignoring retries: Providers and networks can repeat events. Without idempotency, one payment can trigger duplicate fulfillment or payouts.
- Failing to test concurrency: Two buyers can attempt to purchase the same NFT before either request updates inventory.
- Assuming all wallets behave alike: Mobile deep links, account changes, rejected requests, and chain-switch prompts differ across wallet implementations.
- Leaving test configuration in production: Separate keys, endpoints, contracts, callback URLs, and monitoring for testnet, staging, and production.
- Skipping reconciliation: Compare marketplace records with provider events and on-chain activity so unresolved payments become visible rather than silently aging.
When to revisit
Run the full regression checklist before the initial launch, after a major marketplace release, and whenever a payment method, chain, wallet SDK, provider API, token standard, or contract changes. Repeat the relevant scenarios after an incident, a failed payout, a duplicate order, a provider outage, or a change to refund and dispute handling.
Before seasonal planning cycles or major promotional events, test capacity, webhook backlogs, inventory locking, support access, and payout queues—not only individual checkout screens. Review the matrix whenever workflows or tools change, and retire cases only after documenting why they no longer apply.
For a practical release gate, require signed results for every critical path: wallet connection, chain switching, successful crypto payment, card or fiat payment if offered, insufficient funds, rejected signature, pending and replaced transaction, webhook retry, duplicate order prevention, refund, NFT delivery, and creator payout. Record open defects, owners, workarounds, and the date of the next review. This turns an NFT payment integration testing checklist into a living control for every release.