Sevendyne
Engineering firm · Since 2016
Technical one-pager

PayU-group CRM & payments platform

Region: Singapore & Indonesia Stack: CodeIgniter/PHP · Android · EMI Model: Multi-tenant fintech CRM

One tenant-safe CRM for wallet, merchant, and logistics channels — payment adapters per provider, staged schema migrations on live APAC traffic.

PHPCodeIgniterEMIAndroid QRReconciliation

Tenant boundary

Every request resolves tenant_id at edge. CRM entities, ledger views, and recon exports are scoped queries. Android merchants use same REST with device-bound credentials.

EMI & channels

AreaDesignWhy
EMIState machine per planAuditable transitions; idempotent installment cron
ProvidersAdapter interfaceNew wallet = new adapter, not CRM fork
MigrationsShadow columns + dual-writeLive merchants keep reconciling during deploy
MobileServer-side QR validationThin client; no trust in device payload

Channel adapter contract

interface PaymentChannelAdapter {
  public function initiate(PaymentIntent $i): ChannelResponse;
  public function capture(string $ref): CaptureResult;
  public function reconcile(ReconBatch $b): ReconSummary;
}
$merchant = MerchantModel::forTenant($tenantId)->find($id);

Results

  • Daily online payments for consumers and merchants in SG & ID
  • Unified CRM across wallet, merchant, logistics on PayU infra
  • Backward-compatible API rollout through migration windows

PayU-group / RedDot Payment programme. Client names per NDA.