Skip to content

Architecture Overview ​

MyHoreca Pay processes Indonesian bank statements and allocates payments into Syrve/iiko.

Bounded contexts ​

  • BankStatements — import, detect format, parse, normalize
  • CounterpartyMatching — map bank counterparty names to Syrve/iiko entities
  • PaymentAllocation — match payments to documents, partial/overpayment handling
  • Syrve/iiko — IikoConnector transport; application services in Infrastructure
  • Auth — JWT, roles, permissions, audit trail

See Identity and IDs for UUID v7 rules for domain entity identifiers.

Pipeline ​

text
any bank file
  → bank adapter (per bank/format)
  → NormalizedBankTransaction
  → counterparty matching
  → payment allocation preview/confirm
  → Syrve/iiko posting (approval gate + idempotency)

Optional inbox channel (design accepted, not implemented): Telegram bot → same import pipeline after an Active cabinet↔Telegram link. See ADR: Telegram bank-statement inbox v1. WhatsApp is out of scope for v1.

Deployment topology ​

  • Test: UI https://pay.ru.tuna.am, API https://apipay.ru.tuna.am
  • Production: UI https://pay.myhoreca.id, API https://pay.myhoreca.id/api
  • External traffic enters through YARP Gateway, which proxies /api/* to API service.