Due to on-chain network congestion, gas fee fluctuations, or user delays, merchants may encounter situations where a user completes payment after an order has already expired (late payment), or only pays a partial amount (partial payment). To protect merchant funds and provide flexible order handling, Infini offers a well-defined Order Status system, Exception Tags, and real-time Webhook notifications.
This guide explains the core business logic for expired orders, late payments, and partial payments, and shows merchants how to correctly parse Webhook data for accurate reconciliation and order processing.
1. Order Status & Exception Tag Definitions
When integrating with the Infini payment gateway, it is important to distinguish between two separate dimensions: Order Status and Exception Tags. Order Status reflects the main lifecycle stage of an order, while Exception Tags are supplementary markers that flag special or abnormal on-chain payment behavior.
1.1 Order Status
Order Status is the core database field that records the final processing state of an order. Merchants can retrieve it via the Query Order API (GET /v1/acquiring/order) or by listening to Webhook events.
Value | Description |
| Order created, awaiting on-chain payment from the user. |
| On-chain payment detected, but funds are not yet fully confirmed (e.g., partial funds received or awaiting block confirmations). |
| Order fully paid; funds successfully confirmed and credited. |
| Order expired with only partial payment received; the amount did not meet the required order total. |
| Order expired with no payment received. |
1.2 Exception Tags
On-chain payments are irreversible and subject to delays, which can lead to various abnormal situations. Infini provides exception tags (exception_tags) to assist merchants with customer service, financial reconciliation, and risk management.
Important: Exception tags are supplementary markers only. They never affect the order's main status, and a single order can carry multiple exception tags simultaneously.
Tag Name | Description |
| Late payment. The user completed payment after the order had already expired. This is distinct from the |
2. Core Scenario Breakdown
The following sections provide a detailed breakdown of the two key abnormal payment scenarios: late payment and partial payment, covering their business behavior, data changes, and Webhook behavior.
2.1 Late Payment Scenario
A late payment occurs when a user fails to complete payment within the order's validity window, but the funds still arrive at Infini's receiving address within a grace period after expiration.
Grace Period: Infini provides a default 24-hour grace period. If a user completes payment within 24 hours after order expiration, the funds will still be credited to the merchant's account balance.
Order Status: Even though the funds are successfully received, the order status remains
expired— it will not be reversed topaid.Exception Tag: The system automatically appends the
lateexception tag to the order.Webhook Behavior:
The system will continue to send Webhook notifications to the merchant.
The
statusfield in the Webhook payload remainsexpired.The
amount_confirmedfield is updated to reflect the actual amount received.The
exception_tagsarray will include"late".
2.2 Partial Payment Scenario
A partial payment occurs when a user initiates a payment but the amount paid is less than the order's required total, and the order ultimately expires.
Order Status: When the order reaches its expiration time with a received amount greater than zero but less than the required total, the status changes to
partial_paid.Webhook Behavior:
The system sends a Webhook notification with
statusset topartial_paid.The
amount_confirmedfield reflects the actual partial amount received.
3. Integration Best Practices
To avoid missed orders, duplicate fulfillment, or reconciliation discrepancies caused by abnormal on-chain payments, merchants are advised to follow the practices below.
3.1 Parse Webhook Holistically
When handling Webhook callbacks, do not rely solely on the status field to decide whether to fulfill an order. Always evaluate status, exception_tags, and amount_confirmed together.
// Example Webhook payload for a Late Payment { "event": "order.updated", "order_id": "ord_123456789", "amount": "100.00", "amount_confirmed": "100.00", "status": "expired", "exception_tags": ["late"], "timestamp": 1716710400 }
3.2 Recommended Handling Logic
When your server receives a Webhook from Infini, use the following decision table to determine the appropriate business action:
|
|
| Recommended Action | Case Notes |
| No | Yes | Fulfill the order. Payment was completed in full within the validity window. | The merchant's Infini account has received the full order amount. Proceed to fulfill for the customer. |
| Yes | Yes | Handle late receipt. Funds have been credited but the order was already expired. Depending on your business policy: (1) Auto-fulfill the order (recommended); or (2) Refund the payment and notify the customer. | The customer paid after order expiration, but funds still arrived. The merchant decides how to proceed — no need to contact Infini. |
| No | No | Handle partial payment. The order expired with insufficient funds. Do not fulfill. The merchant should contact the customer directly to collect the remaining balance or arrange a refund. | The merchant received only partial funds. This is handled directly between the merchant and the end customer — no need to contact Infini support. |
| No | No | No action required. The order expired normally with no payment received. | Order timed out with no funds received. No action needed. |
4. FAQ
Q1: Why does the order status still show expired even though the customer already paid?
A: This happens because the payment was made after the order's validity window had closed (e.g., the 15- or 30-minute payment window).
To maintain transaction integrity, the system does not reverse an expired order status. However, within the 24-hour grace period, the funds will still be safely credited to your account and the late tag will be applied.
Q2: Will Webhooks still be sent for a late payment?
A: Yes. Even though the order status remains expired, the system will still trigger a Webhook when the funds are confirmed. The amount_confirmed field will be updated to the actual amount received, and exception_tags will include "late".
Q3: Can I rely entirely on the Webhook event and status to determine the payment state, or should I also follow the exception tag logic?
A: To avoid missed orders, we strongly recommend combining exception_tags and amount_confirmed in your processing logic — do not rely on status alone.
If you only trigger fulfillment when status == "paid", you will miss all late payment orders and risk customer complaints.
By also handling the case where status == "expired" and exception_tags contains "late", you can automate fulfillment for late payments and significantly reduce manual support workload.
V. Contact Us
If you have any questions or feedback regarding the API integration feature, please feel free to contact our support team through customer service channels. Click the small green phone icon in the bottom right corner of the Infini system and select [Message] to contact us.
Disclaimer: Infini provides technology and payment infrastructure services. Financial and payment services are delivered by licensed partner institutions and are subject to applicable laws and regulations. Service availability and scope may vary by region. This content is for reference only and does not constitute any commitment or investment advice. The service is not available in Mainland China, the United States, or other restricted jurisdictions.
