Bài viết này hướng dẫn cách kết nối EzyDelivery với Viettel Post để tạo đơn chuyển phát nhanh trực tiếp từ trang quản trị, nhận mã vận đơn Viettel Post, và tự động cập nhật trạng thái đơn khi Viettel Post giao hàng.
Sau khi tích hợp xong, luồng làm việc sẽ như sau:
  1. Nhân viên tạo đơn giao hàng trong EzyDelivery với phương thức giao hàng Chuyển phát nhanh và chọn dịch vụ Viettel Post.
  2. EzyDelivery gửi đơn sang Viettel Post, tự chọn gói cước rẻ nhất phù hợp, nhận về mã vận đơn Viettel Post và in tem.
  3. Trong quá trình giao, Viettel Post gọi lại (webhook) về hệ thống, EzyDelivery cập nhật trạng thái đơn theo thời gian thực.

Chuẩn bị

Trước khi cấu hình, cần có:
Thứ cần cóGhi chú
Tài khoản Viettel Post dành cho đối tácĐăng ký tại <https://partner.viettelpost.vn>.Tài khoản này phải có ít nhất một kho lấy hàng (địa chỉ gửi hàng) đã khai báo trên Viettel Post.
Đã hoàn thành phần Cài đặt ban đầu cho EzyDeliveryĐặc biệt là quốc gia nhận (Việt Nam) có đủ tỉnh/thành phố, quận/huyện, phường/xã, và kho nhận hàng có địa chỉ đầy đủ.
Tiền tệ VND đã được kích hoạtViettel Post chỉ nhận tiền VND. Nếu đơn dùng tiền tệ khác (ví dụ CNY), cần có tỉ giá quy đổi sang VND, nếu không đơn sẽ gửi thất bại.
Trang web (web plugin) truy cập được từ InternetĐể Viettel Post gọi lại cập nhật trạng thái đơn.

Hai dịch vụ Viettel Post trong EzyDelivery

EzyDelivery cung cấp sẵn 2 dịch vụ Viettel Post, cách hoạt động giống nhau nhưng được cấu hình độc lập:
Mã dịch vụDùng khi nào
VIETTEL_POSTDịch vụ chính, dùng cho hầu hết trường hợp.
VIETTEL_POST_SMALLDùng khi bạn có tài khoản Viettel Post thứ hai (ví dụ tài khoản riêng cho hàng nhỏ, hoặc kho lấy hàng khác) và muốn nhân viên chọn được giữa hai tài khoản khi tạo đơn.
Nếu chỉ có một tài khoản Viettel Post, bạn chỉ cần cấu hình VIETTEL_POST. Các bước dưới đây áp dụng giống nhau cho cả hai.

Cấu hình dịch vụ Viettel Post

Vào Thương mại điện tử → Các dịch vụ vận chuyển (/ecommerce/delivery-services), tìm dòng VIETTEL_POST và bấm sửa (hoặc mở thẳng /ecommerce/delivery-services/VIETTEL_POST/edit).
Điền các ô như sau:
ÔGiá trịGhi chú
TênViettel PostTên hiển thị trong ô chọn dịch vụ khi tạo đơn. Không được trùng tên với dịch vụ khác.
Phiên bảnv2Bắt buộc điền, để trống thì không gửi được đơn.
Đường dẫn dịch vụhttps://viettelpost.com.vnDùng để tạo đường dẫn tra cứu hành trình đơn cho khách hàng.
Đường dẫn API dịch vụhttps://partner.viettelpost.vn/v2Địa chỉ API của Viettel Post. Không thêm dấu / ở cuối.
Đường dẫn gọi lạihttps://<tên-miền-web-của-bạn>/callback/VIETTEL_POSTĐể ghi nhớ địa chỉ đã khai báo với Viettel Post (xem phần Cấu hình webhook).
Khoá máy kháchMột chuỗi bí mật do bạn tự đặtViettel Post sẽ gửi kèm chuỗi này mỗi lần gọi lại. EzyDelivery dùng nó để xác thực, bắt buộc điền nếu muốn nhận cập nhật trạng thái.
Tên đăng nhậpTên đăng nhập tài khoản Viettel PostThường là số điện thoại.
Mật khẩuMật khẩu tài khoản Viettel Post
Khoá bí mậtĐể trốngHệ thống tự điền sau khi đăng nhập thành công (xem lưu ý bên dưới).
Trạng tháiACTIVATEDChỉ dịch vụ đang ACTIVATED mới xuất hiện khi tạo đơn.
Các ô còn lại (logo, ảnh bìa, tiền tệ phí vận chuyển, phí vận chuyển tối thiểu, giá trị hàng hoá mặc định, ...) không bắt buộc cho Viettel Post.
Bấm Lưu. Khi lưu, hệ thống sẽ đăng nhập thử vào Viettel Post bằng tên đăng nhập và mật khẩu vừa nhập:
  • Nếu đúng: lưu thành công, token đăng nhập được lưu vào ô Khoá bí mật (hiển thị dạng ẩn).
  • Nếu sai: hiện lỗi ở ô Tên đăng nhập và Mật khẩu, kiểm tra lại thông tin tài khoản và Đường dẫn API dịch vụ.
Screenshot 2026-10-09 at 10.38.32.png

Về token đăng nhập

Token của Viettel Post có thời hạn. EzyDelivery lưu thời điểm hết hạn và tự đăng nhập lại bằng tên đăng nhập, mật khẩu đã lưu khi token sắp hết hạn, bạn không cần làm gì thêm. Vì vậy:
  • Hãy dùng cách đăng nhập bằng tên đăng nhập + mật khẩu. Nếu chỉ nhập Khoá bí mật (token lấy từ trang đối tác Viettel Post), hệ thống không tự gia hạn được khi token hết hạn.
  • Khi đổi mật khẩu tài khoản Viettel Post, nhớ cập nhật lại mật khẩu ở trang này.
  • Khi sửa các ô khác, cứ để nguyên ô Mật khẩu và Khoá bí mật đang hiển thị dạng ẩn, hệ thống sẽ giữ giá trị cũ.

Đặt làm dịch vụ mặc định (tuỳ chọn)

Ở trang danh sách Các dịch vụ vận chuyển, có thể đặt VIETTEL_POST làm dịch vụ mặc định. Dịch vụ mặc định sẽ được chọn sẵn khi tạo đơn giao hàng.

Ánh xạ tiền tố đơn vị hành chính

Viettel Post nhận diện địa chỉ dựa trên văn bản, nên tên đơn vị hành chính cần có tiền tố quen thuộc như TP., Q., P.. Khi gửi đơn, EzyDelivery ghép địa chỉ người nhận theo mẫu ánh xạ tiền tố của từng dịch vụ vận chuyển.
Mẫu cho Viettel Post được tạo tự động khi plugin EzyDelivery (admin) khởi động, và hiển thị ở ô Ánh xạ giữa kiểu và tiền tố địa giới hành chính trên trang sửa dịch vụ. Nội dung mặc định:
[
  { "type": "PROVINCE", "prefix": "T." },
  { "type": "CITY", "prefix": "TP." },
  { "type": "DISTRICT_IN_CITY", "prefix": "Q." },
  { "type": "DISTRICT_IN_PROVINCE", "prefix": "H." },
  { "type": "TOWN_IN_PROVINCE", "prefix": "TX." },
  { "type": "WARD", "prefix": "X." },
  { "type": "WARD_IN_CITY", "prefix": "P." },
  { "type": "TOWN", "prefix": "TT." }
]
Mỗi dòng gồm:
  • type: loại đơn vị hành chính, khớp với loại bạn chọn khi tạo tỉnh/thành phố, quận/huyện, phường/xã trên trang quốc gia.
  • prefix: tiền tố được thêm trước tên đơn vị khi gửi sang Viettel Post. Ví dụ phường Bến Nghé có loại WARD_IN_CITY sẽ thành P. Bến Nghé.
Thông thường không cần sửa mẫu này. Chỉ sửa khi Viettel Post báo không nhận diện được địa chỉ, hoặc khi bạn dùng thêm loại đơn vị hành chính khác. Nếu xoá mẫu, lần khởi động sau hệ thống sẽ tạo lại với nội dung mặc định.
Điều quan trọng hơn là dữ liệu đơn vị hành chính phải đúng: tỉnh, quận, phường của kho gửi hàng và người nhận cần được chọn đầy đủ, đúng loại, và tên đúng với tên mà Viettel Post đang dùng.

Cấu hình webhook trên Viettel Post

Để trạng thái đơn tự cập nhật, cần khai báo webhook trên trang đối tác Viettel Post (mục cấu hình webhook / đường dẫn nhận trạng thái đơn hàng):
Ô trên Viettel PostGiá trị
Đường dẫn (URL)https://<tên-miền-web-của-bạn>/callback/VIETTEL_POST (với dịch vụ thứ hai là /callback/VIETTEL_POST_SMALL)
Token / SecretGiống hệt giá trị ô Khoá máy khách đã điền ở trang cấu hình dịch vụ
Một số điểm cần biết về webhook:
  • Đường dẫn trên thuộc trang web (web plugin), không phải trang quản trị. Tên miền phải truy cập được từ Internet và nên dùng https.
  • Mỗi lần nhận webhook, EzyDelivery kiểm tra token Viettel Post gửi kèm. Token không khớp Khoá máy khách sẽ bị từ chối với lỗi Token: invalid.
  • EzyDelivery chỉ chấp nhận cập nhật cho đơn mà nó đã tạo và có mã vận đơn khớp với mã Viettel Post gửi về. Các đơn tạo trực tiếp trên trang Viettel Post sẽ bị bỏ qua (trả về deliveryOrder: notFound).

Tạo đơn giao hàng qua Viettel Post

Khi khách hàng có yêu cầu giao hàng với phương thức Chuyển phát nhanh:
  1. Vào Các yêu cầu giao hàng (/ezydelivery/shipping-requests) và mở yêu cầu cần giao.
  2. Bấm Tạo vận đơn, kiểm tra Tổng số cân (kg).
  3. Ở ô Dịch vụ vận chuyển, chọn Viettel Post (chỉ hiện khi phương thức giao hàng là chuyển phát nhanh).
  4. Bấm Tạo hoặc Tạo và hoàn thành.
Khi gửi đơn, EzyDelivery tự xử lý các việc sau:
ViệcCách làm
Chọn gói cướcHỏi Viettel Post tất cả gói cước phù hợp với địa chỉ gửi, địa chỉ nhận, khối lượng, kích thước, rồi chọn gói có giá cước thấp nhất.
Chọn kho lấy hàngDùng kho lấy hàng đầu tiên trong danh sách kho của tài khoản Viettel Post.
Loại hàngNếu tất cả sản phẩm là tài liệu thì gửi là thư/tài liệu, ngược lại gửi là hàng hoá.
Quy đổi tiềnGiá hàng và tiền thu hộ được quy đổi sang VND theo tỉ giá hiện có.
Thu hộ (COD) và người trả phíXác định theo bảng bên dưới.
Cách xác định tiền thu hộ và người trả phí vận chuyển:
Đơn đã thanh toán?Người trả phí vận chuyểnViettel Post thu của người nhận
Đã thanh toánNgười gửiKhông thu gì
Đã thanh toánNgười nhậnChỉ thu phí vận chuyển
Chưa thanh toánNgười gửiChỉ thu tiền hàng (COD)
Chưa thanh toánNgười nhậnThu cả tiền hàng và phí vận chuyển
Kết quả:
  • Thành công: đơn chuyển sang trạng thái Đã gửi yêu cầu, mã vận đơn Viettel Post được lưu làm mã vận đơn của đơn, và tem được in ngay. Các thông tin cước Viettel Post trả về (tổng cước, phí thu hộ, VAT, thời gian giao dự kiến, ...) được lưu kèm đơn.
  • Thất bại: đơn chuyển sang trạng thái Gửi yêu cầu thất bại, nội dung lỗi Viettel Post trả về được lưu vào đơn để xem lại. Sau khi sửa nguyên nhân có thể gửi lại.

Cập nhật trạng thái đơn

Mỗi lần Viettel Post gọi webhook, EzyDelivery cập nhật trạng thái đơn, đồng thời lưu thêm tên và số điện thoại bưu tá, vị trí hiện tại, ngày giao dự kiến, ghi chú của Viettel Post. Nếu Viettel Post báo đơn đang chuyển hoàn, đơn được đánh dấu là đang hoàn hàng.
Bảng ánh xạ trạng thái Viettel Post sang trạng thái trong EzyDelivery:
Mã Viettel PostTrạng thái trong EzyDelivery
-100Đã tạo yêu cầu
100Đã nhận yêu cầu
101Dịch vụ vận chuyển yêu cầu huỷ
102Không lấy được hàng
103Dịch vụ vận chuyển đang xử lý
104Đang lấy hàng
105Đã lấy hàng
107Bị huỷ
200Nhận từ bưu tá - Bưu cục gốc
201Hủy nhập phiếu gửi
202Sửa phiếu gửi
300Khai thác đi
400Khai thác đến
500Giao bưu tá đi phát
501Đã giao hàng
502Chuyển hoàn bưu cục gốc
503Khách yêu cầu huỷ
504Bị trả lại
505Thông báo trả hàng lỗi
506Khách không có nhà
507Khách cần đến bưu cục nhận
508Đã yêu cầu giao lại
509Chuyển tiếp bưu cục khác
515Duyệt hoàn
550Khách yêu cầu giao lại
Mã trạng thái không có trong bảng sẽ được ghi nhận là không xác định.
Khi Viettel Post điều chỉnh số tiền thu hộ của đơn (ví dụ do khách hàng và bưu tá thống nhất lại), EzyDelivery cũng tự cập nhật lại tiền thu hộ của đơn theo giá trị mới.
Khách hàng có thể tra cứu hành trình đơn qua đường dẫn dạng:
https://viettelpost.com.vn/thong-tin-don-hang?peopleTracking=sender&orderNumber=<mã-vận-đơn>
Phần đầu của đường dẫn lấy từ ô Đường dẫn dịch vụ đã cấu hình.

Xử lý sự cố thường gặp

Hiện tượngNguyên nhân thường gặpCách xử lý
Lưu cấu hình báo sai tên đăng nhập / mật khẩuSai tài khoản, hoặc sai Đường dẫn API dịch vụKiểm tra đăng nhập trên trang Viettel Post. Kiểm tra URL API không có / ở cuối.
Không thấy Viettel Post khi tạo đơnDịch vụ chưa ACTIVATED, hoặc phương thức giao hàng không phải chuyển phát nhanhKích hoạt dịch vụ, kiểm tra lại phương thức giao hàng của yêu cầu.
Gửi đơn thất bại với lỗi deliveryServiceNotSetupThiếu Phiên bản, Đường dẫn API dịch vụ hoặc chưa đăng nhập đượcĐiền đủ các ô và lưu lại cấu hình.
Gửi đơn thất bại với lỗi noCurrencyVNDChưa có tiền tệ VNDKích hoạt tiền tệ VND.
Gửi đơn thất bại do không quy đổi được tiềnThiếu tỉ giá từ tiền tệ của đơn sang VNDThêm tỉ giá trong Thương mại điện tử.
Gửi đơn thất bại với lỗi not matching viettel post delivery servicesViettel Post không nhận diện được địa chỉ gửi hoặc nhận, hoặc không có gói cước phù hợpKiểm tra tỉnh, quận, phường của kho và người nhận, kiểm tra mẫu ánh xạ tiền tố, kiểm tra khối lượng và kích thước sản phẩm.
Gửi đơn thất bại với lỗi get store information from viettel post failedTài khoản Viettel Post chưa có kho lấy hàngTạo kho lấy hàng trên trang Viettel Post.
Trạng thái đơn không tự cập nhậtChưa khai báo webhook, token không khớp Khoá máy khách, hoặc tên miền web không truy cập được từ InternetKiểm tra lại phần Cấu hình webhook.