Event List
| Event Name | Event Type | Trigger Condition | Data Structure |
|---|---|---|---|
| Trade Order Payment Succeeded | trades.succeeded | When a payment is successful | Trade |
Event Object
Field Name | Type | Description |
|---|---|---|
trade_id | string | Trade order ID |
access_no | string | Assigned access number for your platform |
merchant_id | string | Merchant ID of your platform |
amount | string | Payment amount, truncated to two decimal places. |
currency | string | Currency of the transaction amount |
customer_id | string | Customer ID |
paid_at | string | The successful payment time of the trade order |
metadata | map<string, string> | Passthrough metadata. Key ≤ 40 bytes, value length ≤ 500 bytes. Total size after JSON encoding must be ≤ 1024 bytes. |
last_payment_error | PaymentError | Details of the last payment error. If this field has a value, it indicates |
next_action | NextAction | Next action |
order_id | string | Order ID from your platform |
last_trans_id | string | Transaction ID for the order |
payment_mode | string | Payment mode:
|
payment_token | string | Payment tokens used for subscription renewal charges |
payment_method | string | Payment method |
payment_channel | string | Payment provider |
return_url | string | URL to redirect to after successful processing in scenarios like 3DS authentication flows. |
trade_status | string | Trade order status:
|
txn_time | string | Trade initiation time when your client-side requests the API. |
created_at | string | Creation time of the trade order |
refund_status | string | Refund status:
|
total_refunded_amount | string | Total amount refunded, truncated to two decimal places |
session_id | string | Checkout session ID from which the trade order originated |
PaymentError
| Field | Type | Desc |
|---|---|---|
| code | string | Error code for the transaction failure. |
| message | string | Error message describing the transaction failure. |
NextAction
Field | Type | Desc |
|---|---|---|
type | string | Type of action required from the client:
|
redirect | NextActionRedirect | Contains details for the redirect action |
NextActionRedirect
| Field | Type | Desc |
|---|---|---|
| url | string | The URL to redirect the customer to. |
Trade Order Lifecycle
stateDiagram
[*] --> requires_payment_method : Created
requires_payment_method --> requires_action : Payment submitted & requires redirect
requires_payment_method --> processing : Payment submitted & returned "processing" status
requires_payment_method --> succeeded : Payment submitted & synchronously succeeded
requires_action --> requires_payment_method : Redirect failed/timed out/canceled
requires_action --> processing : Payment processing
requires_action --> succeeded : Payment succeeded
processing --> succeeded : Payment succeeded
processing --> requires_payment_method : Payment failed
succeeded --> [*]
Handling Instructions per Trade Status:
- requires_payment_method: Indicates a payment failure scenario. No additional action is required for orders in this state.
- requires_action: Indicates a redirect payment is in progress. This status is set after Subotiz submits payment information to the provider for a redirect-based flow. You must poll trade orders in this status until they transition to
requires_payment_method(failed) orsucceeded. - Processing: Indicates the payment is being processed asynchronously by the payment provider. You must poll trade orders in this status until they transition to
requires_payment_method(failed) orsucceeded. - succeeded: Indicates the payment is successful. No additional action is required.
Example
{
"id": 572677246926464036,
"type": "trades.succeeded",
"created": "2025-10-28T06:54:55Z",
"data": {
"metadata": {},
"return_url": "https://checkout.stg.subotiz.com/checkout/572677164911046667/return",
"txn_time": "2025-10-28T06:54:52Z",
"access_no": "77d52a21dc032b4",
"amount": "30.00",
"capture_method": "auto",
"last_payment_error": null,
"last_trans_id": "20251028572677234091900866",
"paid_at": "2025-10-28T06:54:55Z",
"payment_token": "pB_KO6Q***YU",
"refund_status": "no_refund",
"trade_id": "572677233903157186",
"currency": "USD",
"payment_method": "credit_card",
"payment_channel": "shoplazzapayment",
"total_refunded_amount": "0.00",
"session_id": "572677164911046667",
"merchant_id": "2816433",
"customer_id": "547766341013094363",
"order_id": "order_1761634475936438746",
"payment_mode": "subscription",
"trade_status": "succeeded"
}
}