## POS multi-method split payment — validation scenarios ### Validation types: **12** --- ### **Type 1 — Checkout gate** (6 scenarios) 1. Customer must be selected before checkout 2. Product quantity must be greater than 0 3. Grand total must be greater than 0 4. Scale weight must be applied before checkout (if applicable) 5. Delivery address required for delivery orders 6. Shipping charges required for delivery orders --- ### **Type 2 — Method selection limits** (7 scenarios) 7. Cash — maximum **1** line 8. Card Manual — maximum **2** lines 9. Card Reader — maximum **2** lines 10. CPP — maximum **2** lines 11. Zelle — maximum **2** lines 12. Cannot add a method when allocation already equals grand total 13. Cannot add a method when that method type is at its limit --- ### **Type 3 — Allocation balance** (7 scenarios) 14. Under-allocated (remaining > $0) → **Process Payment** blocked 15. Over-allocated (remaining < $0) → **Process Payment** blocked 16. Exactly allocated → **Process Payment** allowed 17. **Add remaining to last payment** when under-allocated 18. **Remove extra from last payment** when over-allocated 19. No editable line available → adjustment warning shown 20. Partial excess removal when paid lines prevent full trim --- ### **Type 4 — Per-line amount rules** (7 scenarios) 21. Line amount cannot be negative 22. Line amount cannot exceed grand total 23. Card / CPP / Card Reader minimum **$0.50** 24. Paid non-cash line — cannot decrease below already-settled amount 25. Paid cash line — can decrease (difference returned as change) 26. Failed / cancelled line — editing re-arms to **pending** 27. Processing line — amount edit blocked --- ### **Type 5 — Cash received rules** (6 scenarios) 28. Cash received must be ≥ line amount when amount is still due 29. Cash shortage → **Process Payment** blocked with tooltip 30. Auto cash received = paid so far + rounded-up due 31. Staff can manually override cash received 32. Cash received locked while payment is processing 33. Cash received locked when line is fully paid with no due left --- ### **Type 6 — Method configuration** (4 scenarios) 34. Card Reader — reader must be selected 35. CPP — Credit / Debit type must be selected 36. Switch to Stripe terminal — requires available reader 37. Switch to CPP terminal — device must be available --- ### **Type 7 — Deletion rules** (7 scenarios) 38. Delete **pending** line — allowed 39. Delete **failed** line — allowed 40. Delete **cancelled** line — allowed 41. Delete **waiting** line — allowed 42. Delete **completed** line — not allowed 43. Delete **processing** line — not allowed 44. Payment slot labels renumber after deletion (e.g. card1, card2) --- ### **Type 8 — Edit / reassign after partial payment** (8 scenarios) 45. Increase paid **Cash** line → only delta charged 46. Increase paid **Zelle** line → Zelle re-confirm + delta charged 47. Increase paid **CPP** line → only delta charged on terminal 48. Increase paid **Card Manual** — add new card line for extra (cannot go below settled amount) 49. Decrease paid **Cash** → excess returned as change 50. Reassign under-allocated remainder to last editable line 51. Reassign over-allocated excess removed from last editable line(s) 52. Reassign may remove entire last line if needed to fix over-allocation --- ### **Type 9 — Zelle confirmation gate** (3 scenarios) 53. Unpaid Zelle line → confirm modal required before payment continues 54. Zelle top-up on already-paid line → re-confirm required 55. Fully settled Zelle line → not re-prompted --- ### **Type 10 — Process Payment submit checks** (7 scenarios) 56. At least one payment method required 57. Customer required 58. Full allocation required (total = grand total) 59. Sufficient cash received 60. Card Reader selected where required 61. CPP type selected where required 62. Card / CPP / Reader amount ≥ $0.50 on submit --- ### **Type 11 — During-payment flow (cancel / fail / resume)** (10 scenarios) 63. Payments run in sequential order 64. Later terminal lines show **“Waiting — complete previous payment”** 65. Declined card → **failed** state 66. Cancel card → **cancelled**, return to selection (no receipt) 67. Cancel mid-terminal → clean abort, no hang, no false receipt 68. **Process Payment** again after cancel → resumes from pending line 69. Two Card Manual lines with **same amount** → both confirm separately 70. Two CPP lines with **same amount** → both terminal confirm separately 71. Receipt only after **all** terminal lines are paid 72. Full split cancel → refund breakdown + pending intents cancelled --- ### **Type 12 — Backend split validations** (8 scenarios) 73. Payment methods total must equal grand total 74. Maximum **10** split payment lines 75. Each line amount must be greater than 0 76. Unsupported payment method rejected 77. Cash received cannot be less than allocated amount (server-side) 78. Card / CPP minimum $0.50 (server-side) 79. Resume charge cannot exceed backend remaining balance 80. Sale cannot finalize while terminal lines are still pending --- ## Summary calculation | Item | Count | |------|-------| | **Validation types** | **12** | | **Total validation scenarios** | **80** | --- **One-line summary for documentation:** > POS multi-method split payment has **12 validation types** covering **80 test scenarios**, including method limits, allocation balance, deletion, post-payment value reassignment, Zelle confirm, cancel/resume flow, and backend amount checks.