Payments
Orders & reconciliation
Query orders, understand every field, and reconcile against your books.
Query an order
By HTP id:
http
GET /open/v1/orders/0b7a9c62-3f1e-4a2b-9d6c-5e4f3a2b1c0dBy your own number (order_type defaults to PAYMENT; use your out_refund_no with REFUND):
http
GET /open/v1/orders?out_order_no=A20261107-0001&order_type=PAYMENTRemember to sign the path with its query string.
The order object
| Field | Type | Description |
|---|---|---|
id |
UUID | HTP order ID |
out_order_no |
string | Your number (out_refund_no for refunds) |
order_type |
enum | PAYMENT, REFUND, PAYOUT |
parent_id |
UUID | Refunds only: the refunded payment |
environment |
enum | SANDBOX, PRODUCTION |
status |
enum | CREATED, PAID, CLOSED (payments); SUCCEEDED (refunds, payouts) |
amount |
amount | Order amount |
refunded_amount |
amount | Payments: total refunded so far |
fee_amount |
amount | Payments: platform fee. 0.00 for refunds and payouts |
net_amount |
amount | Payments: credited to you (amount − fee_amount). Others: amount |
currency |
string | USDT |
description |
string | Your description or refund reason |
user_sub |
string | Payer / payee sub. Empty on an unpaid payment created without payer_sub |
checkout_url |
URL | Only while a payment is CREATED and not expired |
expires_at |
time | Payments: checkout deadline |
completed_at |
time | When it was paid / succeeded |
created_at |
time | Creation time |
Fields without a value may be omitted from the JSON. New fields can be added at any time — ignore unknown fields.
Reconciliation
Every day, compare your records with HTP:
- In the console open Orders → Statement and download the CSV for a date range (UTC dates, up to 31 days).
- Match each row to your order by
out_order_noandorder_type; comparestatus,amount,fee_amountandnet_amount. - For orders you still have as awaiting payment, call
GET /open/v1/orders/{id}:PAIDmeans you missed a callback;CLOSEDmeans it expired. - Your wallet balance change for the day should equal
Σ net_amount(PAID payments) − Σ amount(refunds) − Σ amount(payouts), plus sandbox fee rebates if you test with the same wallet.
Sandbox fee rebates
Sandbox payments compute fee_amount and net_amount exactly like production, but the fee is credited back to your wallet as a separate sandbox fee rebate transaction, so testing costs nothing.