Tự viết tool đối soát chuyển khoản hay dùng dịch vụ sẵn?

Đội ngũ chúng tôi gặp tình huống này khá thường xuyên. Khách đã chuyển khoản xong, nhưng nội dung ghi lộn xộn, có khi chỉ là “chuyển tiền” hoặc tên người nhận. Đơn hàng thì nằm chờ, nhân viên phải mở app ngân hàng ra dò từng dòng một. Shop càng đông đơn, việc này càng ngốn thời gian của cả đội.

Nói cho dễ hiểu, tự viết tool đối soát chuyển khoản nghĩa là tìm cách để máy tự so khớp: khoản tiền nào vừa về và thuộc đơn hàng nào. Làm bằng tay vẫn ổn khi chỉ có vài chục đơn. Nhưng khi đã lên vài trăm đơn mỗi tháng, chỗ này nhanh chóng thành điểm nghẽn. Bên mình từng đi qua giai đoạn đó, nên bài này kể lại hai hướng đi phổ biến hiện nay cùng những gì chúng tôi thấy trên thực tế.

Hai hướng đi và ba câu hỏi nên tự trả lời

Hướng thứ nhất là tự xây. Hệ thống đọc tin nhắn biến động số dư hoặc gọi API của ngân hàng, sau đó tự viết logic khớp mã đơn. Nghe thì gọn, nhưng phần việc phía sau lớn hơn nhiều người nghĩ lúc đầu.

Hướng thứ hai là dùng các cổng xác nhận chuyển khoản đã có sẵn. Họ đã kết nối với ngân hàng, bạn chỉ cần nhận webhook và xử lý đơn. Có thể kể đến SePay, Casso, PayOS hay MONA Pay. Khi so sánh chi phí, chúng tôi thường nhìn cả những khoản ẩn, giống cách người mua xe tính toán khi mua ô tô cuối năm có rẻ hơn không: giá niêm yết chưa phải là toàn bộ câu chuyện.

Trước khi chọn, bạn nên tự hỏi ba câu. Quy mô giao dịch hiện tại và sắp tới là bao nhiêu? Đội bạn có người biết code và có đủ thời gian bảo trì không? Bạn chịu được rủi ro đến mức nào nếu hệ thống trục trặc giữa đêm?

Tự xây thì tốn những gì?

Phần dễ thấy nhất là thời gian dev ban đầu. Tool phải nhận được tin nhắn, tách số tiền và nội dung ra khỏi chuỗi văn bản lộn xộn, khớp với mã đơn, và chặn trường hợp một giao dịch bị xử lý hai lần. Riêng phần chống trùng lặp có thể mất vài ngày để làm cho thật chắc chắn.

Tiếp theo là hạ tầng. Tool phải chạy liên tục, không thể tắt máy vào buổi tối. Log cần được lưu lại để tra cứu khi khách khiếu nại, và dữ liệu phải được sao lưu đều đặn. Những việc này nghe nhỏ, nhưng mỗi thứ đều cần có người trông coi.

Khoản dễ bị bỏ quên nhất là chi phí cơ hội. Người viết tool thường là lập trình viên chính của công ty. Mỗi lần tool lỗi, họ phải dừng việc đang làm để sửa. Một công cụ nội bộ tưởng nhỏ có thể kéo theo cả tuần mất tập trung của cả đội.

Chúng tôi từng theo dõi một shop tự làm. Bản đầu mất khoảng hai tuần. Sau sáu tháng, họ gần như dành mỗi tuần một ngày chỉ để vá các lỗi phát sinh. Con số đó không nằm trong bảng dự toán ban đầu, và chính nó làm chi phí thực tế vượt xa kỳ vọng.

Rủi ro bảo mật, đừng xem nhẹ

Thông tin truy cập ngân hàng và khóa API là thứ nhạy cảm nhất trong cả hệ thống. Lưu chúng ở đâu, ai được quyền xem, có vô tình bị đẩy lên kho mã công khai hay không, tất cả đều phải được trả lời trước khi chạy thật.

Một rủi ro khác là giả mạo. Nếu webhook hoặc tin nhắn không được kiểm tra chữ ký, kẻ xấu có thể gửi một thông báo “đã nhận tiền” giả để lấy hàng. Đây là lỗi nhỏ về mặt code, nhưng hậu quả thì không nhỏ chút nào.

Cuối cùng là trách nhiệm. Nếu dữ liệu khách hàng bị rò rỉ, người vận hành hệ thống phải giải trình. Dùng dịch vụ sẵn không xóa được trách nhiệm này, nhưng ít nhất gánh nặng kỹ thuật được chia sẻ với bên cung cấp.

Bảo trì dài hạn, phần nhiều người bỏ qua

Ngân hàng có thể đổi định dạng SMS hoặc giao diện API mà không báo trước. Khi đó tool ngừng khớp đơn, và bạn chỉ biết khi có khách phàn nàn. Kiểu lỗi này thường xảy ra vào cuối tuần, đúng lúc không ai trực.

Khi lượng giao dịch tăng, hạ tầng cũ dần không đủ sức. Bạn phải nâng cấp server, tối ưu truy vấn, và đôi khi viết lại cả một phần hệ thống. Chi phí này đến đều đặn, không phải một lần rồi thôi.

Câu hỏi khó nhất là: nếu người viết tool nghỉ việc, ai sẽ hiểu hệ thống để sửa? Tài liệu thường nghèo nàn. Đây là chỗ dễ biến hệ thống thành một “hộp đen” mà chỉ một người đọc được.

Dùng dịch vụ sẵn: có lợi, nhưng cũng có giới hạn

Lợi thế rõ nhất là triển khai nhanh. Bạn không phải tự giữ kết nối với ngân hàng, cũng không lo chuyện ngân hàng đổi định dạng tin nhắn. Phần đó thuộc về đơn vị cung cấp.

Nhưng cũng cần nói thẳng những điểm chưa tốt. Bạn phụ thuộc vào nhà cung cấp, nếu họ gặp sự cố thì đơn của bạn cũng đứng theo. Dữ liệu giao dịch nằm ở bên thứ ba. Tùy biến thường bị giới hạn trong khuôn khổ họ đưa ra.

Giữa các đơn vị như SePay, Casso hay PayOS, khác biệt thường nằm ở cách tính phí, số giao dịch miễn phí và cách xử lý khi có lỗi. Đừng chỉ tin vào lời quảng cáo. Hãy mở trang giá chính thức của từng bên và đối chiếu với lượng đơn thực tế của shop bạn.

Ví dụ về mô hình giá: MONA Pay

Để hình dung cách tính, chúng tôi lấy MONA Pay làm ví dụ. Tính đến tháng 11/2026, dịch vụ này miễn phí 500 giao dịch mỗi tháng. Các gói trả phí có mức 99.000đ, 299.000đ, 799.000đ và 1.990.000đ. Họ không thu phần trăm trên mỗi giao dịch và không giữ tiền của người bán.

Con số tự nó chưa nói lên nhiều. Điều bạn cần làm là nhân số đơn thực tế của mình với tần suất để xem gói nào hợp lý. Bạn có thể đối chiếu tại bảng giá MONA Pay so với nhu cầu thực tế. Nếu muốn hiểu thêm cách các khoản phí được tính trong chi tiêu lớn, có thể tham khảo phí trước bạ ô tô là gì. Đọc kỹ từng dòng phí luôn là thói quen đáng giữ.

Chọn theo quy mô và năng lực đội ngũ

Nếu shop bạn chỉ có vài trăm giao dịch mỗi tháng, dịch vụ sẵn thường rẻ hơn tổng chi phí khi tự làm. Cộng cả giờ dev và chi phí server, con số thường nghiêng về phía dịch vụ.

Khi đội bạn có kỹ thuật riêng và yêu cầu tùy biến cao, như logic đối soát phức tạp hay nhiều kênh thanh toán, việc tự xây có thể hợp lý hơn. Nhưng hãy xây có kiểm soát, có tài liệu rõ ràng và có người dự phòng thay thế.

Dù chọn hướng nào, hãy thử với dữ liệu nhỏ trước. Chạy song song vài tuần, so kết quả với đối soát bằng tay, rồi mới chuyển toàn bộ quy trình. Bước thử này tốn ít công nhưng cứu được rất nhiều phiền toái về sau.

Những sai lầm chúng tôi hay gặp

Sai lầm đầu tiên là chỉ so chi phí dev ban đầu và bỏ qua chi phí bảo trì. Con số lúc đầu nhìn rất rẻ, nhưng cộng dồn theo năm thì khác hẳn.

Sai lầm thứ hai là tin rằng dịch vụ sẵn không có giới hạn, rồi không đọc điều khoản. Hạn mức, phí vượt gói, quy định về dữ liệu đều nằm ở đó, và đọc kỹ từ đầu sẽ tiết kiệm rất nhiều rắc rối.

Sai lầm thứ ba là không có kế hoạch dự phòng. Nhà cung cấp hoặc ngân hàng gặp sự cố là chuyện có thể xảy ra. Hãy biết trước bạn sẽ xử lý đơn thủ công như thế nào trong thời gian đó.

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

Tự viết tool đối soát có rẻ hơn dùng dịch vụ sẵn không?

Chỉ rẻ hơn khi lượng giao dịch lớn và bạn đã có đội kỹ thuật sẵn. Với shop nhỏ, phần giờ dev và bảo trì thường làm tổng chi phí cao hơn dự kiến ban đầu.

Đọc SMS ngân hàng có an toàn không?

Tự nó không nguy hiểm, nhưng cần kiểm tra nguồn tin nhắn và chữ ký dữ liệu. Nếu bỏ qua bước này, kẻ xấu có thể giả mạo thông báo chuyển tiền.

Khi nào nên chuyển từ tự xây sang dịch vụ sẵn?

Khi bạn thấy mình dành quá nhiều thời gian để vá lỗi, hoặc khi người hiểu hệ thống sắp nghỉ việc. Lúc đó chi phí ẩn thường đã vượt chi phí trả cho dịch vụ.

Các mức giá trên có áp dụng cho mọi thời điểm không?

Không. Số liệu chúng tôi nêu là tính đến tháng 11/2026. Trước khi quyết định, hãy kiểm tra lại trang giá chính thức, vì chính sách có thể thay đổi.

Nguyễn Đức Minh

Phóng viên mảng ô tô 9 năm, lái thử hơn 150 mẫu xe tại Việt Nam.