Payment setup: Pay2S, SePay, PayOS and bank transfer
Add the bank account that receives transfers, connect Pay2S, SePay or PayOS to activate plans automatically, set registration, grace period and seller details, and monitor webhooks.
What is the Payments page for?#
Admin › Settings › Payments is the platform's money centre: customers can only buy a plan when at least one payment method is available. LDPage supports bank transfer (the customer scans a QR code) and three gateways: Pay2S and SePay watch your bank account and send a webhook when money arrives so orders are reconciled automatically; PayOS sends the customer to the PayOS checkout page and activates automatically.
1. Read the status strip and the setup checklist#
- 1
Open the account menu › SaaS admin › Settings and choose Payments (Thanh toán) in the Platform group on the left.
- 2
Four cards at the top: Payment methods (0 = customers cannot buy plans), Auto-activate plans (On, Not running or Off), Revenue 30 days and Webhooks 24 hours. Click a card to jump to the related section.
- 3
Auto-activate shows Not running (Chưa chạy) when an auto-reconciliation gateway is on but no receiving bank account exists; orders then still need manual confirmation.
- 4
The Complete setup (Hoàn tất thiết lập) block has 4 steps: Receiving account, Enable a gateway, Receive the first webhook, Seller information. Click a step to open the missing section; the block hides itself once all 4 are done.
- 5
Below are 4 sections: Gateways (with the number active, e.g. 1/3), Bank transfer, Policies and Webhook log.
2. Gateway cards#
- 1
The Gateways section shows one card per gateway: Pay2S and SePay (labelled bank-transfer auto-reconciliation), PayOS (labelled checkout page).
- 2
The switch in the card's top-right corner turns the gateway on or off. Turning off a running gateway asks for confirmation: webhooks from it are rejected and transfer orders need manual confirmation until you turn it back on (for PayOS, customers no longer see that payment option).
- 3
Three figures: Webhook 24h, Activations 24h (orders activated) and Latest (time of the last webhook). If webhooks were rejected, the card says the key/token does not match, with a View button.
- 4
Status badge: Active, Off (configured but not enabled), Incomplete (enabled but fields missing) or Not configured.
- 5
Three buttons at the bottom: Log (opens the webhook log filtered to this gateway), Docs (opens the provider's integration docs) and Configure (opens the configuration dialog).
3. Configure Pay2S, SePay or PayOS#
- 1
Click Configure on a gateway card. The Webhook URL at the top looks like <your domain>/api/v1/payments/<gateway>/webhook; use the copy button to paste it into the gateway's dashboard.
- 2
The Connection check (Kiểm tra kết nối) block is a self-check list: all required fields present (or n missing), public webhook URL (HTTPS), and the latest webhook status (none received, valid at…, or rejected because the key/token does not match). Gateway servers can only call a public HTTPS URL.
- 3
Expand Setup guide (Hướng dẫn khai báo) for the steps to follow on the gateway's site, with your webhook URL filled in.
- 4
Pay2S: on pay2s.vn, link the same bank account as the receiving account in Bank transfer; go to Webhooks › Add webhook, select the account, event “money received”, Endpoint = your webhook URL. Copy the Pay2S token shown (displayed only once) into Hook token (Token của Hook). Use “Only accept transactions to account number” when Pay2S links several banks; empty = all linked accounts.
- 5
SePay: on my.sepay.vn, link the receiving bank account; go to Webhooks integration › Add webhook, event “money in”, URL = your webhook URL; choose API Key authentication and enter the same secret string in SePay and in the Webhook API Key (API Key webhook) field.
- 6
PayOS: create a payment channel on my.payos.vn and copy Client ID, API Key and Checksum Key into the matching fields; in the channel set Webhook URL = your webhook URL and click Check on the PayOS side.
- 7
Secret fields (tokens, keys) are encrypted when saved; afterwards the field shows a hint of the stored value, and you leave it empty to keep it. The eye button shows or hides what you type.
- 8
Turn on Enable <gateway> (all required fields needed) and click Save (Lưu).
- 9
Send a small test transfer with the order code as the transfer note; the result appears in the Webhook log.
4. Set up the receiving bank account#
- 1
Open Bank transfer (Chuyển khoản). The Receiving account card shows which gateways reconcile automatically; if SePay/Pay2S is on but no account is set, a yellow banner asks you to enter one.
- 2
Bank: type a name or BIN to search the list. If your bank is missing, click Enter BIN (Nhập mã BIN) to type the 6-digit BIN and the bank display name yourself. The BIN is the VietQR bank code used to generate the QR image.
- 3
Enter the Account number and Account holder (uppercase without diacritics, as registered at the bank).
- 4
Order code & expiry: the Order code prefix (up to 10 uppercase letters and digits, default PF) starts the order code customers put in the transfer note; an example code is shown next to it. Changing the prefix while orders with the old prefix are pending means those orders need manual confirmation.
- 5
Pending orders expire after 1–168 hours (default 48), with quick buttons 24 h, 48 h, 72 h, 7 days. Expired orders move to Expired; late payments can still be confirmed in Admin › Orders.
- 6
The Customer will see (Khách sẽ thấy) column on the right previews the customer's payment block: sample QR, bank, account number, holder, amount and transfer note. Scan the QR with your banking app before going live.
- 7
To stop accepting transfers, click Stop receiving (Ngừng nhận) on the Receiving account card; the change applies after you Save.
5. Registration, grace period and seller information#
- 1
Open Policies (Chính sách). Registration & verification: Allow customers to self-register (turn off if you only create accounts manually) and Require email verification.
- 2
Plan renewal: Grace period 0–60 days (default 3; quick buttons No grace, 3, 7, 14 days). When the grace period ends, the system unpublishes pages and suspends domains above the plan limits.
- 3
Referral program: status only; click Configure to go to Admin › Referrals.
- 4
Seller information: Seller name, Tax code, Address. These are printed on payment receipts; the receipt preview on the right updates as you type.
6. Save changes and read the webhook log#
- 1
Bank transfer and Policies share one form: switching between them keeps your changes, and tabs with unsaved changes are marked. Save with the floating save bar at the bottom (Save, Cancel) or Ctrl/⌘ + S. Leaving the page with unsaved changes shows a warning.
- 2
Gateway settings are saved separately with the Save button inside each gateway's Configure dialog.
- 3
The Webhook log lists every message gateways send, with Time, Gateway, Result, Order and Note columns. Filter by gateway, by result (Order activated, Valid but not activated, Rejected (authentication failed)) or search by order code or transaction ID.
- 4
Valid webhooks that did not activate an order (wrong note, underpayment…) end up in Unmatched transactions in Admin › Orders for manual assignment.
Troubleshooting#
- 1
Webhooks rejected (authentication failed): the Pay2S token, SePay API Key or PayOS Checksum Key does not match. Re-enter it on both sides and Save.
- 2
Connection check says the webhook URL is not public: the server runs locally or lacks HTTPS, so the gateway cannot reach it. Deploy to a real domain with HTTPS.
- 3
Money arrived but the order was not activated: the customer used a wrong note (missing order code), underpaid, or the receiving account differs from the one linked to the gateway. Check the Webhook log and handle it in Unmatched transactions.
- 4
Gateway on but Auto-activate still Not running: Pay2S/SePay need a receiving account in Bank transfer.
- 5
A field shows “using env value”: the value comes from a server environment variable (e.g. SEPAY_WEBHOOK_KEY, PAYOS_CLIENT_ID).