# Thông tin đơn

> Lấy chi tiết đầy đủ của một đơn theo mã vận đơn GHN.

## Endpoint

| Môi trường | URL |
| --- | --- |
| Production | `https://online-gateway.ghn.vn/shiip/public-api/v2/shipping-order/detail` |
| Staging | `https://dev-online-gateway.ghn.vn/shiip/public-api/v2/shipping-order/detail` |

**Method**: `GET`

## Headers

| Header | Bắt buộc | Mô tả |
| --- | --- | --- |
| `Token` | Có | Token của shop (do GHN cấp) — [lấy token](https://developer.ghn.vn/vi/docs/token/get-token.md) |
| `ShopId` | Có | Shop ID (số nguyên) |

## Tham số

- **order_code** (String): Mã vận đơn GHN. Đơn phải thuộc shop mà tài khoản của bạn là thành viên

## Ví dụ Request

```bash
curl -X GET "https://dev-online-gateway.ghn.vn/shiip/public-api/v2/shipping-order/detail?order_code=LADH94" \
  -H "Token: 5c1d8a9e-2f4b-11ed-..." \
  -H "ShopId: 92837"
```

## Response

`data` là **một object đơn hàng** (không phải mảng). GHN trả về ~120 trường; phần mẫu và bảng dưới đây chỉ liệt kê các trường thường dùng nhất — các trường vận hành khác (định tuyến kho, bằng chứng giao hàng, dịch vụ cộng thêm, trường địa chỉ định dạng mới, log nội bộ) cũng được trả về và có thể bỏ qua nếu không cần.

### Thành công (HTTP 200)

_Lấy từ một lần gọi thật trên môi trường Staging (rút gọn còn các trường thường dùng)._

```json
{
  "code": 200,
  "message": "Success",
  "data": {
    "order_code": "LADH94",
    "client_order_code": "FINALDOC-DETAIL-001",
    "status": "ready_to_pick",
    "shop_id": 196560,
    "client_id": 2509893,
    "from_name": "Shop Áo GHN",
    "from_phone": "0395297295",
    "from_address": "7, 28 Đ. Thành Thái, Phường 10 (Quận 10), Quận 10, Thành phố Hồ Chí Minh, Vietnam",
    "to_name": "Trần Minh Anh",
    "to_phone": "0987654321",
    "to_address": "72 Lê Thánh Tôn, P. Bến Nghé, Quận 1, TP. Hồ Chí Minh",
    "return_name": "Shop Áo GHN",
    "return_phone": "0395297295",
    "weight": 600,
    "length": 25,
    "width": 20,
    "height": 8,
    "converted_weight": 800,
    "calculate_weight": 800,
    "service_type_id": 2,
    "service_id": 53320,
    "payment_type_id": 1,
    "cod_amount": 285000,
    "cod_collect_date": null,
    "cod_transfer_date": null,
    "is_cod_collected": false,
    "is_cod_transferred": false,
    "cod_failed_amount": 0,
    "insurance_value": 285000,
    "order_value": 0,
    "required_note": "KHONGCHOXEMHANG",
    "content": "Áo thun GHN size M [GHN-TS-M-BLK] [2 cái]",
    "note": "",
    "pickup_shift": {},
    "leadtime": "2026-07-16T16:59:59Z",
    "created_date": "2026-07-15T04:49:47.811Z",
    "updated_date": "2026-07-15T04:49:47.811Z",
    "items": [
      {
        "name": "Áo thun GHN size M",
        "code": "GHN-TS-M-BLK",
        "quantity": 2,
        "length": 10,
        "width": 10,
        "height": 10,
        "weight": 300
      }
    ]
  }
}
```

### Các trường Response

| Trường | Kiểu | Mô tả |
| --- | --- | --- |
| `order_code` | String | Mã vận đơn GHN |
| `client_order_code` | String | Mã đơn riêng của bạn |
| `status` | String | Trạng thái đơn (xem danh sách bên dưới) |
| `shop_id` | Int | Shop sở hữu đơn |
| `client_id` | Int | Tài khoản sở hữu đơn |
| `from_name` | String | Tên người gửi |
| `from_phone` | String | SĐT người gửi |
| `from_address` | String | Địa chỉ đầy đủ người gửi |
| `to_name` | String | Tên người nhận |
| `to_phone` | String | SĐT người nhận |
| `to_address` | String | Địa chỉ đầy đủ người nhận |
| `return_name` | String | Tên liên hệ trả hàng |
| `return_phone` | String | SĐT liên hệ trả hàng |
| `return_address` | String | Địa chỉ đầy đủ trả hàng |
| `weight` | Int | Khối lượng khai báo (gram) |
| `length` | Int | Chiều dài (cm) |
| `width` | Int | Chiều rộng (cm) |
| `height` | Int | Chiều cao (cm) |
| `converted_weight` | Int | Khối lượng quy đổi thể tích (gram) |
| `calculate_weight` | Int | Khối lượng tính cước (gram) — lớn hơn giữa `weight` và `converted_weight` |
| `service_type_id` | Int | Loại dịch vụ, chọn theo khối lượng:<br>`2`: tổng khối lượng **dưới 20 kg**<br>`5`: tổng khối lượng **từ 20 kg trở lên**, hoặc đơn nhiều kiện |
| `service_id` | Int | Mã dịch vụ vận chuyển |
| `payment_type_id` | Int | Bên trả phí vận chuyển: là `1` (và `4`, `5`) nếu Shop/Người bán trả, là `2` nếu Người mua/Người nhận trả |
| `cod_amount` | Int | COD thu từ người nhận (VND) |
| `cod_collect_date` | String/null | Thời điểm đã thu COD (ISO 8601) |
| `cod_transfer_date` | String/null | Thời điểm COD đã chuyển cho bạn (ISO 8601) |
| `is_cod_collected` | Bool | Đã thu COD từ người nhận |
| `is_cod_transferred` | Bool | Đã chuyển COD cho bạn |
| `cod_failed_amount` | Int | Số tiền thu khi giao thất bại (VND) |
| `insurance_value` | Int | Giá trị khai giá/bảo hiểm (VND) |
| `order_value` | Int | Giá trị đơn hàng (VND) |
| `required_note` | String | `KHONGCHOXEMHANG` / `CHOXEMHANGKHONGTHU` / `CHOTHUHANG` |
| `content` | String | Mô tả hàng hóa |
| `note` | String | Ghi chú của bạn cho tài xế |
| `pickup_shift` | Object | Khung giờ lấy hàng cụ thể; `{}` khi đơn không có ca lấy. Chỉ API này trả về giá trị này |
| `pickup_shift.from_time` | String | Bắt đầu khung giờ lấy (ISO 8601) |
| `pickup_shift.to_time` | String | Kết thúc khung giờ lấy (ISO 8601) |
| `leadtime` | String | Thời gian giao dự kiến (ISO 8601) |
| `created_date` | String | Thời điểm tạo đơn trong GHN (ISO 8601) |
| `updated_date` | String | Thời điểm cập nhật cuối (ISO 8601) |
| `items` | Object[] | Danh sách sản phẩm |
| `items[].name` | String | Tên sản phẩm |
| `items[].code` | String | Mã sản phẩm |
| `items[].quantity` | Int | Số lượng |
| `items[].price` | Int | Đơn giá (VND) |
| `items[].length` | Int | Chiều dài sản phẩm (cm) |
| `items[].width` | Int | Chiều rộng sản phẩm (cm) |
| `items[].height` | Int | Chiều cao sản phẩm (cm) |
| `items[].weight` | Int | Khối lượng sản phẩm (gram) |

### Các giá trị trạng thái

| Trạng thái | Ý nghĩa | Cuối |
| --- | --- | --- |
| `ready_to_pick` | Đã tạo đơn, chờ lấy hàng |  |
| `picking` | Tài xế đang đến lấy hàng |  |
| `money_collect_picking` | Thu tiền khi lấy hàng |  |
| `picked` | Đã lấy hàng từ shop |  |
| `storing` | Đang ở kho GHN |  |
| `sorting` | Đang phân loại |  |
| `transporting` | Đang vận chuyển giữa các kho |  |
| `delivering` | Đang giao cho người nhận |  |
| `money_collect_delivering` | Thu tiền khi giao hàng |  |
| `delivered` | Giao thành công | ✓ |
| `delivery_fail` | Giao thất bại |  |
| `waiting_to_return` | Chờ trả về người gửi |  |
| `return` | Đã yêu cầu trả hàng |  |
| `return_transporting` | Đang vận chuyển trả |  |
| `return_sorting` | Đang phân loại hàng trả |  |
| `returning` | Đang trả về người gửi |  |
| `return_fail` | Trả hàng thất bại |  |
| `returned` | Đã trả về người gửi | ✓ |
| `cancel` | Đã hủy | ✓ |
| `exception` | Sự cố — cần xử lý thủ công | ✓ |
| `lost` | Thất lạc | ✓ |
| `damage` | Hư hỏng | ✓ |
| `scrap` | Đã tiêu hủy | ✓ |

## Bảng mã lỗi

| Điều kiện | HTTP | Ý nghĩa |
| --- | --- | --- |
| Đơn không tồn tại (`Đơn hàng không tồn tại`) | 400 | Mã đơn không tồn tại |
| `403` | 403 | Tài khoản của bạn thiếu quyền xem chi tiết đơn — liên hệ GHN |
| `CLIENT_NOT_OWNER_OF_SHOP` | 400 | Đơn không thuộc shop mà tài khoản của bạn là thành viên |
| `SERVER_ERROR_COMMON` | 500 | Lỗi hệ thống |
