Khóa API: cách dùng trên KetoanX

Cập nhật · Biên soạn: KetoanX

Khóa API cho một phần mềm khác của công ty, như phần mềm bán hàng hay trang thương mại điện tử, tự gửi phiếu thu, phiếu chi, báo có, báo nợ và chứng từ nghiệp vụ khác vào sổ KetoanX. Chủ sở hữu hoặc quản trị viên tạo khóa, đưa cho phần mềm kia và thu hồi khi không cần. Khóa mở cửa vào sổ kế toán, nên hãy đọc phần giữ khóa an toàn trước khi tạo.

Mở ở
Hệ thống → Khóa API
Quyền cần
Chủ sở hữu hoặc quản trị viên, có quyền thêm (tạo) và xóa (thu hồi) ở Hệ thống
Dùng khi
Cho phần mềm bán hàng, trang thương mại điện tử tự gửi chứng từ thu, chi vào sổ
Kết quả
Khóa dạng kx_..., chỉ hiện một lần; chứng từ gửi qua khóa vào sổ như người tạo khóa lập

01

Chức năng này dùng để làm gì

Trang làm ba việc: tạo khóa (mỗi khóa một tên, để biết khóa nào của phần mềm nào), xem danh sách khóa kèm lần dùng gần nhất, và thu hồi khóa. Phần "Cách gọi" ở cuối trang cho mẫu lệnh để lập trình viên của phần mềm kia gửi chứng từ.

Màn Khóa API nhập chứng từ: khung Tạo khóa mới, khung Các khóa và khung Cách gọi
Màn Khóa API nhập chứng từ: tạo khóa, danh sách các khóa và phần Cách gọi cho lập trình viên.

Chứng từ gửi qua khóa đi vào đúng bộ máy kiểm của nhập từ Excel: tài khoản phải là tài khoản chi tiết đang dùng, mã đối tượng phải có trong danh mục, ngày không được nằm trong kỳ đã khóa sổ. Chứng từ vào sổ ngay hoặc chỉ được cất, tùy bạn đặt trong nội dung gửi. Chứng từ do khóa tạo mang tên người tạo khóa là người lập.

Trong quy trình, khóa đứng sau khi công ty đã có hệ thống tài khoản và danh mục khách hàng, nhà cung cấp (mã đối tượng) và trước khi phần mềm bán hàng bắt đầu gửi. Nếu chỉ cần nạp số liệu một lần, dùng nhập từ Excel thay vì khóa API.

02

Trước khi bắt đầu

Chỉ chủ sở hữu hoặc quản trị viên có quyền thêm (để tạo) hoặc xóa (để thu hồi) ở phân hệ Hệ thống mới tạo và thu hồi được khóa. Người khác mở trang thấy dòng Chỉ chủ sở hữu hoặc quản trị viên được tạo, thu hồi khóa API. và vẫn xem được danh sách khóa.

Hãy chuẩn bị ba thứ. Một là hệ thống tài khoản với các tài khoản chi tiết mà phần mềm kia sẽ dùng (không dùng được tài khoản tổng hợp). Hai là mã đối tượng trong khách hàng, nhà cung cấp, vì phần mềm kia gửi mã, không gửi tên. Ba là một người lập trình hoặc nhà cung cấp phần mềm bán hàng đọc được tài liệu nối API.

Quan trọng hơn cả, khóa mang quyền của người tạo nó. Hãy để chủ sở hữu hoặc một quản trị viên ổn định tạo khóa; nếu người tạo rời công ty hoặc bị hạ quyền, mọi khóa họ tạo ngừng hoạt động.

03

Mở màn hình

Vào Hệ thống, Khóa API. Tiêu đề trang là "Khóa API nhập chứng từ". Từ trên xuống có khung Tạo khóa mới (chỉ hiện với chủ sở hữu, quản trị viên), khung Các khóa và khung Cách gọi. Bảng Các khóa có các cột Tên, Khóa, Người tạo, Ngày tạo, Dùng gần nhất, Trạng thái và cột nút. Cột Khóa chỉ hiện 8 ký tự đầu của khóa kèm dấu ba chấm, để nhận ra khóa mà không lộ khóa. Cột trạng thái là Đang hiệu lực hoặc Đã thu hồi. Khóa chưa từng dùng hiện "Chưa dùng".

Menu bên trái mở nhóm Hệ thống, mục Khóa API được viền vàng
Menu bên trái: Hệ thống, rồi Khóa API.

04

Các ô cần nhập

Trang chỉ có một ô nhập. Phần còn lại là các trường trong nội dung gửi chứng từ.

Khung Tạo khóa mới với ô Tên khóa và nút Tạo khóa
Trang chỉ có một ô nhập: Tên khóa, để biết khóa nào của phần mềm nào.
Ô hoặc trườngÝ nghĩa và cách nhậpBắt buộcVí dụ
Tên khóaTên để nhận ra phần mềm dùng khóa, từ 2 đến 100 ký tựCóPhần mềm bán hàng cửa hàng 1
typeLoại chứng từ: PT (phiếu thu), PC (phiếu chi), BC (báo có), BN (báo nợ), NK (nghiệp vụ khác)CóPT
dateNgày hạch toán, dạng YYYY-MM-DDCó2026-10-16
descriptionDiễn giải, tối đa 500 ký tựKhôngThu tiền đơn 1024
externalIdMã chứng từ bên phần mềm kia, 1 đến 100 ký tự. Gửi lại cùng mã thì không ghi lần haiKhông (nên có)POS-1024
postedtrue (mặc định) thì ghi sổ ngay; false thì chỉ cấtKhôngtrue
linesMảng từ 1 đến 200 dòng. Mỗi dòng có debitAccount, creditAccount, amount (VND, lớn hơn 0), và tùy chọn debitParty, creditParty (mã đối tượng), description (tối đa 300 ký tự)CóNợ 1111, Có 131, 1650000

Mỗi lần gửi chỉ một chứng từ, nội dung tối đa 64 KB. Mỗi khóa gọi tối đa 120 lần mỗi phút.

05

Làm từng bước: nối phần mềm bán hàng cửa hàng 1 gửi phiếu thu

Ví dụ: Công ty TNHH Thương mại Minh Phát có phần mềm bán hàng ở cửa hàng 1. Ngày 16/10/2026, kế toán trưởng (chủ sở hữu) muốn mỗi lần cửa hàng thu tiền của khách nợ thì phiếu thu tự vào sổ.

Ô Tên khóa đã gõ Phần mềm bán hàng cửa hàng 1 và nút Tạo khóa được viền vàng
Gõ Tên khóa Phần mềm bán hàng cửa hàng 1 rồi bấm Tạo khóa.
  1. Vào Hệ thống, Khóa API. Ở khung Tạo khóa mới, gõ Tên khóa: Phần mềm bán hàng cửa hàng 1.

  2. Bấm Tạo khóa. Một khung nền cảnh báo hiện ra: "Đã tạo khóa. Chép khóa ngay: khóa chỉ hiện một lần." cùng khóa đầy đủ, bắt đầu bằng kx_.

  3. Bấm Chép (đổi thành Đã chép). Dán khóa vào chỗ cất mật khẩu của công ty, rồi đưa cho người cấu hình phần mềm bán hàng qua kênh riêng. Rời trang là không xem lại được: máy chủ chỉ giữ mã băm của khóa.

  4. Phần mềm bán hàng gửi yêu cầu POST tới /api/v1/vouchers với tiêu đề Authorization: Bearer <khóa> và nội dung JSON, ví dụ một phiếu thu: type PT, date 2026-10-16, description "Thu tiền đơn 1024", externalId POS-1024, một dòng debitAccount 1111, creditAccount 131, amount 1650000, creditParty KH001. Câu lệnh mẫu đầy đủ nằm ở khung Cách gọi.

  5. Thành công trả mã 201 kèm id và no (số chứng từ do KetoanX cấp theo quy tắc đánh số). Phần mềm bán hàng nên lưu no cạnh đơn 1024.

  6. Gửi lại đúng yêu cầu đó (do mạng lỗi chẳng hạn) trả mã 200 kèm "duplicate": true và vẫn no cũ, không tạo phiếu thứ hai.

  7. Quay lại Khóa API: cột Dùng gần nhất của khóa có thời điểm vừa gọi. Mở chứng từ ở Quỹ, ngân hàng, Thu, chi, chứng từ khác để thấy phiếu thu mới, người lập là người tạo khóa, và đã ghi sổ vì posted mặc định là true.

06

Giữ khóa an toàn

Khóa API là chìa khóa của sổ kế toán, không phải một dòng cấu hình vô hại. Ai có khóa gửi được chứng từ vào sổ như người tạo khóa, vào đủ năm loại chứng từ, mọi tài khoản chi tiết hợp lệ, và mặc định ghi sổ ngay. Làm theo các nguyên tắc sau.

  1. Không chia sẻ khóa cho người không cần dùng, không gửi qua chat nhóm, email hay tin nhắn công khai. Chỉ đưa cho người cấu hình phần mềm kia, qua kênh riêng hoặc chỗ cất mật khẩu của công ty.

  2. Không dán khóa vào mã chạy ở trình duyệt hoặc ứng dụng điện thoại của khách (ai mở công cụ nhà phát triển cũng thấy), không đưa vào kho mã nguồn như Git. Khóa chỉ nên nằm trong cấu hình phía máy chủ của phần mềm bán hàng.

  3. Mỗi phần mềm một khóa, đặt tên rõ để biết khóa nào đang dùng ở đâu.

  4. Thu hồi ngay khi nghi khóa bị lộ, khi người giữ khóa nghỉ việc, hoặc khi ngừng dùng phần mềm đó. Thu hồi có hiệu lực tức thì.

  5. Xem cột Dùng gần nhất định kỳ. Khóa không còn dùng mà vẫn hiệu lực là khóa nên thu hồi.

  6. Gửi externalId ở mỗi chứng từ để gửi lại không bị ghi hai lần, và đối chiếu số chứng từ cuối tháng giữa hai phần mềm.

07

Các trường hợp khác

Phần này gồm các tình huống cần chú ý khi dùng khóa.

Khi muốn chứng từ chỉ được cất để kế toán duyệt

Gửi posted là false. Chứng từ vào danh sách ở trạng thái chưa ghi sổ; kế toán kiểm rồi ghi sổ bằng tay. Nên dùng cho phiếu chi hoặc phiếu của phần mềm chưa tin cậy.

Khi thu hồi khóa

Bấm Thu hồi ở dòng khóa, xác nhận câu hỏi phần mềm đang dùng khóa này sẽ không gửi được chứng từ nữa. Khóa hết hiệu lực ngay, mọi lần gọi sau trả mã 401. Không khôi phục được; cần thì tạo khóa mới. Thu hồi khóa không xóa các chứng từ khóa đã tạo.

Khi nghi khóa bị lộ hoặc người quản lý khóa nghỉ việc

Thu hồi ngay, tạo khóa mới với tên mới, đổi trong phần mềm kia, rồi mở Hệ thống, Nhật ký thao tác và tìm các dòng ghi "qua API, khóa" kèm tên và 8 ký tự đầu của khóa để xem khóa đã tạo chứng từ nào trong khoảng nghi ngờ. Chứng từ lạ thì xử lý như bên dưới.

Khi chứng từ gửi qua API sai

API chỉ tạo chứng từ, không sửa và không xóa. Chứng từ đã ghi sổ không tẩy xóa dấu vết; sửa bằng chứng từ điều chỉnh theo mở sổ, ghi sổ, khóa sổ và sửa sổ. Nếu công ty bật công tắc Chứng từ đã ghi sổ chỉ sửa bằng bút toán điều chỉnh ở cài đặt cảnh báo (bật sẵn cho công ty chưa từng chọn), chứng từ do khóa tạo cũng bị chặn sửa, xóa như chứng từ người dùng lập.

Khi phần mềm kia gửi phiếu chi tiền mặt

Hai điều phần mềm không làm hộ bạn. Thứ nhất, API không chạy các cảnh báo của form lập chứng từ như chi quá tồn quỹ hay vượt dự toán: nó chỉ kiểm tài khoản, đối tượng, ngày và khóa sổ. Thứ hai, nó cũng không cảnh báo khoản trả tiền mặt từ 5 triệu đồng. Từ 01/7/2025, hàng hóa, dịch vụ mua vào từ 5 triệu đồng (đã gồm thuế GTGT) phải có chứng từ thanh toán không dùng tiền mặt thì thuế đầu vào mới được khấu trừ; xem thanh toán không dùng tiền mặt. Nếu phần mềm bán hàng gửi phiếu chi tiền mặt cho nhà cung cấp, hãy rà bằng trang Kiểm tra sổ sách cuối kỳ.

08

Phần mềm tự ghi gì

Một lời gọi thành công tạo một chứng từ với các dòng hạch toán đúng như bạn gửi: Nợ 1111, Có 131 là 1.650.000 đồng trong ví dụ. Chứng từ lấy số theo quy tắc đánh số của loại chứng từ và ngày; ngày hạch toán bằng ngày chứng từ. Khi posted là true, sổ quỹ, công nợ phải thu của KH001 và các báo cáo cập nhật ngay. Phần mềm cũng ghi mã ngoài externalId để chống ghi trùng, cập nhật "Dùng gần nhất" của khóa, và ghi một dòng ở Hệ thống, Nhật ký thao tác: "tạo chứng từ ... qua API, khóa ...". Tạo và thu hồi khóa cũng có dòng nhật ký riêng.

09

Lỗi hay gặp và cách xử lý

Lỗi trả về dạng JSON có error.code và error.message. Các mã thường gặp:

Thiếu khóa API: gửi tiêu đề Authorization: Bearer <khóa> (mã 401, missing_key) nghĩa là chưa gửi khóa hoặc khóa sai dạng (không bắt đầu bằng kx_).

Khóa API không đúng (401, invalid_key) nghĩa là khóa không có trong hệ thống; kiểm tra có chép thiếu ký tự không.

Khóa API đã bị thu hồi (401, key_revoked), hoặc Khóa API hết hiệu lực vì người tạo khóa không còn là chủ sở hữu hoặc quản trị viên của công ty. Tạo khóa mới bằng người còn quyền.

Nội dung không phải JSON hợp lệ (400) và câu "Nội dung tối đa 64 KB" (413).

Lỗi invalid_body có dạng "Trường ... : ..." chỉ đúng trường sai, ví dụ thiếu lines.

Ngày không hợp lệ (dùng YYYY-MM-DD) (422, invalid_date).

"Sổ đã khóa đến ngày ..." (422, period_locked) khi ngày nằm trong kỳ đã khóa sổ kế toán. Gửi với ngày sau ngày khóa hoặc nhờ kế toán mở khóa.

"Dòng ...: tài khoản ... không có trong hệ thống tài khoản hoặc đã ngừng dùng" (unknown_account) và "... là tài khoản tổng hợp, hạch toán vào tài khoản chi tiết" (summary_account). Sửa mã tài khoản.

"... tài khoản Nợ và tài khoản Có trùng nhau" (same_account), "... số tiền phải lớn hơn 0" (invalid_amount), "... không có đối tượng mã ..." (unknown_party). Thêm đối tượng vào danh mục trước.

Câu "Vượt 120 lần gọi mỗi phút, thử lại sau" (429, rate_limited). Cho phần mềm kia gửi chậm lại.

10

Hỏi đáp

Những câu người mới hay hỏi trước khi nối API.

Khóa API có hết hạn không?

Không có hạn. Khóa hoạt động đến khi bạn thu hồi, hoặc khi người tạo khóa không còn là chủ sở hữu hay quản trị viên. Nên thay khóa định kỳ bằng cách tạo khóa mới rồi thu hồi khóa cũ.

Mỗi phần mềm nên dùng một khóa hay chung một khóa?

Mỗi phần mềm một khóa. Khi một phần mềm bị lộ khóa hoặc ngừng dùng, bạn thu hồi riêng khóa đó mà không làm gián đoạn các phần mềm khác.

Có giới hạn khóa chỉ được gửi loại chứng từ nào không?

Không có. Mọi khóa gửi được cả năm loại PT, PC, BC, BN, NK vào mọi tài khoản chi tiết hợp lệ, nên cần giữ khóa như giữ quyền ghi sổ.

Mất khóa thì xem lại ở đâu?

Không xem lại được. Thu hồi khóa mất và tạo khóa mới.

Khóa API khác gì tài khoản đăng nhập của nhân viên?

Khóa không đăng nhập vào giao diện và không đọc được dữ liệu; nó chỉ tạo chứng từ. Nhưng chứng từ ấy vào sổ thật, nên cùng mức nghiêm trọng như cấp cho ai đó quyền lập và ghi sổ.

Hướng dẫn khác trong nhóm Hệ thống

Dùng thử trên sổ của chính bạn

Đăng ký mất vài phút, không cần thẻ thanh toán. Mọi chức năng đều miễn phí.