Skip to main content
Runs the full process pipeline as a dry-run: the same body, the same validations, the same campaign / promotion / milestone math — and the same response shape. Nothing is committed: no balances change, no coupons are created or redeemed, no transaction is written.
Auth: Authorization: Bearer <accessToken> — an organization-scoped token from Authentication.
Use it to show the customer what a checkout would produce before confirming it: stamps or points they would collect, coupons they would earn, order discounts (discountAmount) and point spend applied, and the final payableAmount. Once confirmed, send the same body to POST /v1/transactions/process to commit it — optionally echoing the previewed payableAmount as expectedPayableAmount so process fails safely (payable_amount_mismatch, no side effects) if anything changed in between.

Body

Identical to process — every field, including items, redeem (coupons + points), orderId, and collectables (escape hatch — avoid unless necessary; rules on the process page), is accepted and evaluated the same way. See the process page for the field reference. The only exception is expectedPayableAmount: it belongs to process (validate is where you obtain the value) and is ignored here.

Example

Response

Returns 200 with the same structure as process:
The field reference is the same as process. What differs is only what a dry-run cannot produce: Notes:
  • Safe to repeat: sending the same body any number of times changes nothing.
  • All process validations run identically, so validate surfaces the same 400 errors before you commit: invalid_customer, invalid_user, invalid_branch, card_not_found, no_applicable_campaign, invalid_transaction, point_campaign_not_found, insufficient_collectable_balance, invalid_points_to_spend, invalid_amount_value, invalid_coupon, coupon_is_not_valid, _collectables_with_items / _collectables_with_redeem / invalid_collectables, and — when orderId is sent and already used — duplicate_transaction (useful to detect “already processed” before retrying).
  • payableAmount = amount − discountAmount − the monetary value of redeem.points; the previewed numbers match what process commits for the same body and state.
  • executedPromotions is omitted when no promotion applies; promotion condition, limit, and cap checks are evaluated for real, but no usage is consumed by a validate call. Order-discount promotions (apply_discount) are previewed exactly like process, including their effect on discountAmount and payableAmount.
Last modified on October 8, 2026