Appendix C: Domain Events Catalog
Version: 1.0.0 Last Updated: December 29, 2025 Total Events: 45+
Overview
This appendix contains the complete catalog of domain events for the POS Platform. These events form the foundation of the event-driven architecture, enabling real-time updates, audit trails, and offline synchronization.
Event Structure
All events follow this standard envelope:
{
"eventId": "evt_uuid",
"eventType": "EventName",
"timestamp": "2025-12-29T14:30:00.000Z",
"tenantId": "tenant_nexus",
"correlationId": "uuid",
"causationId": "uuid",
"version": 1,
"payload": { }
}
| Field | Type | Description |
|---|---|---|
| eventId | UUID | Unique event identifier |
| eventType | string | Event type name |
| timestamp | ISO 8601 | When event occurred |
| tenantId | string | Tenant identifier |
| correlationId | UUID | Links related events |
| causationId | UUID | Event that caused this event |
| version | int | Schema version |
| payload | object | Event-specific data |
Sales Events
1. OrderCreated
Trigger: Customer begins checkout Producer: POS Terminal, Web Store Consumers: Analytics, Inventory Reservation
{
"eventType": "OrderCreated",
"eventId": "evt_ord_001",
"timestamp": "2025-12-29T14:30:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"orderId": "ord_xyz789",
"orderNumber": "ORD-2025-00001",
"locationId": "loc_gm",
"registerId": "reg_01",
"createdBy": "usr_cashier1",
"customerId": "cust_john_doe",
"lineItems": [
{
"lineItemId": "li_001",
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"name": "Classic V-Neck Tee - M Black",
"quantity": 2,
"unitPrice": 29.99,
"discountAmount": 0,
"taxAmount": 4.80,
"lineTotal": 64.78
}
],
"subtotal": 59.98,
"discountTotal": 0,
"taxTotal": 4.80,
"total": 64.78,
"status": "pending",
"channel": "pos"
}
}
2. PaymentAttempted
Trigger: Customer initiates payment Producer: Payment Terminal Consumers: Payment Gateway, Fraud Detection
{
"eventType": "PaymentAttempted",
"eventId": "evt_pay_001",
"timestamp": "2025-12-29T14:31:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"orderId": "ord_xyz789",
"paymentAttemptId": "pa_001",
"paymentMethod": "card",
"terminalId": "term_verifone_01",
"amount": 64.78,
"currency": "USD",
"cardPresent": true,
"entryMethod": "chip",
"cardBrand": "visa",
"lastFour": "4242"
}
}
3. PaymentCompleted
Trigger: Payment gateway confirms success Producer: Payment Gateway Adapter Consumers: Order Service, Receipt Service, Inventory
{
"eventType": "PaymentCompleted",
"eventId": "evt_pay_002",
"timestamp": "2025-12-29T14:31:15Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"orderId": "ord_xyz789",
"paymentId": "pay_001",
"paymentAttemptId": "pa_001",
"amount": 64.78,
"authorizationCode": "AUTH123456",
"transactionId": "txn_gateway_abc",
"batchId": "batch_2025-12-29",
"cardBrand": "visa",
"lastFour": "4242",
"entryMethod": "chip",
"receiptData": {
"merchantName": "Nexus Clothing - Greenbrier",
"merchantId": "MID123456",
"approvalCode": "123456"
}
}
}
4. PaymentFailed
Trigger: Payment gateway declines Producer: Payment Gateway Adapter Consumers: Order Service, POS UI, Analytics
{
"eventType": "PaymentFailed",
"eventId": "evt_pay_003",
"timestamp": "2025-12-29T14:31:20Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"orderId": "ord_xyz789",
"paymentAttemptId": "pa_001",
"failureReason": "insufficient_funds",
"failureCode": "DECLINED_05",
"retriable": true,
"suggestedAction": "Try different payment method",
"gatewayResponse": {
"code": "51",
"message": "Insufficient funds"
}
}
}
5. OrderCompleted
Trigger: All payments successful, order finalized Producer: Order Service Consumers: Inventory, Analytics, Loyalty, Receipt
{
"eventType": "OrderCompleted",
"eventId": "evt_ord_002",
"timestamp": "2025-12-29T14:31:30Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"orderId": "ord_xyz789",
"orderNumber": "ORD-2025-00001",
"receiptNumber": "GM-2025-001234",
"locationId": "loc_gm",
"registerId": "reg_01",
"customerId": "cust_john_doe",
"lineItems": [
{
"lineItemId": "li_001",
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"quantity": 2,
"unitPrice": 29.99,
"lineTotal": 59.98
}
],
"payments": [
{
"paymentId": "pay_001",
"method": "card",
"amount": 64.78
}
],
"subtotal": 59.98,
"discountTotal": 0,
"taxTotal": 4.80,
"total": 64.78,
"loyaltyPointsEarned": 65,
"completedAt": "2025-12-29T14:31:30Z",
"completedBy": "usr_cashier1",
"shiftId": "shift_2025-12-29_am"
}
}
6. OrderVoided
Trigger: Manager voids order Producer: POS Application Consumers: Inventory, Analytics, Audit
{
"eventType": "OrderVoided",
"eventId": "evt_ord_003",
"timestamp": "2025-12-29T14:35:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"orderId": "ord_xyz789",
"orderNumber": "ORD-2025-00001",
"voidReason": "customer_changed_mind",
"voidedBy": "usr_manager1",
"voidedAt": "2025-12-29T14:35:00Z",
"authorizationCode": "MGR-VOID-001",
"originalTotal": 64.78,
"refundRequired": false,
"inventoryReleased": true,
"lineItems": [
{
"variantId": "var_nxp0323_m_blk",
"quantity": 2
}
]
}
}
7. ReturnInitiated
Trigger: Customer requests return Producer: POS Application Consumers: Return Service, Inventory, Fraud
{
"eventType": "ReturnInitiated",
"eventId": "evt_ret_001",
"timestamp": "2025-12-29T15:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ret_abc123",
"payload": {
"returnId": "ret_abc123",
"originalOrderId": "ord_xyz789",
"originalReceiptNumber": "GM-2025-001234",
"locationId": "loc_hm",
"customerId": "cust_john_doe",
"returnItems": [
{
"originalLineItemId": "li_001",
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"quantityReturned": 1,
"returnReason": "wrong_size",
"condition": "resaleable",
"refundAmount": 32.39
}
],
"totalRefund": 32.39,
"refundMethod": "original_payment",
"initiatedBy": "usr_cashier2"
}
}
8. ReturnCompleted
Trigger: Refund processed Producer: Return Service Consumers: Inventory, Payment, Loyalty, Analytics
{
"eventType": "ReturnCompleted",
"eventId": "evt_ret_002",
"timestamp": "2025-12-29T15:05:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ret_abc123",
"payload": {
"returnId": "ret_abc123",
"returnReceiptNumber": "RET-HM-2025-0001",
"originalOrderId": "ord_xyz789",
"refundTransactionId": "refund_txn_001",
"refundAmount": 32.39,
"refundMethod": "card",
"loyaltyPointsDeducted": 32,
"inventoryRestocked": [
{
"variantId": "var_nxp0323_m_blk",
"locationId": "loc_hm",
"quantityAdded": 1,
"condition": "resaleable"
}
],
"processedBy": "usr_cashier2",
"completedAt": "2025-12-29T15:05:00Z",
"shiftId": "shift_2025-12-29_pm"
}
}
9. ReceiptRequested
Trigger: Customer requests receipt Producer: POS Application Consumers: Receipt Service, Communication
{
"eventType": "ReceiptRequested",
"eventId": "evt_rcpt_001",
"timestamp": "2025-12-29T14:32:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"orderId": "ord_xyz789",
"receiptNumber": "GM-2025-001234",
"deliveryMethod": "email",
"destination": "john@example.com",
"includePromotions": true,
"loyaltyBalance": 1250,
"requestedBy": "usr_cashier1"
}
}
Inventory Events
10. StockReserved
Trigger: Order created, items reserved Producer: Inventory Service Consumers: Order Service, Stock Visibility
{
"eventType": "StockReserved",
"eventId": "evt_inv_001",
"timestamp": "2025-12-29T14:30:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"reservationId": "res_001",
"orderId": "ord_xyz789",
"locationId": "loc_gm",
"items": [
{
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"quantityReserved": 2,
"previousOnHand": 15,
"previousAvailable": 15,
"newAvailable": 13
}
],
"expiresAt": "2025-12-29T15:00:00Z"
}
}
11. StockCommitted
Trigger: Payment completed Producer: Inventory Service Consumers: Reporting, Reorder, Sync
{
"eventType": "StockCommitted",
"eventId": "evt_inv_002",
"timestamp": "2025-12-29T14:31:30Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"commitId": "commit_001",
"reservationId": "res_001",
"orderId": "ord_xyz789",
"receiptNumber": "GM-2025-001234",
"locationId": "loc_gm",
"items": [
{
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"quantitySold": 2,
"previousOnHand": 15,
"newOnHand": 13,
"unitCost": 12.50,
"totalCostOfGoodsSold": 25.00
}
],
"transactionType": "sale"
}
}
12. StockReleased
Trigger: Order voided/abandoned Producer: Inventory Service Consumers: Order Service, Stock Visibility
{
"eventType": "StockReleased",
"eventId": "evt_inv_003",
"timestamp": "2025-12-29T14:40:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"releaseId": "rel_001",
"reservationId": "res_001",
"orderId": "ord_xyz789",
"locationId": "loc_gm",
"releaseReason": "order_voided",
"items": [
{
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"quantityReleased": 2,
"previousAvailable": 13,
"newAvailable": 15
}
]
}
}
13. StockReceived
Trigger: Vendor shipment received Producer: Receiving Service Consumers: Inventory, AP, Reporting
{
"eventType": "StockReceived",
"eventId": "evt_inv_004",
"timestamp": "2025-12-29T09:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "po_12345",
"payload": {
"receiptId": "rcpt_001",
"purchaseOrderId": "po_12345",
"vendorId": "vendor_nike",
"locationId": "loc_hq",
"receivedBy": "usr_warehouse1",
"items": [
{
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"quantityOrdered": 50,
"quantityReceived": 48,
"quantityDamaged": 2,
"previousOnHand": 100,
"newOnHand": 148,
"unitCost": 12.50,
"totalCost": 600.00
}
],
"totalItemsReceived": 48,
"totalCost": 600.00,
"discrepancyNotes": "2 units damaged in shipping"
}
}
14. StockAdjusted
Trigger: Manual adjustment (count, shrinkage) Producer: Inventory Management Consumers: Inventory, Reporting, Audit
{
"eventType": "StockAdjusted",
"eventId": "evt_inv_005",
"timestamp": "2025-12-29T11:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "adj_001",
"payload": {
"adjustmentId": "adj_001",
"locationId": "loc_gm",
"adjustedBy": "usr_manager1",
"adjustmentType": "cycle_count",
"authorizationCode": "MGR-ADJ-001",
"items": [
{
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"systemQuantity": 15,
"countedQuantity": 13,
"variance": -2,
"varianceReason": "shrinkage",
"previousOnHand": 15,
"newOnHand": 13,
"costImpact": -25.00
}
],
"totalVariance": -2,
"totalCostImpact": -25.00,
"notes": "Quarterly cycle count - Section A"
}
}
15. TransferRequested
Trigger: Store requests stock Producer: Inventory Management Consumers: Transfer Service, Notifications
{
"eventType": "TransferRequested",
"eventId": "evt_inv_006",
"timestamp": "2025-12-29T10:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "xfer_001",
"payload": {
"transferId": "xfer_001",
"fromLocationId": "loc_hq",
"toLocationId": "loc_gm",
"requestedBy": "usr_gm_manager",
"priority": "normal",
"requestReason": "low_stock",
"items": [
{
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"quantityRequested": 10,
"sourceOnHand": 100,
"destinationOnHand": 3
}
],
"expectedShipDate": "2025-12-30",
"expectedArrivalDate": "2025-12-31"
}
}
16. TransferShipped
Trigger: Source location ships Producer: Transfer Service Consumers: Inventory, Tracking
{
"eventType": "TransferShipped",
"eventId": "evt_inv_007",
"timestamp": "2025-12-29T14:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "xfer_001",
"payload": {
"transferId": "xfer_001",
"fromLocationId": "loc_hq",
"toLocationId": "loc_gm",
"shippedBy": "usr_warehouse1",
"items": [
{
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"quantityShipped": 10,
"previousFromOnHand": 100,
"newFromOnHand": 90
}
],
"trackingNumber": "1Z999AA10123456784",
"carrier": "UPS",
"shippedAt": "2025-12-29T14:00:00Z"
}
}
17. TransferReceived
Trigger: Destination receives Producer: Transfer Service Consumers: Inventory, Notifications
{
"eventType": "TransferReceived",
"eventId": "evt_inv_008",
"timestamp": "2025-12-30T09:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "xfer_001",
"payload": {
"transferId": "xfer_001",
"fromLocationId": "loc_hq",
"toLocationId": "loc_gm",
"receivedBy": "usr_gm_associate1",
"items": [
{
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"quantityExpected": 10,
"quantityReceived": 10,
"quantityDamaged": 0,
"previousToOnHand": 3,
"newToOnHand": 13
}
],
"receivedAt": "2025-12-30T09:00:00Z",
"discrepancyNotes": null
}
}
18. StockRestocked
Trigger: Return item restocked Producer: Return Service Consumers: Inventory, Reporting
{
"eventType": "StockRestocked",
"eventId": "evt_inv_009",
"timestamp": "2025-12-29T15:05:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ret_abc123",
"payload": {
"restockId": "restock_001",
"returnId": "ret_abc123",
"originalOrderId": "ord_xyz789",
"locationId": "loc_hm",
"items": [
{
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"quantityRestocked": 1,
"condition": "resaleable",
"restockLocation": "sales_floor",
"previousOnHand": 20,
"newOnHand": 21
}
],
"restockedBy": "usr_cashier2"
}
}
Customer Events
19. CustomerCreated
Trigger: New customer registered Producer: Customer Service Consumers: Loyalty, Marketing, Analytics
{
"eventType": "CustomerCreated",
"eventId": "evt_cust_001",
"timestamp": "2025-12-29T14:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "cust_john_doe",
"payload": {
"customerId": "cust_john_doe",
"customerNumber": "CUST-2025-00001",
"createdAt": "2025-12-29T14:00:00Z",
"createdBy": "usr_cashier1",
"creationSource": "pos",
"locationId": "loc_gm",
"profile": {
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "555-0100",
"marketingOptIn": true,
"smsOptIn": false
},
"loyalty": {
"enrolled": true,
"programId": "loyalty_standard",
"tierLevel": "bronze",
"pointsBalance": 0
}
}
}
20. CustomerUpdated
Trigger: Profile modified Producer: Customer Service Consumers: Sync, Marketing, Analytics
{
"eventType": "CustomerUpdated",
"eventId": "evt_cust_002",
"timestamp": "2025-12-29T15:30:00Z",
"tenantId": "tenant_nexus",
"correlationId": "cust_john_doe",
"payload": {
"customerId": "cust_john_doe",
"updatedBy": "usr_cashier2",
"updateSource": "pos",
"locationId": "loc_hm",
"changes": [
{
"field": "phone",
"previousValue": "555-0100",
"newValue": "555-0200",
"changedAt": "2025-12-29T15:30:00Z"
},
{
"field": "address.city",
"previousValue": null,
"newValue": "Chesapeake",
"changedAt": "2025-12-29T15:30:00Z"
}
]
}
}
21. CustomerMerged
Trigger: Duplicates consolidated Producer: Customer Service Consumers: Order, Loyalty, Analytics
{
"eventType": "CustomerMerged",
"eventId": "evt_cust_003",
"timestamp": "2025-12-29T16:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "merge_001",
"payload": {
"mergeId": "merge_001",
"survivingCustomerId": "cust_john_doe",
"mergedCustomerIds": ["cust_john_d", "cust_jdoe"],
"mergedBy": "usr_admin1",
"mergeReason": "duplicate_registration",
"dataConsolidation": {
"ordersTransferred": 5,
"loyaltyPointsCombined": 1500,
"previousTierLevels": ["bronze", "silver"],
"newTierLevel": "silver"
},
"conflictResolutions": [
{
"field": "email",
"values": ["john.doe@example.com", "jdoe@work.com"],
"resolution": "kept_primary",
"selectedValue": "john.doe@example.com"
}
]
}
}
22. LoyaltyPointsEarned
Trigger: Purchase completed Producer: Loyalty Service Consumers: Customer, Notifications, Analytics
{
"eventType": "LoyaltyPointsEarned",
"eventId": "evt_cust_004",
"timestamp": "2025-12-29T14:31:30Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"customerId": "cust_john_doe",
"orderId": "ord_xyz789",
"receiptNumber": "GM-2025-001234",
"locationId": "loc_gm",
"pointsEarned": 65,
"earnRate": 1.0,
"bonusMultiplier": 1.0,
"qualifyingAmount": 64.78,
"excludedAmount": 0,
"previousBalance": 1250,
"newBalance": 1315,
"tierLevel": "silver",
"pointsToNextTier": 685
}
}
23. LoyaltyPointsRedeemed
Trigger: Points used for discount Producer: Loyalty Service Consumers: Order, Analytics
{
"eventType": "LoyaltyPointsRedeemed",
"eventId": "evt_cust_005",
"timestamp": "2025-12-29T14:30:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"customerId": "cust_john_doe",
"orderId": "ord_xyz789",
"locationId": "loc_gm",
"pointsRedeemed": 500,
"redemptionType": "discount",
"discountAmount": 5.00,
"redemptionRate": 100,
"previousBalance": 1750,
"newBalance": 1250,
"minimumBalanceRequired": 100
}
}
24. LoyaltyPointsDeducted
Trigger: Return processed Producer: Loyalty Service Consumers: Customer, Notifications
{
"eventType": "LoyaltyPointsDeducted",
"eventId": "evt_cust_006",
"timestamp": "2025-12-29T15:05:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ret_abc123",
"payload": {
"customerId": "cust_john_doe",
"returnId": "ret_abc123",
"originalOrderId": "ord_xyz789",
"pointsDeducted": 32,
"deductionReason": "return",
"refundAmount": 32.39,
"previousBalance": 1315,
"newBalance": 1283,
"tierImpact": "none"
}
}
25. LoyaltyTierChanged
Trigger: Threshold reached Producer: Loyalty Service Consumers: Customer, Marketing, Notifications
{
"eventType": "LoyaltyTierChanged",
"eventId": "evt_cust_007",
"timestamp": "2025-12-29T14:31:30Z",
"tenantId": "tenant_nexus",
"correlationId": "cust_john_doe",
"payload": {
"customerId": "cust_john_doe",
"previousTier": "silver",
"newTier": "gold",
"changeType": "upgrade",
"changeReason": "spending_threshold",
"qualifyingSpend": 2000.00,
"tierThreshold": 2000.00,
"effectiveDate": "2025-12-29",
"expirationDate": "2026-12-29",
"newBenefits": [
"1.5x points on all purchases",
"Free shipping on orders $50+",
"Early access to sales",
"Birthday triple points"
]
}
}
26. CustomerTagged
Trigger: Tag applied Producer: Marketing Service Consumers: Marketing Automation, Analytics
{
"eventType": "CustomerTagged",
"eventId": "evt_cust_008",
"timestamp": "2025-12-29T14:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "cust_john_doe",
"payload": {
"customerId": "cust_john_doe",
"tagId": "tag_vip_2025",
"tagName": "VIP 2025",
"tagCategory": "loyalty",
"taggedBy": "system",
"tagSource": "auto_rule",
"ruleId": "rule_vip_qualification",
"expiresAt": "2025-12-31T23:59:59Z",
"metadata": {
"qualificationReason": "annual_spend_over_5000"
}
}
}
27. CustomerOptInChanged
Trigger: Preference changed Producer: Customer Service Consumers: Marketing, Compliance
{
"eventType": "CustomerOptInChanged",
"eventId": "evt_cust_009",
"timestamp": "2025-12-29T14:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "cust_john_doe",
"payload": {
"customerId": "cust_john_doe",
"optInType": "sms_marketing",
"previousValue": false,
"newValue": true,
"changedBy": "cust_john_doe",
"changeSource": "self_service",
"ipAddress": "192.168.1.100",
"consentTimestamp": "2025-12-29T14:00:00Z",
"consentMethod": "checkbox",
"consentText": "I agree to receive promotional SMS messages"
}
}
Gift Card Events
28. GiftCardPurchased
Trigger: Gift card sold Producer: Gift Card Service Consumers: Customer, Financial, Analytics
{
"eventType": "GiftCardPurchased",
"eventId": "evt_gc_001",
"timestamp": "2025-12-29T14:30:00Z",
"tenantId": "tenant_nexus",
"correlationId": "gc_001",
"payload": {
"giftCardId": "gc_001",
"cardNumber": "6012XXXXXXXXXXXX1234",
"purchasedBy": "cust_john_doe",
"recipientEmail": "jane@example.com",
"recipientName": "Jane Doe",
"orderId": "ord_gc001",
"locationId": "loc_gm",
"initialBalance": 50.00,
"purchaseAmount": 50.00,
"cardType": "digital",
"deliveryMethod": "email",
"activationDate": "2025-12-29",
"expirationDate": null,
"personalMessage": "Happy Birthday!"
}
}
29. GiftCardRedeemed
Trigger: Card used as payment Producer: Gift Card Service Consumers: Order, Financial
{
"eventType": "GiftCardRedeemed",
"eventId": "evt_gc_002",
"timestamp": "2025-12-29T15:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz790",
"payload": {
"giftCardId": "gc_001",
"cardNumber": "6012XXXXXXXXXXXX1234",
"redeemedBy": "cust_jane_doe",
"orderId": "ord_xyz790",
"locationId": "loc_hm",
"amountRedeemed": 35.00,
"previousBalance": 50.00,
"newBalance": 15.00,
"transactionType": "purchase"
}
}
30. GiftCardBalanceChecked
Trigger: Balance inquiry Producer: Gift Card Service Consumers: Analytics
{
"eventType": "GiftCardBalanceChecked",
"eventId": "evt_gc_003",
"timestamp": "2025-12-29T14:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "gc_001",
"payload": {
"giftCardId": "gc_001",
"cardNumber": "6012XXXXXXXXXXXX1234",
"currentBalance": 15.00,
"checkedBy": null,
"checkSource": "web",
"locationId": null
}
}
Employee Events
31. EmployeeClockedIn
Trigger: Employee starts shift Producer: Time Clock Service Consumers: Payroll, Reporting
{
"eventType": "EmployeeClockedIn",
"eventId": "evt_emp_001",
"timestamp": "2025-12-29T08:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "tc_001",
"payload": {
"timeClockEntryId": "tc_001",
"employeeId": "usr_cashier1",
"locationId": "loc_gm",
"registerId": "reg_01",
"clockInTime": "2025-12-29T08:00:00Z",
"clockInMethod": "pin",
"scheduledStart": "2025-12-29T08:00:00Z",
"minutesEarly": 0,
"minutesLate": 0
}
}
32. EmployeeClockedOut
Trigger: Employee ends shift Producer: Time Clock Service Consumers: Payroll, Reporting
{
"eventType": "EmployeeClockedOut",
"eventId": "evt_emp_002",
"timestamp": "2025-12-29T17:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "tc_001",
"payload": {
"timeClockEntryId": "tc_001",
"employeeId": "usr_cashier1",
"locationId": "loc_gm",
"clockOutTime": "2025-12-29T17:00:00Z",
"clockOutMethod": "pin",
"totalHoursWorked": 9.0,
"breakMinutes": 30,
"overtimeHours": 1.0,
"scheduledEnd": "2025-12-29T16:00:00Z"
}
}
33. BreakStarted
Trigger: Employee starts break Producer: Time Clock Service Consumers: Floor Coverage
{
"eventType": "BreakStarted",
"eventId": "evt_emp_003",
"timestamp": "2025-12-29T12:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "tc_001",
"payload": {
"timeClockEntryId": "tc_001",
"employeeId": "usr_cashier1",
"locationId": "loc_gm",
"breakType": "lunch",
"breakStartTime": "2025-12-29T12:00:00Z",
"expectedDuration": 30
}
}
34. BreakEnded
Trigger: Employee returns from break Producer: Time Clock Service Consumers: Floor Coverage
{
"eventType": "BreakEnded",
"eventId": "evt_emp_004",
"timestamp": "2025-12-29T12:30:00Z",
"tenantId": "tenant_nexus",
"correlationId": "tc_001",
"payload": {
"timeClockEntryId": "tc_001",
"employeeId": "usr_cashier1",
"locationId": "loc_gm",
"breakType": "lunch",
"breakEndTime": "2025-12-29T12:30:00Z",
"actualDuration": 30,
"overBreak": false
}
}
Cash Management Events
35. ShiftOpened
Trigger: Manager opens cash drawer Producer: Cash Management Service Consumers: Reporting, Audit
{
"eventType": "ShiftOpened",
"eventId": "evt_cash_001",
"timestamp": "2025-12-29T08:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "shift_001",
"payload": {
"shiftId": "shift_001",
"registerId": "reg_01",
"locationId": "loc_gm",
"openedBy": "usr_manager1",
"openedAt": "2025-12-29T08:00:00Z",
"openingFloat": 267.50,
"floatBreakdown": {
"bills_20": 5,
"bills_10": 5,
"bills_5": 10,
"bills_1": 50,
"quarters": 40,
"dimes": 50,
"nickels": 40,
"pennies": 50
},
"countVariance": 0
}
}
36. TillDropped
Trigger: Cash removed to safe Producer: Cash Management Service Consumers: Reporting, Audit
{
"eventType": "TillDropped",
"eventId": "evt_cash_002",
"timestamp": "2025-12-29T14:30:00Z",
"tenantId": "tenant_nexus",
"correlationId": "shift_001",
"payload": {
"shiftId": "shift_001",
"dropId": "drop_001",
"registerId": "reg_01",
"locationId": "loc_gm",
"droppedBy": "usr_cashier1",
"dropAmount": 200.00,
"breakdown": {
"bills_100": 2
},
"drawerBalanceBefore": 467.50,
"drawerBalanceAfter": 267.50,
"dropReason": "excess_cash",
"dropSlipNumber": "DROP-2025-12-29-001"
}
}
37. CashPickedUp
Trigger: Manager removes cash Producer: Cash Management Service Consumers: Reporting, Audit
{
"eventType": "CashPickedUp",
"eventId": "evt_cash_003",
"timestamp": "2025-12-29T15:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "shift_001",
"payload": {
"shiftId": "shift_001",
"pickupId": "pickup_001",
"registerId": "reg_01",
"locationId": "loc_gm",
"performedBy": "usr_manager1",
"witnessedBy": "usr_cashier1",
"pickupAmount": 300.00,
"pickupReason": "bank_deposit",
"drawerBalanceBefore": 567.50,
"drawerBalanceAfter": 267.50
}
}
38. PaidOut
Trigger: Petty cash expense Producer: Cash Management Service Consumers: Reporting, AP, Audit
{
"eventType": "PaidOut",
"eventId": "evt_cash_004",
"timestamp": "2025-12-29T11:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "shift_001",
"payload": {
"shiftId": "shift_001",
"paidOutId": "paidout_001",
"registerId": "reg_01",
"locationId": "loc_gm",
"performedBy": "usr_manager1",
"amount": 25.00,
"category": "office_supplies",
"description": "Printer paper",
"vendorName": "Office Depot",
"receiptAttached": true,
"drawerBalanceBefore": 292.50,
"drawerBalanceAfter": 267.50
}
}
39. ShiftClosed
Trigger: End of day close Producer: Cash Management Service Consumers: Reporting, Audit
{
"eventType": "ShiftClosed",
"eventId": "evt_cash_005",
"timestamp": "2025-12-29T21:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "shift_001",
"payload": {
"shiftId": "shift_001",
"registerId": "reg_01",
"locationId": "loc_gm",
"closedBy": "usr_manager1",
"closedAt": "2025-12-29T21:00:00Z",
"expectedCash": 725.50,
"actualCash": 723.00,
"variance": -2.50,
"varianceSeverity": "notable",
"closingBreakdown": {
"bills_100": 2,
"bills_50": 3,
"bills_20": 15,
"bills_10": 10,
"bills_5": 20,
"bills_1": 75,
"quarters": 80,
"dimes": 100
},
"summary": {
"openingFloat": 267.50,
"cashSales": 458.00,
"cashReturns": -45.00,
"paidOuts": -25.00,
"paidIns": 0,
"tillDrops": -200.00,
"expectedClosing": 455.50
}
}
}
RFID Events
40. RfidTagPrinted
Trigger: Tag printed and encoded Producer: RFID Print Service Consumers: Tag Registry, Inventory
{
"eventType": "RfidTagPrinted",
"eventId": "evt_rfid_001",
"timestamp": "2025-12-29T08:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "print_job_001",
"payload": {
"tagId": "tag_001",
"epc": "30340123456789012345678901",
"variantId": "var_nxp0323_m_blk",
"sku": "NXP0323-M-BLK",
"serialNumber": 1234567,
"printJobId": "print_job_001",
"printerId": "printer_zebra_01",
"locationId": "loc_hq",
"printedBy": "usr_warehouse1",
"templateId": "tmpl_standard"
}
}
41. RfidScanSessionStarted
Trigger: Inventory scan begins Producer: RFID Mobile App Consumers: Scan Session Service
{
"eventType": "RfidScanSessionStarted",
"eventId": "evt_rfid_002",
"timestamp": "2025-12-29T10:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "scan_session_001",
"payload": {
"sessionId": "scan_session_001",
"locationId": "loc_gm",
"zoneId": "zone_sales_floor",
"startedBy": "usr_associate1",
"deviceId": "rfid_handheld_01",
"sessionType": "cycle_count",
"expectedSkuCount": 150
}
}
42. RfidTagScanned
Trigger: Tag read during scan Producer: RFID Mobile App Consumers: Real-time Dashboard
{
"eventType": "RfidTagScanned",
"eventId": "evt_rfid_003",
"timestamp": "2025-12-29T10:05:23Z",
"tenantId": "tenant_nexus",
"correlationId": "scan_session_001",
"payload": {
"scanEventId": "scan_evt_001",
"sessionId": "scan_session_001",
"tagId": "tag_001",
"epc": "30340123456789012345678901",
"rssi": -45,
"antennaId": 1,
"readCount": 3,
"firstSeenAt": "2025-12-29T10:05:23Z",
"lastSeenAt": "2025-12-29T10:05:25Z"
}
}
43. RfidScanSessionCompleted
Trigger: Scan session ends Producer: RFID Mobile App Consumers: Inventory, Variance Report
{
"eventType": "RfidScanSessionCompleted",
"eventId": "evt_rfid_004",
"timestamp": "2025-12-29T10:30:00Z",
"tenantId": "tenant_nexus",
"correlationId": "scan_session_001",
"payload": {
"sessionId": "scan_session_001",
"locationId": "loc_gm",
"completedBy": "usr_associate1",
"duration": 1800,
"summary": {
"totalTagsScanned": 145,
"uniqueSkusFound": 142,
"expectedSkus": 150,
"varianceCount": 8,
"missingSkus": ["NXP0323-M-BLK", "NXP0324-L-WHT"],
"extraSkus": []
},
"variancePercentage": 5.33,
"requiresRecount": false,
"autoAdjust": false
}
}
44. RfidTagStatusChanged
Trigger: Tag lifecycle change Producer: Various Services Consumers: Tag Registry, Analytics
{
"eventType": "RfidTagStatusChanged",
"eventId": "evt_rfid_005",
"timestamp": "2025-12-29T14:31:30Z",
"tenantId": "tenant_nexus",
"correlationId": "ord_xyz789",
"payload": {
"tagId": "tag_001",
"epc": "30340123456789012345678901",
"previousStatus": "active",
"newStatus": "sold",
"triggeredBy": "sale",
"referenceId": "ord_xyz789",
"referenceType": "order",
"locationId": "loc_gm",
"changedAt": "2025-12-29T14:31:30Z"
}
}
Sync Events
45. SyncConflictDetected
Trigger: Offline sync conflict Producer: Sync Service Consumers: Conflict Resolution, Admin Dashboard
{
"eventType": "SyncConflictDetected",
"eventId": "evt_sync_001",
"timestamp": "2025-12-29T12:00:00Z",
"tenantId": "tenant_nexus",
"correlationId": "sync_batch_001",
"payload": {
"conflictId": "conflict_001",
"deviceId": "dev_pos_01",
"conflictType": "inventory_quantity",
"entityType": "inventory_level",
"entityId": "invlvl_001",
"variantId": "var_nxp0323_m_blk",
"locationId": "loc_gm",
"serverValue": {
"quantity": 12,
"lastUpdated": "2025-12-29T11:45:00Z"
},
"localValue": {
"quantity": 15,
"lastUpdated": "2025-12-29T10:30:00Z",
"delta": -2
},
"resolution": {
"method": "delta_merge",
"resolvedValue": 10,
"automated": true
},
"syncTimestamp": "2025-12-29T12:00:00Z"
}
}
Event Summary by Domain
| Domain | Event Count | Events |
|---|---|---|
| Sales | 9 | OrderCreated, PaymentAttempted, PaymentCompleted, PaymentFailed, OrderCompleted, OrderVoided, ReturnInitiated, ReturnCompleted, ReceiptRequested |
| Inventory | 9 | StockReserved, StockCommitted, StockReleased, StockReceived, StockAdjusted, TransferRequested, TransferShipped, TransferReceived, StockRestocked |
| Customer | 9 | CustomerCreated, CustomerUpdated, CustomerMerged, LoyaltyPointsEarned, LoyaltyPointsRedeemed, LoyaltyPointsDeducted, LoyaltyTierChanged, CustomerTagged, CustomerOptInChanged |
| Gift Card | 3 | GiftCardPurchased, GiftCardRedeemed, GiftCardBalanceChecked |
| Employee | 4 | EmployeeClockedIn, EmployeeClockedOut, BreakStarted, BreakEnded |
| Cash | 5 | ShiftOpened, TillDropped, CashPickedUp, PaidOut, ShiftClosed |
| RFID | 5 | RfidTagPrinted, RfidScanSessionStarted, RfidTagScanned, RfidScanSessionCompleted, RfidTagStatusChanged |
| Sync | 1 | SyncConflictDetected |
| TOTAL | 45 |
This catalog documents all 45+ domain events that power the POS Platform’s event-driven architecture.