You are on page 1of 37

TẬP ĐOÀN VIỄN THÔNG QUÂN ĐỘI VIETTEL

Tài liệu Mô tả webservice hóa đơn điện tử

Hà Nội, 01/2019
BẢNG GHI NHẬN THAY ĐỔI

Phiên bản Ngày Chi tiết


0.1 09/2017 Phiên bản khởi tạo
0.2 03/2018 Bổ sung thêm mục 2.1.11, 2.1.12, 2.1.13
0.3 09/2018 Bổ sung thêm 2.1.14, 2.1.15
1.0 09/2018 Bổ sung thêm chi tiết đặc tả bản tin

v1.0 Sinvoice: Tài liệu mô tả webservice


2/73
v1.0 Sinvoice: Tài liệu mô tả webservice
3/73
MỤC LỤC

Thuật ngữ và viết tắt..................................................................................................................................6

Mục đích và phạm vi..................................................................................................................................6

Mô hình kết nối...........................................................................................................................................6

Các tiêu chuẩn.............................................................................................................................................7

4.1. Tiêu chuẩn thời gian........................................................................................................................7


4.2. Tiêu chuẩn dữ liệu...........................................................................................................................8
4.3. Các ký tự đặc biệt...........................................................................................................................8

Các API kết nối............................................................................................................................................8

5.1. Các khái niệm chung.......................................................................................................................8


5.2. Phát hành/thay thế/điều chỉnh hóa đơn (HSM).............................................................................10
5.3. Lấy file hóa đơn............................................................................................................................12
5.4. Lấy file hóa đơn có mã số bí mật..................................................................................................14
5.5. Lấy file hóa đơn chuyển đổi (pdf)................................................................................................17
5.6. Hủy hóa đơn..................................................................................................................................19
5.7. Tra cứu hóa đơn............................................................................................................................21
5.8. Lấy thông tin trường động............................................................................................................26
5.9. Lập hóa đơn nháp..........................................................................................................................30
5.10. Lập hóa đơn theo lô....................................................................................................................31
5.11. Cập nhật kê khai thuế..................................................................................................................32
5.12. Cung cấp tình hình sử dụng hóa đơn theo dải.............................................................................33
5.13. Cung cấp danh sách hóa đơn theo khoảng thời gian...................................................................35
5.14. Gửi email cho các hoá đơn khách hàng......................................................................................37
5.15. Lập hóa đơn ký USB Token........................................................................................................38
5.16. Đẩy chữ ký vào trong usb token.................................................................................................40
5.17. Chuyển font.................................................................................................................................41
5.18. Cập nhật trạng thái thanh toán....................................................................................................42
5.19. Hủy trạng thái thanh toán............................................................................................................44
5.20. Xem trước hóa đơn nháp.............................................................................................................45

v1.0 Sinvoice: Tài liệu mô tả webservice


4/73
Đặc tả chi tiết đầu vào lập hóa đơn........................................................................................................45

1.1 Tổng quan......................................................................................................................................45


1.2 generalInvoiceInfo.........................................................................................................................46
1.3 sellerInfo........................................................................................................................................51
1.4 buyerInfo........................................................................................................................................53
1.5 extAttribute....................................................................................................................................56
1.6 payments........................................................................................................................................56
1.7 deliveryInfo....................................................................................................................................56
1.8 itemInfo..........................................................................................................................................58
1.9 discountItemInfo............................................................................................................................66
1.10 taxBreakdowns.............................................................................................................................66
1.11 summarizeInfo.............................................................................................................................68
1.12 metadata.......................................................................................................................................71
1.13 meterReading...............................................................................................................................72

Kiểm tra API bằng POSTMAN..............................................................................................................73

v1.0 Sinvoice: Tài liệu mô tả webservice


5/73
Thuật ngữ và viết tắt
STT Từ viết tắt Nghĩa đầy đủ
1 XML eXtensible Markup Language - Ngôn ngữ Đánh dấu Mở rộng
2 VAN Taxation Value Added Network
3 ICC Invoice Certification Center
4 PSD Portable Security Device
5 SGML Standard Generalized Markup Language
6 W3C World Wide Web Consortium, viết tắt W3C, lập ra các chuẩn cho
Internet, nhất là cho World Wide Web
7 SInvoice Dịch vụ/hệ thống hóa đơn điện tử của Viettel
8 HTTH Hệ thống phần mềm kế toán, quản trị doanh nghiệp tích hợp với hệ thống
SInvoice để phát hành hóa đơn.

Mục đích và phạm vi


Mô tả chi tiết chuẩn kết nối để các hệ thống có thể kết nối vào dịch vụ Hóa đơn điện tử đại trà của
Viettel nhằm đảm bảo phát hành đúng thông tin.

Mô hình kết nối

Hệ thống SInvoice đóng vai trò nhận dữ liệu hóa đơn từ các hệ thống bên ngoài (hệ thống tích
hợp) gửi về và phát hành thành hóa đơn theo mẫu mà doanh nghiệp đã chọn. Các API của hệ thống
SInvoice được cung cấp theo chuẩn Restful Webservice, hỗ trợ cả XML và Json.

Ban đầu, doanh nghiệp thực hiện các thao tác khai báo mẫu hóa đơn trên web của hệ thống
SInvoice bao gồm:

- Khai báo tên mẫu hóa đơn

- Chọn mẫu hóa đơn

- Khai báo dải hóa đơn

- Lập thông báo phát hành

v1.0 Sinvoice: Tài liệu mô tả webservice


6/73
- Đăng ký thông tin chứng thư số

Chi tiết các bước hướng dẫn có thể xem thêm tại: https://sinvoice.viettel.vn/ho-tro/huong-dan-su-
dung/mo-ta-tong-the-cac-buoc-dang-ky-va-su-dung-dich-vu-hoa-don-dien-tu

Sau khi các thông tin khai báo mẫu hóa đơn đã được thực hiện đầy đủ trên SInvoice, doanh nghiệp
có thể thông qua các hệ thống bên ngoài để gọi các API thực hiện việc

- Phát hành/Thay thế/điều chỉnh hóa đơn

- Hủy hóa đơn

- Tải file hóa đơn

- Tra cứu hóa đơn

- Lập hóa đơn nháp

Lưu ý 1: Lập hóa đơn sử dụng chữ ký số HSM và USB token sử dụng các hàm khác nhau. HSM sử
dụng 1 hàm duy nhất, việc tương tác với chữ ký do hệ thống Hóa đơn điện tử đảm nhiệm. USB sử
dụng 2 hàm khác nhau, việc tương tác với chữ ký do phần mềm tích hợp đảm nhiệm. Khách hàng cần
được tư vấn trước khi sử dụng.

Lưu ý 2: Một doanh nghiệp có thể có nhiều mã số thuế (doanh nghiệp, chi nhánh), mẫu hóa đơn, ký
hiệu hóa đơn. Vì vậy các hệ thống tích hợp phải cho phép DN cấu hình nhiều thông tin để gửi sang hệ
thống SInvoice.

Các tiêu chuẩn


4.1. Tiêu chuẩn thời gian

- C#:

o Đinh dạng: yyyy-MM-ddTHH:mm:sszzz

o Ví dụ: 2009-06-15T08:45:30+07:00

- Java:

o Định dạng: yyyy-MM-dd'T'HH:mm:ssZ

o Ví dụ: 2019-02-10T23:46:53+0700

- Format: yyyy-MM-dd

o Ví dụ: 2019-03-06

v1.0 Sinvoice: Tài liệu mô tả webservice


7/73
o Lưu ý: gửi format này sang hệ thống sẽ tự động nhận phần giờ là 00:00:00

Các ngôn ngữ khác có thể xác định thời gian như sau:

- Sử dụng chuẩn UNIX time: là hệ thống mô tả một điểm trong thời gian. Thời gian Unix được
định nghĩa bằng số giây kể từ 00:00:00 theo giờ Phối hợp Quốc tế (UTC) ngày 1 tháng 1 năm
1970, trừ đi giây nhuận. Tính đến mili giây. Tham khảo https://www.epochconverter.com/

o Ví dụ: 1551872514000.

o Lưu ý: Đối với UNIX time chỉ sử dụng cho đầu vào là json.

- Lưu ý: múi giờ hệ thống SInvoice đang chạy là GMT+7, trong trường hợp gửi UNIX time sang
là giờ UTC thì hệ thống sẽ tự động chuyển sang GMT+7 (cộng thêm 7 giờ vào giờ gốc).

4.2. Tiêu chuẩn dữ liệu

- Hệ thống SInvoice hỗ trợ dữ liệu chuẩn Unicode (UTF-8)

- Đối với các dữ liệu gửi sang, hệ thống SInvoice sẽ để nguyên format dữ liệu để hiển thị. Ngoài
trừ với dữ liệu số (liên quan đến tiền, số lượng, đơn giá, thuế suất), tên ngân hàng, tài khoản
ngân hàng. Dữ liệu số gửi sang luôn có định dạng là [0-9.]+. Ví dụ như 100000.1234. Template của
SInvoice sẽ tự động format hiển thị. Đối với dữ liệu như tên ngân hàng, tài khoản có thể nhập nhiều,
cách nhau bởi dấu “;”.

4.3. Các ký tự đặc biệt

Các ký tự đặc biệt cần lưu ý và cách xử lý.

Các API kết nối


5.1. Các khái niệm chung

Giải thích:

- Action: Phương thức và hàm thực thi (ví dụ: “/InvoiceAPI/InvoiceWS” phương thức POST).

- Data: định dạng dữ liệu truyền vào.

- Đầu ra webservice: Đối tượng Response mô tả trạng thái lỗi Webservice trả về và đối tượng
dữ liệu Webservice trả về

Mã lỗi Mô tả mã lỗi
200 OK Success
201 Created Success of a resource creation when using the POST method

v1.0 Sinvoice: Tài liệu mô tả webservice


8/73
400 Bad Request The request parameters are incomplete or missing
403 Forbidden The action or the request URI is not allowed by the system
404 Not Found The resource referenced by the URI was not found
422 Unprocessable Entity One of the requested action has generated an error
429 Too Many Requests Your application is making too many requests and is being rate limited
500 Internal Server Error Used in case of time out or when the request, otherwise correct, was not
able to complete.
- Thông tin hệ thống test (Thực hiện test kết nối trên hệ thống test không test kết nối trên hệ
thống thật)

Link web: https://demo-sinvoice.viettel.vn

Link API: https://demo-sinvoice.viettel.vn:8443/InvoiceAPI

Link nội bộ: https://10.60.105.238:8443

- Thông tin hệ thống thật (Chỉ thực hiện phát hành hóa đơn thật sự)

Link web: https://business-sinvoice.viettel.vn

Link API: https://API-sinvoice.viettel.vn:443

Link nội bộ: https://10.60.135.246:443

- Header xác thực: Header xác thực được gửi đi cùng mỗi request trong quá trình sử dụng. Xác
thực bằng chuỗi user:pass (Basic Authentication) được mã hóa dạng Base64. Header xác thực
có format Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l

Chi tiết xem thêm tại link: https://en.wikipedia.org/wiki/Basic_access_authentication

Ví dụ: Với user/pass: 0100109106-997/123456a@A (Tài khoản test sẽ được gửi riêng)

Chuỗi đầu vào mã hóa sẽ là 0100109106-997:123456a@A

Code mã hóa tham khảo (Java):


String encodedAuth = new String(Base64.encodeBase64 ("0104831030:123".getBytes (Charset.forName("utf-
8"))));
Chuỗi mã hóa: MDEwNDgzMTAzMDoxMjM=

Một số thư viện HTTP client cũng hỗ trợ Basic Authentication này.

Lưu ý: Với mỗi user, hệ thống chỉ cho phép một vài địa chỉ IP nhất định truy cập đến web service.
IP phải là IP public của hệ thống đối tác. Để cập nhật IP, người dùng có thể tự cập nhật thông qua các
bước như sau:

B1: Vào hệ thống trên web, sử dụng đúng acc đang sử dụng để tích hợp

v1.0 Sinvoice: Tài liệu mô tả webservice


9/73
B2. Vào chức năng: Quản lý thông tin doanh nghiệp/ Quản lý người dùng

B3. Tìm đến user cần add IP, chọn buttom Cập nhật

B4: Trên màn hình cập nhật thông tin, trường thông tin địa chỉ IP được khai báo theo quy định như
sau: Các IP liên tiếp phân cách bằng ký tự |.

Ví dụ: 2.2.2.2|3.3.3.3|4.4.4.4

Chi tiết xem tại: https://sinvoice.viettel.vn/ho-tro/huong-dan-su-dung/7-huong-dan-cap-nhat-quan-


ly-nguoi-dung

Bất cứ trường hợp nào sai tài khoản/mật khẩu hay IP sẽ nhận về kết quả trả về là 500
Request Fail.

- Header định dạng dữ liệu: Dữ liệu gửi lên Web service có thể là JSON, XML, FormParam hay
QueryParam

o Với JSON: Thêm header: Content-Type: application/json

o Với XML: Thêm header: Content-Type: application/xml

o Với FormParam: Thêm header: Content-Type: application/x-www-form-urlencoded

o Với QueryParam: Không cần header, tham số truyền vào qua URL

- Dữ liệu trả về từ Web service có thể là JSON hay XML

o Để nhận về JSON: Thêm header: Accept: application/xml

o Để nhận về XML: Thêm header: Accept: application/json

Lưu ý: Do cần thời gian kết nối và thời gian xử lý yêu cầu nên kết quả trả về có thể phải chờ 1 khoảng
thời gian (khuyến nghị để thời gian timeout khi gửi yêu cầu khoảng 60-90 giây)

5.2. Phát hành/thay thế/điều chỉnh hóa đơn (HSM)

Lưu ý: chi tiết các trường thông tin chi tiết xem ở mục 6

 Đầu vào:

Webservice dùng chung trong các trường hợp lập hóa đơn gốc, lập hóa đơn điều chỉnh tiền, lập
hóa đơn điều chỉnh thông tin, lập hóa đơn thay thế

- Action (POST): /InvoiceAPI/InvoiceWS/createInvoice/{supplierTaxCode}

Trong đó: {supplierTaxCode}: mã số thuế của doanh nghiệp/chi nhánh phát hành

v1.0 Sinvoice: Tài liệu mô tả webservice


10/73
Tên trường Kiểu dữ liệu, Mô tả
ràng buộc
supplierTaxCode Required: true Mã số thuế của doanh nghiệp/chi nhánh phát hành hóa đơn.
DataType: Một doanh nghiệp có thể có nhiều mã số thuế
String Mẫu 1: 0312770607
Minlength: 10 Mẫu 2: 0312770607-001
Maxlength: 14 Hệ thống sẽ dùng trường thông tin này để kiểm tra và lấy thông
Format : [0-9-]+ tin về mã số thuế của chi nhánh/doanh nghiệp.
https://vi.wikipedia.org/wiki/Thu%E1%BA%BF_Vi%E1%BB
%87t_Nam
- Data: Dữ liệu mẫu lập hóa đơn.

Lưu ý: các dữ liệu này bao gồm tất cả các trường dữ liệu có thể có khi lập hóa đơn. Không phải tất cả
các trường thông tin đều bắt buộc, người dùng có thể bỏ bớt cho phù hợp với nhu cầu của khách hàng.
Chi tiết các trường thông tin bắt buộc hoặc không bắt buộc xem ở mục 6.

Dữ liệu mẫu JSON XML


Hóa đơn gốc

HD_Goc.txt HD_Goc.xml

Hóa đơn thay thế

HD_ThayThe.txt HD_ThayThe.xml

Hóa đơn điều chỉnh thông tin (dự


kiến bỏ theo NĐ 119)
HD_DieuChinh_ThongTin.txt HD_DieuChinh_ThongTin.xml

Hóa đơn điều chỉnh tiền (dự kiến


bỏ theo NĐ 119)
HD_DieuChinh_Tien.txt HD_DieuChinh_Tien.xml

 Đầu ra:

Đối tượng Response mô tả trạng thái lỗi Webservice trả về và đối tượng dữ liệu Webservice trả về:

 Dữ liệu về thông tin về hóa đơn đã lập


{
"errorCode": "",
"description": "",
"result": {
"supplierTaxCode": 1258694363,
"invoiceNo": AA/16E0000001,
"transactionID": 12523522245,
"reservationCode": AXHBNK8I0H
}
}

v1.0 Sinvoice: Tài liệu mô tả webservice


11/73
Định dạng XML
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<createInvoiceOutput>
<result>
<invoiceNo>BD/17E0000110</invoiceNo>
<reservationCode>2M9U3PU638</reservationCode>
<supplierTaxCode>0100109106</supplierTaxCode>
<transactionID>1514296135756</transactionID>
</result>
</createInvoiceOutput>

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>


<createInvoiceOutput>
<description>Phải chọn loại template hóa đơn</description>
<errorCode>TEMPLATE_NOT_FOUND</errorCode>
</createInvoiceOutput>
Mô tả

Tên trường Mô tả
errorCode Mã lỗi (giá trị là null nếu lập hóa đơn thành công)
description Mô tả lỗi (giá trị là null nếu lập hóa đơn thành công)
supplierTaxCode Mã số thuế người bán (doanh nghiệp phát hành hóa đơn)
invoiceNo Số hóa đơn ví dụ: AA/16E0000001
transactionID Id của giao dịch
reservationCode Mã số bí mật dùng để tra khách hàng tra cứu

5.3. Lấy file hóa đơn

Webservice dùng cho hệ thống tích hợp có thể lấy các file hóa đơn sau khi được lập ở bước 5.2 về.

Lưu ý: Hệ thống hóa đơn điện tử chạy theo cơ chế bất đồng bộ, vì vậy hệ thống đẩy hóa đơn lên cơ sở
dữ liệu sau khi nhận request phát hành hóa đơn khoảng 1s. Vì vậy, khi tích hợp, request lấy file hóa
đơn nên được thực hiện sau từ 2-5 giây sau khi phát hành hóa đơn.

 Đầu vào:
• Action (POST) URL: /InvoiceAPI/InvoiceUtilsWS/getInvoiceRepresentationFile
• Các tham số của đối tượng CommonDataInput

Tên tham số Kiểu dữ liệu, Mô tả


ràng buộc
supplierTaxCode Required: true Mã số thuế của doanh nghiệp/chi nhánh phát hành hóa
DataType: String đơn. Một doanh nghiệp có thể có nhiều mã số thuế
Minlength: 10 Mẫu 1: 0312770607
Maxlength: 14 Mẫu 2: 0312770607-001
Format : [0-9-]+ https://vi.wikipedia.org/wiki/Thu%E1%BA%BF_Vi
%E1%BB%87t_Nam

v1.0 Sinvoice: Tài liệu mô tả webservice


12/73
invoiceNo Required : true Số hóa đơn, bao gồm ký hiệu hóa đơn và số thứ tự hóa
DataType: String đơn
Format : [A-Z]{2}/
[a-zA-Z0-9]{10}
templateCode Required : true Mã mẫu hóa đơn
DataType: String Mã mẫu hóa đơn, tuân thủ theo quy định ký hiệu mẫu hóa
Minlength : 11 đơn của Thông tư hướng dẫn thi hành nghị định số
Maxlength : 11 51/2010/NĐ-CP
Format : [a-zA-Z0- Chi tiết xem PL1 Thông tư 39/2014/TT-BTC
9]{7}/[0-9]{3}
transactionUuid Required : false Chuỗi kiểm tra dữ liệu (fkey) được truyền vào khi lập hóa
DataType: String đơn. Chi tiết xem mục 6.2
Minlength : 10
Maxlength : 36
Format : N/A
fileType Required : false Loại file muốn tải về, các định dạng được phép ZIP, PDF
DataType: String
Minlength : 3
Maxlength : 3
Format : N/A
paid Required : false true – Đã thanh toán
DataType: boolean false – Chưa thanh toán
Minlength : 3
Maxlength : 3
Format : N/A
Ví dụ mẫu và các trường dữ liệu:

- JSON:

"supplierTaxCode":"0100109106",

"invoiceNo":"AA/17E0000166",

"pattern":"01GTKT0/151",

"transactionUuid":"testuuid9999999",

"fileType":"ZIP"

- XML:

v1.0 Sinvoice: Tài liệu mô tả webservice


13/73
<?xml version="1.0" encoding="UTF-8" ?>

<commonDataInput>

<supplierTaxCode>0100109106</supplierTaxCode>

< invoiceNo>AA/17E0000166</invoiceNo >

< pattern>01GTKT0/151</ pattern >

< transactionUuid >ZIP</ transactionUuid >

< fileType>ZIP</fileType >

</commonDataInput>

 Đầu ra:

Đối tượng Response với HTTPStatus và output Entity.

Tên trường Mô tả
errorCode Mã lỗi (giá trị là null không có lỗi gì xảy ra)
description Mô tả lỗi (giá trị là null không có lỗi gì xảy ra)
fileName Tên file tải về
fileToBytes Nội dung file được chuyển thành kiểu byte

5.4. Lấy file hóa đơn có mã số bí mật

Cho phép lấy file hóa đơn có kiểm tra mã số bí mật.

Lưu ý: Hệ thống hóa đơn điện tử chạy theo cơ chế bất đồng bộ, vì vậy hệ thống đẩy hóa đơn lên cơ sở
dữ liệu sau khi nhận request phát hành hóa đơn khoảng 1s. Vì vậy, khi tích hợp, request lấy file hóa
đơn nên được thực hiện sau từ 2-5 giây sau khi phát hành hóa đơn.

 Đầu vào:

Action (POST/GET): InvoiceAPI/InvoiceUtilsWS/getInvoiceFilePortal/

- Data: Dạng FormParam (với method là POST) hoặc QueryParam (với method là GET) gồm
các tham số

Tên trường Kiểu dữ liệu, ràng Mô tả


buộc
supplierTaxCod Required: true Mã số thuế của doanh nghiệp/chi nhánh phát hành hóa đơn.
e DataType: String Một doanh nghiệp có thể có nhiều mã số thuế
Minlength: Mẫu 1: 0312770607
Maxlength: 11 Mẫu 2: 0312770607-001
Format: [a-zA-Z0-9/]+
templateCode Hiện đang chưa có, cần bổ sung, không bắt buộc do có

v1.0 Sinvoice: Tài liệu mô tả webservice


14/73
KH cũ không truyền.
invoiceNo Required: true Là ký hiệu hóa đơn + số hóa đơn vd: AA/16E0000001, tuân
DataType: String theo chuẩn của cục thuế
Minlength: 7
Maxlength: 13
Format: [a-zA-Z0-9/]+
buyerIdNo Required: false Số giấy tờ của khách hàng
DataType: String
Minlength:
Maxlength: 100
Format:
reservationCode Required: true Mã số bí mật
DataType: String
Minlength:
Maxlength: 100
Format:
fileType Required: true Loại file: xml, zip
DataType: String
Minlength:
Maxlength: 100
Format:
strIssueDate Required: true Ngày lập hóa đơn. Cần bổ sung format hỗ trợ, trường
DataType: String này không nên bắt buộc. Có thể bỏ đi.
Minlength:
Maxlength:
Format:
yyyyMMddHHmmss
- Ví dụ trường hợp dùng POST và FormParam
Body: supplierTaxCode=0100109106&invoiceNo=AC
%2F18E0000039&strIssueDate=20180130094136&fileType=zip&reservationCode=HXY9RJWTND
- Ví dụ với trường hợp dùng GET và QueryParam:
/InvoiceAPI/InvoiceUtilsWS/getInvoiceFilePortal?supplierTaxCode=0100109106&invoiceNo=NO
%2F17E0000017&fileType=zip&strIssueDate=20171227161438&reservationCode=LE3IMP8O5Y

Đầu ra:

Đối tượng Response mô tả trạng thái lỗi Webservice trả về và đối tượng dữ liệu Webservice trả về:

- Ví dụ: kết quả trả về với dạng FormParam

v1.0 Sinvoice: Tài liệu mô tả webservice


15/73
Ví dụ kết quả trả về với XML
<?xml version="1.0" encoding="UTF-8" ?>

<invoiceFileOutput>

<fileName>LE3IMP8O5Y-NO_17E0000017</fileName>

<fileToBytes>UEsDBBQACAgIAJV8m0sAAAAAAAAAAAAAAAALAAAAaW52b2ljZS54c2ztPVtvG9l5z1u</fileToBytes>

<paymentStatus>true</paymentStatus>

</invoiceFileOutput>

Bảng mã lỗi :

Mã lỗi Mô tả mã lỗi
200 OK Success
201 Created Success of a resource creation when using the POST method
400 Bad Request The request parameters are incomplete or missing
403 Forbidden The action or the request URI is not allowed by the system
404 Not Found The resource referenced by the URI was not found
422 Unprocessable Entity One of the requested action has generated an error
429 Too Many Requests Your application is making too many requests and is being rate
limited
500 Internal Server Error Used in case of time out or when the request, otherwise correct, was
not able to complete.
Mô tả

Tên trường Mô tả
errorCode Mã lỗi (giá trị là null nếu lấy hóa đơn thành công)
description Mô tả lỗi (giá trị là null nếu lấy hóa đơn thành công)
fileToBytes
Mảng bytes file hóa đơn, chuyển mảng bytes này ra file sẽ được file chứa các
thông tin của hóa đơn, ví dụ file .zip bao gồm file .xml, .xsl, ảnh logo, watermark,
qrcode

v1.0 Sinvoice: Tài liệu mô tả webservice


16/73
Code chuyển ra file Java

FileUtils.writeByteArrayToFile(newFile("D:/viettel/fileName.zip"), output.getFileToBytes());
paymentStatus Trạng thái thanh toán
fileName Tên file

5.5. Lấy file hóa đơn chuyển đổi (pdf)

Cho phép hệ thống tích hợp lấy file hóa đơn chuyển đổi của hóa đơn điện tử. Trong trường hợp hóa
đơn đã được chuyển đổi trước đó, SInvoice sẽ cho tải lại file cũ mà không tạo ra file mới.

Lưu ý: Hệ thống hóa đơn điện tử chạy theo cơ chế bất đồng bộ, vì vậy hệ thống đẩy hóa đơn lên cơ sở
dữ liệu sau khi nhận request phát hành hóa đơn khoảng 1s. Vì vậy, khi tích hợp, request lấy file hóa
đơn nên được thực hiện sau từ 2-5 giây sau khi phát hành hóa đơn.

 Đầu vào:

- Action (POST): InvoiceAPI/InvoiceWS/createExchangeInvoiceFile/

- Data: Dạng FormParam (với method là POST) hoặc QueryParam (với method là GET) gồm
các tham số:

Tên trường Kiểu dữ liệu, Mô tả


ràng buộc
supplierTaxCode Required : true Mã số thuế bên bán
DataType: String Mã mẫu hóa đơn, tuân thủ theo quy định ký hiệu mẫu hóa đơn
Minlength : của Thông tư hướng dẫn thi hành nghị định số 51/2010/NĐ-
Maxlength : 11 CP
Format : [a-zA-
Z0-9/]+
templateCode Hiện đang chưa có, cần bổ sung, không bắt buộc do có
KH cũ không truyền.
invoiceNo Required : true Là ký hiệu hóa đơn + số hóa đơn vd : AA/16E0000001
DataType: String
Minlength : 7
Maxlength : 13
Format : [a-zA-
Z0-9/]+
strIssueDate Required : true Ngày lập hóa đơn. Bổ sung format hỗ trợ, trường này
DataType: String không nên bắt buộc.
Minlength :
Maxlength :

v1.0 Sinvoice: Tài liệu mô tả webservice


17/73
Format:
yyyyMMdd
exchangeUser Required : true Tên người chuyển đổi
DataType: String
Minlength : 1
Maxlength : 100
- Data: định dạng FormParam của các tham số truyền vào.

Body: supplierTaxCode=0100109106&invoiceNo=AC
%2F18E0000039&strIssueDate=20180130094136&exchangeUser=%C4%90%E1%BA%B7ng%20T.T
%20T%C3%A2m

- Ví dụ với trường hợp dùng GET và QueryParam:

InvoiceAPI/InvoiceWS/createExchangeInvoiceFile?
supplierTaxCode=0100109106&invoiceNo=AA%2F17E0037914
&strIssueDate=20170907161438&exchangeUser=%C4%90%E1%BA%B7ng%20T.T%20T
%C3%A2m

 Đầu ra:

Đối tượng Response mô tả trạng thái lỗi Webservice trả về và đối tượng dữ liệu Webservice trả về:

 Bảng mã lỗi :

Mã lỗi Mô tả mã lỗi
200 OK Success
201 Created Success of a resource creation when using the POST method
400 Bad Request The request parameters are incomplete or missing
403 Forbidden The action or the request URI is not allowed by the system
404 Not Found The resource referenced by the URI was not found
422 Unprocessable Entity One of the requested action has generated an error
429 Too Many Requests Your application is making too many requests and is being rate
limited
500 Internal Server Error Used in case of time out or when the request, otherwise correct, was
not able to complete.
Mô tả

Tên trường Mô tả
errorCode Mã lỗi (giá trị là null nếu lấy hóa đơn thành công)
description Mô tả lỗi (giá trị là null nếu lấy hóa đơn thành công)
fileToBytes Mảng bytes file hóa đơn, chuyển mảng bytes này ra file sẽ được file pdf hóa đơn
chuyển đổi

Code chuyển ra file Java

v1.0 Sinvoice: Tài liệu mô tả webservice


18/73
FileUtils.writeByteArrayToFile(newFile("D:/viettel/fileName.pdf"),
output.getFileToBytes());
fileName Tên của file hóa đơn
Hình ảnh Response trả về

5.6. Hủy hóa đơn

Cho phép xóa bỏ (chuyển hóa đơn sang trạng thái hóa bỏ) trên hệ thống SInvoice, từ hệ thống tích
hợp.

 Đầu vào:

Action (POST): InvoiceAPI/InvoiceWS/cancelTransactionInvoice

- Data: Dạng FormParam (với method là POST) hoặc QueryParam (với method là GET) gồm
các tham số:

Tên trường Kiểu dữ liệu, ràng Mô tả


buộc
supplierTaxCode Required : true Mã số thuế của doanh nghiệp/chi nhánh phát hành hóa
DataType: String đơn. Một doanh nghiệp có thể có nhiều mã số thuế
Minlength : Mẫu 1: 0312770607
Maxlength : 11 Mẫu 2: 0312770607-001
Format : [a-zA-Z0-9/]+
templateCode Hiện đang chưa có, cần bổ sung, không bắt buộc do
có KH cũ không truyền.
invoiceNo Required : true Là ký hiệu hóa đơn + số hóa đơn vd : AA/16E0000001
DataType: String
Minlength : 7
Maxlength : 13
Format : [a-zA-Z0-
9/]+

v1.0 Sinvoice: Tài liệu mô tả webservice


19/73
strIssueDate Required : true Ngày lập hóa đơn Cần chi tiết format hỗ trợ, không
DataType: String bắt buộc.
Minlength : (không vượt quá ngày hiện tại)
Maxlength :
Format:
yyyyMMddHHmmss
additionalRefere Required : true Tên văn bản thỏa thuận hủy hóa đơn
nceDesc DataType: String
Minlength : 1
Maxlength : 100
additionalRefer Required : true Ngày thỏa thuận Cần chi tiết format hỗ trợ
enceDate DataType: String (không vượt quá ngày hiện tại)
Minlength :
Maxlength :
Format:
yyyyMMddHHmmss
Tiến trình tiến hành cập nhật trạng thái hóa đơn về đã hủy trong database, và thêm các thông tin về văn
bản thỏa thuận và ngày thỏa thuận.

Form Data ví dụ:


supplierTaxCode=0100109106-997&invoiceNo=AB
%2F17E0000325&strIssueDate=20171219081259&additionalReferenceDesc=hello&additionalReferenceDate=201712220
81259
 Đầu ra:

Đối tượng Response mô tả trạng thái lỗi Webservice trả về và đối tượng dữ liệu Webservice trả về:

Ví dụ trả về thành công:


{
"errorCode": null,
"description": "CANCEL TRANSACTION INVOICE SUCCESS"
}
 Bảng mã lỗi :

Mô tả

Tên trường Mô tả
errorCode Mã lỗi (giá trị là null nếu lấy hóa đơn thành công)
description Mô tả lỗi (giá trị là null nếu lấy hóa đơn thành công),
Kiểm tra hóa đơn có phải là các hóa đơn gốc, chưa kê khai thuế
,trạng thái đã thanh toán, không phải hóa đơn điều chỉnh , hóa
đơn thay thế và không và hóa đơn điều chỉnh hủy hay không?

v1.0 Sinvoice: Tài liệu mô tả webservice


20/73
Nếu phải trả lại thông tin hóa đơn không hợp lệ

5.7. Tra cứu hóa đơn

Trường hợp doanh nghiệp có trang webportal để tra cứu hóa đơn thì có thể kết nối đến
webservice Hóa đơn điện tử của Viettel để tra cứu hóa đơn theo các điều kiện.

Ví dụ khách hàng của doanh nghiệp có thể tra cứu được các hóa đơn của mình theo khoảng thời
gian.

 Đầu vào:

o Action(POST) URL: /InvoiceAPI/InvoiceUtilsWS/getInvoices/


{supplierTaxCode}

 Trong đó:

{supplierTaxCode} : mã số thuế của đơn vị phát hành (có thể là mã số thuế của doanh
nghiệp hoặc chi nhánh của doanh nghiệp)

Tên trường Kiểu dữ liệu, Mô tả


ràng buộc
supplierTaxCode Required : true Mã số thuế của doanh nghiệp/chi nhánh phát hành hóa
DataType: String đơn. Một doanh nghiệp có thể có nhiều mã số thuế
Minlength : Mẫu 1: 0312770607
Maxlength : 15 Mẫu 2: 0312770607-001
Format : [a-zA-Z0-
9/]+
GetInvoiceInput Object Đối tượng gồm các trường dữ liệu tham số
- Data: JSON hoặc XML

o Các tham số của đối tượng GetInvoiceInput

Tên tham số Mô tả
Kiểu dữ liệu, ràng
Required : false
invoiceNo Là ký hiệu hóa đơn + số hóa đơn vd :
DataType: String
AA/16E0000001
Minlength : 7
Maxlength : 13

Format : [a-zA-Z0-
9/]+
Required : true
startDate Từ ngày

v1.0 Sinvoice: Tài liệu mô tả webservice


21/73
DataType: Date
Minlength :
Maxlength : 50
Format :
Required : true
endDate Đến ngày
DataType: Date
Minlength :
Maxlength : 50
Format :
Required : false
invoiceType Loại hóa đơn, là một trong các giá trị
DataType: String
01GTKT, 02GTTT, 03XKNB, 04HGDL,
Minlength : 6
Maxlength : 6 07KPTQ
Format : [a-zA-Z0-
9/]+
Required : true
rowPerPage Số dòng trên một trang. Do webservice thực hiện
DataType: Number
phân trang nên
Minlength :
Maxlength : 18
Required : true
pageNum Chỉ số trang
DataType: Number
Minlength :
Maxlength : 18
Required : true
contractNo Số hợp đồng
DataType: Number
Minlength :
Maxlength : 18
Required : false
contractId Id hợp đồng
DataType: Number
Minlength :
Maxlength : 18
Required : false
customerId Id khách hàng của doanh nghiệp
DataType: Number
Minlength :
Maxlength : 18
Required : false
buyerTaxCode Mã số thuế của khách hàng
DataType: Long
Minlength :
Maxlength : 15

v1.0 Sinvoice: Tài liệu mô tả webservice


22/73
Required : false
buyerIdNo Số giấy tờ của khách hàng
DataType: String
Required : false
templateCode Mã mẫu hóa đơn.
DataType: String
Minlength : 11
Maxlength : 11
Required : false
invoiceSeri Seri hóa đơn
DataType: String
Minlength : 6
Maxlength : 6
Format : [a-zA-Z0-
9/]+
Chú ý: để tra cứu được hóa đơn theo một khách hàng của doanh nghiệp thì cần có một trong các
thông tin:

 buyerTaxCode: Mã số thuế của khách hàng của doanh nghiệp

 contractNo: Số hợp đồng

 contractId: Id hợp đồng

 customerId: Id của khách hàng của doanh nghiệp

 buyerIdNo: Số giấy tờ của khách hàng của doanh nghiệp

Ví dụ gửi dữ liệu với JSON:


{
"startDate" : "2017-12-12T10:14:32.611+07:00",
"endDate" : "2017-12-31T10:14:32.611+07:00",
"invoiceType" : "02GTTT",
"rowPerPage" : 20,
"pageNum" : 1,
"templateCode" : null
}
Ví dụ gửi dữ liệu với XML:
<?xml version="1.0" encoding="UTF-8" ?>
<getInvoiceInput>
<startDate>2017-12-12T10:14:32.611+07:00</startDate>
<endDate>2017-12-31T10:14:32.611+07:00</endDate>
<invoiceType>02GTTT</invoiceType>
<rowPerPage>20</rowPerPage>
<pageNum>1</pageNum>
<templateCode />
<contractNo />
<contractId />
<buyerTaxCode />
<invoiceSeri />

v1.0 Sinvoice: Tài liệu mô tả webservice


23/73
</getInvoiceInput>
 Đầu ra:

{
"errorCode": null,
"description": null,
"totalRow": 286,
"invoices": [
{
"invoiceId": 213469,
"invoiceType": "02GTTT",
"adjustmentType": "1",
"templateCode": "02GTTT0/089",
"invoiceSeri": "QT/17E",
"invoiceNumber": "0000003",
"invoiceNo": "QT/17E0000003",
"currency": "VND",
"total": 3800000,
"issueDate": 1514281815000,
"issueDateStr": null,
"state": null,
"requestDate": null,
"description": null,
"buyerIdNo": null,
"stateCode": null,
"subscriberNumber": null,
"paymentStatus": 1,
"viewStatus": 1,
"downloadStatus": null,
"exchangeStatus": null,
"numOfExchange": null,
"createTime": 1514281826000,
"contractId": null,
"contractNo": null,
"supplierTaxCode": "0100109106",
"buyerTaxCode": "6200000230",
"totalBeforeTax": 3800000,
"taxAmount": 0,

v1.0 Sinvoice: Tài liệu mô tả webservice


24/73
"taxRate": null,
"paymentMethod": null,
"paymentTime": null,
"customerId": null,
"buyerName": "Trần Trung Dũng",
"no": null,
"paymentStatusName": null
}
}
Hoặc XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<invoicesOutput>

<invoices>

<adjustmentType>1</adjustmentType>

<buyerName>Trần Trung Dũng</buyerName>

<buyerTaxCode>6200000230</buyerTaxCode>

<createTime>2017-12-26T16:50:26+07:00</createTime>

<currency>VND</currency>

<invoiceId>213469</invoiceId>

<invoiceNo>QT/17E0000003</invoiceNo>

<invoiceNumber>0000003</invoiceNumber>

<invoiceSeri>QT/17E</invoiceSeri>

<invoiceType>02GTTT</invoiceType>

<issueDate>2017-12-26T16:50:15+07:00</issueDate>

<paymentStatus>1</paymentStatus>

<supplierTaxCode>0100109106</supplierTaxCode>

<taxAmount>0</taxAmount>

<templateCode>02GTTT0/089</templateCode>

<total>3800000</total>

<totalBeforeTax>3800000</totalBeforeTax>

v1.0 Sinvoice: Tài liệu mô tả webservice


25/73
<viewStatus>1</viewStatus>

</invoices>

</invoicesOutput>

Đối tượng Response với HTTPStatus và output Entity.

Tên trường Mô tả
errorCode Mã lỗi (giá trị là null lấy hóa đơn thành công)
description Mô tả lỗi (giá trị là null lấy hóa đơn thành công)
List<InvoiceBean> Danh sách các bản ghi hóa đơn thỏa mãn điều kiện

5.8. Lấy thông tin trường động

Với mỗi mẫu hóa đơn, có thể có những thông tin trường động khác nhau (các trường thông tin ngoài
các trường tĩnh được mô tả ở mục 6). SInvoice cho phép các hệ thống tích hợp có thể lấy thông tin
trường động của một mẫu hóa đơn cụ thể mà khách hàng sử dụng.

 Đầu vào:

- Action (GET) có truyền Query Parameter: /InvoiceAPI/InvoiceWS/getCustomFields?


taxCode=&templateCode=

- Ví dụ: /InvoiceAPI/InvoiceWS/getCustomFields?
taxCode=0100109106&templateCode=01GTKT0%2f085

- Data: dữ liệu truyền vào dạng Query Param gồm các tham số:

Tên trường Kiểu dữ liệu, Mô tả


ràng buộc
taxCode Required : true Mã số thuế
DataType: String
Minlength :
Maxlength : 11
Format : [a-zA-
Z0-9/]+
templateCode Required : false Mã mẫu hóa đơn, tuân thủ theo quy định ký hiệu mẫu hóa
DataType: String đơn của Thông tư hướng
Minlength : dẫn thi hành nghị định số 51/2010/NĐ-CP
Maxlength : 11
Format : [a-zA-
Z0-9/]+
 Đầu ra:

v1.0 Sinvoice: Tài liệu mô tả webservice


26/73
Đối tượng Response là danh sách trường động tương ứng với mẫu hóa đơn của doanh nghiệp:

- Ví dụ:
[{
"id": 189,
"invoiceTemplatePrototypeId": 1032,
"keyLabel": "Năm sinh",
"keyTag": "buyerDateOfBirth",
"valueType": "date",
"isRequired": false,
"isSeller": false
}, {
"id": 190,
"invoiceTemplatePrototypeId": 1032,
"keyLabel": "Mã bệnh nhân",
"keyTag": "buyerCode",
"valueType": "number",
"isRequired": false,
"isSeller": false
}, {
"id": 191,
"invoiceTemplatePrototypeId": 1032,
"keyLabel": "Khoa phòng",
"keyTag": "buyerDepartments",
"valueType": "text",
"isRequired": false,
"isSeller": true
}, {
"id": 192,
"invoiceTemplatePrototypeId": 1032,
"keyLabel": "Lý do thu",
"keyTag": "invoiceReason",
"valueType": "text",
"isRequired": false,
"isSeller": true
}]
Tên trường Kiểu dữ liệu, Mô tả
ràng buộc
id DataType: ID của trường động
Number
keyLabel DataType: String Tên hiển thị của trường động,
Hiển thị trên giao diện nhập liệu khi lập hóa đơn
keyTag DataType: String Tên của trường động khi lưu vào dữ liệu

valueType DataType: String Kiểu dữ liệu của trường động. Chỉ bao gồm các giá trị:
“text”, “date”, “number”
isRequired DataType: Trường có bắt buộc hay không
Boolean
isSeller DataType: isSeller = true: Trường dữ liệu thuộc bên bán
Boolean isSeller = false: Trường dữ liệu thuộc bên mua
Gửi dữ liệu lập hóa đơn với trường động: Thêm vào mảng metadata, mỗi phần tử bao gồm:

v1.0 Sinvoice: Tài liệu mô tả webservice


27/73
Tên trường Kiểu dữ liệu, ràng Mô tả
buộc
invoiceCustomFieldId Required : true ID của trường động
DataType: Number
Minlength :
Maxlength : 10
Format :
keyTag Required : true Tên của trường động khi lưu vào dữ liệu
DataType: String

valueType Required : true Kiểu dữ liệu của trường động. Chỉ bao gồm các giá
DataType: String trị: “text”, “date”, “number”

keyLabel Required : true Tên hiển thị của trường động,


DataType: String Hiển thị trên giao diện nhập liệu khi lập hóa đơn

dateValue Required : false Giá trị của trường dữ liệu trong trường hợp
DataType: Date valueType = date

numberValue Required : false Giá trị của trường dữ liệu trong trường hợp
DataType: Number valueType = number

stringValue Required : false Giá trị của trường dữ liệu trong trường hợp
DataType: String valueType = text

{
"generalInvoiceInfo":{
"invoiceType":"01GTKT",
"templateCode":"01GTKT0/028",
"invoiceIssuedDate":1505098310271,
"currencyCode":"VND",
"adjustmentType":"1",
"paymentStatus":true,
"paymentType":"TM",
"paymentTypeName":"TM",
"cusGetInvoiceRight":true,
"buyerIdNo":"123456789",
"buyerIdType":"1"
},
"buyerInfo":{
"buyerName":"Lương Thị Huyền",
"buyerLegalName":"",
"buyerTaxCode":"",
"buyerAddressLine":"HN VN",
"buyerPhoneNumber":"09880830406",
"buyerEmail":"",

v1.0 Sinvoice: Tài liệu mô tả webservice


28/73
"buyerIdNo":"123456789",
"buyerIdType":"1"
},
"sellerInfo":{
"sellerLegalName":"Supplier perfom test 1",
"sellerTaxCode":"0100109106-501",
"sellerAddressLine":"test",
"sellerPhoneNumber":"0123456789",
"sellerEmail":"PerformanceTest1@viettel.com.vn",
"sellerBankName":"vtbank",
"sellerBankAccount":"23423424"
},
"extAttribute":[

],
"payments":[
{
"paymentMethodName":"TM"
}
],
"deliveryInfo":{

},
"itemInfo":[
{
"lineNumber":1,
"itemCode":"ENGLISH_COURSE",
"itemName":"Khóa học tiếng anh",
"unitName":"khóa học",
"unitPrice":3500000.0,
"quantity":10.0,
"itemTotalAmountWithoutTax":35000000,
"taxPercentage":10.0,
"taxAmount":0.0,
"discount":0.0,
"itemDiscount":150000.0
}
],
"discountItemInfo":[

],
"summarizeInfo":{
"sumOfTotalLineAmountWithoutTax":35000000,
"totalAmountWithoutTax":35000000,
"totalTaxAmount":3500000.0,
"totalAmountWithTax":38500000,
"totalAmountWithTaxInWords":"Ba mươi tám triệu năm trăm nghìn đồng chẵn",
"discountAmount":0.0,
"taxPercentage":10.0
},
"taxBreakdowns":[
{
"taxPercentage":10.0,
"taxableAmount":35000000,
"taxAmount":3500000.0
}
],
"metadata": [
{
"invoiceCustomFieldId": 82,

v1.0 Sinvoice: Tài liệu mô tả webservice


29/73
"keyTag": "buyerDateOfBirth",
"dateValue": "1514019933737",
"valueType": "date",
"keyLabel": "Ngày sinh"
},
{
"invoiceCustomFieldId": 83,
"keyTag": "buyerCode",
"numberValue": 12323,
"valueType": "number",
"keyLabel": "Mã bệnh nhân"
},
{
"invoiceCustomFieldId": 84,
"keyTag": "buyerDepartments",
"stringValue": "Tim mach",
"valueType": "text",
"keyLabel": "Khoa phòng"
},
{
"invoiceCustomFieldId": 85,
"keyTag": "invoiceReason",
"stringValue": "Khám bệnh",
"valueType": "text",
"keyLabel": "Lý do thu"
}
]
}

5.9. Lập hóa đơn nháp

 Đầu vào:

Webservice dùng để lưu dữ liệu hóa đơn nháp lên hệ thống SInvoice. Các hóa đơn nháp này chỉ
có thể xem/phát hành trên website của SInvoice.

- Action (POST): /InvoiceAPI/InvoiceWS/createOrUpdateInvoiceDraft/{supplierTaxCode}

Trong đó: {supplierTaxCode}: mã số thuế của doanh nghiệp phát hành

Tên trường Kiểu dữ liệu, Mô tả


ràng buộc
supplierTaxCode Required: true Mã số thuế của doanh nghiệp/chi nhánh phát hành hóa
DataType: String đơn. Một doanh nghiệp có thể có nhiều mã số thuế
Minlength: Mẫu 1: 0312770607
Maxlength: 11 Mẫu 2: 0312770607-001
- Data: Định dạng JSON hoặc XML

- Thông số dữ liệu truyền vào tương tự phần Lập hóa đơn

 Đầu ra:

v1.0 Sinvoice: Tài liệu mô tả webservice


30/73
Đối tượng Response mô tả trạng thái lỗi Webservice trả về và đối tượng dữ liệu Webservice trả về:

 Dữ liệu về thông tin về hóa đơn đã lập


{
"errorCode": "",
"description": "",
"result": {
}
}

Định dạng XML


<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<createInvoiceOutput>
<result>
</result>
</createInvoiceOutput>

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>


<createInvoiceOutput>
<description>Phải chọn loại template hóa đơn</description>
<errorCode>TEMPLATE_NOT_FOUND</errorCode>
</createInvoiceOutput>
Mô tả

Tên trường Mô tả
errorCode Mã lỗi (giá trị là null nếu lập hóa đơn thành công)
description Mô tả lỗi (giá trị là null nếu lập hóa đơn thành công)

5.10. Lập hóa đơn theo lô

Trường hợp khách hàng muốn lập hóa đơn theo lô sẽ sử dụng hàm sau.

Lưu ý: Hệ thống đang cho phép tối đa 50 hóa đơn/1 lô do thời gian xử lý đơn lẻ từng hóa đơn
lâu, nếu như để lô nhiều quá có thể bị timeout. Trong trường hợp dữ liệu từ hệ thống tích hợp
nhiều hơn, có thể tự động chia nhỏ số lượng hóa đơn và gửi sang.

 Đầu vào:

o Action (POST) URL: /InvoiceAPI/InvoiceWS/createBatchInvoice/


{supplierTaxCode}

{supplierTaxCode}: mã số thuế của doanh nghiệp phát hành

Tên trường Kiểu dữ liệu, Mô tả


ràng buộc
supplierTaxCode Required: true Mã số thuế của doanh nghiệp/chi nhánh phát hành hóa
DataType: String đơn. Một doanh nghiệp có thể có nhiều mã số thuế

v1.0 Sinvoice: Tài liệu mô tả webservice


31/73
Minlength: Mẫu 1: 0312770607
Maxlength: 11 Mẫu 2: 0312770607-001
- Data: Dữ liệu mẫu lập hóa đơn theo lô

JSON XML
Lập hóa đơn theo lô
HD_Lo.txt HD_Lo.xml

Kết quả khi lập hóa đơn theo lô thành công

5.11. Cập nhật kê khai thuế

Cho phép hệ thống tích hợp gửi thông tin cập nhật kê khai thuế sang, để tránh cho khách hàng bị sai
sót trong quá trình sử dụng (hóa đơn đã hủy vẫn có thể xóa bỏ, thay thế).

 Đầu vào:

- Action (POST): InvoiceAPI/InvoiceUtilsWS/updateTaxDeclaration/

- Headers:

- + Authorization: username/pass như đăng nhập trên web

- + Content-Type: application/json (application/xml)

gồm các tham số:

Tên trường Kiểu dữ liệu, Dữ liệu/mô tả


ràng buộc
supplierTaxCode Required: true Mã số thuế của doanh nghiệp/chi nhánh phát hành hóa đơn.
DataType: String Một doanh nghiệp có thể có nhiều mã số thuế
Minlength: Mẫu 1: 0312770607
Maxlength: 11 Mẫu 2: 0312770607-001
Format:
strIssueDate Required: true Ngày lập hóa đơn
DataType: String
Minlength:

v1.0 Sinvoice: Tài liệu mô tả webservice


32/73
Maxlength:
Format:
dd/mm/yyyy
- Ví dụ với định dạng json:

"supplierTaxCode":"0100109106",

"strIssueDate":"14/03/2018"

- Ví dụ với định dạng xml:

<?xml version="1.0" encoding="UTF-8" ?>

<commonDataInput>

<supplierTaxCode>0100109106</supplierTaxCode>

<strIssueDate>14/03/2018</strIssueDate>

</commonDataInput>

 Đầu ra:

Hình ảnh Response trả về thành công

5.12. Cung cấp tình hình sử dụng hóa đơn theo dải

Trả về thông tin chi tiết số lượng hóa đơn đã dùng, số lượng còn lại của một dải hóa đơn để từ đó đối
tác tích hợp có thể chủ động cảnh báo khách hàng trong trường hợp không đủ hóa đơn.

 Đầu vào:
• Action (POST) URL: /InvoiceAPI/InvoiceUtilsWS/getProvidesStatusUsingInvoice
• Các tham số của đối tượng CommonDataInput

Tên tham số Kiểu dữ liệu, Mô tả


ràng buộc

v1.0 Sinvoice: Tài liệu mô tả webservice


33/73
supplierTaxCode Required : true Mã số thuế của doanh nghiệp/chi nhánh phát hành hóa đơn.
DataType: Một doanh nghiệp có thể có nhiều mã số thuế
String Mẫu 1: 0312770607
Minlength : Mẫu 2: 0312770607-001
Maxlength : 15
Format : [a-zA-
Z0-9/]+
pattern Required : true Mã mẫu hóa đơn.
DataType:
String
Minlength : 11
Maxlength : 11
Format : [a-zA-
Z0-9]{7}/[0-9]
{3}
templateCode Hiện đang chưa có, cần bổ sung, không bắt buộc do có
KH cũ không truyền. Trong trường hợp có cả
templateCode và pattern thì ưu tiên lấy templateCode.
Sửa để cho đồng nhất về khái niệm cho các ông đối
tác.
serial Required : true Seri hóa đơn
DataType:
String
Minlength : 6
Maxlength : 6
Format : [a-zA-
Z0-9/]+
Chú ý: Để biết được tình trạng sử dụng hóa đơn của 1 dải cần một số thông tin như sau:

 supplierTaxCode: Mã số thuế của doanh nghiệp

 pattern: Mã số mẫu hóa đơn

 serial: Seri hóa đơn

Ví dụ mẫu và các trường dữ liệu:Tải bản FULL (file word 73 trang): bit.ly/3gHRVNg
Dự phòng: fb.com/TaiHo123doc.net
- JSON:

v1.0 Sinvoice: Tài liệu mô tả webservice


34/73
"supplierTaxCode":"0100109106",

"pattern":"01GTKT0/003",

"serial":"AA/18E"

- XML:

<?xml version="1.0" encoding="UTF-8" ?>

<commonDataInput>

<supplierTaxCode>0100109106</supplierTaxCode>

<pattern>01GTKT0/003</pattern>

<serial>AA/17E</serial>

</commonDataInput>

 Đầu ra:

Đối tượng Response với HTTPStatus và output Entity.

Tên trường Mô tả
errorCode Mã lỗi (giá trị là null không có lỗi gì xảy ra)
description Mô tả lỗi (giá trị là null không có lỗi gì xảy ra)
status Trạng thái (giá trị là 200 lấy thông tin sử dụng hóa đơn thành công)
numOfpublishInv Tổng số hóa đơn đã phát hành
totalInv Tổng số hóa đơn có thể lập với mẫu hóa đơn + dải truyển vào

5.13. Cung cấp danh sách hóa đơn theo khoảng thời gian

Trả về chi tiết thông tin các hóa đơn để có thể đối soát xem sai đúng của hóa đơn.

 Đầu vào:
• Action (POST) URL: /InvoiceAPI/InvoiceUtilsWS/getListInvoiceDataControl
• Các tham số của đối tượng CommonDataInput

Tên tham số Kiểu dữ liệu, Mô tả


ràng buộc
supplierTaxCode Required : true Mã số thuế của doanh nghiệp/chi nhánh phát hành hóa
DataType: String đơn. Một doanh nghiệp có thể có nhiều mã số thuế
Minlength : Mẫu 1: 0312770607
Maxlength : 15 Mẫu 2: 0312770607-001
Format : [a-zA-
Z0-9/]+

v1.0 Sinvoice: Tài liệu mô tả webservice


35/73
fromDate Required : true Ngày bắt đầu muốn tìm kiếm
DataType: String
Format :
dd/MM/yyyy
toDate Required : true Ngày kết thúc muốn tìm kiếm
DataType: String
Format :
dd/MM/yyyy
Chú ý: Để biết được tình trạng sử dụng hóa đơn của 1 dải cần một số thông tin như sau:

 supplierTaxCode: Mã số thuế của doanh nghiệp

 fromDate: Ngày bắt đầu muốn tìm kiếm

 toDate: Ngày kết thúc muốn tìm kiếm

Ví dụ mẫu và các trường dữ liệu:

- JSON:

"supplierTaxCode":"0100109106",

"fromDate":"10/03/2018",

"toDate":"16/03/2018"

- XML:

<?xml version="1.0" encoding="UTF-8" ?>

<commonDataInput>

<supplierTaxCode>0100109106</supplierTaxCode>

< fromDate> 10/03/2018</fromDate >

< toDate> 16/03/2018</toDate >

</commonDataInput>

Tải bản FULL (file word 73 trang): bit.ly/3gHRVNg


Dự phòng: fb.com/TaiHo123doc.net
 Đầu ra:

v1.0 Sinvoice: Tài liệu mô tả webservice


36/73
Đối tượng Response với HTTPStatus và output Entity.

Tên trường Mô tả
errorCode Mã lỗi (giá trị là null không có lỗi gì xảy ra)
description Mô tả lỗi (giá trị là null không có lỗi gì xảy ra)
lstInvoiceBO Danh sách hóa đơn được tạo theo thời gian được truyền vào

5.14. Gửi email cho các hoá đơn khách hàng

Trong trường hợp khách hàng đã cấu hình email trên hệ thống SInvoice, hệ thống sẽ tự động thực hiện
gửi email cho người mua khi trong thông tin hóa đơn có email. Webservice cho phép phần mềm tích
hợp chủ động việc gửi email cho khách hàng, trong trường hợp cấu hình của email là không hoạt động.

 Đầuvào:
• Action URL: /InvoiceAPI/InvoiceUtilsWS/sendHtmlMailProcess
• Các tham số sendHtmlMailProcess

Tên tham số Kiểu dữ liệu, ràng Mô tả


buộc
supplierTaxCode Required : true Mã số thuế của doanh nghiệp/chi nhánh phát
DataType: String hành hóa đơn. Một doanh nghiệp có thể có nhiều
Minlength : mã số thuế
Maxlength : 15 Mẫu 1: 0312770607
Format : [a-zA-Z0- Mẫu 2: 0312770607-001
9/]+
lstTransactionUuid Required : true Danh sách key request, mỗi transactionUuid
DataType: String tương ứng với 1 hoá đơn (Validate độ dài
transactionUuid trong khoảng 32 – 36 ký tự)
Chú ý: Để gửi email cho các hoá đơn khách hàng cần một số thông tin như sau:

 supplierTaxCode: Mã số thuế của doanh nghiệp

 lstTransactionUuid: Danh sách key request

Ví dụ mẫu và các trường dữ liệu:

- JSON:

"supplierTaxCode":"0100109106",

"lstTransactionUuid":"idtest9999999999,testuuid8888888,transactionUuid123"

v1.0 Sinvoice: Tài liệu mô tả webservice


5326583
37/73

You might also like