Payment Security

Last updated 19 Jul 2026
Share

We use Midtrans as our payment provider. This page explains openly how your payment is processed, what touches our servers and what never does, and every check that runs before an order is marked as paid.

1. Your card details never touch our servers

We use Midtrans Snap — a payment interface hosted by Midtrans itself, which appears as a separate window over our page. Your card number, expiry date, and CVV are typed directly into Midtrans's interface.

That means:

  • Your card number never passes through a VinzaPanel server.
  • Your card number is never stored in our database — in any form, encrypted or otherwise.
  • The only card-related value we keep is a channel label such as credit_card, gopay, or bank_transfer, for reconciliation.

All we send Midtrans when opening a payment is four groups of data: the order number and amount, your first name – email – phone number, and the line items purchased.

2. No silent recurring charges

We do not store a card token. As a result we cannot re-bill you without you being present and approving it. Renewing a subscription is a repurchase you make yourself — not an automatic deduction running in the background.

3. How payment confirmations are verified

When you finish paying, Midtrans notifies our server. That kind of notification is the most tempting thing in the whole flow to forge, so we check it in layers:

Layer 1 — Cryptographic signature

Every notification carries a signature. We recompute a SHA-512 hash over the order number, status code, amount, and our secret server key, then compare it against the signature that arrived. The comparison uses a constant-time function so it cannot leak through timing. Signature mismatch → request rejected.

The server key exists only on our side and is never sent to the browser. What the page loads is the client key, which is designed to be public.

Layer 2 — Amount matching

A valid signature alone is not enough. We compare the amount actually paid against the amount recorded on the order. If they differ at all, the service is not activated and the discrepancy is logged for human review.

Layer 3 — Transaction and fraud status

An order is only marked paid if its transaction status is capture or settlement and Midtrans's fraud status is not deny. A deny, cancel, or expire status marks the order failed or expired.

Layer 4 — Fail closed

If the Midtrans keys are not configured, the notification endpoint refuses every call rather than accepting it. Without the secret key, the signature would be computed from three values that are entirely under the sender's control — so accepting requests in that state would be an open door. We would rather be fully offline than open.

4. Duplicate notifications do not double-charge

Payment networks legitimately send the same notification more than once. Our system treats it as an idempotent operation:

  • Order numbers are unique in the database.
  • An order already marked paid is ignored if confirmed again.
  • Invoice issuance is find-or-create, so one payment always yields exactly one invoice.

Every decision path — the Midtrans notification, the check when you return to the finish page, and manual admin reconciliation — runs through the same single verification function, so the amount check above cannot be bypassed from any route.

5. If payment succeeded but the service isn't active yet

Do not pay again. When you return to the finish page, our system queries the transaction status directly from Midtrans and activates the service if it has settled. If it is still inactive after a few minutes, contact us with your order number — do not repeat the payment.

6. Payment methods

Available channels follow what is enabled on our Midtrans account, typically covering cards (Visa, Mastercard, JCB, American Express), bank transfer / virtual account (BCA, BNI, BRI, Mandiri, Permata, CIMB Niaga), QRIS, e-wallets (GoPay, ShopeePay), and retail outlets (Alfamart, Indomaret). The definitive list is always the one shown in the payment window.

7. Invoices and tax

Listed prices are inclusive of 11% VAT. An invoice is issued automatically once payment is confirmed, carrying the invoice number, the billing details from your profile, subtotal, tax amount, and total. The invoice total always equals what Midtrans actually collected.

8. What to watch for

  • We will never ask for your card number, PIN, OTP, or password by email, WhatsApp, or support ticket.
  • A legitimate payment screen always comes from a Midtrans domain. If any other page asks for card details in our name, it is not us.
  • Enable two-factor authentication on your account.
  • Review your bank statements and report any charge you do not recognise.

9. Reporting a security issue

If you find a weakness in our payment flow, report it to [FILL: security email]. We respond to reasonable reports and will not pursue legal action against good-faith security research.