Subscription Billing & ACRA Compliance Agents
💳 Subscription Management Agents
1. Subscription Agent (subscription-agent)
Responsibilities:
- User subscription lifecycle management
- Regional pricing strategy implementation
- Payment processing integration (Stripe, PayPal, local gateways)
- Subscription analytics and churn prediction
Regional Pricing Strategy:
- Singapore: SGD 9.99/month (Premium), SGD 4.99/month (Basic)
- Malaysia: MYR 19.99/month (Premium), MYR 9.99/month (Basic)
- Thailand: THB 199/month (Premium), THB 99/month (Basic)
- Indonesia: IDR 99,000/month (Premium), IDR 49,000/month (Basic)
Subscription Tiers:
enum SubscriptionTier {
FREE = 'free', // 50 receipts/month, basic reports
BASIC = 'basic', // 200 receipts/month, GST reports
PREMIUM = 'premium', // Unlimited, banking sync, tax reports
BUSINESS = 'business' // Multi-vehicle, team features
}
2. Payment Processing Agent (payment-agent)
Responsibilities:
- Multi-gateway payment processing
- Failed payment retry logic
- PCI DSS compliance maintenance
- Regional payment method support
Regional Payment Gateways:
- Singapore: Stripe, PayNow, DBS PayLah!, NETS
- Malaysia: iPay88, Billplz, FPX, Maybank2u
- Thailand: Omise, 2C2P, TrueMoney, PromptPay
- Indonesia: Midtrans, Xendit, OVO, GoPay
Payment Flow:
interface PaymentFlow {
regionCode: string;
preferredGateways: PaymentGateway[];
fallbackGateways: PaymentGateway[];
retryPolicy: RetryPolicy;
complianceRequirements: ComplianceRule[];
}
3. Revenue Recognition Agent (revenue-agent)
Responsibilities:
- ACRA-compliant revenue recognition
- Subscription revenue timing
- Prorated billing calculations
- Financial audit trail generation
ACRA Revenue Recognition Rules:
interface ACRARevenueRules {
recognitionMethod: 'monthly' | 'annual' | 'usage-based';
deferredRevenueHandling: boolean;
upgradeProratedCredits: boolean;
refundAccounting: RefundPolicy;
auditTrailRetention: number; // 7 years for ACRA
}
📊 ACRA Financial Compliance Agents
4. ACRA Reporting Agent (acra-reporting-agent)
Responsibilities:
- Automated ACRA Annual Return preparation
- Financial statement generation (P&L, Balance Sheet, Cash Flow)
- Small Company Financial Reporting Standard (SFRS) compliance
- Director's report automation
Required ACRA Reports:
- Annual Return (Form AR): Company details, directors, shareholders
- Financial Statements: Profit & Loss, Balance Sheet, Notes
- Director's Report: Business review, principal activities
- Auditor's Report: If revenue > SGD 10M or assets > SGD 10M
ACRA Filing Calendar:
interface ACRAFilingCalendar {
annualReturnDeadline: Date; // Within 30 days of AGM
financialStatementsDeadline: Date; // Within 5 months of financial year-end
agmDeadline: Date; // Within 6 months of financial year-end
notificationPeriods: Date[]; // 30, 14, 7 days before deadlines
}
5. Tax Compliance Agent (tax-compliance-agent)
Responsibilities:
- GST return preparation and filing
- Corporate tax (CIT) calculations
- Withholding tax compliance
- Tax provision calculations
Singapore Tax Requirements:
- GST Returns: Quarterly filing (if revenue > SGD 1M)
- Corporate Income Tax: Annual filing by 30 November
- Withholding Tax: Monthly filing for non-resident payments
- IRAS ECI: Estimated Chargeable Income within 3 months
Tax Calculation Engine:
interface TaxCalculationEngine {
gstRate: 0.09; // 9% GST
corporateTaxRate: 0.17; // 17% CIT
startupExemption: boolean; // First SGD 100K exempt
partialExemption: boolean; // Next SGD 200K at 8.5%
foreignSourceIncome: boolean; // Territorial tax system
}
6. Audit Trail Agent (audit-trail-agent)
Responsibilities:
- Complete financial transaction logging
- User action tracking for compliance
- Document retention management
- Forensic audit support
ACRA Record Retention Requirements:
- Accounting Records: 5 years minimum
- Board Resolutions: Permanent retention
- Contracts & Agreements: 7 years after termination
- Tax Records: 7 years from assessment
- Audit Working Papers: 7 years
Audit Trail Schema:
interface AuditTrail {
transactionId: string;
userId: string;
timestamp: Date;
action: AuditAction;
entityType: string;
entityId: string;
previousValue: any;
newValue: any;
ipAddress: string;
userAgent: string;
complianceFlags: ComplianceFlag[];
}
🔄 Subscription Lifecycle Hooks
Pre-Subscription Hooks
#!/usr/bin/env sh
# .husky/pre-subscription-validation
echo "💳 Running subscription validation before signup..."
# 1. Regional pricing validation
node scripts/billing/validate-regional-pricing.js
# 2. Payment gateway health check
node scripts/billing/check-payment-gateways.js
# 3. Subscription tier limits validation
node scripts/billing/validate-subscription-limits.js
# 4. ACRA compliance check
node scripts/acra/validate-customer-onboarding.js
echo "✅ Subscription validation complete!"
Post-Payment Hooks
#!/usr/bin/env sh
# .husky/post-payment-processing
echo "📊 Processing successful payment..."
# 1. Revenue recognition entry
node scripts/acra/record-revenue-recognition.js
# 2. GST liability calculation
node scripts/tax/calculate-gst-liability.js
# 3. Subscription activation
node scripts/billing/activate-subscription.js
# 4. ACRA audit trail logging
node scripts/acra/log-financial-transaction.js
echo "✅ Payment processing complete!"
Monthly Billing Hooks
#!/usr/bin/env sh
# .husky/monthly-billing-cycle
echo "📅 Running monthly billing cycle..."
# 1. Generate invoices
node scripts/billing/generate-monthly-invoices.js
# 2. Process recurring payments
node scripts/billing/process-recurring-payments.js
# 3. Update ACRA revenue records
node scripts/acra/update-monthly-revenue.js
# 4. Generate GST entries
node scripts/tax/generate-monthly-gst.js
# 5. Send ACRA compliance summary
node scripts/acra/send-compliance-summary.js
echo "✅ Monthly billing cycle complete!"
📋 ACRA Validation Scripts
Financial Health Validator (scripts/acra/validate-financial-health.js)
const ACRA_THRESHOLDS = {
SMALL_COMPANY: {
revenue: 10_000_000, // SGD 10M
assets: 10_000_000, // SGD 10M
employees: 50
},
AUDIT_EXEMPTION: {
revenue: 5_000_000, // SGD 5M
assets: 10_000_000 // SGD 10M
},
GST_REGISTRATION: {
revenue: 1_000_000 // SGD 1M
}
};
function validateACRACompliance() {
const financials = getCurrentFinancials();
const warnings = [];
// Check if audit required
if (financials.revenue > ACRA_THRESHOLDS.SMALL_COMPANY.revenue ||
financials.assets > ACRA_THRESHOLDS.SMALL_COMPANY.assets) {
warnings.push('🔍 Statutory audit required - revenue/assets exceed small company threshold');
}
// Check GST registration threshold
if (financials.revenue > ACRA_THRESHOLDS.GST_REGISTRATION.revenue) {
warnings.push('📋 GST registration required - revenue exceeds SGD 1M');
}
// Validate filing deadlines
const upcomingDeadlines = getUpcomingACRADeadlines();
upcomingDeadlines.forEach(deadline => {
if (deadline.daysRemaining <= 30) {
warnings.push(`⏰ ACRA filing due: ${deadline.type} in ${deadline.daysRemaining} days`);
}
});
return warnings;
}
Revenue Recognition Validator (scripts/acra/validate-revenue-recognition.js)
const SFRS_RULES = {
SUBSCRIPTION_RECOGNITION: 'monthly', // Recognize monthly over subscription period
SETUP_FEE_RECOGNITION: 'immediate', // Recognize setup fees immediately
REFUND_POLICY: 'pro_rata', // Pro-rated refunds
CURRENCY_CONVERSION: 'transaction_date' // Use transaction date rates
};
function validateRevenueRecognition() {
const subscriptions = getActiveSubscriptions();
const errors = [];
subscriptions.forEach(sub => {
// Validate monthly recognition
const recognizedRevenue = calculateRecognizedRevenue(sub);
const expectedRevenue = (sub.amount / 12) * sub.monthsActive;
if (Math.abs(recognizedRevenue - expectedRevenue) > 0.01) {
errors.push(`❌ Revenue recognition mismatch for subscription ${sub.id}`);
}
// Validate GST treatment
if (sub.customerRegion === 'SG' && !sub.gstAmount) {
errors.push(`❌ Missing GST calculation for Singapore customer ${sub.userId}`);
}
});
return errors;
}
🎯 Implementation Timeline
Phase 1: Core Subscription System
- Set up subscription database schema
- Implement basic subscription management
- Configure Stripe/PayPal integration
- Create subscription lifecycle hooks
Phase 2: ACRA Compliance Foundation
- Implement audit trail system
- Create basic financial reporting
- Set up ACRA filing calendar
- Design revenue recognition engine
Phase 3: Advanced Financial Features
- Multi-gateway payment processing
- Regional pricing optimization
- Advanced tax calculations
- Automated ACRA reporting
Phase 4: Scaling & Optimization
- Regional payment gateway expansion
- Advanced analytics and insights
- Automated compliance monitoring
- Multi-currency optimization
This comprehensive subscription and ACRA compliance architecture ensures regulatory compliance while scaling internationally! 💳📊