1. Giới thiệu
Tài liệu này dành cho các nhà phát triển ứng dụng muốn ứng dụng của mình có thể phát hành hóa đơn thông qua việc kết nối với hệ thống phần mềm MISA MeInvoice . Tài liệu sẽ mô tả phương thức kết nối giữa các ứng dụng từ Client (máy chủ/máy trạm của Khách hàng) tới service của hệ thống MISA MeInvoice.
1.1. Thông tin cần trước khi kết nối
| Thông tin | Diễn giải |
| app_id | Đối tác/KH có nhu cầu kết nối MeInvoice cần đăng ký sử dụng API, đầu mối tiếp nhận là NVKD. |
| Ký hiệu hóa đơn | Lấy thông tin từ bộ phận kế toán của đơn vị |
| Hình thức ký số | – Ký số qua USB token
– Ký số qua HSM/Esign nâng cao – Không ký số (chỉ áp dụng cho hóa đơn từ MTT) |
| Thông tin sandbox | Sẽ được cấp cùng app_id khi KH đăng ký sử dụng |
1.2. Thông tin chi tiết để kết nối
| Thông tin | Diễn giải |
| API_AIO_Url (Base url) | SandBox: https://testapi.meinvoice.vn/api/integration
Product: https://api.meinvoice.vn/api/integration |
| Token url (lấy token) | /auth/token |
| Lấy danh sách mẫu hóa đơn có thể phát hành | /invoice/templates |
| Xem hóa đơn trước khi phát hành | /invoice/unpublishview |
| Phát hành hóa đơn | /invoice |
| Xem hóa đơn đã phát hành | /invoice/publishview |
| Xử lý sai sót hóa đơn | /invoice |
| Tải hóa đơn | /invoice/download |
| Lấy trạng thái hóa đơn | /invoice/status |
| Gửi email hóa đơn đã phát hành | /invoice/sendemail |
| Chuyển đổi hóa đơn giấy | /invoice/voucher-paper |
1.3. Mô tả cấu trúc của API MeInvoice
| Thông tin | Diễn giải |
| Url | Theo từng API cụ thể |
| Method | Get/Post (Theo từng API cụ thể) |
| Params | Theo từng API cụ thể |
| Header | Authorization: Bearer {token} |
| Body | Content-Type: application/json (Đối tượng theo từng API cụ thể) |
| Response | {
“success”:true/false, “errorCode”: “Mã lỗi”, “descriptionErrorCode”: “Mô tả lỗi”, “createInvoiceResult”: “Kết quả tạo hóa đơn”, “publishInvoiceResult”: “Kết quả phát hành hóa đơn”, “errors”: “Danh sách mô tả lỗi”, “data”: “Dữ liệu phản hồi” “customData”: “thông tin khác” } |
1.4. Hướng dẫn xử lý kết quả của API (Response)
| success | Trạng thái phản hồi của API
True: Thành công False: Thất bại |
| errorCode | Mã lỗi trả về (VD: InvalidInvoiceData) |
| descriptionErrorCode | Mô tả về thông tin lỗi (VD: Tham số không hợp lệ) |
| createInvoiceResult | Kết quả trả về của API tạo dữ liệu XML khi dùng SignType = 1 |
| publishInvoiceResult | Kết quả trả về của API phát hành hóa đơn |
| Data | Kết quả trả về của mỗi API |
| Cách kiểm tra Response | Kiểm tra success-> kiểm tra errorCode→ xử lý lỗi -> Kiểm tra createInvoiceResult.errorCode hoặc publishInvoiceResult.errorCode -> xử lý lỗi => lưu log response |
| Các thông tin cần lưu lại | token: hạn 14 ngày
Body của API Response của API để phục vụ việc hỗ trợ về sau nếu phát sinh |
1.5. Các bước thực hiện
| Đăng ký sử dụng API | Đăng ký sử dụng API, liên hệ NVKD của MISA
Nhận về app_id (dùng cho cả sandbox và product) và thông tin sandbox gồm
Khi thực hiện golive, lấy 3 thông tin trên từ bộ phận kế toán |
| Thực hiện lấy đăng nhập ứng dụng MeInvoice | Sandbox: https://testapp3.meinvoice.vn/v3/ban-lam-viec
Product: https://app3.meinvoice.vn/v3/ban-lam-viec Xem thêm thiết lập hình thức hóa đơn sử dụng |
| Thiết lập hình thức ký số hóa đơn | – Thiết lập tại đây |
| Lập tờ khai | Xem tại đây |
| Tạo mẫu hóa đơn | Xem tại đây |
| Thao thác với API | |
| Bước 1: Thực hiện gọi API lấy token | – Xem mô tả
Lưu ý: – Token có hạn 14 ngày, chỉ nên gọi ở đầu phiên làm việc (lần đầu đăng nhập, đầu ngày, đầu tuần …) |
| Bước 2: Thực hiện lấy danh sách mẫu hóa đơn | – Xem mô tả
Lưu ý: Chỉ thực hiện gọi lại khi Ký hiệu hóa đơn có sự thay đổi (không tính thay đổi năm ký hiệu) |
| Bước 3: Xem hóa đơn trước khi phát hành | – Xem mô tả |
| Bước 4: Phát hành hóa đơn | – Xem mô tả phát hành dùng USB token
– Xem mô tả phát hành dùng HSM/eSgin nâng cao Lưu ý: – Mẫu hóa đơn phải đang ở trạng thái Sử dụng – Tờ khai phải đang ở trạng thái CQT chấp nhận – Sử dụng SignType đúng với loại hình ký số mong muốn |
| Xử lý với các nghiệp vụ khác nếu cần | |
| Xem hóa đơn sau khi phát hành | – Xem hướng dẫn |
| Tải hóa đơn | – Xem hướng dẫn |
| Lấy trạng thái hóa đơn | – Xem hướng dẫn |
| Điều chỉnh/ thay thế hóa đơn | – Xem hướng dẫn |
1.6. Những lưu ý trước khi tích hợp (Hiểu thêm về hóa đơn và API)
| Thông tin | Diễn giải |
| SignType | Kiểu ký số khi sử dụng API
1: Ký số qua USB/file mềm 2: Ký số qua HSM, có hiển thị CKS 3: Ký số qua HSM, có hiển thị CKS, luồng bất đồng bộ 4: Ký số sau loại Vé không mã, không hiển thị CKS 5: Ký số sau loại Hóa đơn MTT, không hiển thị CKS 6: Ký số sau loại Hóa đơn/Vé MTT, không hiển thị CKS, luồng bất đồng bộ |
| Trường hợp dữ liệu có thập phân | – Việc thể hiện bao nhiêu số thập phân được định nghĩa trong tag: OptionUserDefined
– Việc Round số chữ số thập phân phải khớp với số lượng được định nghĩa trong OptionUserDefined – Khuyến nghị Round từng phần rồi cộng tổng thay vì cộng tổng xong Round |
| Công thức tính toán | Tham khảo sheet Công thức (từ tài liệu được cung cấp hoặc bảng mô tả đối tượng) |
| Ký hiệu hóa đơn | – Sẽ thay đổi theo năm.
VD năm 2024, ký hiệu là 1C24MYY thì sang năm 2025, ký hiệu sẽ đổi thành 1C25MYY (hệ thống MISA tự động xử lý theo thông tin InvDate) |
| Xem hóa đơn đã phát hành tại | – Môi trường test: https://testapp3.meinvoice.vn/
– Môi trường product: https://app3.meinvoice.vn |
| Xác định loại hình hóa đơn | Dùng ký tự đầu tiên của ký hiệu để xác định: XC25TYY
X = 1: hóa đơn GTGT X = 2: hóa đơn bán hàng X = 5: vé điện tử X = 6: phiếu xuất kho VD: 1C25TYY (hóa đơn GTGT) |
| Xác định loại hóa đơn Có mã/Không mã | Dùng ký tự thứ 2 của ký hiệu để xác định: 1X25MYY
X = C: hóa đơn có mã X = K: hóa đơn không mã VD: 1C25MYY (hóa đơn có mã) |
| Xác định hình thức hóa đơn Thường/ HĐ từ máy tính tiền | Dùng ký tự thứ 5 của ký hiệu để xác định: 1C25XYY
X = T: hóa đơn thường X = M: hóa đơn từ máy tính tiền VD: 1C25MYY (hóa đơn từ máy tính tiền) |
| Các trường hợp gặp mã lỗi cần retry (phát hành lại) | InvoiceDuplicated
InvoiceNumberNotCotinuous |
| Xử lý request | Bắt buộc PHẢI xử lý request tuần tự với mỗi ký hiệu hóa đơn.
– Vòng lặp: [Gửi request => nhận response => xử lý response => lưu lại thông tin hóa đơn] |
| Postman tham khảo | – Tải về |
2. API lấy mã kết nối (Get token)
Sử dụng khi kết nối với ứng dụng MISA MeInvoice để lấy token phục vụ cho các hàm xử lý nghiệp vụ
| Thông tin | Diễn giải |
| URL | {API_AIO_Url}/auth/token |
| Method | Post |
| Body request | {
“appid“: “{AppID}”, “taxcode“: “{taxcode}”, “username“: “{user meinvoice}”, “password“: “{pasword meinvoice}” } |
| Response | {
“Success“: <false/true>, “Data“: “<Dữ liệu token trả về>“, “ErrorCode“: “<Trống hoặc Mã lỗi>”, “Errors“: “”, “CustomData“:”” } |
| Mã lỗi thường gặp | Xem tại đây |
| Lưu ý | Token có hạn 14 ngày, chỉ nên gọi ở đầu phiên làm việc (lần đầu đăng nhập, đầu ngày, đầu tuần, thay đổi tài khoản …) (kiến nghị của MISA là 7 ngày gọi 1 lần) |
3. API lấy danh sách mẫu hóa đơn/ mẫu vé
| Thông tin | Diễn giải |
| URL | {API_AIO_Urll}/invoice/templates |
| Method | Get |
| Params | haveTempOld: true/false (có lấy mẫu hóa đơn chuyển đổi từ nd51 không)
invoiceWithCode: true/false (dùng loại hóa đơn có mã hay không mã) ticket: true/false (lấy mẫu vé) |
| Header | Content-Type: application/json
Authorization: Bearer {token} |
| Response | {
“Success“: <false/true>, “Data“: “<Danh sách mẫu>“, “ErrorCode“: “<Trống hoặc Mã lỗi>”, “Errors“: “”, “CustomData“:”” } Lưu lại thông tin IsSendSummary, InvSeries của mẫu hóa đơn trong Data, để thực hiện khi phát hành hóa đơn |
| Mã lỗi thường gặp | Xem tại đây |
| Mô tả đối tượng | Mô tả đối tượng (Template) |
4. API xem hóa đơn chưa phát hành
| Thông tin | Diễn giải |
| URL | {API_AIO_Url}/invoice/unpublishview |
| Method | Post |
| Header | Content-Type: application/json
Authorization: Bearer {token} |
| Body | {
InvoiceData } Chỉ xem được 1 hóa đơn |
| Response | {
“success“: true, “errorCode“: null, “descriptionErrorCode“: null, “errors“: [], “data“: “link xem hóa đơn“, “customData“: null } |
| Mã lỗi thường gặp | Xem tại đây |
| Mô tả đối tượng | Mô tả đối tượng (InvoiceData) |
| Lưu ý | Link xem trước chỉ tồn tại ở thời điểm xem trong 5 phút (làm mới sẽ vô hiệu link cũ) |
5. API phát hành hóa đơn ký số USB/File
Khuyến nghị sử dụng khi các đơn vị sử dụng app winform, các đơn vị sử dụng webrowser nên sử dụng HSM (vì cần triển khai 1 server giao thức http)
5.1. API tạo XML hóa đơn
| Thông tin | Diễn giải |
| URL | {API_AIO_Url}/invoice |
| Method | Post |
| Header | Content-Type: application/json
Authorization: Bearer {token} |
| Body | {
“SignType“: 1, “InvoiceData“: [list InvoiceData], “PublishInvoiceData“: null } |
| Response | {
“success“: true, “errorCode“: null, “descriptionErrorCode“: null, “createInvoiceResult“: [danh sách xml được tạo], “publishInvoiceResult“: null } Kiểm tra có createInvoiceResult.ErrorCode là chưa thành công |
| Mã lỗi thường gặp | Xem tại đây |
| Mô tả đối tượng | Mô tả đối tượng (InvoiceData) |
| Lưu ý | SignType được mô tả ở mục 1.3 Thông tin lưu ý
Dữ liệu XML của hóa đơn là thẻ: createInvoiceResult.InvoiceData |
5.2. API ký số dữ liệu XML
| Thông tin | Diễn giải |
| URL | {computerName}:12019/api/SignXML
computerName: tên/ip của máy cài đặt tool ký số |
| Method | Post |
| Header | MisaTokenKey: 491CB943-E466-4D25-B0A9-7042594F59F2 |
| Body | {
“PinCode“: “xxxxxxx”, //mật khẩu của cks “XmlContent“: {đối tượng XML được tạo ở bước 5.1} } |
| Response | {
“Status“: 200, “PayLoad“: “”, //Chuỗi XML đã được ký số “Message“: null //thông báo lỗi nếu cố } |
| Link tải công cụ ký số | https://product.misa.vn/misasoftware/eInvoice/SignedService/R24/MISA_SignedService_Setup_Lastest.exe |
5.3. API phát hành XML đã được ký số
| Thông tin | Diễn giải |
| URL | {API_AIO_Urll}/invoice |
| Method | Post |
| Header | Content-Type: application/json
Authorization: Bearer {token} CompanyTaxCode: {taxcode} |
| Body | {
“SignType“: 1, “InvoiceData“: null “PublishInvoiceData“: [danh sách PublishInvoiceData] } |
| Response | {
“success“: true, “errorCode“: null, “descriptionErrorCode“: null, “createInvoiceResult“: null, “publishInvoiceResult“: [danh sách thông tin hóa đơn phát hành] } Kiểm tra có publishInvoiceResult.ErrorCode là chưa thành công |
| Mã lỗi thường gặp | Xem tại đây |
| Mô tả đối tượng | Mô tả đối tượng (PublishInvoiceData) |
| Lưu ý | Kiểm tra ErrorCode, nếu null thì hóa đơn mới phát hành thành công |
| Xem hóa đơn đã phát hành | Tại đây |
6. API phát hành hóa đơn/vé – ký số HSM/ Không ký
| Thông tin | Diễn giải |
| URL | {API_AIO_Url}/invoice |
| Method | Post |
| Header | Content-Type: application/json
Authorization: Bearer {token} |
| Body | {
“SignType“: 2|5, (2: có hiển thị CKS; 5: Không hiển thị CKS) “InvoiceData“: [danh sách hóa đơn phát hành] “PublishInvoiceData“: null } |
| Response | {
“success“: true, “errorCode“: null, “descriptionErrorCode“: null, “createInvoiceResult“: null, “publishInvoiceResult“: [danh sách thông tin hóa đơn phát hành] } Kiểm tra có publishInvoiceResult.ErrorCode là chưa thành công |
| Mã lỗi thường gặp | Xem tại đây |
| Mô tả đối tượng | Mô tả đối tượng (InvoiceData) |
| Lưu ý | Xem mô tả về thông tin SignType
Kiểm tra publishInvoiceResult.ErrorCode, nếu empty thì hóa đơn mới được phát hành thành công |
| Xem hóa đơn đã phát hành | Tại đây |
| Ví dụ của response lỗi, kiểm tra nội dung ErrorCode cụ thể (retry nếu gặp 2 mã lỗi ở *result: InvoiceDuplicated và
InvoiceNumberNotCotinuous) |
7. API xem hóa đơn đã phát hành
| Thông tin | Diễn giải |
| URL | {API_AIO_Url}/invoice/publishview |
| Method | Post |
| Header | Content-Type: application/json
Authorization: Bearer {token} CompanyTaxCode: {taxcode} |
| Body | [“Danh sách TransactionID”]
VD: [“TranID1”, “TranID1”, …] TranID1: Mã tra cứu hóa đơn |
| Response | {
“success“: true, “errorCode“: null, “descriptionErrorCode“: null, “errors“: [], “data“: “link xem hóa đơn“, “customData“: null } |
| Mã lỗi thường gặp | Xem tại đây |
| Lưu ý | Link xem chỉ tồn tại trong 5 phút
Nếu muốn xem lâu dài có thể tải file pdf |
8. API tải hóa đơn
| Thông tin | Diễn giải |
| URL | {API_AIO_Urll}/invoice/download |
| Method | Post |
| Header | Authorization: Bearer {token} |
| Params | invoiceWithCode: true/false (hóa đơn có mã/không mã)
invoiceCalcu: true/false là hóa đơn phát hành từ máy tính tiền downloadDataType: xml/pdf/All |
| Body | [“Danh sách TransactionID”]
VD: [“TranID1”, “TranID1”, …] TranID1: Mã tra cứu hóa đơn, tối đa 50 TransID/lần call |
| Response | {
“success“: true, “errorCode“: null, “descriptionErrorCode“: null, “errors“: [], “data“: “InvoiceDataPublished“, “customData“: null } Mô tả InvoiceDataPublished [ { “TransactionID“: “Mã tra cứu hóa đơn”, “Data“: “Dữ liệu của hóa đơn (dang base64)”, } ] |
| Mã lỗi thường gặp | Xem tại đây |
9. API điều chỉnh/Thay thế
Tương tự với việc phát hành hóa đơn, bổ sung những thông tin (ở master) dưới đây
Trước khi phát hành hóa đơn điều chỉnh/thay thế, sử dụng API lấy trạng thái hóa đơn đã phát hành rồi gán thông tin cho dữ liệu bị điều chỉnh bên dưới
| Thông tin | Kiểu dữ liệu | Diễn giải |
|---|---|---|
| ReferenceType | int | Tính chất hóa đơn
1: Thay thế 2: Điều chỉnh |
| OrgInvoiceType | int | Loại hóa đơn bị thay thế/điều chỉnh
1: Hóa đơn NĐ 123 3: Hóa đơn NĐ 51 |
| OrgInvTemplateNo | string | Mẫu số hóa đơn bị thay thế/điều chỉnh
VD: Ký hiệu của hóa đơn theo ND123 bị thay thế là 1C24MAA thì OrgInvTemplateNo = 1 (ký tự đầu tiên) VD: Mẫu số của hóa đơn theo ND51 bị thay thế là 01GTKT0/001 |
| OrgInvSeries | string | Ký hiệu hóa đơn theo ND123 bị thay thế/điều chỉnh
VD: Ký hiệu của hóa đơn bị thay thế là 1C24MAA thì OrgInvSeries = C24MAA (6 ký tự cuối cùng) VD: Ký hiệu của hóa đơn theo ND51 bị thay thế là AA/20E |
| OrgInvNo | string | Số hóa đơn bị thay thế/điều chỉnh |
| OrgInvDate | string | Ngày hóa đơn bị thay thế/điều chỉnh |
| InvoiceNote | string | Lý do thay thế/điều chỉnh |
10. API gửi Email
Chỉ thực hiện gửi ở Product
| Thông tin | Diễn giải |
| URL | {API_AIO_Url}/invoice/sendemail |
| Method | Post |
| Header | Authorization: Bearer {token} |
| Body | {
“SendEmailDatas“: [ { “TransactionID“: “Mã tra cứu”, “ReceiverName“: “Tên người nhận”, “ReceiverEmail“: “Email nhận hóa đơn”, “CCEmail“: “Email cc”, “ReplyEmail“: “Email reply phản hồi” } ], //Danh sách gửi email của hóa đơn “IsInvoiceCode“: true/false, //(hóa đơn có mã/không mã) “IsInvoiceCalculatingMachine“: true/false //(hóa đơn MTT/thường) } Nếu gửi nhiều email, mỗi email cách nhau bởi dấu “;” (chấm phảy), chỉ gửi 1 loại hình hóa đơn/ loại hóa đơn trong 1 request |
| Response | {
“success“: true, “errorCode“: null, “descriptionErrorCode“: null, “errors“: [], “data“: “”, “customData“: null } |
| Mã lỗi thường gặp | Xem tại đây |
11. Lấy trạng thái hóa đơn đã phát hành
| Thông tin | Diễn giải |
| URL | {API_AIO_Url}/invoice/status |
| Method | Post |
| Header | Authorization: Bearer {token} |
| Params | invoiceWithCode: true/false (hóa đơn có mã/không mã)
invoiceCalcu: true/false là hóa đơn phát hành từ máy tính tiền inputType: 1 inputType = 1: lấy theo TransactionID inputType = 2: lấy theo RefID |
| Body | [“Danh sách TransactionID”]
VD: [“TranID1”, “TranID1”, …] TranID1: Mã tra cứu/RefID của hóa đơn, tối đa 50 mã/lần call |
| Response | {
“success“: true, “errorCode“: null, “descriptionErrorCode“: null, “errors“: [], “data“: “List InvoiceStatus“, “customData“: null } |
| Mã lỗi thường gặp | Xem tại đây |
12. Chuyển đổi hóa đơn giấy
| Thông tin | Diễn giải |
| URL | {API_AIO_Url}/invoice/voucher-paper |
| Method | Post |
| Header | Authorization: Bearer {token} |
| Params | invoiceWithCode: true/false (hóa đơn có mã/không mã)
invoiceCalcu: true/false là hóa đơn phát hành từ máy tính tiền Converter: người chuyển đổi ConvertDate: ngày chuyển đổi (định dạng yyyy-MM-dd) |
| Body | [“Danh sách TransactionID”]
VD: [“TranID1”, “TranID1”, …] TranID1: Mã tra cứu/RefID của hóa đơn, tối đa 50 mã/lần call |
| Response | {
“success“: true, “errorCode“: null, “descriptionErrorCode“: null, “errors“: [], “data“: “dữ liệu hóa đơn chuyển đổi sang giấy dạng base64string“, “customData“: null } |
| Mã lỗi thường gặp | Xem tại đây |
13. Mô tả đối tượng của hóa đơn
13.1. Template (mẫu hóa đơn)
| Tên trường | Kiểu dữ liệu | Diễn giải |
| IPTemplateID | string | ID mẫu hóa đơn |
| CompanyID | integer | ID của công ty |
| TemplateName | string | Tên mẫu hóa đơn |
| InvTemplateNo | string | Mẫu số hóa đơn |
| InvSeries | string | Ký hiệu hóa đơn |
| OrgInvSeries | string | Ký hiệu hóa đơn rút gọn |
| CreatedDate | string | Ngày tạo |
| ModifiedDate | string | Ngày sửa đổi |
| Inactive | boolean | Trạng thái không hoạt động |
| IsInheritFromOldTemplate | boolean | Xác định có kế thừa từ mẫu cũ không |
| IsSendSummary | boolean | Xác định có gửi bảng tổng hợp không |
| IsTemplatePetrol | boolean | Xác định có phải là mẫu hóa đơn xăng dầu không |
| IsMoreVATRate | boolean | Xác định có nhiều mức thuế VAT không |
13.2. Ticket (mẫu vé)
| Tên trường | Kiểu dữ liệu | Diễn giải |
| TicketTemplateID | string | ID mẫu hóa đơn (trong JSON) |
| TemplateName | string | Tên mẫu hóa đơn |
| InvSeries | string | Ký hiệu hóa đơn |
| Inactive | boolean | Trạng thái không hoạt động |
| TicketType | integer | Loại vé (trong JSON) |
| ServiceName | string | Tên dịch vụ (trong JSON, không có trong bảng mẫu) |
| IsInheritFromOldTemplate | boolean | Xác định có kế thừa từ mẫu cũ không |
| IsTicketCode | boolean | (trong JSON, không có trong bảng mẫu) |
13.3. InvoiceData (Dữ liệu hóa đơn)
| Tên trường | Kiểu dữ liệu | Bắt buộc | Diễn giải |
| Dữ liệu chung | |||
| RefID | guid | x | Mã tham chiếu của hóa đơn (check trùng theo key này, lưu lại để xử lý nghiệp vụ về sau) |
| InvSeries | string | x | Ký hiệu hóa đơn |
| InvDate | string | x | Ngày phát hành hóa đơn (định dạng yyyy-MM-dd) |
| CurrencyCode | string | Mã tiền tệ (mặc định VND) | |
| ExchangeRate | decimal | Tỷ giá (mặc định 1) | |
| PaymentMethodName | string | Hình thức thanh toán (mặc định TM/CK) | |
| IsInvoiceSummary | boolean | x | True: nếu hóa đơn gửi theo bảng tổng hợp (đối với hóa đơn không mã, lấy từ api template) mặc định false |
| IsSendEmail | bool | Có gửi email khi phát hành thành công không (Chỉ thực hiện gửi ở Product) | |
| ReceiverName | string | Tên người nhận email | |
| ReceiverEmail | string | Địa chỉ nhận email, phân tách bởi dấu ; (chấm phảy) | |
| SellerShopCode | string | Mã cửa hàng | |
| SellerShopName | string | Tên cửa hàng | |
| Dữ liệu về người mua | |||
| BuyerCode | string | Mã của người mua | |
| BuyerLegalName | string | x (nếu có BuyerTaxCode) | Tên đơn vị |
| BuyerTaxCode | string | Mã số thuế của người mua | |
| BuyerAddress | string | x (nếu có BuyerTaxCode) | Địa chỉ của người mua |
| BuyerFullName | string | Họ và tên của người mua | |
| BuyerPhoneNumber | string | Số điện thoại của người mua | |
| BuyerEmail | string | Email của người mua (chỉ được phép 1 email) | |
| BuyerBankAccount | string | Số tài khoản ngân hàng của người mua | |
| BuyerBankName | string | Tên ngân hàng của người mua | |
| BuyerIDNumber | string | Số định danh cá nhân
Một chuỗi gồm 12 ký tự dạng số, không validate theo cấu trúc chi tiết , Không bắt buộc (Chỉ sử dụng ở ND70) |
|
| BuyerPassport | string | Số hộ chiếu
Cho phép nhập dạng chuỗi gồm 20 ký tự (Chỉ sử dụng ở ND70) |
|
| BuyerBudgetCode | string | Mã số đơn vị có quan hệ với Ngân sách (gồm 7 ký tự). Khi nhập MSĐVCQHVNS người mua thì bắt buộc nhập Tên đơn vị, Địa chỉ
(Chỉ sử dụng ở ND70) |
|
| Dữ liệu về tổng tiền | |||
| TotalSaleAmountOC | decimal | x | Tổng số tiền bán hàng chưa thuế, chưa chiết khấu – nguyên tệ
=Sum(AmountOC, itemType = 1) – Sum(AmountOC, itemType = 3) |
| TotalSaleAmount | decimal | x | Tổng số tiền bán hàng – quy đổi
= TotalSaleAmountOC * ExchangeRate |
| TotalDiscountAmountOC | decimal | x | Tổng số tiền chiết khấu – nguyên tệ
=Sum(DiscountAmountOC, itemType= 1) + Sum(AmountOC, itemType= 3) |
| TotalDiscountAmount | decimal | x | Tổng số tiền chiết khấu – quy đổi
= TotalDiscountAmountOC* ExchangeRate |
| TotalAmountWithoutVATOC | decimal | x | Tổng số tiền chưa bao gồm VAT, đã trừ chiết khấu – nguyên tệ
= Sum(AmountWithoutVATOC, itemtype =1) – Sum(AmountWithoutVATOC, itemtype =3) |
| TotalAmountWithoutVAT | decimal | x | Tổng số tiền chưa bao gồm VAT – quy đổi
= TotalAmountWithoutVATOC * ExchangRate |
| TotalVATAmountOC | decimal | x | Tổng số tiền thuế – nguyên tệ
=Sum(VATAmountOC, itemType = 1) – Sum(VATAmountOC, itemType =3) |
| TotalVATAmount | decimal | x | Tổng số tiền thuế – quy đổi
=TotalVATAmountOC * ExchangRate |
| TotalAmountOC | decimal | x | Tổng tiền thanh toán – nguyên tệ
= TotalAmountWithoutVATOC + TotalVATAmountOC |
| TotalAmount | decimal | x | Tổng tiền thanh toán – quy đổi
= TotalAmountOC * ExchangRate |
| TotalAmountInWords | string | x | Tổng số tiền bằng chữ (không truyền sẽ lấy theo đọc tiền bằng chữ do MISA quy định) |
| TotalAmountInWordsByENG | string | Tổng tiền bằng chữ tiếng anh | |
| TotalAmountInWordsUnsignNormalVN | string | Số tiền bằng chữ không dấu | |
| Dữ liệu về trường mở rộng | |||
| CustomField1 | string | Trường tuỳ chỉnh 1 | |
| CustomField2 | string | Trường tuỳ chỉnh 2 | |
| CustomField3 | string | Trường tuỳ chỉnh 3 | |
| CustomField4 | string | Trường tuỳ chỉnh 4 | |
| CustomField5 | string | Trường tuỳ chỉnh 5 | |
| CustomField6 | string | Trường tuỳ chỉnh 6 | |
| CustomField7 | string | Trường tuỳ chỉnh 7 | |
| CustomField8 | string | Trường tuỳ chỉnh 8 | |
| CustomField9 | string | Trường tuỳ chỉnh 9 | |
| CustomField10 | string | Trường tuỳ chỉnh 10 | |
| Dữ liệu về điện/nước (sử dụng với hóa đơn điện nước) – Chỉ sử dụng với hóa đơn đặc thù | |||
| PeriodName | string | Kỳ thanh toán (sử dụng với hóa đơn điện/nước) | |
| PeriodFromDate | DateTime | Từ ngày | |
| PeriodToDate | DateTime | Đến ngày | |
| NewIndex | decimal | Chỉ số mới | |
| OldIndex | decimal | Chỉ số cũ | |
| AmountOfConsumption | decimal | Tổng điện tiêu thụ (sử dụng với hóa đơn điện) | |
| WaterUsed | decimal | Tổng số nước thiêu thụ (sử dụng với hóa đơn nước) | |
| EnvironmmentFeeRate | decimal | % Phí bảo vệ môi trường | |
| EnvironmmentFeeAmount | decimal | Tiền phí bảo vệ môi trường | |
| ClockInfos | List<ClockInfos> | Danh sách đồng hồ | |
| Dữ liệu về khách sạn (sử dụng với hóa đơn khách sạn) – Chỉ sử dụng với hóa đơn đặc thù | |||
| CheckIn | DateTime | Ngày đến | |
| CheckOut | DateTime | Ngày đi | |
| ExciseTaxRate | decimal | thuế suất tiêu thụ đặc biệt | |
| ServiceFeeRate | decimal | Max của ServiceFeeRate ở Details | |
| ServiceAmountOC | decimal | Tổng tiền phí dịch vụ – nguyên tệ | |
| ServiceAmount | decimal | Tổng tiền phí dịch vụ – quy đổi | |
| ExciseTaxRate | decimal | Max của ExciseTaxRate ở Details | |
| ExciseTaxAmountOC | decimal | Tổng tiền thuế TTDB – nguyên tệ | |
| ExciseTaxAmount | decimal | Tổng tiền thuế TTDB – quy đổi | |
| AccountObjectIdentificationNumber | string | Căn cước công dân | |
| Dữ liệu về hóa đơn Điều chỉnh/thay thế (chỉ bổ sung nếu phát hành hóa đơn thay thế/ điều chỉnh) | |||
| ReferenceType | int | Tính chất hóa đơn
1: thay thế 2: điều chỉnh |
|
| OrgInvoiceType | int | Loại hóa đơn bị thay thế/điều chỉnh
1: Hóa đơn NĐ 123 3: Hóa đơn NĐ 51 |
|
| OrgInvTemplateNo | string | Mẫu số hóa đơn bị thay thế/điều chỉnh
VD: ký hiệu của hóa đơn bị thay thế là 1C24MAA thì OrgInvTemplateNo = 1 (ký hiệu đầu tiên) |
|
| OrgInvSeries | string | Ký hiệu hóa đơn bị thay thế/điều chỉnh
VD: ký hiệu của hóa đơn bị thay thế là 1C24MAA thì OrgInvSeries = C24MAA (bỏ ký hiệu đầu tiên) |
|
| OrgInvNo | string | Số hóa đơn bị thay thế/điều chỉnh | |
| OrgInvDate | string | Ngày hóa đơn bị thay thế/điều chỉnh | |
| InvoiceNote | string | Lý do thay thế/điều chỉnh | |
| Dữ liệu về Phiếu xuất kho (chỉ bổ sung thêm khi phát hành PXK) – Chỉ sử dụng với hóa đơn là PXK | |||
| StockOutLegalName | string | Tên (Tên người xuất hàng) | |
| StockOutTaxCode | string | Mã số thuế (MST người xuất hàng) | |
| InternalCommand | string | Lệnh điều động nội bộ | |
| StockOutAddress | string | Địa chỉ (Địa chỉ kho xuất hàng) | |
| TransporterName | string | Tên người vận chuyển | |
| Transport | string | Phương tiện vận chuyển | |
| StockOutFullName | string | Họ và tên người xuất hàng | |
| TransportContractCode | string | Hợp đồng số (Hợp đồng vận chuyển) | |
| StockInLegalName | string | Tên (Tên người nhận hàng) | |
| StockInTaxCode | string | Mã số thuế (Mã số thuế người nhận hàng) | |
| StockInFullName | string | Họ và tên người nhận hàng | |
| StockInAddress | string | Địa chỉ (Địa chỉ kho nhận hàng) | |
| ContractCode | string | Mã số thuế (MST người xuất hàng) | |
| ContractDate | DateTime | Hợp đồng kinh tế ngày | |
| InternalCommandNo | string | Lệnh điều động số | |
| InternalCommandOwner | string | Lệnh điều động của | |
| InternalCommandDate | DateTime | Lệnh điều động ngày | |
| JournalMemo | string | Về việc | |
| StockTotalAmountOC | decimal | Tổng tiền xuất kho nguyên tệ | |
| StockTotalAmount | decimal | Tổng tiền xuất kho quy đổi | |
| Dữ liệu về đối tượng liên quan | |||
| OriginalInvoiceDetail | List<OriginalInvoiceDetail> | x | Danh sách hàng hóa (được mô tả theo danh sách bên dưới) |
| TaxRateInfo | List<TaxRateInfo> | x (bắt buộc với hóa đơn GTGT) | Danh sách tổng hợp thuế suất (được mô tả theo danh sách bên dưới) |
| OptionUserDefined | OptionUserDefined | x (nếu không truyền sẽ lấy mặc định = 0) | Thông tin thiết lập số thập phân (được mô tả theo danh sách bên dưới) |
| OtherInfo | List<OtherInfo> | Chỉ sử dụng với hóa đơn đặc thù | Danh sách thông tin khác (được mô tả theo danh sách bên dưới) |
| FeeInfo | List<FeeInfo> | Chỉ sử dụng với hóa đơn đặc thù | Danh sách phí khác (được mô tả theo danh sách bên dưới) |
13.4. OriginalInvoiceDetail (dữ liệu dòng hàng hóa, dịch vụ)
| Tên trường | Kiểu dữ liệu | Bắt buộc | Diễn giải |
| Dữ liệu chung về hàng hóa | |||
| ItemType | integer | x | Loại hàng hóa
1: Hàng hóa thường 2: Khuyến mại 3: Dòng hàng Chiết khấu thương mại 4: Ghi chú/diễn giải 5: Hàng hóa đặc thù vận tải |
| SortOrder | integer | x | STT của dòng hàng (null với ItemType = 3 hoặc ItemType = 4) (bắt đầu từ 1) |
| LineNumber | integer | x | Vị trí của dòng hàng (bắt đầu từ 1) |
| ItemCode | string | Mã hàng hóa | |
| ItemName | string | x | Tên hàng hóa |
| UnitName | string | Đơn vị tính | |
| ExpiryDate | DateTime | Hạn sử dụng | |
| ChassisNumber | string | Số khung | |
| EngineNumber | string | Số máy | |
| LotNo | string | Số lô | |
| Dữ liệu về tiền hàng | |||
| Quantity | decimal | x | Số lượng |
| UnitPrice | decimal | x | Đơn giá |
| AmountOC | decimal | x | Thành tiền trước thuế, trước chiết khấu – nguyên tệ (Quantity*UnitPrice) |
| Amount | decimal | x | Thành tiền trước thuế, trước chiết khấu – quy đổi |
| DiscountRate | decimal | x | Tỷ lệ chiết khấu |
| DiscountAmountOC | decimal | x | Tiền chiết khấu – nguyên tệ (AmountOC*DiscountRate/100) |
| DiscountAmount | decimal | x | Tiền chiết khấu – quy đổi |
| AmountWithoutVATOC | decimal | x | Thành tiền sau chiết khấu – nguyên tệ (AmountOC – DiscountAmountOC) |
| AmountWithoutVAT | decimal | x | Thành tiền sau chiết khấu – quy đổi |
| VATRateName | string | x | Loại thuế suất:
KCT: chịu thuế KKKNT: kê khai nộp thuế 0%: thuế suất 0% 5%: thuế suất 5% 8%: thuế suất 8% 10%: thuế suất 10% KHAC:x%: loại thuế suất khác (Ví dụ: KHAC:3.5%) |
| VATAmountOC | decimal | x | Tiền thuế – nguyên tệ (AmountWithoutVATOC*VATRate/100) |
| VATAmount | decimal | x | Tiền thuế – quy đổi |
| WageAmount | decimal | Tiền công – quy đổi | |
| WageAmountOC | decimal | Tiền công – nguyên tệ | |
| WagePriceAmount | decimal | Đơn giá công | |
| WagePriceDiscountAmount | decimal | Chiết khấu đơn giá công | |
| WageDiscountAmountOC | decimal | Chiết khấu tiền công – nguyên tệ | |
| InWard | decimal | Thực nhập (dùng với PXK) | |
| Dữ liệu về thuế TTDB – Chỉ sử dụng với hóa đơn đặc thù | |||
| ExciseTaxAmountOC | decimal | Tiền phí tiêu thụ đặc biệt – nguyên tệ
((AmountOC – DiscountAmountOC + ServiceAmountOC) * ExciseTaxRate)/100 |
|
| ExciseTaxAmount | decimal | Tiền phí tiêu thụ đặc biệt – quy đổi | |
| ExciseTaxRate | decimal | % phí tiêu thụ đặc biệt | |
| UnitPriceAfterExciseVAT | decimal | Đơn giá sau thuế tiêu thụ đặc biệt | |
| AmountAfterExciseTaxOC | decimal | Thành tiền sau thuế tiêu thụ đặc biệt – nguyên tệ | |
| AmountAfterExciseTax | decimal | Thành tiền sau thuế tiêu thụ đặc biệt – quy đổi | |
| Dữ liệu về Phí dịch vụ – Chỉ sử dụng với hóa đơn đặc thù khách sạn | |||
| ServiceAmountOC | decimal | Tiền phí phục vụ – nguyên tệ
((AmountOC – DiscountAmountOC) * ServiceFeeRate)/100 |
|
| ServiceAmount | decimal | Tiền phí phục vụ – quy đổi | |
| ServiceFeeRate | decimal | % phí phục vụ | |
| Dữ liệu về SpecialtyItem (mô tả dữ liệu thêm của dịch vụ vận tải) – Chỉ sử dụng với hóa đơn đặc thù | |||
| TypicalItem | int | Loại hình đặc thù
1: kinh doanh xe 2: dịch vụ vận chuyển 3: dịch vụ vận tải qua nền tảng số |
|
| FieldName | string | Tên thuộc tính đặc thù
SKhung, SMay: áp dụng TypicalItem = 1 (số khung, số máy) BKSPTVChuyen: áp dụng TypicalItem = 2, 3 (biển kiểm soát của phương tiện) |
|
| FieldValue | string | Giá trị | |
13.5. TaxRateInfo (tổng hợp thuế suất)
| Tên trường | Kiểu dữ liệu | Diễn giải |
| VATRateName | string | Loại thuế suất:
KCT: không chịu thuế KKKNT: không kê khai nộp thuế 0%: thuế suất 0% 5%: thuế suất 5% 8%: thuế suất 8% 10%: thuế suất 10% KHAC:x%: loại thuế suất khác (Ví dụ: KHAC:3.5%) |
| AmountWithoutVATOC | decimal | Tổng tiền trước thuế của dòng hàng
=(Sum(AmountWithoutVATOC, itemtype =1) – Sum(AmountWithoutVATOC, itemtype =3)) |
| VATAmountOC | decimal | Tổng tiền thuế của dòng hàng
(Sum(VATAmountOC, itemType = 1) – Sum(VATAmountOC, itemType =3)) |
13.6. OtherInfo (thông tin khác)
| Tên trường | Kiểu dữ liệu | Diễn giải |
| FieldName | string | Tên loại thông tin khác |
| DataType | string | Kiểu dữ liệu |
| FieldValue | string | Dữ liệu |
13.7. FeeInfo (phí khác)
| Tên trường | Kiểu dữ liệu | Diễn giải |
| FeeName | string | Tên loại phí |
| FeeAmountOC | decimal | Tiền phí |
13.8. ClockInfo (thông tin về đồng hồ nước)
| Tên trường | Kiểu dữ liệu | Diễn giải |
| ClockOrder | int | STT dòng mặt hàng (bắt đầu từ 1) |
| ClockCode | string | Mã đồng hồ |
| ClockSeri | string | Seri đồng hồ |
| LastIndex | decimal | Chỉ số mới |
| FirstIndex | decimal | Chỉ số cũ |
| Coefficient | decimal | Hệ số của đồng hồ |
| RefuelerNo | string | Xe tra nạp |
| LotNo | string | Số lô với hóa đơn thuốc |
| StartMeter | decimal | Số công tơ đầu |
| EndMeter | decimal | Số công tơ cuối |
| Temperature | decimal | Nhiệt độ |
| Density | decimal | Tỉ trọng |
| Gallon | decimal | Gallon |
| Liters | decimal | Số lít |
| ClockStatus | int | Trạng thái của đồng hồ (1 là thay mới đồng hồ => truyền thêm thông tin đồng hồ cũ vào các trường có Old) |
| ClockCodeOld | string | Mã đồng hồ cũ |
| ClockSeriOld | string | Seri đồng hồ cũ |
| LastIndexOld | decimal | Chỉ số mới của đồng hồ cũ |
| FirstIndexOld | decimal | Chỉ số cũ của đồng hồ cũ |
| CoefficientOld | decimal | Hệ số của đồng hồ cũ |
13.9. OptionUserDefined (thiết lập người dùng – hiển thị thập phân của tiền)
| Tên trường | Kiểu dữ liệu | Diễn giải |
| MainCurrency | string | Lấy theo thông tin CurrencyCode |
| QuantityDecimalDigits | string | Số chữ số thập phân của số lượng |
| UnitPriceOCDecimalDigits | string | Số chữ số thập phân của đơn giá |
| AmountOCDecimalDigits | string | Số chữ số thập phân của các loại dữ liệu tiền – nguyên tệ |
| AmountDecimalDigits | string | Số chữ số thập phân của các loại tiền sau tính toán – quy đổi |
| CoefficientDecimalDigits | string | Số chữ số thập phân của loại phần trăm |
| ExchangRateDecimalDigits | string | Số chữ số thập phân của tỷ giá |
13.10. PublishInvoiceData (Dữ liệu phát hành)
| Tên trường | Kiểu dữ liệu | Diễn giải |
| RefID | string | Mã tham chiếu (truyền đúng RefID của hóa đơn ở bước khởi tạo XML) |
| TransactionID | string | Mã tra cứu (lấy ở bước tạo XML) |
| InvSeries | string | Ký hiệu hóa đơn (lấy ở bước tạo XML) |
| InvoiceData | string | Dữ liệu hóa đơn (dưới dạng XML đã ký ở bước ký) |
| IsInvoiceCalculatingMachine | boolean | Key đánh dấu hóa đơn có phát hành qua máy tính tiền không
True: có |
| IsSendEmail | boolean | Có gửi hóa đơn khi phát hành thành công không |
| ReceiverName | string | Tên người nhận email |
| ReceiverEmail | string | Địa chỉ người nhận email, phân tách bằng ký tự ‘;’ (dấu chấm phảy) |
13.11. InvoiceStatus (trạng thái hóa đơn)
| Tên trường | Kiểu dữ liệu | Diễn giải |
| RefID | string | Mã tham chiếu hóa đơn |
| InvSeries | string | Ký hiệu hóa đơn |
| InvTempl | string | Mẫu số hóa đơn |
| BuyerName | string | Tên đơn vị người mua |
| BuyerTaxCode | string | Mã số thuế người mua |
| BuyerCode | string | Mã người mua |
| BuyerFullName | string | Họ tên người mua |
| TransactionID | string | Mã tra cứu hóa đơn |
| PublishStatus | int | Trạng thái phát hành hóa đơn
1: Đã phát hành |
| EInvoiceStatus | int | Trạng thái hóa đơn:
1: hóa đơn gốc 2: hóa đơn bị hủy 3: hóa đơn thay thế 5: hóa đơn điều chỉnh 7: hóa đơn bị thay thế 8: hóa đơn bị điều chỉnh |
| ReferenceType | int | Tính chất hóa đơn
0: Gốc 1: Thay thế 2: Điều chỉnh 5: Chiết khấu thương mại |
| InvoiceCode | string | Mã của CQT |
| SourceType | string | Nguồn dữ liệu hệ thống phát hành |
| SendTaxStatus | number | Trạng thái gửi CQT:
0: chưa gửi 1: gửi lỗi 2: thuế chấp nhận 3: thuế từ chối |
| PublishedTime | DateTime | Thời gian phát hành |
| InvNo | string | Số hóa đơn |
14. Mã lỗi thường gặp
| Mã lỗi | Mô tả | Cách xử lý |
| InvalidAppID | Sai thông tin AppID | Liên hệ MISA để nhận AppID |
| InActiveAppID | Ứng dụng ngừng theo dõi | Liên hệ MISA để nhận AppID |
| UnAuthorize | Sai mã token | Đăng nhập lại để lấy token mới |
| TokenExpiredCode | Token hết hạn | Cần gọi hàm RefreshToken |
| InvalidTokenCode | Token lỗi cần đăng nhập lại | Đăng nhập lại để lấy token mới |
| DuplicateTemplateName | Lỗi trùng tên mẫu | Thay đổi tên mẫu hóa đơn |
| DuplicateTemplateNo | Lỗi trùng ký hiệu | Thay đổi ký hiệu mẫu hóa đơn |
| InvoiceTemplateNotExist | Mẫu hóa đơn không tồn tại | Tạo mẫu hóa đơn/ kiểm tra lại thông tin InvSeries |
| CreateInvoiceDataError | Tạo XML hóa đơn lỗi không xác định | |
| InvoiceDetail_{0} | Nếu mã lỗi bắt đầu bằng InvoiceDetail_{0} thì thông tin có tên trường dữ liệu phía sau không hợp lệ
– Không thuộc loại được cho phép – Giá trị bắt buộc – không được trống – Vượt quá giới hạn MaxLength cho phép |
Lỗi thông tin nào kiểm tra thông tin đó, kiểm tra về kiểu dữ liệu, số lượng ký tự, tính đúng đắn của dữ liệu |
| StockInTaxCode_NotInfo_{0}_{1} | Nếu mã lỗi bắt đầu bằng StockInTaxCode_NotInfo_{0}_{1} thì thông tin MST có nhưng thông tin đơn vị không có
0: Loại phiếu xuất kho 1: thông tin thiếu |
Lỗi thông tin nào kiểm tra thông tin đó, kiểm tra về kiểu dữ liệu, số lượng ký tự, tính đúng đắn của dữ liệu |
| RequireError_{0} | Nếu bắt đầu bằng RequireError_{0} thì thông tin có tên trường dữ liệu phía sau không hợp lệ
– Không thuộc loại được cho phép – Giá trị bắt buộc – không được trống – Vượt quá giới hạn MaxLength cho phép |
Lỗi thông tin nào kiểm tra thông tin đó, kiểm tra về kiểu dữ liệu, số lượng ký tự, tính đúng đắn của dữ liệu |
| TaxRateInfo_VATRateName | Tên loại thuế suất trong Bảng tổng hợp thuế suất của hóa đơn có dữ liệu không hợp lệ | Bổ sung thêm thông tin tổng hợp thuế suất TaxRateInfo |
| InvoiceQuantityTooLarge | Số lượng hóa đơn gửi lên trong 1 Request quá số lượng cho phép | Nếu dữ liệu của 1 hóa đơn lớn, nên gửi tối đa 30 hóa đơn/request |
| XMLTooLong | File XML quá dài | Nếu số lượng dòng hàng quá lớn, nên tách thành nhiều hóa đơn, mỗi hóa đơn <200 dòng hàng |
| LicenseInfo_NotBuy | Chưa mua tài nguyên | Liên hệ MISA để đăng ký/ mua dịch vụ |
| LicenseInfo_OutOfInvoice | Số lượng tài nguyên còn lại không đủ để phát hành toàn bộ các hóa đơn gửi lên | Mua thêm tài nguyên phát hành hóa đơn |
| LicenseInfo_Expired | Tài nguyên chưa thanh toán hoặc đã hết hạn | Liên hệ kinh doanh MISA để thanh toán/cấp tài nguyên |
| InvalidTransactionID | Mã tra cứu không hợp lệ | Mã tra cứu được hệ thống MISA cung cấp, KH không tự ý thay đổi |
| DuplicateTransactionID | Trùng Mã tra cứu | Thực hiện lại bước tạo hóa đơn để lấy mã tra cứu mới (thường gặp khi ký số qua tool) |
| SignatureEmpty | Chữ ký số bị bỏ trống | Thực hiện ký số (thường gặp khi ký số qua tool) |
| InvalidSignature | Chữ ký số không hợp lệ | Kiểm tra lại chữ ký số với chữ ký số đăng ký trên tờ khai được chấp thuận |
| CertRevocation | Chữ ký số đã bị thu hồi | Lỗi về CKS, liên hệ các bên liên quan |
| InvalidCertByRegistration | Chữ ký số không tồn tại trong tờ khai | Tạo tờ khai hoặc ký số hóa đơn đúng với CKS đã đăng ký ở tờ khai |
| HasRegistrationStopUseCert | Tồn tại tờ khai Ngừng sử dụng chứng thư số | Tạo tờ khai hoặc ký số hóa đơn đúng với CKS đã đăng ký ở tờ khai |
| SigningTimeNotInRegistration | Ngày ký không thuộc khoảng thời gian có hiệu lực của chứng thư số đã đăng ký với cơ quan thuế và được CQT chấp nhận | Tạo tờ khai hoặc ký số hóa đơn đúng với CKS đã đăng ký ở tờ khai |
| InvalidXMLData | XML không hợp lệ | Kiểm tra lại định dạng của XML |
| InvalidInvNo | Số hóa đơn không hợp lệ | Số hóa đơn thường có 8 ký tự, do hệ thống cấp tự động, người dùng k can thiệp vào dữ liệu của những field liên quan đến số hóa đơn |
| InvalidTaxCode | Mã số thuế không hợp lệ | Kiểm tra, tra cứu MST đang sử dụng |
| DuplicateInvoiceRefID | Trùng RefID của hóa đơn | – gọi đầu API lấy trạng thái hóa đơn theo RefID => cập nhật lại trạng thái xuống client (số hóa đơn, mã tra cứu, mã CQT cấp, …) |
| InvoiceNumberNotCotinuous | Số hóa đơn không liên tục | – PA chung là: gặp mã lỗi này thì retry gọi lại hàm phát hành
– có 2 TH mã lỗi này thường gặp: – TH1: kỹ thuật đơn vị dùng vòng lặp for gửi request liên tục => Xử lý: Báo kỹ thuật xử lý mỗi khi phát hành xong 1 request thì sleep khoảng 3s – TH2: có nhiều điểm máy trạm phát hành đồng thời => Xử lý: Tư vấn đơn vị mỗi 1 điểm máy trạm phát hành sẽ theo 1 ký hiệu khác nhau |
| SignSoftDream78Exception | Lỗi ký số HSM | Liên hệ MISA |
| SignEsignHSMError | Lỗi ký số HSM | Liên hệ MISA |
| CallSignServiceFail | Lỗi ký số | Liên hệ MISA |
| InvoiceDuplicated | Trùng hóa đơn – hóa đơn đã được phát hành | – Giả sử khi gọi api phát hành lỗi nó đang trả về số hóa đơn là 15
– PA chung là: gặp mã lỗi này thì retry gọi lại hàm phát hành => Xử lý: trường hợp retry vẫn bị thì liên hệ kỹ thuật MISA |
| Exception | Thực hiện bị Exception – Không rõ nguyên nhân | Liên hệ kỹ thuật MISA để tìm hiểu nguyên nhân |
| DeclarationNotExist | Chưa tồn tại Tờ khai/Thay đổi thông tin | Lập tờ khai và chờ CQT chấp nhận thì thực hiện phát hành hóa đơn |
| InvalidDeclaration | Chưa tồn tại Tờ khai/Thay đổi thông tin có trạng thái CQT chấp nhận | Lập tờ khai và chờ CQT chấp nhận thì thực hiện phát hành hóa đơn |
| ExistDeclarationNotReceive | Tồn tại tờ khai có trạng thái: Đã gửi CQT/ CQT Tiếp nhận | Chờ CQT chấp nhận tờ khai |
| ExistsInvoiceNextYear | Tồn tại hóa đơn của năm tiếp theo | Lập hóa đơn/ gửi tờ khai mới với loại hóa đơn sử dụng (thường liên quan đến hóa đơn có mã/không mã) |
| InvoiceTemplateNotValidInDeclaration | Tờ khai/Thay đổi thông tin không chứa loại hóa đơn đang phát hành | Lập hóa đơn/ gửi tờ khai mới với loại hóa đơn sử dụng (thường liên quan đến hóa đơn có mã/không mã) |
| InvalidInvoiceDate | Nếu ngày hóa đơn không hợp lệ, nhỏ hơn ngày của hóa đơn cuối cùng đã phát hành | Ngày hóa đơn phải đáp ứng không được nhỏ hơn ngày của số hóa đơn lớn nhất theo ký hiệu đang sử dụng. |
| InvoiceCannotReplace | Không thể thay thế hóa đơn đã hủy | Sai về nghiệp vụ, không có phương án xử lý |
| InvoiceCannotAdjust | Không thể điều chỉnh hóa đơn đã hủy/thay thế | Sai về nghiệp vụ, không có phương án xử lý |
| TaxReductionDateInValid | Ngày hóa đơn giảm thuế không hợp lệ | Ngày phát hành hóa đơn giảm thuế không nằm trong thời gian giảm thuế theo Quyết định |
| X509SubjectName | Không có SubjectName trên file XML đã ký | Lỗi về CKS, liên hệ các bên liên quan |
| X509Certificate | Không có chứng thư số | Lỗi về CKS, liên hệ các bên liên quan |
| InvoiceCannotReplaceByStatusNew | Hóa đơn gốc chưa được hủy, không thể thay thế | Cần hủy hóa đơn gốc trước khi phát hành/điều chỉnh hóa đơn |
| HasAdjustmentInvoice | Hóa đơn đã được lập hóa đơn điều chỉnh, không thể thay thế | Đã tồn tại hóa đơn điều chỉnh/thay thế, không thể thực hiện các nghiệp vụ điều chỉnh/thay thế nữa |



