The buyer paid for the order in crypto, the transaction is visible on the blockchain, the provider confirmed the receipt. But in Shopify or WooCommerce the order did not appear, or its status did not update. This does not necessarily mean there is a problem with the payment. Most often the failure happens in the integration chain between the on-chain event, the payment provider and the store platform.
This article looks at why the blockchain, the provider and the store are different data sources, where the connection between them usually breaks, and how to diagnose a situation where the payment is confirmed but the order in the store has not updated.
The blockchain, the payment provider and the store are different layers
When a buyer transfers cryptocurrency, the event passes through several systems. Each of them records only its own part of the process.
| Layer | What it records | What it does not do on its own |
|---|---|---|
| Blockchain | tx hash, network, address, amount, inclusion in a block | Does not create or update the order |
| Payment provider | Checkout or invoice, amount received, status, confirmations | Does not change the order status without integration |
| Shopify/WooCommerce | Order, payment status, order status | Does not read the blockchain directly |
Transaction confirmed on-chain means the transaction went through at the network level. Invoice paid means the payment provider recognised the payment. Order paid or Processing means the store received the event and updated the order.

These states do not sync on their own. If an order was not created or did not update, it usually means the integration between the provider and the store did not fire somewhere.
Between payment and order update there is a chain of eight steps

The typical path looks like this:
- The buyer sends the transaction
- The network confirms the transaction
- The payment provider records the receipt and changes the checkout/invoice status
- The provider sends a webhook or callback to the merchant's endpoint
- The endpoint receives the event and checks the signature
- The backend matches the checkout ID or reference with the order ID
- The backend calls the Shopify API or WooCommerce gateway logic
- Shopify or WooCommerce updates the order
If any step breaks, the buyer may have genuinely paid, but the store will not see it automatically.
It is important to note that a payment provider usually does not work with just two states — "paid" and "not paid". There can be intermediate and exceptional statuses: waiting for confirmations, the amount arrived partially, the payment arrived late, there was an overpayment. Because of this, a transaction being in a block does not always mean the order can immediately move to a final status.
Five common reasons why the payment exists but the order did not update

1. The buyer chose the wrong network or token
For example, the buyer sent USDT on ERC20 when the checkout was expecting TRC20. Or they sent a token on a network the provider does not support for that payment. In the explorer the transaction may look successful, but the provider will not match it with the right checkout.
2. The webhook did not reach the store
The provider recognised the payment, but the store's endpoint was unavailable, returned an error, or did not respond in time. As a result, the provider sees a paid invoice, but the store stays in the old status.
3. The webhook signature did not pass verification
The webhook arrived, but the backend rejected it. A common cause: the code checks the HMAC against an already modified JSON after middleware, not against the raw body. In that case the signature does not match and the event is not processed.
4. The order reference did not match
The webhook was accepted, the signature is correct, but the backend cannot find the order. For example, the order ID was not passed when the checkout was created, the ID format is different from what is expected, or the metadata does not contain the needed link.
5. The error happened on the Shopify or WooCommerce side
The backend received the event and tried to update the order, but the platform returned an error. In Shopify this can be related to app scopes or an API call. In WooCommerce, to gateway code, the callback endpoint, block checkout or a plugin.
| Cause | How the symptom looks | Where to check |
|---|---|---|
| Wrong network or token | Transaction exists in explorer, invoice is not paid | Network, contract address, supported assets |
| Webhook did not arrive | Provider sees payment, store is silent | Delivery logs, response code, endpoint URL |
| HMAC error | Webhook received but rejected | Raw body, secret key, middleware order |
| No order reference | Webhook successful, order not found | Checkout metadata, reference, order ID format |
| Platform error | Event processed, API call failed | Shopify app scopes, WooCommerce gateway logs |
Shopify will not know about a crypto payment without a backend integration
Shopify does not read the blockchain and does not update the order just because an external transaction went through. Crypto payment requires a backend or app layer: it receives the event from the payment provider, checks it, links it to the order and updates Shopify through the API.

For Shopify diagnostics, you need to look not at the block explorer, but at the delivery and processing logs: Dev Dashboard, Monitoring, Logs, response code, response time, failed delivery rate and removed webhook subscriptions.
In WooCommerce, the order only updates through server-side gateway logic
In WooCommerce, a payment button or redirect does not by itself make an order paid. After a successful payment, the gateway code must process the callback and call the right server-side logic. This is what moves the order to the correct status and triggers further processing.
| WooCommerce status | What it means |
|---|---|
| Draft | Order created when entering block checkout, but payment not completed |
| Pending payment | Order created, payment not yet confirmed |
| On hold | Payment requires manual review or delayed confirmation |
| Processing | Payment completed, order can be fulfilled |
| Failed | Payment did not go through or gateway returned an error |
Sometimes "the order did not appear" means the order exists but stayed in Draft. This is often related to block-based checkout: the order is created when the page is opened, but if the payment did not reach the gateway code, it does not move to Pending payment or Processing.
Another common source of confusion is webhooks. Core WooCommerce webhooks send events from the store outward. An incoming callback from a crypto provider must be handled separately: through a WC-API hook inside the gateway plugin or through a WordPress REST endpoint.
For a server-to-server callback you cannot rely on cookie auth or nonces, because the external provider is not inside the user's WordPress session. The endpoint must be built for an external request, check the signature, and safely process the payload.
Diagnostics: what to check step by step
If the buyer paid but the order did not update, the best approach is to go through the chain.
1. Blockchain
Check the tx hash, network, token/contract address, recipient address, amount, inclusion in a block and the required number of confirmations. Make sure the network and token match what the checkout was expecting.
2. Payment provider
Check the checkout or invoice ID, the expected and received amount, the status, the payment expiry and the external order reference in the metadata. If the status is intermediate, the order may not be ready to update yet.
3. Webhook delivery
Check the endpoint URL, response code, response time, delivery attempts and the signature verification result. For Shopify, check delivery logs. For WooCommerce, check the gateway plugin logs and endpoint.
4. Backend endpoint
Check the raw payload, HMAC validation, mapping of checkout ID to order ID, idempotency store, exception logs and the task queue. For WordPress, separately check route registration and the endpoint access model.
5. Store platform
For Shopify, check the order or draft order, app scopes and the update API call. For WooCommerce, check the order status, order notes, gateway callback path, block/shortcode checkout compatibility and plugin logs.
After diagnostics, manual reconciliation may be needed: link the paid checkout to the order, update the status manually and record an incident note. This is a normal operational step if the automatic chain did not fire.
Finassets: checkout session, callback and reference for linking to the order
The "payment went through but order was not created" scenario usually happens where there is no stable connection between the blockchain event and the order update. For a store it is important that the payment layer provides a unique session, a clear status and a callback with a reference to the order.
Finassets Structured Checkout creates a separate payment session for each order. The session is linked to a reference that the merchant passes when creating the checkout, for example the order ID in Shopify or WooCommerce. When the payment changes status, Finassets sends a callback to the merchant's endpoint.
The store's backend receives the callback, checks the signature, matches the reference with the order ID and updates the order through the API. Finassets covers the payment layer: a unique session, payment status and callback. The order update in Shopify or WooCommerce is built on top of this backend integration.
- Networks and assets: TRC20, ERC20, BEP20 and 70+ assets
- Processing speed: a transaction is usually identified within ~15 seconds, balance credited within ~30 seconds after network confirmation (typical figures; may vary depending on the network and processing conditions)
- TRON Energy Saving System: pre-purchased Energy helps fix the cost of a TRC20 transfer before confirmation and can reduce the fee by more than 50% compared to the burn model. The effect depends on Energy availability and network conditions
- Pricing: progressive scale 0.40% → 0.30% → 0.25% → 0.20% by volume
- Onboarding: 2–7 business days, subject to KYB and compliance review
→ Discuss API integration for Shopify or WooCommerce
If the transaction is visible in the explorer but Shopify or WooCommerce did not update the order, this is usually not a blockchain problem. The cause is more often in the integration chain: wrong network, webhook that did not arrive, signature error, missing order reference or a failure on the platform side. These incidents have a verifiable cause and a clear diagnostic process. If you need help designing the integration or working through an incident, get in touch with the Finassets team.