Gói và hoá đơn (billing)

Video hướng dẫn

Gói và hoá đơn MONA Pay: xem hạn mức, nâng gói, thanh toán · Xem trên YouTube
Xem transcript video (9 phần)

Kiểm tra hạn mức trước

Webhook đang chạy mà đột nhiên không phát tiếp có thể liên quan hạn mức gói, không phải endpoint hỏng. Trong video này, mình sẽ đọc mức dùng, xem các gói, tạo hóa đơn nâng gói, thanh toán bằng VietQR và theo dõi đến khi kích hoạt. Anh chị cũng sẽ hiểu khoản nào được tính là một giao dịch và điều gì xảy ra khi vượt hạn mức.

Cách đếm giao dịch

Gói Miễn phí có năm trăm giao dịch tiền vào mỗi tháng và dùng đủ tính năng. Hệ thống đếm một khoản tiền credit trên mọi tài khoản thật và tài khoản ảo đã nối, chốt theo giờ Việt Nam. Tiền ra, giao dịch sandbox và webhook gửi lại không tính. Gói trả phí tính theo số giao dịch, không lấy phần trăm số tiền. Giá cụ thể đọc tại trang Bảng giá.

Đọc gói và mức dùng

Gọi GET /api/v1/billing/plans không cần xác thực để đọc năm gói cùng code, giá tháng, giá năm, hạn mức, phí vượt và tính năng. Gọi GET /api/v1/billing/usage với Bearer để lấy plan_code, tx_used, tx_limit, overage_tx, overage_amount và plan_expires_at. Đây là hai endpoint nên hiển thị trong trang quản trị trước khi cho người dùng bấm nâng gói.

Khi vượt hạn mức

Với gói Miễn phí, tháng đầu vượt hạn mức vẫn nhận đủ thông báo. Nếu tiếp tục vượt ở tháng kế tiếp, giao dịch vẫn được lưu trong dashboard nhưng webhook và Telegram cho phần vượt sẽ dừng đến khi nâng gói; log ghi QUOTA_EXCEEDED. Gói trả phí không khóa, phần vượt được tính phụ trội. Hệ thống nhắc qua Telegram một lần ở mốc tám mươi phần trăm và một trăm phần trăm.

Tạo hóa đơn nâng gói

Tạo hóa đơn bằng POST /api/v1/billing/invoices, gửi Bearer, X-Client-Secret, plan_code và cycle. Mã gói nhận startup, business, enterprise hoặc scale. Chu kỳ nhận month hoặc year; trả năm tính tiền mười tháng. Response HTTP hai trăm lẻ một tạo hóa đơn pending, có mã chuyển khoản bắt đầu bằng MPAY rồi sáu số và hạn thanh toán bốn mươi tám giờ.

Thanh toán đúng mã MPAY

Response còn có khối payment với link ảnh VietQR và payload EMVCo để tự dựng QR. Khách phải chuyển đúng số tiền và ghi đúng mã MPAY vào tài khoản trên hóa đơn. Sau khi tiền vào, hệ thống tự khớp mã cùng số tiền. Ứng dụng gọi GET /api/v1/billing/invoices/{id} đến khi status thành paid; gói được kích hoạt tại thời điểm đó.

Kích hoạt hoặc hủy hóa đơn

Cùng gói còn hạn thì thời gian mới được cộng từ ngày hết hạn cũ. Đổi sang gói khác thì kỳ được tính lại từ lúc thanh toán. Nếu tạo nhầm, gọi POST /api/v1/billing/invoices/{id}/cancel khi hóa đơn còn pending. Quá bốn mươi tám giờ chưa thanh toán, trạng thái tự thành expired. Danh sách hóa đơn đọc bằng GET, hỗ trợ lọc status và phân trang.

Gói MONA và gia hạn

Khách hàng đang dùng dịch vụ web, phần mềm hoặc hosting của The MONA Group có thể được gán gói mona; gói này không mua qua API. Khi đã được gán, endpoint usage trả plan_code bằng mona. Với gói trả phí quá hạn bảy ngày chưa gia hạn, tài khoản hạ về Miễn phí nhưng dữ liệu vẫn giữ. Nâng gói không làm đổi payload, chữ ký hay cấu hình webhook.

Mở docs hoặc dashboard

Danh sách endpoint và luồng nâng gói nằm tại monapay.vn/docs/api/goi-va-hoa-don. Anh chị đăng ký tại my.monapay.vn, mở Gói và thanh toán nếu muốn thao tác bằng dashboard và theo dõi QR tự đổi trạng thái khi nhận tiền. Nếu cần kiểm tra hạn mức, hóa đơn hoặc mã MPAY, gọi tổng đài một chín không không, sáu ba sáu, sáu bốn tám để đội MONA hỗ trợ.

MONA Pay miễn phí 500 giao dịch tiền vào mỗi tháng, đủ mọi tính năng. Bán nhiều hơn thì nâng gói trả phí tính theo số giao dịch, không thu phần trăm trên số tiền. Trang này dành cho lập trình viên và AI agent cần đọc gói, đọc mức dùng và nâng gói bằng API thay vì bấm dashboard. Giá niêm yết ở trang bảng giá.

Khách hàng của MONA: miễn phí hoàn toàn

Anh chị đang dùng dịch vụ web, phần mềm hay hosting của The MONA Group thì có gói riêng mona: miễn phí hoàn toàn, không giới hạn giao dịch, trong suốt thời gian còn là khách hàng của MONA. Gói này không mua qua API được, đội MONA gán khi bàn giao dự án hoặc anh chị gọi 1900 636 648. Đã được gán thì GET /api/v1/billing/usage trả plan_code: "mona" và mọi phần dưới đây về hạn mức không còn liên quan tới anh chị.

Cách đếm giao dịch

Giao dịch = 1 khoản tiền vào (credit) ghi nhận trên mọi tài khoản và tài khoản ảo đã nối, cắt tháng theo giờ Việt Nam (UTC+7). Tiền ra, giao dịch sandbox và webhook gửi lại không tính.

Vượt hạn mức thì sao:

  • Gói Miễn phí: tháng đầu tiên vượt vẫn báo đủ (du di). Từ tháng vượt kế tiếp, giao dịch vượt mức vẫn ghi nhận trong dashboard nhưng ngưng gửi webhook và Telegram cho tới khi nâng gói. Không mất giao dịch. Nếu client có cấu hình webhook, mỗi giao dịch bị chặn ghi một dòng webhook_log với lỗi QUOTA_EXCEEDED để đối chiếu.
  • Gói trả phí: không khoá, phần vượt tính phụ trội theo từng giao dịch (niêm yết theo gói), gom vào hoá đơn cuối tháng.
  • Hệ nhắc qua Telegram đúng một lần ở mốc 80% và 100% hạn mức trong tháng.

Các endpoint

Base URL https://api.monapay.vn (alias cũ https://ipn.mona.host). Xác thực Bearer như mọi API khác, xem Xác thực. Request ghi (POST) cần thêm header X-Client-Secret.

Method Đường dẫn Quyền Dùng để
GET /api/v1/billing/plans Public Đọc 5 gói: code, price_month, price_year (trả năm = 10 tháng), tx_limit, overage_per_tx, features
GET /api/v1/billing/usage Bearer Mức dùng tháng hiện tại: plan_code, tx_used, tx_limit, overage_tx, overage_amount, plan_expires_at
GET /api/v1/billing/invoices Bearer Danh sách hoá đơn, lọc ?status=, phân trang ?page=&limit=, trả { data, total }
POST /api/v1/billing/invoices Bearer + secret Tạo hoá đơn nâng gói, trả 201
GET /api/v1/billing/invoices/{id} Bearer Chi tiết một hoá đơn, dùng để poll trạng thái
POST /api/v1/billing/invoices/{id}/cancel Bearer + secret Huỷ hoá đơn còn pending

Nâng gói bằng API, từng bước

  1. Tạo hoá đơn:
curl -X POST https://api.monapay.vn/api/v1/billing/invoices \
  -H "Authorization: Bearer $TOKEN" -H "X-Client-Secret: $SECRET" \
  -H "Content-Type: application/json" \
  -d '{"plan_code": "startup", "cycle": "month"}'

plan_code nhận startup, business, enterprise, scale; cycle nhận month hoặc year (năm chỉ tính 10 tháng tiền).

  1. Response 201 trả hoá đơn status: "pending" với mã chuyển khoản dạng MPAY + 6 số, hạn thanh toán 48 giờ, kèm khối payment: link ảnh VietQR và payload EMVCo để tự dựng QR. Cho khách quét QR hoặc chuyển khoản đúng số tiền, nội dung ghi đúng mã MPAY vào tài khoản ghi trên hoá đơn.

  2. Tiền vào là hệ tự khớp trong vài giây (đọc thông báo giao dịch từ ngân hàng, so mã + số tiền). Poll GET /api/v1/billing/invoices/{id} tới khi status thành paid; gói kích hoạt ngay lúc đó. Cùng gói còn hạn thì cộng dồn từ ngày hết hạn cũ, đổi gói khác thì tính lại từ thời điểm thanh toán.

  3. Tạo nhầm thì POST /api/v1/billing/invoices/{id}/cancel khi còn pending; quá 48 giờ chưa trả, hoá đơn tự chuyển expired, không phát sinh gì.

Không muốn đụng API: dashboard my.monapay.vn → Gói và thanh toán, cùng một luồng, có sẵn panel QR tự đổi trạng thái khi nhận tiền.

Câu hỏi thường gặp

Đang gói Miễn phí, chưa từng vượt, có bị trừ gì không? Không. Không phí mở tài khoản, không phí duy trì, không thu phần trăm trên số tiền. Chỉ khi bán vượt 500 giao dịch/tháng mới cần cân nhắc nâng gói.

Hoá đơn phụ trội tính lúc nào? Đầu tháng kế tiếp, hệ chốt kỳ tháng trước: gói trả phí có phần vượt sẽ nhận một hoá đơn phụ trội (mỗi kỳ đúng một hoá đơn). Gói trả phí quá hạn 7 ngày chưa gia hạn thì hạ về Miễn phí, dữ liệu giữ nguyên.

Webhook có đổi gì khi nâng gói không? Không. Payload, chữ ký HMAC, cấu hình webhook giữ nguyên; gói chỉ quyết định hạn mức số giao dịch được fan-out mỗi tháng.