SaaS và hóa đơn

Lập hóa đơn crypto cho SaaS B2B

Cách để khách hàng B2B thanh toán hóa đơn SaaS bằng crypto: khi nào tạo thanh toán, cách đối chiếu, xử lý thanh toán thiếu, gia hạn và hoàn tiền.

Một số khách hàng B2B muốn thanh toán hóa đơn của bạn bằng crypto: nhóm quốc tế, công ty gặp trở ngại ngân hàng, công ty gốc crypto. Phục vụ họ không khó, nhưng hóa đơn hoạt động khác với bước thanh toán của cửa hàng, và vài lựa chọn thiết kế sẽ quyết định liệu bộ phận tài chính của bạn thích hay ghét nó. Hướng dẫn này nói về những quyết định đó.

Vì sao công ty SaaS cung cấp hóa đơn crypto

Crypto hiếm khi là cách chính để công ty SaaS thu tiền, và cũng không cần như vậy. Nó hữu ích như một lựa chọn bổ sung khi:

  • khách ở các nước mà thẻ hoặc chuyển khoản ngân hàng chậm, đắt hoặc không đáng tin;
  • người mua là công ty gốc crypto đã trả nhà cung cấp bằng stablecoin;
  • bạn muốn các khoản thanh toán không phụ thuộc giờ ngân hàng và không thể bị chargeback.

Hãy giữ thẻ và chuyển khoản ngân hàng cho những khách còn lại. Crypto chỉ là thêm một dòng trong danh sách «cách thanh toán» trên hóa đơn của bạn.

Hóa đơn khác bước thanh toán thế nào

Bước thanh toán của cửa hàng tạo khoản thanh toán vào lúc mua. Hóa đơn được lập trước và thanh toán sau vài ngày hoặc vài tuần, thường bởi bộ phận tài chính theo quy trình nội bộ. Điều đó thay đổi một vài thứ:

  • Số tiền được cố định bằng đô la, không phải bằng coin. Bạn định giá hóa đơn bằng đô la; người trả gửi giá trị tương đương bằng tài sản họ dùng.
  • Không thể giữ nguyên tỷ giá hàng tuần. Ở Qvard tỷ giá được cố định một giờ kể từ lúc tạo thanh toán. Một tỷ giá đặt lúc lập hóa đơn sẽ lỗi thời từ lâu khi hóa đơn được thanh toán.
  • Cần có mã tham chiếu. Bộ phận tài chính cần số hóa đơn trên mỗi khoản thanh toán để đối chiếu.
  • Người trả đi theo quy trình phê duyệt. Họ có thể trả theo từng phần hoặc trễ, nên bạn cần quy tắc rõ ràng cho thanh toán một phần.

Tạo thanh toán khi khách sẵn sàng trả

Quyết định thiết kế then chốt: đừng tạo thanh toán crypto khi lập hóa đơn. Hãy tạo khi khách chọn thanh toán.

Đặt nút «Thanh toán bằng crypto» trên trang hóa đơn. Khi khách nhấn, backend của bạn tạo thanh toán với số hóa đơn làm id và số tiền phải trả bằng đô la, rồi chuyển khách đến trang thanh toán. Tỷ giá sau đó được cố định trong một giờ tiếp theo, đúng khoảng thời gian khách cần để gửi giao dịch.

Dùng số hóa đơn làm id có hai lợi ích. Nếu khách nhấn hai lần hoặc yêu cầu của bạn được thử lại, Qvard trả về khoản thanh toán đã có cho cùng id và phương thức thanh toán thay vì tạo bản trùng. Và webhook báo kết quả mang cùng id, nên bạn tìm thấy hóa đơn mà không cần bảng đối chiếu.

Node.jspay-invoice.js
// Runs when the customer clicks "Pay with crypto" on invoice INV-2026-0142,
// not when the invoice is issued: the exchange rate is fixed for one hour.
async function payInvoiceWithCrypto(invoice) {
  const res = await fetch('https://api.qvard.com/api/v1/payment', {
    method: 'POST',
    headers: { Authorization: 'Bearer ' + process.env.QVARD_API_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({
      id: invoice.number,        // "INV-2026-0142": clicking twice returns the same payment
      price: invoice.amountUsd   // amount due, in US dollars
    })
  });
  if (!res.ok) throw new Error('Qvard ' + res.status);
  return (await res.json()).redirectUrl;   // open this payment page for the customer
}

Đối chiếu bằng webhook

Khi thanh toán hoàn tất, Qvard gửi webhook đến máy chủ của bạn với id (số hóa đơn của bạn) và trạng thái. Trình xử lý của bạn đánh dấu hóa đơn đã thanh toán và ghi nhận giao dịch. Ba thói quen giúp việc này đáng tin cậy:

  • Xác minh chữ ký trong header X-Qvard-Signature đi kèm webhook (HMAC-SHA256 bằng khóa bí mật của bạn) và từ chối khi không khớp.
  • Trả lời đúng HTTP 200; nếu không, thông báo sẽ được thử lại, tối đa năm lần trong khoảng sáu phút.
  • Hãy làm trình xử lý idempotent, để sự kiện lặp lại không ghi nhận thanh toán hai lần.

Webhook báo về thanh toán, không phải hóa đơn, nên hãy lưu cạnh hóa đơn id thanh toán, ngày và trạng thái. Như vậy kế toán của bạn có một dòng cho mỗi khoản thanh toán để đối chiếu với sao kê họ mong đợi. Trình xử lý đầy đủ nằm ở cách nhận thanh toán crypto trên website.

Thanh toán thiếu và phí sàn giao dịch

Yêu cầu hỗ trợ phổ biến nhất khi lập hóa đơn crypto là thanh toán thiếu. Người trả gửi ít hơn một chút so với cần thiết, và hóa đơn không được tất toán. Các nguyên nhân thường gặp:

  • khách trả từ tài khoản sàn giao dịch, và sàn trừ phí rút tiền khỏi số tiền đã gửi;
  • khách làm tròn số tiền;
  • khách gửi giao dịch thành hai phần.

Thanh toán thiếu xuất hiện với trạng thái partial. Hãy xác định chính sách từ trước và ghi trên hóa đơn: hoặc hóa đơn mở cho đến khi phần chênh lệch về, hoặc bạn chấp nhận thanh toán trong một mức dung sai nhỏ. Hãy để trang hóa đơn hiển thị số đã nhận và số còn phải trả, để khách có thể bù thêm mà không cần liên hệ hỗ trợ.

Một mẹo có thể in trên hóa đơn: nếu trả từ sàn giao dịch, hãy cộng thêm phí rút vào số tiền.

Gia hạn và đăng ký

Với thẻ, gói đăng ký tự động trừ tiền khách. Thanh toán crypto thì khác: khách tự gửi giao dịch mỗi lần, nên không thể «kéo» tiền gia hạn từ ví của họ.

Cách làm thực tế là lập hóa đơn gia hạn như bình thường và gửi cho khách một liên kết để thanh toán, với cùng nút bấm và cùng cách tạo thanh toán như hóa đơn đầu tiên. Qvard tạo một khoản thanh toán cho mỗi yêu cầu bạn gửi; việc thu định kỳ do hệ thống billing của bạn đảm nhận, tạo một thanh toán mới cho mỗi kỳ. Hãy nhắc khách trước hạn và, nếu bạn giảm giá cho gói năm trả bằng crypto, hãy hiển thị điều đó trên hóa đơn.

Hoàn tiền và giấy báo có

Giao dịch crypto đã xác nhận là kết quả cuối cùng, nên hoàn tiền là một giao dịch mới từ bạn đến khách. Hãy thống nhất địa chỉ với khách bằng văn bản, vì giao dịch đến địa chỉ sai không thể thu hồi. API Qvard có lệnh gọi payout để gửi tiền từ số dư của bạn đến một địa chỉ, với id của riêng bạn để việc thử lại không gửi tiền hai lần; bạn cũng có thể rút thủ công từ trang quản trị.

Ghi nhận hoàn tiền đối với hóa đơn gốc và lập giấy báo có như thường lệ, để sổ sách của bạn kể cùng một câu chuyện với blockchain.

Danh sách cho kế toán

Hãy hỏi kế toán về những điểm phụ thuộc vào quốc gia của bạn, và chuẩn bị sẵn dữ liệu họ sẽ cần:

  • số hóa đơn, id thanh toán, ngày, số tiền bằng đô la và tài sản cùng mạng đã dùng;
  • cách bạn ghi nhận khoản thu và mọi chuyển đổi sang fiat;
  • cách xử lý phí mạng do khách trả;
  • cách thức và thời điểm bạn rút về ví.

Đây là thông tin chung, không phải tư vấn thuế hay pháp lý.

Qvard nằm ở đâu

Qvard là cổng thanh toán crypto custodial: bạn tạo thanh toán qua API, khách trả trên trang thanh toán được lưu trữ bằng USDT hoặc USDC trên các mạng chính (hoặc bằng BTC hay LTC), và trạng thái cuối cùng đến máy chủ của bạn qua webhook. Tiền được ghi có vào số dư merchant và bạn rút về ví. Riêng với nhóm SaaS, xem thanh toán crypto cho SaaS; phần nền tảng ở cổng thanh toán crypto là gì.

FAQ

Tôi có thể lập hóa đơn bằng crypto thay vì đô la không?

Bạn lập hóa đơn bằng đô la Mỹ và người trả gửi giá trị tương đương bằng tài sản họ chọn. Cách này giữ giá ổn định và sổ sách trong một đồng tiền.

Tỷ giá có hiệu lực trong bao lâu?

Với Qvard, tỷ giá được cố định một giờ kể từ lúc tạo thanh toán. Hãy tạo thanh toán khi khách sẵn sàng trả, không phải khi bạn lập hóa đơn.

Điều gì xảy ra nếu khách trả ít hơn hóa đơn?

Khoản thanh toán xuất hiện với trạng thái partial. Bạn có thể để hóa đơn mở cho đến khi phần chênh lệch về hoặc chấp nhận trong mức dung sai do bạn định ra; hãy nêu quy tắc trên hóa đơn.

Tôi có thể tự động thu tiền đăng ký không?

Không. Thanh toán crypto do khách gửi, nên không thể tự động trừ từ ví. Hệ thống billing của bạn lập từng hóa đơn gia hạn và gửi cho khách liên kết thanh toán.

Bài viết liên quan

Bài viết liên quan