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