How crossben/yoonpay works
Yoon is a self-hosted payment gateway: applications submit payment intent, the server routes it to a capable provider, tracks confirmed state, and exposes outcomes and events. The product also supports payouts, refunds, reconciliation, billing, hosted checkout, links, portals, operator tooling, and MCP access. The graph combines README-documented capabilities with sampled service references; many controllers, provider adapters, and other subsystems were not sampled, so their internal call wiring is not asserted.
Main entry points: PaymentService.java Payment orchestration · api HTTP API · ProviderRegistry.java Provider registry · CheckoutController.java Hosted checkout
Components 24
Gateway API
- HTTP API
yoon-server/src/main/java/dev/yoonpay/server/api - API key authentication
yoon-server/src/main/java/dev/yoonpay/server/auth/ApiKeyFilter.java
Payment Operations
- Payment orchestration
yoon-server/src/main/java/dev/yoonpay/server/payment/PaymentService.java - Provider routing
yoon-core/src/main/java/dev/yoonpay/core/routing/Router.java - Payment records
yoon-server/src/main/java/dev/yoonpay/server/payment/PaymentRepository.java - Payout operations
yoon-server/src/main/java/dev/yoonpay/server/payout/PayoutService.java - Refund operations
yoon-server/src/main/java/dev/yoonpay/server/refund/RefundService.java - Shadow ledger
yoon-server/src/main/java/dev/yoonpay/server/ledger/LedgerRepository.java
Billing Experience
- Subscriptions and billing
yoon-server/src/main/java/dev/yoonpay/server/billing/SubscriptionService.java - Hosted checkout
yoon-server/src/main/java/dev/yoonpay/server/checkout/CheckoutController.java - Payment links
yoon-server/src/main/java/dev/yoonpay/server/link/PaymentLinkService.java - Customer portal
yoon-server/src/main/java/dev/yoonpay/server/portal/PortalService.java
Providers and Clients
- Provider registry
yoon-server/src/main/java/dev/yoonpay/server/provider/ProviderRegistry.java - Provider adapters
yoon-providers - MCP integration
clients/mcp/src/server.ts - SDK clients
clients
Operations and Events
- Inbound callbacks
yoon-server/src/main/java/dev/yoonpay/server/webhook/InboundWebhookProcessor.java - Automatic reconciliation
yoon-server/src/main/java/dev/yoonpay/server/settlement/Reconciler.java - Event delivery
yoon-server/src/main/java/dev/yoonpay/server/outbox/OutboxDelivery.java - Status history
yoon-server/src/main/java/dev/yoonpay/server/lifecycle/StatusEvents.java - Operator tooling
yoon-server/src/main/java/dev/yoonpay/server/admin/AdminController.java
Other components
- Merchant application
- Payer / customer
- Payment provider
Connections 23
- Merchant application → HTTP API: submits requests
- HTTP API → API key authentication: authenticates with
- Payment orchestration → Provider routing: selects providers
yoon-server/src/main/java/dev/yoonpay/server/payment/PaymentService.java - Payment orchestration → Provider registry: uses candidates
yoon-server/src/main/java/dev/yoonpay/server/payment/PaymentService.java - Provider registry → Provider adapters: configures
- Payment orchestration → Payment records: records payments
yoon-server/src/main/java/dev/yoonpay/server/payment/PaymentService.java - Payment provider → Inbound callbacks: sends callbacks
- Inbound callbacks → Payment provider: confirms status
- Payment orchestration → Status history: records transitions
yoon-server/src/main/java/dev/yoonpay/server/payment/PaymentService.java - Payout operations → Provider registry: calls provider
yoon-server/src/main/java/dev/yoonpay/server/payout/PayoutService.java - Refund operations → Provider registry: calls provider
yoon-server/src/main/java/dev/yoonpay/server/refund/RefundService.java - Payer / customer → Hosted checkout: pays through
- Payer / customer → Payment links: opens link
- Payment links → Hosted checkout: starts checkout
- Payer / customer → Customer portal: manages subscription
- Subscriptions and billing → Hosted checkout: invoices use
- Subscriptions and billing → Payment orchestration: creates payment
yoon-server/src/main/java/dev/yoonpay/server/billing/SubscriptionService.java - Automatic reconciliation → Payment provider: checks status
- Operator tooling → HTTP API: uses admin API
- MCP integration → HTTP API: reads and writes
- SDK clients → HTTP API: calls gateway
- Payment orchestration → Event delivery: emits events
- Payment orchestration → Shadow ledger: posts ledger entries