Skip to content

Voucher Redemption

customer action transactional


Outcome

A customer can redeem a gift voucher or store credit as full or partial payment during checkout.

Service Flow

flowchart LR
    S0["Validate Voucher"]
    S1["Redeem Voucher"]
    S0 --> S1
    S2["Calculate Totals"]
    S1 --> S2

Capabilities

Basket Management Voucher Management Checkout

Domains

customer commerce promotion payment order

Business Objects

Object Classification Domain
customer aggregate-root customer
basket aggregate-root commerce
voucher aggregate-root promotion

Business Services

  • validate-voucher
  • redeem-voucher
  • calculate-totals

Applications

Application Classification
POS pos system-of-engagement
eCommerce Platform ecommerce-platform system-of-engagement
Promotion Engine promotion-engine system-of-intelligence
Event Classification Object Terminal
BasketCreated created basket
BasketUpdated updated basket
BasketCalculated calculated basket
BasketCheckedOut transitioned basket
BasketCheckoutStarted transitioned basket
BasketAbandoned transitioned basket
BasketMerged transitioned basket
VoucherIssued created voucher
VoucherValidated calculated voucher
VoucherRedeemed transitioned voucher
VoucherCancelled transitioned voucher
CheckoutStarted transitioned basket
CheckoutCancelled transitioned basket
BasketLineAdded created basket-line
Endpoint Method Service Description
/vouchers/{code}/validate POST validate-voucher Validates a voucher code, returning its current balance…
/transactions POST checkout-basket Opens a new POS transaction, initialising the basket fo…
/transactions/{id}/void POST cancel-order Voids an in-progress POS transaction before payment com…
/baskets POST create-basket Creates a new digital basket for an anonymous or authen…
/baskets/{id}/lines POST add-basket-item Adds a product line to an existing basket, validating a…
/baskets/{id}/checkout POST checkout-basket Converts a validated basket into an order, triggering p…

Validation Rules

Rule Type Severity Condition
voucher-redemption-requires-valid-voucher pre-condition invariant voucher.lifecycle = active AND voucher.expiry > now() A…

← Back to Process Catalog