API Reference
API Reference

Trade Order

Event List

Event NameEvent TypeTrigger ConditionData Structure
Trade Order Payment Succeededtrades.succeededWhen a payment is successfulTrade
The transaction order payment failed.trades.payment_failedWhen a trade order is paid failsTrade

Event Object

Field NameTypeDescription
trade_idstringTrade order ID
access_nostringAssigned access number for your platform
merchant_idstringMerchant ID of your platform
amountstringPayment amount, truncated to two decimal places.
currencystringCurrency of the transaction amount
customer_idstringCustomer ID
paid_atstringThe successful payment time of the trade order
metadatamap<string, string>Passthrough metadata. Key ≤ 40 bytes, value length ≤ 500 bytes. Total size after JSON encoding must be ≤ 1024 bytes.
last_payment_errorPaymentErrorDetails of the last payment error. If this field has a value, it indicates Payment ​​failed​​.
next_actionNextActionNext action
order_idstringOrder ID from your platform
last_trans_idstringTransaction ID for the order
payment_modestringPayment mode:
  • subscription: Initial subscription payment. Requires collecting customer payment information via the payment_method_datafield. Returns a payment_token upon success for future renewals.
  • recurring_payment: Subscription renewal payment. Requires a payment_token to complete the payment; no need to collect user payment information again.
payment_tokenstringPayment tokens used for subscription renewal charges
payment_methodstringPayment method
payment_channelstringPayment provider
return_urlstringURL to redirect to after successful processing in scenarios like 3DS authentication flows.
trade_statusstringTrade order status:
  • requires_payment_method: Initial state
  • payment_failed: Payment failed
  • processing: Payment is being processed
  • succeeded: Payment succeeded
  • closed: Closed
txn_timestringTrade initiation time when your client-side requests the API.
created_atstringCreation time of the trade order
refund_statusstringRefund status:
  • no_refund: No refunds issued
  • partially_refunded: Partially refunded
  • refunded: Fully refunded
total_refunded_amountstringTotal amount refunded, truncated to two decimal places
session_idstringCheckout session ID from which the trade order originated
invoice_idstringUnique identifier for the invoice
discountsDiscountsDiscounts applied to the trade, including all discount information for this trade

PaymentError

FieldTypeDesc
codestringError code for the transaction failure.
messagestringError message describing the transaction failure.

NextAction

FieldTypeDesc
typestringType of action required from the client:
  • redirect: Requires redirecting the customer to a URL
redirectNextActionRedirectContains details for the redirect action

NextActionRedirect

FieldTypeDesc
urlstringThe URL to redirect the customer to.

Discounts

FieldTypeDesc
current_periodCurrentPeriodDiscount[]The current period's discount details

CurrentPeriodDiscount

FieldTypeDesc
discount_idstringThe unique identifier for the discount
discount_amountstringThe amount discounted
discount_codestringThe discount code used

Trade Order Lifecycle

stateDiagram-v2
  direction TB

  state "requires_payment_method" as RPM
  state "processing" as PROC
  state "payment_failed" as FAIL
  state "succeeded" as SUCC
  state "closed" as CLOSED

  RPM --> PROC: Payment processing
  RPM --> SUCC: Payment succeeded
  RPM --> FAIL: Payment failed

  PROC --> SUCC: Channel webhook notification succeeded
  PROC --> FAIL: Channel webhook notification failed

  FAIL --> PROC: Payment processing
  FAIL --> SUCC: After a retry, the payment succeeded.

  FAIL --> CLOSED: Renewal failed
  RPM --> CLOSED: Payment timeout

Handling Instructions per Trade Status:

  • requires_payment_method:Initial order status. The customer has not completed payment (may not have initiated it or is still in process), or a subscription renewal charge has been initiated but the result is not yet available.
  • payment_failed:Indicates a payment failure scenario, The provider declined the payment request due to reasons such as insufficient funds, failed card verification, or risk control restrictions. The customer can try again.
  • processing:Indicates the payment is being processed asynchronously by the payment provider, You must poll trade orders in this status until they transition to payment_failed or succeeded.
  • succeeded:Indicates the payment is successful, No additional action is required.
  • closed:Closed, The trade order is closed when its status is no longer expected to change positively, such as after a subscription renewal fails (after multiple retries) or when no payment result is returned for over 7 days.

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",
		"invoice_id" : "547766341013094363"
  }
}
{
  "id": 593722365515409383,
  "type": "trades.payment_failed",
  "created": "2025-12-25T08:40:42Z",
  "data": {
    "access_no": "200010",
    "metadata": null,
    "last_trans_id": "",
    "paid_at": null,
    "session_id": "593722303875911656",
    "refund_status": "no_refund",
    "total_refunded_amount": "0.00",
    "customer_id": "537465921338359803",
    "last_payment_error": {
      "code": "100999",
      "message": "其他错误"
    },
    "order_id": "test_order_00111",
    "payment_token": "",
    "txn_time": "2025-12-25T08:40:36Z",
    "trade_status": "requires_payment_method",
    "trade_id": "593722338718003014",
    "amount": "50.00",
    "capture_method": "auto",
    "payment_channel": "shoplazzapayment",
    "return_url": "https://checkout.dev.subotiz.com/checkout/593722303875911656/return",
    "discounts": null,
    "merchant_id": "100010",
    "currency": "USD",
    "payment_mode": "subscription",
    "payment_method": "credit_card",
    "invoice_id": ""
  }
}