Seraya Psikologi — Documentation

Booking and payment MVP · Implementation baseline · 96 ADR

68. Select Midtrans Snap for Launch Payments

Status

Accepted for launch planning; Midtrans is the single gateway-of-record and Snap is the initial checkout surface. Initial method categories (QRIS + bank transfer/Virtual Account) are resolved by ADR 0069. Exact activated method codes, merchant onboarding eligibility, method-specific refund coverage/fees, and reconciliation cadence remain open operational follow-ups.

Context

Seraya's MVP needs one Indonesia-first online payment gateway for single-session and full-upfront package purchases. The domain already isolates provider details behind PaymentGatewayAdapter, treats signed server-verified webhook/PaymentEvent as authority, and records refunds as separate RefundAction records. The team has not previously integrated either Midtrans or Xendit.

Decision

Use Midtrans as the launch gateway-of-record and Snap as the initial hosted checkout integration. The application creates the provider transaction through the adapter, directs the client to Snap, and never treats browser redirect success as payment confirmation. A verified Midtrans notification/webhook and reconciled PaymentEvent remain the authority for confirmation.

Keep the provider boundary intact so a future Xendit or other provider can be added without changing Booking, Appointment, Payment, PaymentEvent, or RefundAction domain semantics. Use Midtrans Core API only if a later requirement makes Snap's hosted checkout insufficient; it is not part of the launch assumption.

The launch method shortlist, merchant-account activation, provider limits, method-specific refund capability/fees, and reconciliation schedule must be verified before enabling production methods. Unsupported or unverified methods are not exposed merely because the provider offers them generally.

Consequences

Positive:

Costs and constraints:

Open follow-up

Verify Midtrans onboarding, exact QRIS/VA activation and limits, payment expiry, fees, refund support, webhook payloads, retry/dead-letter, reconciliation cadence, and outage/manual-resolution handling. The launch method categories are resolved by ADR 0069.