Thông báo tiền vào qua email: cấu hình, xác minh người nhận, log
Video hướng dẫn
Xem transcript video (8 phần)
Luồng email đầy đủ
Bạn muốn tiền vào, webhook lỗi hoặc VA mới được tạo đều báo vào hộp thư, nhưng cấu hình tạo xong lại chưa hoạt động vì còn bước xác minh. Trong vài phút, mình sẽ đi trọn luồng trên dashboard: tạo cấu hình, thêm người nhận, nhập mã sáu số, gửi thử, xem log và xử lý địa chỉ bị chặn. Mỗi cấu hình nhận tối đa mười địa chỉ và chỉ tự bật sau khi tất cả người nhận đã xác minh thành công.
Tạo cấu hình email
Vào my.monapay.vn, mở Email rồi bấm Tạo cấu hình. Đặt tên như Kế toán, thêm các địa chỉ nhận, chọn sự kiện và chọn virtual_account_id nếu chỉ muốn theo dõi một VA. Ba sự kiện là TRANSACTION_IN cho tiền vào, WEBHOOK_FAILED cho webhook lỗi và VA_CREATED cho VA mới. Một tài khoản có thể có nhiều cấu hình; địa chỉ đã xác minh một lần được dùng lại trong cấu hình khác của cùng tài khoản.
Xác minh người nhận
Sau khi tạo, mỗi địa chỉ chưa xác minh nhận một mã sáu số. Người nhận mở hộp thư, lấy đúng mã và nhập vào dashboard. Mã hết hạn sau mười lăm phút. Nhập sai tối đa năm lần thì phải dùng chức năng gửi lại mã. Nếu còn bất kỳ địa chỉ nào trong pending_verification, trạng thái is_active vẫn là false; sau mã cuối cùng hợp lệ, cấu hình tự chuyển sang hoạt động.
Gửi thử và xem log
Khi cấu hình đã bật, bấm Gửi thử rồi mở Log email. Mail mẫu giao dịch hiển thị số tiền, VA hoặc tài khoản, nội dung chuyển khoản, thời gian, mã giao dịch, ngân hàng và nút Xem trên dashboard. Log lưu người nhận, chủ đề, message_id, trạng thái, mã SMTP, thời gian, nhãn lỗi và số lần thử. Hệ thống không lưu nội dung email, nên log dùng để kiểm đường gửi chứ không đọc lại nội dung thư.
Cấu hình bằng API
Đội kỹ thuật có thể làm cùng quy trình bằng API. POST /api/v1/email-configs nhận name, recipients, events và virtual_account_id nếu cần. Endpoint /verify nhận email và code; /test gửi mail mẫu; GET /api/v1/email-logs đọc log phân trang. Mọi request cần Bearer, lệnh POST, PUT hoặc DELETE thêm X-Client-Secret. POST hỗ trợ Idempotency-Key trong hai mươi bốn giờ để tránh tạo trùng.
Xử lý suppression
Các trạng thái log gồm sent, failed, suppressed và skipped. Bounce cứng đưa địa chỉ vào suppression với lý do hard_bounce; khiếu nại hoặc tắt tay cũng có thể chặn. Sau khi sửa địa chỉ hoặc nguyên nhân, xem danh sách bằng GET /email-suppressions, rồi gọi DELETE theo email để gỡ. Bounce tạm thời chỉ được ghi log. Đừng gỡ chặn trước khi sửa nguyên nhân, vì lần gửi tiếp theo vẫn có thể thất bại.
Retry và lỗi thường gặp
Nếu không nhận mã, kiểm tra thư rác và địa chỉ đã nhập, rồi gửi lại trong giới hạn. Nếu test trả skipped, xem người nhận đã xác minh chưa. Nếu log là SUPPRESSED, sửa nguyên nhân rồi mới gỡ chặn. Lỗi SMTP tạm thời, timeout hoặc mất kết nối được thử lại tối đa ba lần sau một giây, năm giây và hai mươi lăm giây; SMTP loại năm thất bại ngay.
Chỉ xong khi log sent
Luồng đúng là tạo cấu hình, xác minh từng người nhận, chờ trạng thái tự bật, gửi thử rồi chỉ kết luận khi log là sent. Email có thể chạy cùng webhook, Telegram và Zalo; mỗi kênh phục vụ một nhóm người khác nhau. Xem đầy đủ endpoint, giới hạn và bảo mật tại monapay.vn/docs/email. Đăng ký tại my.monapay.vn. Cần hỗ trợ, bạn gọi tổng đài một chín không không, sáu ba sáu, sáu bốn tám.
MONA Pay gửi email ngay khi tài khoản hoặc VA của bạn có tiền vào, webhook gửi lỗi hoặc VA mới được tạo. Mỗi cấu hình nhận tối đa 10 địa chỉ và chỉ hoạt động sau khi mọi người nhận nhập đúng mã xác minh 6 số. Bạn có thể tạo qua API, MCP hoặc dashboard, gửi thử rồi đọc log chỉ chứa metadata, không lưu nội dung mail.
Chọn cách cấu hình
Nên đi theo đúng thứ tự dưới đây nếu bạn đang tích hợp bằng code hoặc AI agent.
- API: đầy đủ nhất cho hệ thống cần tự tạo cấu hình, xác minh, gửi thử và đọc log.
- MCP cho Claude Code hoặc Codex: agent gọi tool MONA Pay, dừng lại hỏi mã 6 số trong hộp thư rồi làm tiếp.
- Dashboard: vào
my.monapay.vnkhi cần thao tác thủ công, không viết code.
Một client tạo được nhiều cấu hình. Mỗi cấu hình có tên, tối đa 10 người nhận, danh sách sự kiện và có thể giới hạn vào một virtual_account_id. Địa chỉ đã xác minh một lần được dùng lại cho cấu hình khác của cùng client.
1. Cấu hình qua API
Base URL là https://api.monapay.vn/api/v1. Mọi request cần Authorization: Bearer <token>. Request ghi bằng POST, PUT hoặc DELETE cần thêm X-Client-Secret; POST hỗ trợ Idempotency-Key trong 24 giờ.
| Method | Endpoint | Body hoặc query | Kết quả |
|---|---|---|---|
| GET | /api/v1/email-configs |
Không có | Danh sách EmailConfig |
| POST | /api/v1/email-configs |
{name, recipients, events?, virtual_account_id?} |
Tạo cấu hình, tự gửi mã cho địa chỉ chưa xác minh |
| GET | /api/v1/email-configs/{id} |
Không có | Một EmailConfig |
| PUT | /api/v1/email-configs/{id} |
{name?, recipients?, events?, virtual_account_id?, is_active?} |
Sửa cấu hình; bật khi còn người nhận chưa xác minh trả 422 |
| DELETE | /api/v1/email-configs/{id} |
Không có | Xoá cấu hình |
| POST | /api/v1/email-configs/{id}/verify |
{email, code} |
Xác minh địa chỉ; tự bật khi tất cả đã xác minh |
| POST | /api/v1/email-configs/{id}/resend-verification |
{email} |
Gửi lại mã xác minh |
| POST | /api/v1/email-configs/{id}/test |
{} |
Gửi mail mẫu tới người nhận đã xác minh |
| GET | /api/v1/email-logs |
config_id?, status?, event_type?, from_date?, to_date?, page?, limit? |
Log phân trang |
| GET | /api/v1/email-logs/stats |
from_date?, to_date? |
Tổng số, tỷ lệ thành công, p95 và nhãn lỗi |
| GET | /api/v1/email-suppressions |
Không có | Danh sách địa chỉ đang bị chặn |
| DELETE | /api/v1/email-suppressions/{email} |
Không có | Gỡ chặn địa chỉ sau khi đã sửa nguyên nhân |
cURL: tạo → xác minh → gửi thử → đọc log
Mã xác minh hết hạn sau 15 phút. Nhập sai tối đa 5 lần thì phải gọi POST /email-configs/{id}/resend-verification để lấy mã mới.
Node.js
Python
2. Cấu hình qua MCP cho Claude Code hoặc Codex
Luồng zero-dashboard dành cho agent:
- Gọi
monapay_create_email_configvớiname,recipients,eventsvàvirtual_account_idnếu cần. - Đọc
pending_verification, báo người dùng mở từng hộp thư và hỏi mã 6 số. Agent phải dừng chờ, không tự đoán. - Gọi
monapay_verify_emailcho từng địa chỉ và mã tương ứng. - Gọi
monapay_test_emailsau khi cấu hình tự chuyển sangis_active: true. - Gọi
monapay_email_logs, kiểm tra log cóstatus: "sent".
Ví dụ prompt giao cho agent:
3. Cấu hình trong dashboard
Vào my.monapay.vn → Email → Tạo cấu hình, đặt tên, thêm tối đa 10 địa chỉ, chọn sự kiện và VA nếu cần. Mỗi người nhận mở mail lấy mã 6 số rồi nhập vào dashboard. Khi mọi địa chỉ đã xác minh, MONA Pay tự bật cấu hình; bấm Gửi thử và mở mục Log email để kiểm tra.
Sự kiện có thể nhận
| Sự kiện | Khi nào gửi | Ghi chú |
|---|---|---|
TRANSACTION_IN |
Có tiền vào tài khoản hoặc VA phù hợp | Bắt buộc có, là sự kiện mặc định |
WEBHOOK_FAILED |
Một lần gửi webhook thất bại sau retry | Giúp đội vận hành xử lý nhanh |
VA_CREATED |
Một VA mới được tạo xong | Có thể giới hạn cấu hình theo một VA |
Mẫu email tiền vào
Chủ đề mẫu:
Nội dung hiển thị số tiền, VA hoặc số tài khoản, nội dung chuyển khoản, thời gian, mã giao dịch, ngân hàng và nút Xem trên dashboard. Cuối mail ghi rõ mail được gửi tự động từ MONA Pay, The MONA Group với 14.000+ dự án, cùng nơi tắt hoặc đổi người nhận.
Log, suppression và bounce
GET /email-logs trả người nhận, chủ đề, message_id, trạng thái, mã SMTP, thời gian, nhãn lỗi và số lần thử. MONA Pay không lưu nội dung email. Trạng thái gồm sent, failed, suppressed, skipped; nhãn lỗi gồm OK, SMTP_4XX, SMTP_5XX, TIMEOUT, CONNECTION, SUPPRESSED, RATE_LIMITED, TEMPLATE, UNVERIFIED.
Bounce cứng với mã 5.x.x đưa địa chỉ vào suppression với lý do hard_bounce; khiếu nại hoặc thao tác tắt tay cũng có thể chặn địa chỉ. MONA Pay ngừng gửi và ghi log SUPPRESSED. Sau khi sửa địa chỉ hoặc xử lý nguyên nhân, bạn xem GET /email-suppressions, rồi gọi DELETE /email-suppressions/{email} để tự gỡ chặn. Bounce 4.x.x chỉ được ghi log để theo dõi.
Rate limit và retry
| Loại | Giới hạn |
|---|---|
TRANSACTION_IN |
600 mail mỗi client mỗi giờ; vượt mức ghi RATE_LIMITED, không gửi |
| Mail test | 20 mail mỗi client mỗi giờ |
| Mã xác minh | 5 lần mỗi địa chỉ mỗi giờ, 30 lần mỗi client mỗi giờ |
Lỗi SMTP 4xx, timeout hoặc mất kết nối được thử lại tối đa 3 lần sau 1 giây, 5 giây và 25 giây. SMTP 5xx thất bại ngay. Địa chỉ đang suppression không được gửi lại.
Bảo mật và quyền riêng tư
- Mọi người nhận phải xác minh trước khi cấu hình hoạt động; thêm địa chỉ mới có thể làm cấu hình chờ xác minh.
- MONA Pay chỉ lưu metadata của lần gửi, không log nội dung email.
- Mail gửi từ
MONA Pay <[email protected]>,Reply-To: [email protected], cóMessage-ID: <[email protected]>,X-Mona-Mail-IdvàAuto-Submitted: auto-generated. - Mail thông báo và biên lai có
List-Unsubscribe: <mailto:[email protected]?subject=unsubscribe>, <https://my.monapay.vn/email-config>cùngList-Unsubscribe-Post: List-Unsubscribe=One-Click; mail mã xác minh không cần các header này. - Secret và token phải nằm trong biến môi trường. Không ghi mã xác minh, Bearer token hay
X-Client-Secretvào log ứng dụng.
FAQ
Vì sao tạo xong mà is_active vẫn là false? Ít nhất một địa chỉ còn trong pending_verification. Nhập đúng mã 6 số cho mọi người nhận; MONA Pay tự bật cấu hình sau mã cuối cùng.
Không nhận được mã xác minh thì làm gì? Kiểm tra thư rác và địa chỉ đã nhập, sau đó gọi endpoint gửi lại. Mã có hạn 15 phút; giới hạn gửi lại là 5 lần mỗi địa chỉ mỗi giờ.
Vì sao test trả skipped hoặc log ghi SUPPRESSED? Địa chỉ chưa xác minh hoặc đang bị chặn do bounce cứng, khiếu nại hay tắt tay. Xem danh sách suppression, sửa nguyên nhân rồi mới gỡ chặn.
Email có thay webhook hoặc Telegram không? Không bắt buộc thay. Bạn có thể dùng đồng thời 3 kênh: webhook cho phần mềm, Telegram cho nhóm và email cho người cần nhận trong hộp thư.