Skip to main content

UAT Sign-Off

UAT Sign-Off

Project: Bilko Version: 0.1 Date: 2026-02-23 Author: Ops Architect Status: Draft (Template — fill in before each major release) Reviewers: Alem Bašić

Document History

Version Date Author Changes
0.1 2026-02-23 Ops Architect Initial draft

INSTRUCTIONS

UAT (User Acceptance Testing) is required before:

  • Initial production launch (v1.0.0)
  • Any release adding new financial features
  • Any release changing VAT rates or accounting rules

UAT is performed on staging environment (bilko-staging Railway + Vercel preview). File: UAT-SIGNOFF-vX.X.X.md in docs/releases/


UAT Sign-Off — Bilko v1.0.0 (MVP)

UAT Period: YYYY-MM-DD to YYYY-MM-DD Testing Environment: https://staging.bilko.io Tested by: Alem Bašić Release version: v1.0.0


1. UAT Test Scenarios

1.1 Authentication & Account Setup

# Scenario Steps Expected Result Actual Result Pass/Fail
A1 Register new organization Go to /register → Fill company name (Test Firma d.o.o.), email, password → Submit Account created, redirect to dashboard
A2 Login with credentials Go to /login → Enter email + password → Submit Dashboard loads with correct org name
A3 Logout Click user menu → Logout Redirected to /login, session cleared
A4 Wrong password rejected Login with wrong password 401 error, no user enumeration
A5 Invite team member (if implemented) Settings → Team → Invite → Enter email Invite email sent to new user

1.2 Invoice Creation (Core — P0)

# Scenario Input Expected Actual Pass/Fail
I1 Create invoice — Serbia VAT Customer: Acme Corp, Items: 10x 5000 RSD @ 20% VAT Subtotal: 50,000 RSD, VAT: 10,000 RSD, Total: 60,000 RSD
I2 Create invoice — zero-rate export Items: 1x 10,000 RSD @ 0% VAT VAT: 0 RSD, Total: 10,000 RSD
I3 Create invoice — EUR currency Items: 5x 100 EUR @ 20% VAT Subtotal: 500 EUR, VAT: 100 EUR, Total: 600 EUR
I4 NUMERIC precision — no float drift Items: 1x 33.33 RSD @ 20% VAT VAT: 6.67 RSD, Total: 40.00 RSD (not 39.996...)
I5 Invoice number auto-generated Create invoice Number = INV-XXXX format
I6 Multi-item different VAT rates Item 1: 1000 RSD @ 20%, Item 2: 500 RSD @ 0% VAT: 200 RSD (only on item 1), Total: 1700 RSD
I7 Invoice status flow: Draft → Sent Create invoice (Draft) → Send Status changes to Sent, email delivered
I8 Mark invoice as paid Click "Mark as Paid" Status = Paid, paidAt timestamp set

Financial precision test — critical:

For I4: Open browser DevTools → check API response body:

{
  "subtotal": "33.3300",
  "taxAmount": "6.6700",
  "totalAmount": "40.0000"
}

All amounts must be strings with 4 decimal places, never floating-point numbers.


1.3 Expense Tracking

# Scenario Expected Actual Pass/Fail
E1 Create expense with amount Expense saved, status = Pending
E2 Upload receipt photo JPG uploads successfully, preview visible
E3 Approve expense (as admin) Status changes to Approved
E4 Reject expense Status changes to Rejected
E5 Viewer cannot approve expense 403 error

1.4 VAT Reporting

# Scenario Expected Actual Pass/Fail
V1 Generate VAT report — Serbia Select period → Generate Report shows: Output VAT (collected on invoices), Input VAT (paid on expenses), Net VAT payable
V2 VAT report includes only own org data Cross-org data not visible
V3 VAT totals match invoice list Sum of VAT from individual invoices = VAT report total
V4 Date range filter works Report only includes transactions in selected period

Critical — VAT accuracy check:

After creating 3 invoices in test period:

  • INV-001: 50,000 RSD + 10,000 VAT (20%)
  • INV-002: 30,000 RSD + 5,100 VAT (17% BiH)
  • INV-003: 10,000 RSD + 0 VAT (export)

VAT report must show:

  • Output VAT: 15,100 RSD (10,000 + 5,100 + 0)
  • Not 15,099.99 or 15,100.01

1.5 Multi-Tenancy Security (P0)

# Scenario Expected Actual Pass/Fail
T1 Create two test organizations Both created separately
T2 Org A cannot see Org B's invoices Invoice list returns only Org A invoices
T3 Org A cannot access Org B's invoice by ID 404 (not 403 — no data enumeration)
T4 Viewer role cannot create invoice 403 error

1.6 Performance

# Scenario Expected Actual Pass/Fail
P1 Invoice list loads in < 2s Dashboard response < 2s
P2 VAT report generates in < 5s Report appears in < 5s on staging
P3 Receipt upload completes in < 5s Progress indicator, file appears in < 5s

2. UAT Defects Log

# Scenario Defect Description Severity Status

3. UAT Summary

Category Total Scenarios Passed Failed Blocked
Authentication 5
Invoice (incl. financial precision) 8
Expenses 5
VAT Reporting 4
Multi-tenancy security 4
Performance 3
TOTAL 29

4. Financial Accuracy Verification

Required sign-off item. Alem Bašić must verify:

  • Invoice I1: Subtotal 50,000.0000, VAT 10,000.0000, Total 60,000.0000 ✅
  • Invoice I4: Decimal precision correct (no float drift) ✅
  • VAT Report V3: Report totals match sum of individual invoices ✅
  • Multi-tenancy T2: Confirmed two orgs cannot see each other's data ✅

I confirm that the financial calculations in this release are accurate to NUMERIC(19,4) precision and comply with the applicable VAT rules for Serbia, Bosnia, and Croatia.


5. UAT Sign-Off Decision

Recommendation

  • APPROVED — All P0 scenarios pass, no P0 defects open. Release approved for production.
  • CONDITIONAL — Approved with conditions: [conditions listed below]
  • REJECTED — P0 defects found. Do not deploy until resolved.

Conditions (if conditional):


Open Defects at Sign-Off

# Defect Severity Resolution

Sign-Off

I have tested the scenarios listed above in the staging environment and confirm that the system is ready (or not ready) for production deployment based on the recommendation above.

Role Name Date Signature
Primary UAT Alem Bašić
Tech Lead