Moneyout Full System
Complete service portfolio, business workflows, security controls, and external integrations — covering the full Moneyout platform: backend API, admin web, mobile wallet app, and POS. Prepared for external auditors, compliance officers, and internal control.
Executive Summary
Purpose, scope, and document control
Purpose
This Service Portfolio & Workflow Document provides auditors with a complete, structured view of the full Moneyout platform — covering all products and services: the backend REST API, Angular admin/operator web application, mobile wallet app, and POS payment system. It serves as the authoritative reference for compliance review, access control verification, and process audit.
Platform Overview
The Moneyout platform consists of four components working together:
- 1Backend REST API — Laravel (PHP), MySQL, Laravel Sanctum. Core business logic: money transfers, EFT, wallets, risk/AML, accounting, KYC, POS, commissions. Exposes all services via HTTPS REST endpoints.
- 2Angular Admin Web Application — Angular, NgRx, Angular Material, ngx-translate (EN/TR/AR, RTL). Used by Admin, Operator, SuperOperator, Teller, Agent, Risk, and Accountant roles for all back-office operations.
- 3Mobile Wallet App — Used by wallet customers for registration, KYC, deposits/withdrawals, wallet-to-wallet transfers, and international sends (via Ria/Korona). Push notifications via FCM.
- 4POS Payment System — 3D-secure card payment terminal management via Paygate/FzyPay. Merchants, terminals, payment profiles, and card type configuration.
All four components share the same backend API, security model, and data store. External integrations (transfer networks, banks, KPS, Sumsub, Logo ERP, PayCell, SMS) are consumed exclusively by the backend.
Document Control
| Field | Value |
|---|---|
| Document Title | Moneyout — Full Platform Service Portfolio & Workflow Document |
| Version | 1.0 |
| Date | — |
| Classification | Confidential — For Audit Use Only |
| Owner | Product / Compliance Team |
| Audience | External Auditors, Compliance Officers, Internal Control |
Version History
| Version | Date | Changes |
|---|---|---|
| 1.0 | — | Initial release — full service portfolio, workflows, security controls, external integrations, access control matrix, SoD, audit checklist, and data retention for audit. |
Service Portfolio
All services provided by the Moneyout Core System
The system is organized into 19 service groups. Each group corresponds to a set of related API endpoints, business logic, and (where applicable) external integrations. The table below provides a complete inventory.
Service inventory table
| # | Service Group | Description | Key Roles |
|---|---|---|---|
| 1 | 🔐 Authentication & Security | Login, OTP, password, token, IP/time guards, role routing | All authenticated users |
| 2 | 💸 Money Transfers (Send/Pay) | Outbound send, cash pickup pay, Ria/Korona/Aysar integration, fee/FX | Teller, Agent, Operator |
| 3 | 🏦 EFT (Domestic Transfers) | Single and bulk Excel EFT to Turkish IBAN accounts | Teller, Agent, Operator |
| 4 | 👥 Customer Management | Personal and corporate customers, KPS ID verification, documents | Teller, Agent, Operator |
| 5 | 🏪 Agent & Teller Management | Agents, sub-agents, tellers, orchestration, work areas | Operator, Admin |
| 6 | 💼 Wallet Operations | Wallet customers, deposit/withdraw, W2W, IBAN transfer, cards | Teller, Agent, Wallet User |
| 7 | 🪪 KYC & Verification | KYC types/groups, document upload, NFC, Sumsub, liveness | Operator, Wallet User |
| 8 | ⚠️ Risk & AML | Scenarios, formulas, black list, age risk, simulation, flag/hold/block | Risk Officer, Operator |
| 9 | 📒 Accounting & GL | Manual entry, vouchers, Logo ERP sync, account statements | Accountant |
| 10 | 🛒 POS & Payments | 3D-secure POS, merchants, terminals, payment profiles, card types | Operator, Admin |
| 11 | 📄 Invoice & Subscriptions | PayCell invoice search/pay/refund, subscription management | Operator, Agent |
| 12 | 💰 Commission & Fees | Agent commission rules, fee configuration, cost calculation | Operator |
| 13 | ✅ Approval Pool | Transfer hold queue, approve/reject/cancel, department routing | Operator, Admin |
| 14 | 🔔 Notifications & Alerts | Inner system notifications, FCM, alert management, campaigns | All roles, Wallet User |
| 15 | 📊 Reports & Analytics | Wallet/system/risk reports, earning, account statement, Excel export | Operator, Admin, Accountant, Risk |
| 16 | 🏢 Intercompany / Intermediary | Inter-company transfers, matching (mutabakat), reconciliation | Operator, Admin |
| 17 | ⚙️ System Configuration | Config keys, worker queue, health checks, OTP rules, saved filters | Operator, Admin |
| 18 | 🌐 External Integrations | Ria, Korona, Albaraka, VakifBank, KPS, Logo ERP, Sumsub, Tranglo, Instacash, PayCell, DataportSMS | System (automatic) |
| 19 | 🛡️ Security Architecture | Middleware stack, IP/time/role guards, Sanctum token, rate limiting | System / DevOps |
Glossary
Terms and definitions used in this document
| Term | Definition |
|---|---|
| Sanctum | Laravel Sanctum — token-based authentication. Issues per-user API tokens; used as Bearer token in every request header. |
| OTP | One-Time Password — 6-digit code sent via SMS (DataportSMS). Required for login, transfer confirmation, password reset. |
| KYC | Know Your Customer — identity and document verification for wallet customers (document upload, NFC, Sumsub liveness). |
| KPS | Population Registry System (Turkey) — Nüfus Müdürlüğü. TC (Turkish ID) lookup for identity verification. |
| MERSIS | Central Trade Registry System (Turkey) — used for corporate customer verification. |
| EFT | Electronic Funds Transfer — domestic bank transfer to Turkish IBAN accounts. |
| IBAN | International Bank Account Number — used as beneficiary identifier for EFT transfers. |
| HOLD | Risk action: transfer is paused and sent to Approval Pool for manual review before execution. |
| BLOCK | Risk action: transfer is rejected immediately. User notified. No execution. |
| FLAG | Risk action: transfer proceeds normally but is logged in Triggered Risk Report for compliance monitoring. |
| Approval Pool | Queue of transfers placed on HOLD by risk scenarios. Operators review and approve/reject. |
| Voucher | Accounting record auto-created for each completed transaction. Contains debit/credit lines. Must be verified before posting to GL. |
| GL | General Ledger — the master accounting record. Verified vouchers are posted here. |
| Logo ERP | Logo Tiger — external ERP system. Verified vouchers are synced from Moneyout GL to Logo for official accounting. |
| Mutabakat | Turkish term for reconciliation / matching. Used in intercompany and bank reconciliation processes. |
| FCM | Firebase Cloud Messaging — push notification delivery to mobile wallet app users. |
| 3D Secure | 3-Domain Secure — card payment authentication protocol for POS payments (Paygate/FzyPay). |
| Orchestration | Agent orchestration — rules defining which products (Send, Pay, EFT) an agent can offer, with limits and conditions. |
| Sumsub | Third-party KYC platform for biometric and document verification of wallet customers. |
Security Architecture
Layered security controls protecting every service
Every API request passes through a middleware stack before reaching the controller. Security is enforced at multiple layers: network (IP allowlist), time (working hours), token (Sanctum), user state (active/blocked), and role (operator/admin). The diagram below shows the stack order.
Middleware execution order (every protected request)
Security controls — audit checklist
| Control | Mechanism | Description |
|---|---|---|
| Token authentication | Laravel Sanctum | Bearer token issued at login. Every protected endpoint validates token. Stateless, per-user tokens with revocation support. |
| IP restriction | Checkip middleware | Client IP checked against per-agent/user allowlist. Requests from unknown IPs rejected. |
| Working hours | Checkworktime | Access restricted to configured working hours. Prevents off-hours access from agent/teller terminals. |
| Inactive user block | BlockUserInactive | Suspended, archived, or disabled users cannot access any protected endpoint regardless of valid token. |
| Role-based access | Isoperator / IsAdmin | Endpoints for config, reports, agent management, rule changes restricted to Operator/Admin roles. |
| OTP step-up | AuthController + DataportSMS | Sensitive operations (transfer confirm, password reset, wallet KYC) require OTP delivered via SMS. |
| Rate limiting | Laravel default + IpDailyLoginLimiter | Login and OTP endpoints rate-limited per IP. Too many failed logins block the IP. |
| Audit logging | LogController | Request/response logs, login logs, OTP logs, teller/agent/admin action logs. Stored per type and readable by authorized roles. |
| HTTPS / TLS | Server + external APIs | All external integration calls (Ria, Korona, banks, KPS, Sumsub, Logo) use TLS. Server-side HTTPS enforced. |
| Blacklist checks | BlackListCustomerController | Every Pay Money payout checked against blacklist. Customer and transfer company blacklists maintained and updated. |
Middleware & Access Controls
Which middleware is applied to which endpoint groups
| Middleware | Purpose | Applied to | Behavior |
|---|---|---|---|
auth:sanctum | Token authentication | All protected endpoints | Validates Bearer token (Laravel Sanctum). Rejects unauthenticated requests with 401. |
localization | Language / locale | All protected + some public | Sets app locale (EN/TR/AR) from request header. Supports RTL for Arabic. |
Checkip | IP allowlist control | Most protected endpoints | Validates client IP against allowlist. Blocks unauthorized IPs. |
Checkworktime | Working hours restriction | Most protected endpoints | Restricts access to configured working hours (e.g. 08:00–22:00). Blocks outside hours. |
BlockUserInactive | Inactive user block | All protected endpoints | Checks if user is active. Blocks suspended, archived, or disabled accounts. |
Isoperator | Operator role guard | Config, reports, agent, rules | Allows only users with Operator or SuperOperator role. Returns 403 for others. |
IsAdmin | Admin role guard | Admin-only config endpoints | Allows only Admin role. Used for destructive operations (delete bank, customer ID table, agent chart). |
auth:sanctum except public endpoints (country list, currencies, wallet app status, reset-password flow). Operator-only config endpoints additionally require Isoperator. Admin-only destructive operations additionally require IsAdmin.Access Control Matrix
Which role can perform which operation — 37 operations × 9 roles
The table below maps every significant operation to the roles that may perform it. This matrix is derived from the middleware stack, route guards (Isoperator, IsAdmin), and application-level permission checks.
| Operation | Admin | Operator | SuperOperator | Teller | Agent | SubAgent | Risk | Accountant | InternalControl |
|---|---|---|---|---|---|---|---|---|---|
| Login / OTP | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| View dashboard / KPIs | ✅ | ✅ | ✅ | 👁 | 👁 | — | 👁 | 👁 | 👁 |
| Create money transfer (Send Money) | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | — | — | — |
| Execute cash payout (Pay Money) | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| Cancel / refund transfer | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | — | — | — | — |
| Create / manage EFT | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| Create / edit customer | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| Archive customer | ✅ | ✅ | ✅ | — | — | — | — | — | — |
| Create / edit agent | ✅ | ✅ | — | — | — | — | — | — | — |
| Create / edit teller | ✅ | ✅ | — | — | — | — | — | — | — |
| Set agent orchestration / products | ✅ | ✅ | — | — | — | — | — | — | — |
| Wallet deposit / withdraw (agent) | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| Wallet-to-wallet transfer | ✅ | ✅ | ✅ | — | ✅ | — | — | — | — |
| Approve / reject KYC documents | ✅ | ✅ | ✅ | — | — | — | — | — | — |
| Review / approve pool item | ✅ | ✅ | ✅ | — | — | — | — | — | — |
| Escalate pool item | ✅ | — | ✅ | — | — | — | — | — | — |
| Create / activate risk scenario | ✅ | — | — | — | — | — | ✅ | — | — |
| Simulate risk scenario | ✅ | — | — | — | — | — | ✅ | — | — |
| Add / edit black list customer | ✅ | ✅ | — | — | — | — | ✅ | — | — |
| View risk flag / triggered reports | ✅ | ✅ | — | — | — | — | ✅ | — | ✅ |
| View unverified vouchers | ✅ | — | — | — | — | — | — | ✅ | 👁 |
| Verify voucher / post to GL | ✅ | — | — | — | — | — | — | ✅ | — |
| Create manual journal entry | ✅ | — | — | — | — | — | — | ✅ | — |
| Retry Logo ERP sync | ✅ | — | — | — | — | — | — | ✅ | — |
| Run / export reports (System) | ✅ | ✅ | ✅ | — | — | — | — | ✅ | ✅ |
| Run / export reports (Wallet) | ✅ | ✅ | ✅ | — | — | — | — | ✅ | ✅ |
| Run / export reports (Risk) | ✅ | ✅ | — | — | — | — | ✅ | — | ✅ |
| Configure system settings / keys | ✅ | ✅ | — | — | — | — | — | — | — |
| Delete bank / customer ID table (destructive) | ✅ | — | — | — | — | — | — | — | — |
| View activity log | ✅ | ✅ | ✅ | — | — | — | — | — | ✅ |
| POS terminal / merchant config | ✅ | ✅ | — | — | — | — | — | — | — |
| Pay invoice (PayCell) | ✅ | ✅ | — | — | ✅ | — | — | — | — |
| View notifications / alerts | ✅ | ✅ | ✅ | ✅ | ✅ | — | ✅ | ✅ | ✅ |
| Acknowledge alerts | ✅ | ✅ | ✅ | — | — | — | ✅ | — | ✅ |
| Manage commission / fee rules | ✅ | ✅ | — | — | — | — | — | — | — |
| View intercompany matching (mutabakat) | ✅ | ✅ | — | — | — | — | — | ✅ | ✅ |
| Archive management (view archived records) | ✅ | ✅ | ✅ | — | — | — | — | — | ✅ |
Segregation of Duties (SoD)
Who initiates, who approves, who executes, who verifies — for every critical process
Segregation of Duties ensures that no single person can initiate, approve, and execute a financial or sensitive operation without oversight. The table below documents SoD for every critical process in the system.
| Process | Initiate | Approve / Authorise | Execute | Verify / Reconcile | Audit / Review |
|---|---|---|---|---|---|
| Money Transfer (Send) | Teller / Agent | Operator (if pool-held) | System via transfer company API | Accountant (voucher verify) | InternalControl / Admin |
| Cash Payout (Pay Money) | Teller / Agent | OTP confirmation (sender/teller) | System via company API | Accountant (voucher verify) | InternalControl / Admin |
| EFT Domestic Transfer | Teller / Agent / Operator | — | System via bank API | Accountant (voucher verify) | InternalControl / Admin |
| Wallet Deposit | Agent | OTP (if required) | System (WalletOperationCtrl) | Accountant (voucher) | InternalControl / Admin |
| Wallet Withdrawal | Agent | OTP (if required) | System (WalletOperationCtrl) | Accountant (voucher) | InternalControl / Admin |
| Accounting Voucher Post | System (auto-create) | Accountant (review) | Accountant (verify to GL) | Logo ERP (sync) | InternalControl / Admin |
| Risk Scenario Activate | Risk Officer (create) | Risk Officer (simulate + accept) | Risk Officer (activate) | Risk Officer (triggered report) | InternalControl / Admin |
| Pool Approval | Risk Engine (HOLD) | Operator (review) | SuperOperator (escalate) or Operator (approve/reject) | Accountant | InternalControl |
| KYC Document Approval | Wallet Customer (upload) | Operator (review) | Operator (approve/reject) | Wallet system (limit upgrade) | InternalControl / Admin |
| New Agent / Teller Setup | Operator (create) | Admin (if config required) | System (activate) | Operator (orchestration rules) | InternalControl / Admin |
| Logo ERP Sync | System (auto post verify) | Accountant (verify voucher) | LogoService (auto sync) | Accountant (retry if failed) | InternalControl / Admin |
| POS 3D Payment | Operator / Agent | Customer (3D bank auth) | Paygate / FzyPay API | CallbackController (verify) | Admin / InternalControl |
Key SoD controls — summary
- •Transfer initiation vs. approval: Teller/Agent initiates; Operator approves (when risk HOLD applies). System executes.
- •Accounting voucher: System auto-creates (no human can initiate a fake voucher without a real transaction); Accountant verifies; Logo ERP receives only verified vouchers.
- •Risk activation: Risk officer creates and activates. No 4-eyes enforced at system level — auditors should check if organisational controls compensate.
- •KYC approval: Wallet customer uploads; Operator reviews and approves — two separate parties.
- •Pool approval: Risk engine triggers HOLD; Operator or SuperOperator approves. Same operator who submitted transfer should not approve the pool item.
Audit Checklist
39 audit points across 10 control areas — with cross-references to this document
Use this checklist as your primary working paper. Each item is tagged with an ID for referencing in audit findings. The Where to verify column links each item to the relevant section or workflow in this document.
Authentication (4 items)
| ID | Checklist item | Where to verify |
|---|---|---|
AC-01 | Confirm all API endpoints require a valid Sanctum Bearer token (except public endpoints). | Middleware matrix · auth:sanctum row |
AC-02 | Verify OTP is required for login and sensitive operations (transfer confirm, password reset). | Workflow: Authentication & Token Lifecycle (B02) |
AC-03 | Confirm rate limiting is applied to login and OTP endpoints to prevent brute-force. | Security Architecture · Rate limiting row |
AC-04 | Verify token revocation is possible (Sanctum per-user tokens). | Security Architecture section |
Access Control (5 items)
| ID | Checklist item | Where to verify |
|---|---|---|
AC-05 | Verify IP allowlist (Checkip) is active for all protected endpoints. | Middleware matrix · Checkip row |
AC-06 | Verify working-hours restriction (Checkworktime) is configured and active. | Middleware matrix · Checkworktime row |
AC-07 | Confirm BlockUserInactive prevents access for suspended/archived users. | Middleware matrix · BlockUserInactive row |
AC-08 | Confirm Isoperator and IsAdmin guards restrict destructive endpoints to correct roles. | Access Control Matrix · destructive operations row |
AC-09 | Review Access Control Matrix: no role has unnecessary permissions (least privilege). | Access Control Matrix section |
Segregation of Duties (5 items)
| ID | Checklist item | Where to verify |
|---|---|---|
SD-01 | Confirm money transfer initiation and approval are performed by different roles. | SoD Matrix · Money Transfer row |
SD-02 | Confirm accounting voucher creation (auto by system) is separate from verification (accountant). | SoD Matrix · Accounting Voucher Post row |
SD-03 | Confirm risk scenario activation requires the same risk officer who created it (no 4-eyes for risk activation — flag if concern). | SoD Matrix · Risk Scenario Activate row |
SD-04 | Confirm pool approval (HOLD transfers) cannot be approved by the same operator who initiated. | SoD Matrix · Pool Approval row |
SD-05 | Confirm Logo ERP sync is triggered automatically — accountant cannot bypass GL posting. | SoD Matrix · Logo ERP Sync row |
Money Transfers (5 items)
| ID | Checklist item | Where to verify |
|---|---|---|
MT-01 | Verify blacklist check is performed on every cash payout (Pay Money). | Workflow: Cash Pickup Pay-Out (B04) · Step 3 |
MT-02 | Verify risk scenarios are evaluated on every new transfer before execution. | Workflow: Risk & AML Evaluation (B08) |
MT-03 | Confirm HOLD transfers cannot be executed without pool approval. | Workflow: Approval Pool (wf-approval) |
MT-04 | Verify BLOCK transfers are rejected and logged with reason. | Workflow: Risk & AML Evaluation (B08) · BLOCK branch |
MT-05 | Confirm cost calculation (fee + commission + FX) is applied before transfer confirmation. | Workflow: Money Transfer Backend Flow (B03) · Step 2 |
EFT (3 items)
| ID | Checklist item | Where to verify |
|---|---|---|
EFT-01 | Verify IBAN validation is applied to all EFT records before submission to bank. | Workflow: EFT Domestic Transfer (B05) · Step 2 |
EFT-02 | Confirm bulk EFT invalid rows are reported back and not silently skipped. | Workflow: EFT Domestic Transfer (B05) · Step 3 |
EFT-03 | Verify EFT status callbacks update the transfer status (Completed/Failed) in the system. | Workflow: EFT Domestic Transfer (B05) · Step 5 |
Wallet (3 items)
| ID | Checklist item | Where to verify |
|---|---|---|
WL-01 | Verify wallet operations enforce daily/monthly limits per customer and KYC level. | Workflow: Wallet Deposit/Withdrawal (B06) · Step 3 |
WL-02 | Confirm wallet-to-wallet transfers require OTP if configured. | Workflow: Wallet W2W (M03) · Step 7 |
WL-03 | Verify KYC approval is required before limit upgrades are applied. | Workflow: KYC & Document Verification (B07) · Step 5 |
Accounting (3 items)
| ID | Checklist item | Where to verify |
|---|---|---|
ACC-01 | Confirm every completed transfer auto-creates an accounting voucher. | Workflow: Accounting & Logo ERP Sync (B09) · Step 1 |
ACC-02 | Verify unverified vouchers are in a separate queue and cannot auto-post without accountant action. | Workflow: Accounting & Logo ERP Sync (B09) · Step 4 |
ACC-03 | Confirm Logo ERP sync failure triggers retry mechanism and is visible to accountant. | Workflow: Accounting & Logo ERP Sync (B09) · Step 6 |
Integrations (4 items)
| ID | Checklist item | Where to verify |
|---|---|---|
EI-01 | Verify all external API credentials are stored in environment config, not in source code. | External Integrations section · note |
EI-02 | Confirm all external API calls use HTTPS/TLS. | External Integrations section |
EI-03 | Review data sharing with each external party — confirm only minimum necessary data is shared. | External Integrations section · auditor note |
EI-04 | Verify DPA/contracts exist for all external parties (Ria, Korona, KPS, Sumsub, Logo, PayCell). | Compliance team review |
Audit Logging (5 items)
| ID | Checklist item | Where to verify |
|---|---|---|
LOG-01 | Confirm request/response logs are retained and accessible to authorized roles. | Data Retention & Logging section |
LOG-02 | Verify login logs (success and failure) are retained and include IP and timestamp. | Data Retention & Logging section |
LOG-03 | Confirm OTP logs are retained and include user, timestamp, result. | Data Retention & Logging section |
LOG-04 | Verify teller/agent action logs are available and not editable by those roles. | Activity Log section |
LOG-05 | Confirm accounting audit trail: every voucher has a create timestamp, create user, and verifier. | Accounting workflow |
POS (2 items)
| ID | Checklist item | Where to verify |
|---|---|---|
POS-01 | Verify 3D secure is enforced for all card payment sessions. | Workflow: POS 3D Payment (B10/P01) |
POS-02 | Confirm callback signature verification prevents unauthorized payment completion. | Workflow: POS 3D Payment (B10) · Step 4 |
Data Retention & Logging
What data is stored, for how long, and who can access it
All transaction data, logs, accounting records, and KYC documents are stored in the MySQL database and/or server file storage. The table below documents each data category, its storage location, retention policy, and access control.
| Data / Log Type | Storage (table / endpoint) | Retention | Access (roles) | Notes |
|---|---|---|---|---|
| Transfer records | transfers table |
Indefinite | Operator, Admin, Accountant, InternalControl | Full transfer lifecycle: create, execute, cancel, refund. Linked to voucher. |
| EFT records | eft_transfers / import_eft |
Indefinite | Operator, Admin, Accountant | Per-row status tracking. Linked to voucher on completion. |
| Wallet transactions | wallet_transactions |
Indefinite | Operator, Admin, Accountant, InternalControl | Deposit, withdraw, W2W, IBAN transfer. Linked to wallet_customers. |
| Accounting vouchers | accounting_vouchers / entries |
Indefinite | Accountant, Admin, InternalControl | Auto-created per transaction. Includes debit/credit lines, verifier ID, Logo sync status. |
| General Ledger (GL) | account_entries |
Indefinite | Accountant, Admin, InternalControl | Verified transactions posted to GL. Basis for Logo ERP sync. |
| Request logs | log/request endpoint |
Configurable | Admin, InternalControl | Full HTTP request log per user. Includes endpoint, payload hash, timestamp, IP. |
| Response logs | log/response endpoint |
Configurable | Admin, InternalControl | HTTP response log. Matched to request by correlation ID. |
| Login logs | log/user (login entries) |
Configurable | Admin, InternalControl | Login success/failure: user ID, IP, timestamp, OTP result. |
| OTP logs | log/otp |
Configurable | Admin, InternalControl | OTP send and verify events: user, phone, timestamp, result. |
| Activity log (actions) | activity_log table |
Configurable | Admin, Operator, InternalControl | User actions on entities (create, edit, archive, approve). Read-only audit. |
| Risk triggered events | risk_trigger_report |
Indefinite | Risk, Admin, InternalControl | Every transfer that matched a risk scenario. Includes scenario name, action, outcome. |
| KYC documents | kyc_approvals / file storage |
Indefinite | Operator, Admin, InternalControl | Document images stored server-side. Approval status, reviewer, timestamp retained. |
| Approval pool history | pool_requests |
Indefinite | Operator, Admin, InternalControl | Full approval pool lifecycle: create, approve/reject/escalate, timestamps, operator IDs. |
| Customer/agent records | customers / agents tables |
Indefinite | Operator, Admin, InternalControl | Archived records remain in archive tables. Fully auditable. |
| POS payment sessions | pos_orders / pos_callbacks |
Indefinite | Admin, InternalControl | 3D payment session, callback, result, signature verification status. |
| Notification / alert log | notifications / alerts |
Configurable | All roles (own) / Admin (all) | System and risk alert history. Acknowledgement timestamp and user. |
Log endpoints (accessible to authorised roles)
| Endpoint | Log type | Access |
|---|---|---|
GET /log/request | HTTP request log | Admin, InternalControl |
GET /log/response | HTTP response log | Admin, InternalControl |
GET /log/user | Login / logout / OTP events | Admin, InternalControl |
GET /log/teller | Teller action log | Admin, Operator, InternalControl |
GET /log/agent | Agent action log | Admin, Operator, InternalControl |
GET /log/admin | Admin action log | Admin, InternalControl |
GET /activity-log | Entity-level activity log | Admin, Operator, InternalControl |
Product 1 — Backend API
Laravel (PHP) · REST API · MySQL · Laravel Sanctum · 19 service areas
The backend REST API is the core of the Moneyout platform. It is built with Laravel (PHP), uses MySQL as the primary database, and authenticates all requests via Laravel Sanctum token authentication. It exposes all business logic as HTTPS REST endpoints consumed by the Angular admin web, mobile wallet app, and POS terminal.
Technology stack
| Layer | Technology | Purpose |
|---|---|---|
| Framework | Laravel (PHP) | MVC framework, routing, middleware, queues, jobs |
| Database | MySQL | Primary relational data store for all transactions, users, configs |
| Authentication | Laravel Sanctum | Stateless per-user Bearer token authentication |
| Queue / Jobs | Redis + Laravel Queue | Async jobs: Logo ERP sync, large report export, email notifications |
| File Storage | Server-side storage | KYC documents, voucher attachments, Excel exports |
| Push Notifications | Firebase FCM | Push notifications to mobile wallet app users |
| Real-time | WebSocket (Laravel + Socket) | Real-time push to Angular admin web (notifications, pool, alerts) |
Service areas (19 total)
POST /loginPOST /checkotpcodePOST /sendotpPOST /resetpasswordPOST /useKpsGET /common/getUserPermissionsPOST /transfer/storePOST /transfer/costcaluclationPOST /transfer/getCompanyRatePOST /transfer/cancelTransferPOST /transfer/refundRequestPOST /transfer/getAllPOST /transfer/searchTransferforPayPOST /transfer/finishTransferPOST /transfer/onePOST /import-eftGET /get-eft-agentsPOST /transfer/efttransfersPOST /customer/addCustomerPOST /customer/allPOST /customer/onePOST /customer/EditCustomerPOST /customer/archivePOST /customer/corporate-allPOST /customer/transaction-analysisPOST /agent/createPOST /agent/allPOST /agent/editPOST /agent/archivePOST /Orchestration/addPOST /teller/addTellerPOST /teller/allPOST /teller/EditTellerPOST /walletoperation/depositWalletPOST /walletoperation/withdrawWalletPOST /walletoperation/sendWalletToWalletPOST /agentWalletOperation/chargePOST /walletMoneyTransfer/sendRiaPOST /walletMoneyTransfer/sendKoronaPOST /walletcommon/walletBalancePOST /kycApproval/createApprovalRequestPOST /kycApproval/searchApprovalPOST /kyctype/storePOST /kycgroups/storePOST /walletcommon/sendNFCDataPOST /risk-scenario/storePOST /risk-scenario/simulatePOST /risk-scenario/activateSenarioPOST /risk-formula/storePOST /risk-percentages/editCountryRiskValuePOST /pool/allPOST /pool/onePOST /pool/updatePOST /pool/cancelGET /pool/getDepartmentsPOST /account/getUnVerifiedVouchersPOST /account/verifyVoucherPOST /account/createNewEntriesPOST /account/getAccountStatementPOST /account/retryEntryPOST /agent-commission/storePOST /fees-definition/storePOST /transfer/costcaluclationPOST /intermediary-company/allPOST /interCompaniesReports/mutabakatPOST /PayCell/invoiceSearchPOST /PayCell/invoicePayPOST /PayCell/invoiceRefundPOST /posOperation/payment3dPOST /posTerminals/addPOST /merchant/createPOST /paymentProfile/addPOST /innerSystemNotification/storePOST /innerSystemNotification/markAllIsReadedPOST /alert/allPOST /alert/acknowledgePOST /walletreports/wallettowalletPOST /walletreports/walletTransactionPOST /transfer/earingReportPOST /account/getAccountStatementPOST /systemsetting/countries/storeGET /systemsetting/integrations/healthPOST /systemsetting/otp/storeGET /log/requestGET /log/responseGET /log/userGET /log/tellerGET /log/agentGET /log/adminProduct 2 — Angular Admin Web Application
Angular · NgRx · Angular Material · ngx-translate (EN/TR/AR, RTL) · 32 modules
The Angular Admin Web Application is the back-office web platform used by all staff roles: Admin, Operator, SuperOperator, Teller, Agent, SubAgent, Risk Officer, Accountant, and InternalControl. It is a Single Page Application (SPA) with lazy-loaded feature modules, role-based routing, NgRx state management, and WebSocket-based real-time updates.
Technology stack
| Layer | Technology | Purpose |
|---|---|---|
| Framework | Angular (latest) | SPA framework, lazy-loaded modules, routing, guards |
| State Management | NgRx | Actions, reducers, effects, selectors for all async data |
| UI Components | Angular Material | Forms, dialogs, tables, steppers, date pickers |
| Localisation | ngx-translate | EN / TR / AR. Arabic activates RTL layout (dir=rtl) |
| Real-time | WebSocket (ngx-socket-io) | Notifications, approval pool, alerts, list updates |
| Data Lists | Shared data table + CDK virtual scroll | Infinite scroll (load more at 95%) across all list screens |
Modules (32 total)
Product 3 — Mobile Wallet App
Customer-facing mobile app · Wallet API · Firebase FCM · 11 feature areas
The Mobile Wallet App is the customer-facing product. Wallet customers use it to register, complete KYC, manage their wallet balance, send money internationally, transfer between wallets, and receive push notifications. The app communicates exclusively with the Moneyout backend API.
Technology stack
| Layer | Technology | Purpose |
|---|---|---|
| Backend | Moneyout REST API | All business logic, authentication, and data storage |
| Authentication | Laravel Sanctum token | Phone + password + OTP login; token stored on device |
| Push Notifications | Firebase FCM | Transaction confirmations, KYC status, system events |
| Languages | EN / TR / AR | Arabic activates RTL layout |
| Identity Verification | Sumsub (optional) | Biometric liveness check during KYC process |
| NFC | eID NFC chip read | Optional: read identity data from NFC-enabled ID cards |
Features (11 areas)
Product 4 — POS Payment System 🚧 IN DEVELOPMENT
3D-secure card payments · Paygate / FzyPay · Merchants & Terminals · Not yet in production
The POS Payment System will enable agents and operators to accept card payments at physical or virtual terminals using 3D-secure (3DS) authentication. It integrates with Paygate / FzyPay for payment session management and bank callback processing.
Planned features
Technology stack (planned)
| Layer | Technology | Purpose |
|---|---|---|
| Payment Gateway | Paygate / FzyPay | 3D-secure payment session creation, terminal management |
| Callback Handler | Laravel CallbackController | Receive and verify bank payment callbacks; update order status |
| Backend Integration | Moneyout REST API | All POS operations routed through the same secured API layer |
| Security | Signature verification | Every bank callback validated before order status update |
Outbound Money Transfer (Send Money)
End-to-end business workflow
Workflow flow
Step-by-step process
CommissionController@costcaluclation: calculates fee, commission (agent rules), FX rate. Returns total cost to sender. (CommissionController)log/request, log/response, log/user).Cash Pickup Pay-Out (Pay Money)
End-to-end business workflow
Workflow flow
Step-by-step process
BlackListCustomer table. If match → payout blocked. (BlackListCustomerController)finshTransfer called. Transfer status → Paid. Agent ledger updated. (TrasfareController@finshTransfer)log/request, log/response, log/user).EFT Domestic Transfer
End-to-end business workflow
Workflow flow
Step-by-step process
EFTController@importFromExcel parses rows. (EFTController)log/request, log/response, log/user).Wallet Deposit / Withdrawal
End-to-end business workflow
Workflow flow
Step-by-step process
walletcustomer/getUserLimits). (WalletController)walletcommission rules). Displayed to user before confirmation. (WalletCommissionController)depositWallet / withdrawWallet). Wallet balance updated. (WalletOperationController)log/request, log/response, log/user).Wallet KYC & Document Verification
End-to-end business workflow
Workflow flow
Step-by-step process
sendNFCData) or Sumsub liveness check. (KycProgressApprovalController + SumsubClient)kycApproval/searchApproval). (KycProgressApprovalController)log/request, log/response, log/user).Risk Scenario Evaluation (AML)
End-to-end business workflow
Workflow flow
Step-by-step process
risk-scenario/store): defines conditions (amount, country, frequency, etc.), action (HOLD/BLOCK/FLAG), and priority. (RiskController)risk-scenario/simulate): shows how many past transfers would have been triggered. Officer can adjust thresholds. (RiskController)activateSenario). From this point it is evaluated on every new transfer. (RiskController)pool/all). Operator reviews and approves/rejects.BLOCK: transfer rejected immediately, user notified.
FLAG: transfer proceeds; logged in Triggered Risk Report. (PoolController / RiskController)
log/request, log/response, log/user).Accounting & Logo ERP Sync
End-to-end business workflow
Workflow flow
Step-by-step process
account/getUnVerifiedVouchers). (AccountingController)account/verifyVoucher): voucher posted to General Ledger. Status becomes Verified. (AccountingController)LogoService. If sync fails, account/retryEntry allows retry. (LogoService)log/request, log/response, log/user).Approval Pool Workflow
End-to-end business workflow
Workflow flow
Step-by-step process
pool/all). Can filter by department, date, status. (PoolController)pool/one): sender, beneficiary, amounts, risk scenario details, documents. (PoolController)pool/update with approved status → transfer executes.Reject: transfer cancelled, agent/customer notified.
Escalate: item moved to next-level department. (PoolController)
log/request, log/response, log/user).Refund Processing Workflow
End-to-end business workflow
Workflow flow
Step-by-step process
system/refundReasonsList). (RefundReasonController)transfer/refundRequest. Auto-approve rules evaluated. If auto-approve: refund API call made to transfer company. (TrasfareController)log/request, log/response, log/user).OTP Authentication & Step-Up Verification
End-to-end business workflow
Workflow flow
Step-by-step process
POST /checkotpcode. Attempt counter incremented on failure. (OtpCheckController)log/request, log/response, log/user).Agent Onboarding & Orchestration Setup
End-to-end business workflow
Workflow flow
Step-by-step process
log/request, log/response, log/user).Report Generation & Async Excel Export
End-to-end business workflow
Workflow flow
Step-by-step process
log/request, log/response, log/user).System Configuration & Health Management
End-to-end business workflow
Workflow flow
Step-by-step process
system/re-check). Alert raised if persistent failure. (SystemController)log/request, log/response, log/user).External Integrations
All third-party systems the backend connects to
The Moneyout Core System integrates with the following external parties. All connections use HTTPS/TLS. Credentials are stored in environment configuration (not in source code).
| System | Purpose | Service Class / Controller | Description |
|---|---|---|---|
| Ria Money Transfer | Outbound send + cash pay | RiaSendMoneyService, RiaPayMoneyService, WalletInternationalMoneyTransferController | Create/cancel transfers, get rates, verify beneficiary, search orders ready to pay. REST API over HTTPS. |
| Korona Pay | Outbound send | KoronaPayService | Send money via Korona network. Get rate, get city, send transfer. |
| Aysar (Tranglo) | Outbound send + callback | TrangloController, Tranglo service | Transfer submission and status callback webhook. TLS-secured callback endpoint. |
| Instacash | Outbound send | InstantCash service, InstantDataController | Transfer submission and instant balance query. |
| Albaraka Bank | EFT / bank transfers | AlbarakaBank.php service | Domestic EFT execution via Albaraka Bank API. TLS, bank-specific auth. |
| VakifBank | EFT / bank transfers | VakifBank.php, VakifKatilim.php | Domestic EFT via Vakif and Vakif Katilim APIs. |
| Finansbank | EFT / bank transfers | FinansBank.php | Domestic EFT via Finansbank API. |
| KPS (Population Reg.) | Identity verification (TR) | KpsHelper, KpsHelper1, Kpsv2Sorgulayici | Look up Turkish national ID (TC) from population registry. Used for sender/customer identity check. |
| MERSIS | Company registry (TR) | MERSIS.php service | Look up Turkish company data from trade registry. Used for corporate customer verification. |
| Logo ERP | Accounting / GL sync | LogoService | Post verified vouchers to Logo Tiger ERP. Retry on failure. Bi-directional account data. |
| Sumsub | KYC / liveness check | SumsubClient.php | Remote KYC and liveness verification for wallet customers via Sumsub platform API. |
| PayCell | Invoice payment | PayCellController, PayCell.php | Invoice search, pay, refund, and corporate company lookup via PayCell API. |
| Paygate / FzyPay | POS 3D-secure payments | FzyPayController, Paygate.php, FziPay.php | Create 3D-secure POS payment sessions, get terminals, manage payment profiles. |
| DataportSMS | OTP / SMS delivery | DataportSMS.php | Deliver OTP codes via SMS. Used in login, reset password, transfer OTP flows. |
| GIB Reports | Tax reporting (TR) | GIBreports.php | Generate Turkish tax authority reports (GIB). |
| MoneyBasket | Transfer network | MoneyBasket.php | Additional transfer network integration. |
Data Flow Overview
How data moves between system components
Transfer data flow (end-to-end)
Wallet deposit data flow
KYC data flow
Risk evaluation data flow
Accounting data flow
log/* endpoints. Audit log export is available.Flow Diagrams
79 interactive diagrams — backend, mobile wallet, POS, and admin UI flows
| Group | Count | Coverage |
|---|---|---|
| 🖥️ Backend Architecture & Security | 20 | 20 diagrams covering system architecture, authentication token lifecycle, full money-transfer backend flow, EFT, wallet operations, KYC, risk/AML evaluation, accounting/GL sync, and POS 3D payment. |
| 📱 Mobile Wallet App Flows | 11 | 11 diagrams covering wallet registration, login, dashboard, send money, wallet-to-wallet, IBAN transfer, KYC, withdrawal, FCM push, and multilingual/RTL. |
| 🛒 POS Payment Flows | 2 | 2 diagrams covering 3D-secure POS payment end-to-end and terminal setup. |
| 🅰️ Angular Admin UI Flows | 46 | 46 diagrams covering the Angular admin/operator web application: architecture, authentication, send money stepper, pay money, EFT, approval pool, wallet lifecycle, KYC, risk scenarios, NgRx state, accounting, dashboard, reports, system health, and all 32 modules. |
Backend Architecture & Security
20 diagrams — backend architecture & security
Audit guidance: Each diagram below shows a complete flow. Use the Expand button for a full-screen, zoomable view. Use Download SVG to attach diagrams to audit working papers.
Mobile Wallet App Flows
11 diagrams — mobile wallet app flows
Audit guidance: Each diagram below shows a complete flow. Use the Expand button for a full-screen, zoomable view. Use Download SVG to attach diagrams to audit working papers.
POS Payment Flows
2 diagrams — pos payment flows
Audit guidance: Each diagram below shows a complete flow. Use the Expand button for a full-screen, zoomable view. Use Download SVG to attach diagrams to audit working papers.
Angular Admin UI Flows
46 diagrams — angular admin ui flows
Audit guidance: Each diagram below shows a complete flow. Use the Expand button for a full-screen, zoomable view. Use Download SVG to attach diagrams to audit working papers.
Moneyout — Full Platform Service Portfolio & Workflow Document
Confidential — For Audit Use Only
© MoneyOut · All rights reserved