Netzon builds 5+ apps for clients and internal use. Each one needs subscription billing — but there's no unified solution.
NetzonPay is like Netflix billing — but for every Netzon app. One integration, automatic charging, full visibility.
FIUU processes the payments. NetzonPay orchestrates the billing.
| Runtime | .NET 10 (LTS) |
| ORM | Entity Framework Core 10 |
| Database | PostgreSQL 16 |
| Cache | Redis + Hangfire |
| HTTP Client | Refit (typed) |
| App Auth | API Key (X-Api-Key) |
| Admin Auth | JWT Bearer |
| Validation | FluentValidation |
| Logging | Serilog + Seq |
| Framework | Next.js 15 (App Router) |
| UI | shadcn/ui + Tailwind CSS |
| State | TanStack Query |
| Forms | react-hook-form + zod |
| Auth | Better Auth |
| Charts | Recharts |
| Toasts | Sonner |
| Local | Docker Compose |
| Production | AWS ECS / Vercel |
| FIUU | Sandbox → Production |
Register Netzon apps, generate API keys, configure payment channels per app. Each app gets a unique nzp_xxxx key.
Create plans per app: Monthly, Quarterly, Annual. Set PHP amounts, trial periods, billing cycles. Maps to FIUU recurring.
User-facing page showing app name, plans, prices. Redirects to FIUU hosted page. Card tokenized for auto-charging.
Daily scheduler charges stored tokens via FIUU API. 3 retries over 7 days. Netflix-style recurring billing.
Overview stats, subscriber management, payment logs, manual actions (cancel, refund, retry). Real-time visibility.
Apps call GET /subscriptions/check to gate access. Returns active status, plan, expiry. Simple boolean check.
PostgreSQL 16 — 7 tables powering the entire billing lifecycle.
Experience the full payment lifecycle. Toggle between client and admin views.
Streamline your restaurant operations with real-time order management, kitchen coordination, and staff dashboards.
All plans include core POS features. Scale as you grow.
Your subscription is now active. Access your Staff & Kitchen Portal.
| Subscriber | App | Amount | Status | Time |
|---|---|---|---|---|
| Juan Dela Cruz | Hao Tang | ₱1,999 | PAID | Just now |
| Maria Santos | Netzon CRM | ₱299 | PAID | 2 min ago |
| Pedro Reyes | Hao Tang | ₱3,999 | FAILED | 15 min ago |
| Ana Garcia | Netzon CRM | ₱2,990 | PAID | 1 hr ago |
| Rico Mendoza | Hao Tang | ₱999 | PAID | 2 hr ago |
See what happens when the billing cycle hits
| App Name | Slug | Status | Subscribers | API Key |
|---|---|---|---|---|
| Hao Tang | haotang | ACTIVE | 187 | nzp_ht_•••••• |
| Netzon CRM | netzon-crm | ACTIVE | 98 | nzp_crm_•••••• |
| TimeTracker Pro | timetracker | ACTIVE | 14 | nzp_tt_•••••• |
| Inventory Hub | inventory-hub | PENDING | 0 | nzp_ih_•••••• |
| Name | App | Plan | Status | Next Billing |
|---|---|---|---|---|
| Juan Dela Cruz juan@email.com |
Hao Tang | Professional ₱1,999/mo | ACTIVE | Apr 27, 2026 |
| Maria Santos maria@email.com |
Netzon CRM | Monthly ₱299/mo | ACTIVE | Apr 15, 2026 |
| Pedro Reyes pedro@email.com |
Hao Tang | Enterprise ₱3,999/mo | PAST DUE | Overdue |
| Ana Garcia ana@email.com |
Netzon CRM | Annual ₱2,990/yr | ACTIVE | Mar 26, 2027 |
| Rico Mendoza rico@email.com |
Hao Tang | Starter ₱999/mo | ACTIVE | Apr 20, 2026 |
| Lisa Tan lisa@email.com |
TimeTracker Pro | Monthly ₱199/mo | TRIALING | Apr 10, 2026 |
| Subscriber | Amount | Status | Channel | FIUU TXN | Date |
|---|---|---|---|---|---|
| Juan Dela Cruz | ₱1,999.00 | PAID | Visa | #374829105 | Mar 27, 2026 10:32 |
| Maria Santos | ₱299.00 | PAID | GCash | #374829098 | Mar 27, 2026 10:30 |
| Pedro Reyes | ₱3,999.00 | FAILED | Visa | #374829091 | Mar 27, 2026 10:17 |
| Ana Garcia | ₱2,990.00 | PAID | Mastercard | #374828955 | Mar 27, 2026 09:32 |
| Rico Mendoza | ₱999.00 | PAID | Maya | #374828901 | Mar 27, 2026 08:45 |
| Lisa Tan | ₱199.00 | PENDING | BPI | #374828880 | Mar 27, 2026 08:20 |
The heart of Netflix-style billing — daily scheduler + stored card tokens + FIUU API.
| Retry | Delay | Action |
|---|---|---|
| 1st | +1 day | Auto-retry charge |
| 2nd | +3 days | Retry + email warning |
| 3rd | +7 days | Final retry + "ending" email |
| Failed | — | Status → expired, access revoked |
TLS 1.3 on all endpoints. User → Portal, Portal → FIUU, Apps → API, Dashboard → API.
Card data never touches our servers. FIUU is PCI-DSS v4.0 certified. We stay out of PCI scope.
Every FIUU response verified via skey hash (MD5 chain). Constant-time comparison prevents timing attacks.
FIUU keys in env vars. API keys hashed (SHA-256). Passwords hashed (Argon2id). Tokens AES-256 encrypted.
100 req/min per API key. 60 req/min per admin. 10 session creates/min per user. No limit on FIUU webhooks.
FIUU webhooks may fire multiple times. We use fiuu_txn_id as idempotency key + Redis locks to prevent double-processing.
Card numbers, CVV, full expiry, bank passwords — none of these ever hit our servers or database.
All admin actions logged in audit_logs table with JSONB details. WHO did WHAT to WHICH entity, WHEN.
12 weeks to production. Four focused phases, each with a clear deliverable.
Items that need resolution before or during implementation.
| # | Question | Who | Priority |
|---|---|---|---|
| 1 | FIUU merchant account — Do we have sandbox + production credentials? | Biz + FIUU | BLOCKER |
| 2 | MIT support — Confirm FIUU supports merchant-initiated transactions with stored tokens in PH | FIUU Tech | BLOCKER |
| 3 | Token flow — Does FIUU auto-tokenize on hosted page (token_status=1)? | FIUU Tech | HIGH |
| 4 | Auto-charge API — Which FIUU endpoint for recurring charges with stored token? | FIUU Tech | HIGH |
| 5 | E-wallet recurring — Can GCash/Maya be auto-charged? Or only cards? | FIUU Tech | MEDIUM |
| 6 | Pricing — What amounts will each Netzon app charge subscribers? | Product | MEDIUM |
| 7 | Pilot app — Which Netzon app goes first for integration? | Management | MEDIUM |