NAV Navbar
python shell javascript
  • Introduction
  • Changelog
  • Authentication
  • Location
  • Pickup Address
  • Shipment
  • Products
  • Shipping Rates
  • Orders
  • Webhook
  • Errors
  • Introduction

    Welcome to the Boxme API! You can use our API to access Boxme API endpoints.

    Prerequisites: Basic computer literacy, a basic understanding RESTful API, shipping service depend by market.

    You can send API request to us, after that we will introduce to you "how to integrate with Boxme system?"

    Boxme API request form

    Note: Response data are using UTC timezone. You can convert to your local time before show data to end users.

    Changelog

    Version 2.1

    Version 2.0

    Boxme warehouse

    Warehouse Warehouse name Warehouse country
    BMVN_HN Boxme Fulfillment Hanoi VietNam
    BMVN_HCM Boxme Fulfillment Ho Chi Minh VietNam
    BMTH_BK Boxme Fulfillment Bangkok Thailand
    BMID_ST Boxme Fulfillment Jakarta(Sunter) Indonesia
    BMID_SBA Boxme Fulfillment Surabaya Indonesia
    BMMY_SB Boxme Fulfillment Subang Malaysia
    BMPH_CLB Boxme Fulfillment Calamba Philippines
    BMHK_HK Boxme Fulfillment Hongkong Hongkong
    BMUS_SJ Boxme Consolidate Hub San Jose USA
    BMCN_SZ Boxme Consolidate Hub Shenzhen China
    BMCN_DQ Boxme Fulfillment Hub Dongguan China

    Delivery service code

    Courier and service in Thailand

    Country Courier Name Service name Service Code Global service
    TH DHL eCommerce Parcel Domestic (Drop-off) DHL_DR No
    TH DHL eCommerce Direct Service DHL_IDR Yes
    TH DHL eCommerce Packet International Standard DHL_PIS Yes
    TH DHL eCommerce Packet Plus International Standard DHL_PPS Yes
    TH DHL eCommerce Parcel Domestic DHL_PD No
    TH Aramex Parcel Express ARM_PPX Yes
    TH Aramex Economy Parcel Express ARM_EPX Yes
    TH Aramex International Express EV ARM_PLX Yes
    TH CJ Logistics Next day CJ_ND No
    TH Flash Express Next day FLASH_PD No
    TH Nim Express Express service NIM_EX No
    TH SCG Yamato Express Normal Parcel Delivery SCG_NPD No
    TH Thailand Post EMS Drop-Off THP_EMS No
    TH True e-Logistics Domestic Express TEL_DEX No

    Courier and service in VietNam, Indonesia, Malaysia

    Country Contry Code Delivery Service Code Service name Global service Available at Fulfillment warehouse
    Vietnam VN VTP_VCN Express service No YES
    Vietnam VN VTP_SCOD Express CoD service NO YES
    Vietnam VN VTP_VTK Economy service No YES
    Vietnam VN DHLE_PDO Economy service NO YES
    Vietnam VN DHLE_PDE Express service NO YES
    Vietnam VN DHL_EV International Express Evelope YES YES
    Vietnam VN DHL_PC International Express Parcel YES YES
    Vietnam VN EMS_CPN Express service NO YES
    Vietnam VN EMS_ECOD ECOD Express service NO YES
    Vietnam VN EMS_EXP International express service YES YES
    Vietnam VN GHTK_CPN Express service NO YES
    Vietnam VN BM_SD Boxme fulfillment NO YES
    Vietnam VN BM_MKP Marketplace fulfillment NO YES
    Vietnam VN BM_DBS Delivery by seller NO YES
    Indonesia ID REG_JNE JNE Regular Service NO YES
    Indonesia ID REG_JNT J&T Regular Service NO YES
    Indonesia ID REG_FIRST First Logistic Regular Service NO YES
    Indonesia ID REG_KURIER KURIER Regular Service NO YES
    Indonesia ID REG_SAP SAP Regular Service NO YES
    Indonesia ID REG_NJV Ninjavan Regular Service NO YES
    Malaysia MY DHL_PD DHLeC Parcel Domestic NO YES
    Malaysia MY SKY_PD Skynet Parcel Domestic No YES
    Malaysia MY NJV_PD Ninjavan Parcel Domestic No YES

    Bank code

    Country Bank code Bank name
    Thailand KABANK KASIKORN BANK(K-Bank)
    Thailand BBL Bangkok Bank
    Thailand KTB Krungthai Bank
    Thailand SCB Siam Commercial Bank
    Thailand BAY Bank of Ayudhya
    Thailand TBANK Thanachart Bank
    Thailand TMB TMB Bank
    Thailand KK Kiatnakin Bank
    Thailand SCBT Standard Chartered Bank
    Thailand UOBT United Overseas Bank
    Thailand TISCO Tisco Bank
    Thailand ICBC ICBC Bank
    Thailand ICB Mega ICB
    Thailand IBBKIDJA Maybank
    Thailand CNCBI China Citic Bank International Limited
    Thailand GSB Government Savings Bank
    Thailand TCRB Thai Credit Retail Bank

    Authentication

    Get a key

    Before you can start using our APIs, you need an API key. It's easy. Just visit seller center and sign in with your account. Next step go to Settings menu -> Intergration to create API key.

    Once you've activated your key, you're ready to roll.

    Sandbox environment

    Oms system: https://sandbox.boxme.asia

    API URL: https://sandbox.boxme.asia/api/ (just change s.boxme.asia to sandbox.boxme.asia)

    Account : test2@boxme.asia

    Password : 123456a@

    API key : 424d8beddf6fcaca4ad4bcecc4dff0d6057c4116987a4a8c94336aa56700c9ba

    Postman: Try with Postman

    Using Boxme API key

    To use the Boxme API key, construct a normal HTTPS request and include an Authorization header with the value of Token. Signing is not required.

    Example:

    Authorization: Token 424d0db4e09024c3f29120972ddb747d34e721941e33bace61eb6fced161ac85

    Please contact us if you have any questions support@boxme.asia.

    Location

    Get List Country

    import requests
    url     = "https://s.boxme.asia/api/v1/locations/countries/"
    
    headers = {
      'content-type': "application/json",
    }
    
    response = requests.request("GET", url)
    
    
    curl "https://s.boxme.asia/api/v1/locations/countries/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": [
            {
                "id": 1,
                "country_code": "AF",
                "country_name": "Afghanistan",
                "phone_code": 93,
                "required_zipcode": false,
                "currency": "AFA"
            },
            {
                "id": 2,
                "country_code": "AL",
                "country_name": "Albania",
                "phone_code": 355,
                "required_zipcode": false,
                "currency": "ALL"
            },
            {
                "id": 3,
                "country_code": "DZ",
                "country_name": "Algeria",
                "phone_code": 213,
                "required_zipcode": true,
                "currency": "DZD"
            },
            {
                "id": 4,
                "country_code": "AS",
                "country_name": "American Samoa",
                "phone_code": 1684,
                "required_zipcode": true,
                "currency": "USD"
            },
            {
                "id": 5,
                "country_code": "AD",
                "country_name": "Andorra",
                "phone_code": 376,
                "required_zipcode": true,
                "currency": "ADP"
            },
            {
                "id": 6,
                "country_code": "AO",
                "country_name": "Angola",
                "phone_code": 244,
                "required_zipcode": false,
                "currency": "AON"
            },
            {
                "id": 7,
                "country_code": "AI",
                "country_name": "Anguilla",
                "phone_code": 1264,
                "required_zipcode": false,
                "currency": "XCD"
            }
            .......
        ]
    }
    
    

    Get list country in boxme system

    HTTP Request

    GET https://s.boxme.asia/api/v1/locations/countries/

    Get List Province & State

    import requests
    url     = "https://s.boxme.asia/api/v1/locations/countries/MY/provinces/"
    
    headers = {
      'content-type': "application/json",
    }
    
    response = requests.request("GET", url)
    
    
    curl "https://s.boxme.asia/api/v1/locations/countries/MY/provinces/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": [
            {
                "id": 175,
                "country_code": "MY",
                "code": "",
                "province_name": "Kedah",
                "province_name_local": "Kedah",
                "province_name_convert": "kedah"
            },
            {
                "id": 176,
                "country_code": "MY",
                "code": "",
                "province_name": "Kelantan",
                "province_name_local": "Kelantan",
                "province_name_convert": "kelantan"
            },
            {
                "id": 177,
                "country_code": "MY",
                "code": "",
                "province_name": "Kuala Lumpur",
                "province_name_local": "Kuala Lumpur",
                "province_name_convert": "kualalumpur"
            },
            {
                "id": 178,
                "country_code": "MY",
                "code": "",
                "province_name": "Labuan",
                "province_name_local": "Labuan",
                "province_name_convert": "labuan"
            },
            {
                "id": 179,
                "country_code": "MY",
                "code": "",
                "province_name": "Melaka",
                "province_name_local": "Melaka",
                "province_name_convert": "melaka"
            } 
            .............
        ]
    }
    
    

    Get list country in boxme system

    HTTP Request

    GET https://s.boxme.asia/api/v1/locations/countries/MY/provinces/

    Get List District

    import requests
    url     = "https://s.boxme.asia/api/v1/locations/countries/MY/179/district/"
    
    headers = {
      'content-type': "application/json",
    }
    
    response = requests.request("GET", url)
    
    
    curl "https://s.boxme.asia/api/v1/locations/countries/MY/179/district/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": [
            {
                "id": 3004,
                "country_code": "MY",
                "province": 179,
                "district_name": "Air Keroh",
                "district_name_local": "Air Keroh",
                "code": "",
                "district_name_convert": "airkeroh",
                "area": 0
    
            },
            {
                "id": 3005,
                "country_code": "MY",
                "province": 179,
                "district_name": "Alor Gajah",
                "district_name_local": "Alor Gajah",
                "code": "",
                "district_name_convert": "alorgajah",
                "area": 1
    
            },
            {
                "id": 3006,
                "country_code": "MY",
                "province": 179,
                "district_name": "Asahan",
                "district_name_local": "Asahan",
                "code": "",
                "district_name_convert": "asahan",
                "area": 0
    
            },
            .............
        ]
    }
    
    

    Get list district

    HTTP Request

    GET https://s.boxme.asia/api/v1/locations/countries/{country_code}/{province_id}/district/

    Request Response

    Parameter Data Type Required Description
    id integer yes District ID
    country_code string yes Country code (ISO 2-char country code)
    province string yes Province ID
    district_name string yes District name
    district_name_local string yes District local name
    area integer yes 1. Center of province, state

    Lookup Zipcode

    import requests
    url     = "http://s.boxme.asia/api/v1/locations/lookup-zipcode/MY/8210/"
    
    headers = {
      'content-type': "application/json",
    }
    
    response = requests.request("GET", url)
    
    
    curl "http://s.boxme.asia/api/v1/locations/lookup-zipcode/MY/8210/"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": [
          {
            "id": 1032,
            "country_code": "MY",
            "province": 174,
            "province_code": "",
            "province_name": "Johor",
            "district": 2883,
            "district_name": "Ayer Baloi",
            "zipcode": "82100",
    
          },
          {
            "id": 1032,
            "country_code": "MY",
            "province": 174,
            "province_code": "",
            "province_name": "Johor",
            "district": 2883,
            "district_name": "Ayer Baloi",
            "zipcode": "82100",
    
          },
        ]
    
    }
    
    

    You can lookup provinces and districts belong to zipcode

    HTTP Request

    GET http://s.boxme.asia/api/v1/locations/lookup-zipcode/{country_code}/{zipcode}

    Request Response

    Parameter Data Type Required Description
    id integer yes District ID
    country_code string yes Country code (ISO 2-char country code)
    province string yes Province ID
    province_code string yes Province name
    province_name string yes Province local name
    district string yes District ID
    district_name string yes District name
    zipcode string yes zipcode

    Pickup Address

    List Pickup Addresses

    In Boxme system, the address included pick-up and return address of merchant.

    HTTP Request

    GET http://s.boxme.asia/api/v1/sellers/addresses/

    import requests
    url     = "http://s.boxme.asia/api/v1/sellers/addresses/"
    
    headers = {
      'content-type': "application/json",
    }
    
    response = requests.request("GET", url)
    
    
    curl "http://s.boxme.asia/api/v1/sellers/addresses/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {
            "count": 1,
            "next": null,
            "previous": null,
            "results": [{
                "id": 1,
                "country": "VN",
                "pickup_name": "Boxme Ha Noi-0906262181",
                "name_contact": "Boxme Ha Noi",
                "phone": "0906262181",
                "province_id": 1,
                "district_id": 7,
                "commune_id": 0,
                "zipcode": "",
                "address": "18 Tam Trinh, Minh Khai, Hai Bà Trưng, Hà Nội, Việt Nam, 18 Tam Trinh, Mai Động, Hai Bà Trưng, Hà Nội 90001, Vietnam,Quận Hai Bà Trưng, Hà Nội",
                "lat": "0.000000",
                "lng": "0.000000",
                "active": 1
            }]
        },
        "error": false,
        "error_code": "",
        "messages": "",
        "total": 1
    }
    
    

    Request Query

    Parameter Data Type Required Description
    address_type integer yes Type of address
    1 is pick-up address
    2 is return address
    page_size integer no Total address display once page.
    Default: 20
    page integer no Page number

    Request Response

    Parameter Data Type Description
    id integer Address ID
    country string Address country code (ISO 2-char country code)
    pickup_name string Address name
    name_contact string Address contact name
    phone string Address contact phone
    province_id integer State, Province ID. Refer to Location
    district_id integer District ID. Refer to Location
    zipcode string Address zipcode
    address string Address detail
    lat geo Latitude
    lng geo Longitude
    active integer Active or not

    Add Pickup Addresses

    import requests
    url     = "https://s.boxme.asia/api/v1/sellers/addresses/"
    payload = {
      "pickup_code": "",
      "pickup_name": "KHO BMVN_HCM",
      "name_contact": "Sandbox",
      "phone": "0987654321",
      "address": "",
      "country": "VN",
      "province_id": 79,
      "district_id": 886,
      "commune_id": 0,
      "zipcode": "",
      "priority": 1,
      "ff_center": 1,
      "ff_center_code": "BMVN_HCM",
      "address_type": 1
    }
    
    
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/sellers/addresses/"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {
        "pickup_id": 25898
        },
        "error": false,
        "error_code": "",
        "messages": "Create address success",
        "total": 0
    }
    

    Request Body

    Parameter Data Type Required Description
    pickup_code string yes Pickup code ( your pickup code)
    pickup_name string yes Pickup name
    name_contact string yes Name contact pickup
    phone string yes Phone contact pickup
    address string yes Address pickup
    country string yes VN, ID, TH, MY, PH
    province_id int yes Province id pickup
    district_id int yes District id pickup
    zipcode string yes Zipcode pickup
    priority string yes Default address pickup
    ff_center int yes Use fulfillment center of BOXME ( 1: Yes, 0: No)
    ff_center_code string yes Fulfillment code of BOXME (See list below)

    Result

    Key Data Type Description
    messages string API Respone message
    error_code string API error code
    error boolean True/False
    data object .
         pickup_id string Pickup id

    Shipment

    Level detail: Shipment >> Overpack >> Orders >> Parcels

    Create In/Outbound shipment

    import requests
    url     = "https://s.boxme.asia/api/v1/sellers/shipments/create"
    payload = {
        "shipping_method": 1,
        "status": 2,
        "ff_id": 126088,
        "pickup_id": 126087,
        "have_labeling": 2,
        "products": [
          {
            "sku": "SANDBOXPRODUCT01",
            "quantity": 50,
            "weight": 100,
            "amount": 120000,
            "boxno" : "Box1001"
          },
          {
            "sku": "SANDBOXPRODUCT02",
            "quantity": 20,
            "weight": 100,
            "amount": 50000,
            "boxno" : "Box1002"
          }
        ],
        "packages": [
          {
            "code": "Box1001",
            "weight": 9500,
            "width": "10",
            "length": "10",
            "height": "10"
          },
          {
            "code": "Box1002",
            "weight": 9500,
            "width": "10",
            "length": "10",
            "height": "10"
          }
        ],
        "tracking": {
          "type": 2,
          "tracking_number": "MADON01"
        }
      }
    
    
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/sellers/shipments/create"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "messages": "Create shipment success",
        "total": 0,
        "error_code": "",
        "data": {
            "shipment_code": "CB-VN-21-84669595"
        },
        "error": false
    }
    

    HTTP Request

    POST https://s.boxme.asia/api/v1/sellers/shipments/create

    Request Body

    Parameter Data Type Required Description
    shipping_method number yes 1. Inbound shipment,
    4. Outbound shipment
    status number yes 2 Create and approved, 1.Create and approve after
    pickup_id number yes Your warehouse id. Please see list in "General settings" => "Business" =>"Pickup address".
    ff_id number yes Boxme warehouse id ( BMVN_HN, BMID_BKS...). Please see list in "General settings" => "Business" =>"Pickup address".
    have_labeling number yes 1.Labeling it on my own , 2.I want warehouse do labelling (has labelling fee)
    products list yes List product for requests. Please refer products
    packages list yes List packages for requests. Please refer packages
    tracking object yes Shipping shipment information Please refer tracking

    products detail

    Parameter Data Type Required Description
    sku string yes Your product SKU.
    quantity number yes Quantily product
    weight number yes Weight product.
    amount number yes Product amount
    boxno string yes Box code containing the product packages

    Packages detail

    Parameter Data Type Required Description
    code string yes Box code contains
    weight number yes Weight box
    width number yes Width box.
    length number yes Length box
    height number yes Height box

    Tracking detail

    Parameter Data Type Required Description
    type number yes 1. Shipping by Boxme, 2.Shipping by yourself
    tracking_number string no Tracking code

    Request Response

    Key Data Type Description
    messages string API Respone message
    error_code string API error code
    error boolean True/False
    data object .
         shipment_code string Shipment code

    Approved/Cancel Shipment

    import requests
    url     = "https://s.boxme.asia/api/v1/sellers/shipments/detail/{shipment_code}/"
    payload = {
      "status": 5
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("PUT", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/sellers/shipments/detail/{shipment_code}/"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {},
        "error": false,
        "error_code": "",
        "messages": "Update shipment code: {shipment_code} is success",
        "total": 0
    }
    

    HTTP Request

    PUT https://s.boxme.asia/api/v1/sellers/shipments/detail/{shipment_code}/

    Request Body

    Parameter Data Type Required Description
    status number yes 2 Approved, 5.Cancel Shipment

    Request Response

    Key Data Type Description
    messages string API Respone message
    error_code string API error code
    error boolean True/False
    data object .
         shipment_code string Shipment code

    Products

    Create an product

    import requests
    url     = "https://s.boxme.asia/api/v1/sellers/products/"
    payload = {
        "name": "Product Name A",
        "price": 200000,
        "price_sale": 300000,
        "price_wholesale": 280000,
        "warehouse_condition": 1, 
        "seller_sku": "SKU00001",
        "weight": 300,
        "min_quantity": "10",
        "width": 30,
        "height": 20,
        "length": 10,
        "images": [
            "https://app.boxme.asia/uploads/photo/supplier/abc/naoraucuqua.jpg"
        ],
        "desc": "This is product description",
        "require_barcode": 0,
        "pack_material": "2",
        "pack_form": 1,
        "manage_by_serial_mumber": 0,
        "category_id": "1",
        "include_battery": 0,
        "battery_config": "",
        "battery_type": "",
        "characteristics": "1,4,5,6",
        "currency": "VND"
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    

    Request Body

    Parameter Data Type Required Description
    name string yes Product name.
    price float yes Price
    price_sale float yes Sale price
    price_wholesale float yes Wholsale price
    warehouse_condition integer yes Storage condition (1: Normal storage, 2: Air storage)
    seller_sku string yes Product SKU
    weight number yes Actual weight by gram
    min_quantity number yes Alerts for item quantity lower
    width number yes Product width by cm.
    height number yes Product height by cm.
    length number yes Product length by cm.
    images list yes List of product images
    desc string yes Product description
    pack_material number yes Material for packing (1: Bag, 2: Box)
    manage_by_serial_mumber number yes Manage product by serial number.
    category_id number yes Product category. Refer to product categories
    include_battery number no 1. Included battery, 2. Not included
    battery_config number no EB: Matching, PB: Pure electricity, NB: Others
    battery_type number no LI: Lithium battery, NI: Ni MH battery, DR: Dry battery, BU: Button battery, OT: Others
    characteristics number no List ID of characteristics
    currency number yes Product price currency

    Characterics

    Characterics ID Description
    1 With Socket
    2 With Liquid
    3 With CD-ROM
    4 Fragile Goods
    5 With Powder
    6 Cream
    7 Valuable goods
    8 Constant temperature preservation
    9 Dangerous goods

    Product categories

    Category ID Description
    1 Mobiles
    2 Tablets
    3 Computers & Laptops
    4 Cameras
    5 Accessories (no-battery)
    6 Accessories (battery)
    7 Health & Beauty
    8 Fashion
    9 Watches
    10 Jewelry
    11 Dry Food & Supplements
    12 Home & Appliances
    13 Home & Garden
    14 Toys
    15 Sports
    16 Luggage
    17 Audio Video
    18 Documents
    19 Gaming
    20 Books & Collectibles
    21 Pet Accessories
    22 Comestic

    Result

    Key Data Type Description
    bsin string Boxme serial indentity number.
    seller_sku string Seller SKU.
    barcode_manufacturer string Barcode manufacture.
    name string Product name.
    desc string Product description.
    weight integer Item weight.
    price float Item price.
    statistic object Detail quantity each warehouse by country.
          warehouse string Warehouse code (ex: HN01, HN02).
          quantity_in_stock integer Total number items stocking.
          waiting_outbound integer Total number items waiting pickup.
          damaged_in_stock integer Total number items damage.
    weight_packed integer Parcel weight per item.
    weight_unit string Weight unit (g or lb)
    country string Country store this product.

    Get list products

    import requests
    url     = "https://s.boxme.asia/api/v1/sellers/products/"
    payload = {
        "keyword": "keyword searchsearchh if any ", 
        "sku" : "SKU001,SKU002",
        "warehouse" : "boxme warehouse id",
        "create_from": "create product, timestamp",
        "create_to": "create product, timestamp",
        "page_size": 25, // page size
        "page": 1  // page number
    }
    
    
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("GET", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/sellers/products/"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {
            "previous": "",
            "next": "",
            "count": 1,
            "results": [
                {
                    "seller_id": 21,
                    "desc": "Giày dép đẹp",
                    "statistic": [
                        {
                            "warehouse": "HN01",
                            "quantity_in_stock": 20,
                            "waiting_outbound": 0,
                            "damaged_in_stock": 0
                        }
                    ],
                    "barcode_manufacturer": "",
                    "last_active_time": 1527655342,
                    "weight_packed": 155,
                    "price_wholesale": 50000,
                    "brand": "",
                    "ValueMap": 2,
                    "value": 2,
                    "label": "SKU002_Giầy dép",
                    "created_time": 1527655342,
                    "warehouse_condition": 1,
                    "barcode": "",
                    "active": 1,
                    "type_sku": "1",
                    "price": 50000,
                    "updated_time": 1527655342,
                    "weight": 150,
                    "volume": "20x30x40",
                    "country": "VN",
                    "tag": "",
                    "supplier_name": "ANDNK DÉP",
                    "min_quantity": 10,
                    "link": "",
                    "category_id": 1,
                    "images": [
                        "https://cf.shopee.vn/file/f8f22318ce2956540059173e6dffd0e3"
                    ],
                    "unit_weight": "g",
                    "seller_sku": "SKU002",
                    "name": "Giầy dép",
                    "price_sale": 50000,
                    "category_name": "CATE GIẦY DÉP",
                    "id": 2,
                    "bsin": "BS002"
                }
            ]
        },
        "total": 1,
        "error_code": "",
        "error": false,
        "messages": ""
    }
    

    Request Body

    Parameter Data Type Required Description
    keyword string yes Product name, sku to filter.
    sku string yes SKU list(separate by commas).
    warehouse string yes Boxme warehouse id.
    create_from datetime yes Datetime create product.
    create_to datetime yes Datetime create product.
    page_size number yes Number of product per page.
    page number yes Page number.

    Result

    Key Data Type Description
    bsin string Boxme serial indentity number.
    seller_sku string Seller SKU.
    barcode_manufacturer string Barcode manufacture.
    name string Product name.
    desc string Product description.
    weight integer Item weight.
    price float Item price.
    statistic object Detail quantity each warehouse by country.
          warehouse string Warehouse code (ex: HN01, HN02).
          quantity_in_stock integer Total number items stocking.
          waiting_outbound integer Total number items waiting pickup.
          damaged_in_stock integer Total number items damage.
    weight_packed integer Parcel weight per item.
    weight_unit string Weight unit (g or lb)
    country string Country store this product.

    Shipping Rates

    Calculate

    import requests
    url     = "https://s.boxme.asia/api/v1/courier/pricing/calculate"
    payload = {
        "ship_from": {
    
            "country": "TH",
            "pickup_id": 190
        },
        "ship_to": {
            "contact_name": "Kitti Settanyakit",
            "address": "ม.เคซีเนเชอรอลซิิตี้ ถนนกาญจนาภ ิเษก แขวงสะพานสูง",
            "phone": "0863364084",
            "country": "TH",
            "province": 190,
            "district": 3389,
            "zipcode": 10240
        },
        "shipments": {
            "content": "Product name",
            "total_parcel": 1,
            "total_amount": 120,
            "chargeable_weight": 1000,
            "description": "Call customer before deliver",
            "parcels": [
                {
                    "amount": 120,
                    "description": "",
                    "dg_code": null,
                    "dimension": {
                        "width": 17,
                        "height": 6,
                        "length": 11
                    },
                    "hs_code": "",
                    "images": [],
                    "inspect_note": "",
                    "items": [
                        {
                            "sku": "",
                            "origin_country": "TH",
                            "name": "Product name",
                            "weight": 1000,
                            "amount": 120,
                            "quantity": 1,
                            "desciption": "Men T-Shirt",
                            "label_code": ""
                        }
                    ],
                    "referral_code": "",
                    "weight": 1000,
                    "dg_cod": ""
                }
            ]
        },
        "config": {
            "order_type": "normal",
            "return_mode": 1,
            "insurance": "N",
            "document": "N",
            "currency": "THB",
            "unit_metric": "metric"
        },
        "payment": {
            "fee_paid_by": "sender",
            "tax_paid_by": "receiver",
            "cod_amount": 0
        },
        "referral": {
            "order_number": "CUSTOMER ORER NUMBER"
        }
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/courier/pricing/calculate"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    [
      {
        "data": {
            "couriers": [
                {
                    "total_fee": 527957.76,
                    "shipping_fee": 527957.76,
                    "tax": 0,
                    "duty": 0,
                    "vas": {
                        "cod": 0,
                        "insurance": 0,
                        "checking": 0
                    },
                    "discount": 0,
                    "cod_value": 0,
    
                    "min_delivery_time": 1,
                    "max_delivery_time": 2,
                    "currency": "VND",
                    "handover_options": "dropoff,pickup",
                    "handover_policy": "Free pickup",
                    "courier_name": "DHL",
                    "courier_id": 17,
                    "courier_logo": "http://v2.boxme.vn/assets/images/courier/dhl.svg",
                    "service_code": "DCM",
                    "service_name": "DHL Express WorldWide(Documents up to 2.0 KG)",
                    "insurance_policy": "http://boxme.asia/insurance-policy-url",
                    "dropoff_point": "http://boxme.asia/drop-off/vtp",
                    "delivery_time_rank": 1,
                    "fee_rank": 1,
                    "rating": 1
                },
                {
                    "total_fee": 551078.88,
                    "shipping_fee": 551078.88,
                    "tax": 0,
                    "duty": 0,
                    "vas": {
                        "cod": 0,
                        "insurance": 0
                    },
                    "discount": 0,
                    "cod_value": 0,
                    "min_delivery_time": 1,
                    "max_delivery_time": 2,
                    "currency": "VND",
                    "handover_options": "dropoff,pickup",
                    "handover_policy": "Free pickup",
                    "courier_name": "DHL",
                    "courier_id": 17,
                    "courier_logo": "http://v2.boxme.vn/assets/images/courier/dhl.svg",
                    "service_code": "NDC",
                    "service_name": "DHL Express WorldWide(Non-documents from 0.5 KG & Documents from 2.5 KG)",
                    "insurance_policy": "http://boxme.asia/insurance-policy-url",
                    "dropoff_point": "http://boxme.asia/drop-off/vtp",
                    "delivery_time_rank": 2,
                    "fee_rank": 2,
                    "rating": 2
                }
            ]
        },
        "error": false,
        "error_code": "",
        "messages": "Calculate fee successfully",
        "total": 0
      }
    ]
    

    Get shipping fee

    HTTP Request

    POST https://s.boxme.asia/api/v1/courier/pricing/calculate

    Request Body

    Parameter Data Type Required Description
    ship_from object yes Pickup address details.
         country string yes Shipper Country code (ISO 2-char country code)
         pickup_id integer yes Pickup id get from your account.
    ship_to object yes Consignee address details.
         contact_name string yes Consignee name.
         address string yes Consignee address line 1.
         phone string yes Consignee Phone number. Accepted special characters are : - ( ) # + ..
         country string yes Consignee Country code (ISO 2-char country code)
         province integer yes Consignee state or province id. Refer to Location
         district integer no Consignee district id. Refer to Location
    Only required for Viet Nam customers
         zipcode string yes Consignee zipcode.
    shipments object yes Shipments details.
         content string yes Parcel key content.
         total_parcel integer yes Total parcel of shipments.
         total_amount decimal yes Total shipments amount.
         description string no Detail parcel description.
         chargeable_weight string yes Chargeable weight of shipment.
    config object yes Config informations.
         sort_mode interge no Sort by : best_price (default), best_time, best_rating
         order_type string yes Order type : normal (default), cross_border, consolidate, fulfill
         return_mode interge no Return mode.
    1: to pickup address (default) , 2 : to return address
         insurance string no Total shipments amount.
    Only accept Y or N
         document string yes Description.
    Only accept Y or N
         currency string yes 3-char ISO currency code for all monetary value fields.
         unit_metric string no metric or imperial
    payment object yes Payment informations.
         fee_paid_by string yes Default fee paid by sender, if you change to receiver then we will add fee to CoD amount.
         tax_paid_by string yes Default fee paid by receiver, if you change to sender then you will be charge (if any).
         cod_amount decimal yes Total CoD Amount(in 2 decimal points). We will calculate depend by fee_paid_by
    Formula: CoD Amount = cod_amount + total_fee (if fee_paid_by is receiver).

    Orders

    Create Order

    import requests
    url     = "https://s.boxme.asia/api/v1/courier/pricing/create_order"
    payload = {
      "ship_from": {
        "country": "TH",
        "pickup_id":1133
    
      },
      "ship_to": {
        "contact_name": "Duong An",
        "address": "Thailand,Pom Prap Sattru Phai,Bangkok",
        "phone": "09356565",
        "country": "TH",
        "province": 190,
        "district": 3353,
        "subdistrict": 3353,
        "zipcode": "10100"
      },
      "shipments": {
        "content": "t-shirt, shoes",
        "total_parcel": 1,
        "total_amount": 120,
        "chargeable_weight": 1000,
        "description": "Please pick it up on 13:00",
        "parcels": [
          {
            "dimension": {
              "width": 0,
              "height": 0,
              "length": 0
            },
            "weight": 1000,
            "description": "Please pick it up on 13:00",
            "items": [
              {
                "sku": "SKU001",
                "label_code": "",
                "origin_country": "VN",
                "name": "t-shirt",
                "desciption": "",
                "weight": 1000,
                "amount": 200,
                "quantity": 1
              }
            ]
          }
        ]
      },
      "config": {
        "order_type": "fulfill",
        "insurance": "N",
        "document": "Y",
        "currency": "THB",
        "unit_metric": "metric",
        "unique_order_number":"N"
    
      },
      "payment": {
        "fee_paid_by": "sender",
        "cod_amount": 0
      },
      "referral": {
        "order_number": "XX-XX-XX"
      }
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/courier/pricing/create_order"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {
            "tracking_number": "BM81262653033",
            "cod_value": 0,
            "fee": {
                "shipping_fee": 12000,
                "cod_fee": 0,
                "insurance_fee": 0,
                "checking_fee": 0
            }
        },
        "error": false,
        "error_code": "",
        "messages": "Create order successfully.",
        "total": 0
    }
    
    

    Please check balance before create orders, you can not create orders if your balance not enought. For fulfillment order, we auto process and you can not cancel it after cutoff time.

    HTTP Request

    POST https://s.boxme.asia/api/v1/courier/pricing/create_order

    Request Body

    Parameter Data Type Required Description
    ship_from object yes Pickup address details.
         country string yes Shipper Country code (ISO 2-char country code).
         pickup_id integer yes ID of pickup address, must add country above.
    ship_to object yes Consignee address details.
         contact_name string yes Consignee name.
         company_name string no Consignee company name.
         address string yes Consignee address line 1.
         phone string yes Consignee Phone number. Accepted special characters are : - ( ) # + ..
         country string yes Consignee Country code (ISO 2-char country code)
         province integer yes Consignee state or province id. Refer to Location
         district integer no Consignee district id. Refer to to Location
    Only required for Viet Nam customers
         zipcode string yes Consignee zipcode.
    shipments object yes Shipments details.
         content string yes Parcel key content.
         total_parcel integer yes Total parcel of shipments.
         total_amount decimal yes Total shipments amount.
         description string no Note for shipments or driver.
         chargeable_weight decimal yes Chargeabe weight (lbs, gram).
         parcels list yes Parcel list
    config object yes Config informations.
         create_by string no Staff ID ( referal your CRM system)
         delivery_service string no Shipping service code
         sort_mode string no Sort by : best_price (default), best_time, best_rating
         order_type string yes Order type : normal (default), cross_border, consolidate, fulfill
         insurance string no Total shipments amount.
    Only accept Y or N
         currency string yes 3-char ISO currency code for all monetary value fields.
         unit_metric string no metric or imperial, default is metric
         unique_order_number string no Y or N, default is N. We check unique within 10days, default we checked phone number within 3mins ( all rules excluded orders cancelled)
    payment object yes Payment informations.
         fee_paid_by string yes Default fee paid by sender, if you change to receiver then we will add fee to CoD amount.
         cod_amount decimal yes Total CoD Amount(in 2 decimal points). We will calculate depend by fee_paid_by
    Formula: CoD Amount = cod_amount + total_fee (if fee_paid_by is receiver).
         customer_code string no CoD receiver code
    Based on certain conditions
         identity_type string no CoD receiver identity type id or passport
    Based on certain conditions
         identity_number string no CoD receiver identity number
    Based on certain conditions
         bank_code string no CoD receiver bank code. Refer to Bank Code
    Based on certain conditions
         bank_card_owner string no CoD receiver bank card name
    Based on certain conditions
         bank_card_number string no CoD receiver bank card number
    Based on certain conditions
    referral object yes Referral informations.
         order_number string no Your order number ( exp: shopify order_id)
         tracking_number string no Boxme tracking number (provide by Boxme)


    parcels object.

    Parameter Data Type Required Description
    weight string yes Parcel weight.
    description string yes Parcel description.
    items list yes List items of parcel.


    items object.

    Parameter Data Type Required Description
    sku string no Item SKU, require for fulfillment orders.
    origin_country string no Manufacture country .
    name string yes Item name.
    description string yes Product description.
    weight integer yes Item weight.
    amount decimal yes Item value ( per item).
    quantity integer yes Total quanity.

    Shipping Label

    import requests
    url     = "http://s.boxme.asia/api/v1/orders/generate-awb-label/ "
    payload = {
        "list_tracking": ["BM8104221956","BM8509833018"]
      "page_size": "A5"
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "http://s.boxme.asia/api/v1/orders/generate-awb-label/"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "messages": "",
        "data": {
            "label_url": "http://s.boxme.asia/orders/awb-label/MjFmZjliMmUtOWFkOS00MTgzLTk3ZjYtNGUyOTg5YTJiZGY2"
        },
        "error": false,
        "total": 0,
        "error_code": ""
    }
    
    

    Get AWB label

    HTTP Request

    POST http://s.boxme.asia/api/v1/orders/generate-awb-label/

    Request Body

    Parameter Data Type Required Description
    list_tracking list yes List tracking number.
    Max: 20 tracking
    page_size list yes Paper size .
    A5 or A4

    Request Response

    Parameter Data Type Required Description
    label_url string yes AWB label url (PDF)

    Cancel Order

    You can cancel the order before our warehouse ships out this shipment to the courier.

    import requests
    url     = "http://s.boxme.asia/api/v1/orders/cancel/BM8509833018/"
    payload = {
    
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "http://s.boxme.asia/api/v1/orders/cancel/BM8509833018/"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {},
        "error": false,
        "error_code": "",
        "messages": "Success",
        "total": 0
    }
    
    

    HTTP Request

    POST http://s.boxme.asia/api/v1/orders/cancel/{tracking_number}

    Request Body

    Parameter Data Type Required Description
    tracking_number string yes Tracking number need to cancel

    Request Response

    Parameter Data Type Required Description

    Approve Order

    import requests
    url     = "http://s.boxme.asia/api/v1/orders/approve/BM8509833018/"
    payload = {
    
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "http://s.boxme.asia/api/v1/orders/approve/BM8509833018/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {},
        "error": false,
        "error_code": "",
        "messages": "Update tracking number: BM8509833018 is success",
        "total": 0
    }
    
    

    HTTP Request

    POST http://s.boxme.asia/api/v1/orders/approve/{tracking_number}

    Request Body

    Parameter Data Type Required Description
    tracking_number string yes Tracking number need to approve

    Request Response

    Parameter Data Type Required Description

    Return Order

    import requests
    url     = "http://s.boxme.asia/api/v1/courier/intergrate/confirm_return_tracking_code"
    payload = {
        "tracking_code" : "BM1234567890",
      "note"          : "Reason for return order"
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "http://s.boxme.asia/api/v1/courier/intergrate/confirm_return_tracking_code"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {},
        "error": false,
        "error_code": "",
        "messages": "Success",
        "total": 0
    }
    
    

    HTTP Request

    POST http://s.boxme.asia/api/v1/courier/intergrate/confirm_return_tracking_code

    Request Body

    Parameter Data Type Required Description
    tracking_code string yes Tracking number need to return
    note string yes Reason for return

    Request Response

    Parameter Data Type Required Description

    Reshipping Order

    import requests
    url     = "http://s.boxme.asia/api/v1/courier/intergrate/confirm_delivery_tracking_code"
    payload = {
        "tracking_code" : "BM1234567890",
      "note"          : "Reason for reshipping order"
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "http://s.boxme.asia/api/v1/courier/intergrate/confirm_delivery_tracking_code"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {},
        "error": false,
        "error_code": "",
        "messages": "Success",
        "total": 0
    }
    
    

    HTTP Request

    POST http://s.boxme.asia/api/v1/courier/intergrate/confirm_delivery_tracking_code

    Request Body

    Parameter Data Type Required Description
    tracking_code string yes Tracking number need to reshipping
    note string yes Reason for reshipping

    Request Response

    Parameter Data Type Required Description

    Get Order Fail Delivery

    import requests
    url     = "https://s.boxme.asia/api/v1/orders/rma/list/"
    payload = {
        'page': 1
      'page_size': 50,
      'create_from': 1560099600
      'create_to': 1562778000
    response = requests.request("GET", url, data=payload, headers=headers)
    
    
    curl "https://s.boxme.asia/api/v1/orders/rma/list/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
    
        "data": {
            "count": 2,
            "next": "",
            "previous": "",
            "results": [
                {
                    "rma_id": 264862,
                    "country": "VN",
                    "rma_number": "RMA676970803",
                    "tracking_number": "BM82203301707",
                    "task_id": 0,
                    "rma_type": 1,
                    "seller_info": {
                        "seller_id": 236216,
                        "email": "chien54xd6@gmail.com",
                        "user_name": "Vũ Ngọc Hải",
                        "address": "",
                        "phone": "0984689451"
                    },
                    "order_info": {
                    },
                    "status": 100,
                    "status_name": "Chờ xử lý",
                    "status_name_en": "Opening",
                    "status_icon": "icon-clock",
                    "status_color": "badge badge-primary",
                    "return": {
                    },
                    "receiver_info": {
                    },
                    "quantity": 1,
                    "actual_quantity": 1,
                    "created_time": 1562726943,
                    "updated_time": 1562726943,
                    "lead_time": 1562899743,
                    "returned_time": 1562899743,
                    "successed_time": 0,
                    "rma_note": "kh hủy",
                    "rma_note_customer": "",
                    "accepted_time": 0
                }
            ]
        },
        "error": false,
        "error_code": "",
        "messages": "",
        "total": 2
    }
    
    

    HTTP Request

    GET https://oms.boxme.asia/api/v1/orders/rma/list/

    Request Body

    Parameter Data Type Required Description
    key string no Tracking number that you and to search
    create_from int no Filter list delivery failed by created time
    create_to int no Filter list delivery failed by created time
    page string yes Number of page
    page_size string yes Total item show in one page

    Request Response

    Parameter Data Type Description
    rma_number string Number of RMA
    tracking_number string Boxme tracking number
    rma_note string Reason of fail delivery
    order_info.courier_name string Courier's name
    order_info.courier_tracking_code string Courier's tracking number
    order_info.weight int Total order weight
    order_info.over_weight int Over weight
    order.info.amount float Total order amount
    order.info.money_collect float Total CoD amount
    order.info.status int Order status
    order.info.status_name_en string Order status name in english
    order.info.status_name string Order status name in local

    Get Tracking Status

    import requests
    url     = "https://s.boxme.asia/api/v1/orders/info/{tracking_number}/"
    payload = {}
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    curl "https://s.boxme.asia/api/v1/orders/info/{tracking_number}/"
      -H "Authorization: api key"
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {
            "order_number": "93821085",
            "courier_tracking_code": "S1245828.SGE1.9V.P.481895224",
            "tracking_number": "BM81632968566",
            "weight": 500,
            "service": {
                "code": "GHTK_CPN",
                "name": "Express service"
            },
            "status": "701",
            "status_name_local": "Đơn hủy bởi vận hành",
            "status_name": "Cancelled by operator",
            "courier": [
                {
                    "prefix": "gtk",
                    "name": "Giao Hàng Tiết Kiệm",
                    "url_track": "http://khachhang.giaohangtietkiem.vn/khach-hang/tracking/order/"
                }
            ],
            "receiver": {
                "country": "VN",
                "fullname": "Arthit Kamon",
                "zipcode": "",
                "province": "TP. Hồ Chí Minh",
                "district": "Quận 5"
            },
            "journey": [
                {
                    "status": "201",
                    "status_name_local": "HVC đang lấy hàng",
                    "status_name": "Picking",
                    "city_name": "Boxme",
                    "note": "",
                    "created_time": "03-04-2020 11:07:46"
                },
                {
                    "status": "200",
                    "status_name_local": "Đã duyệt",
                    "status_name": "Verified",
                    "city_name": "Boxme",
                    "note": "Order created",
                    "created_time": "03-04-2020 11:07:44"
                }
            ]
        },
        "error": false,
        "error_code": "",
        "messages": "",
        "request_id": 1587219100,
        "total": 0
    }
    
    

    You can get tracking status by this API but we recommend to use our webhook to get real-time tracking status

    HTTP Request

    POST https://s.boxme.asia/api/v1/orders/info/{tracking_number}/

    Request Response

    Parameter Data Type Description
    order_number string Number Your order number ( exp: shopify order_id)
    courier_tracking_code string Courier's tracking number
    tracking_number string Tracking number (Boxme)
    weight int Total order weight
    service.code string Shipping service code
    service.name int Shipping service name
    status int Order status
    status_name_local string Status name local
    status_name string Status name (EN)
    courier.prefix string Courier prefix
    courier.name string Courier name
    url_track string Link to track status of order from courie
    receiver.country string Consignee Country code (ISO 2-char country code)
    receiver.fullname string Consignee name
    receiver.zipcode string Consignee zipcode.
    receiver.province string Consignee province
    receiver.district string Consignee district
    journey array Journey of orders Journey

    Journey detail

    Parameter Data Type Required Description
    status int Order status
    status_name_local string Status name local
    status_name string Status name (EN)
    city_name string Location of orders at the time
    note string Note
    created_time string Time

    Init Fulfillment

    import requests
    url     = "https://s.boxme.asia/api/v2/orders/init_fulfillment/{tracking_number}/"
    payload = {
      "courier_name": "Rồng Thiêng",
      "courier_tracking_code": "TH123123",
      "label": "",
      "label_type": "PDF"
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v2/orders/init_fulfillment/BM814648137833/"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": null,
        "error": false,
        "error_code": "",
        "messages": "Init Fulfillment successfully.",
        "total": 0
    }
    
    

    This API init fulfillment for orders which are self-delivery or synced from ecommerce platfrom such as: Lazada, Tiki, Shopee, Sendo...

    HTTP Request

    POST https://s.boxme.asia/api/v2/orders/init_fulfillment/{tracking_number}/

    Request Body

    Parameter Data Type Required Description
    courier_name string yes Name of Courier
    courier_tracking_code string yes After pushing orders to courier successfully, courier with return courier_tracking_code for tracking delivery of order
    label string no Data is base64 encoded
    label_type string no Type of label. Value is "PDF" or "PNG"

    Webhook

    Receive a webhook

    A webhook is a tool for retrieving and storing data from certain events. Boxme sends webhooks when status changes in the lifespan of an Order. This documentation covers the core resources needed to receive webhooks from Boxme.

    Note: Go to Settings page > Intergration > Webhook API to config webhook

    We will issue a HTTP POST request to the URL specified every time an event occurs. The request's POST parameters will contain JSON data relevant to the event that triggered the request

    Receive Order Status

    Please refer sample JSON in right side.

    A sample JSON of a hook Boxme sends:

        {
        "TrackingCode": "BM8953566102",
        "CourierTrackingCode": "BM8953566102",
        "Fee": [{
            "FeeCode": "cod_fee",
            "FeeValue": 10010,
            "Currency": "VND"
        }, {
            "FeeCode": "handling_fee",
            "FeeValue": 3300,
            "Currency": "VND"
        }, {
            "FeeCode": "overweight_fee",
            "FeeValue": -42592,
            "Currency": "VND"
        }, {
            "FeeCode": "shipping_fee",
            "FeeValue": 55297,
            "Currency": "VND"
        }, {
            "FeeCode": "special_fee",
            "FeeValue": 550,
            "Currency": "VND"
        }],
        "ListItem": [
            {
                "Sku" : "LK20202807",
                "Quantity" : 3,
                "ProductName" : "Excel Pure",
                "SerialNumbers" : [
                    "SR0000001",
                    "SR0000002",
                    "SR0000003"
                ]
            },
            {
                "Sku" : "LK20202809",
                "Quantity" : 1,
                "ProductName" : "Apple Ipad 1",
                "SerialNumbers" : [
                    "SR0000005"
                ]
            }
    
        ],
        "OrderCode": "p_39623607",
        "Weight": 40,
        "StatusCode": 304,
        "StatusName": "Đang vận chuyển",
        "Location": "TTKT Đà Lạt - Lâm Ðồng",
        "Note": "Đóng bảng kê đi ",
        "TimeStamp": 1539230967
    }
    
    Parameter Data Type Description
    TrackingNumber string Boxme tracking code.
    CourierTrackingNumber string Courier tracking code (maybe same like Boxme tracking code).
    OrderCode string Your order number.
    Fee list Return correct fee when orders have final status .
    ListItem list Return the list of packed items.
    Weight decimal Order weight (gram).
    StatusCode string Order status code, please refer List Order Status.
    StatusName string Order status name, please refer List Order Status.
    Location string Order Location.
    TimeStamp string Status updated time

    Use can go to Webhook test page send a test event.

    Order Status Event

    Status Code Status Name Detail
    200 Verified Order have been approved
    201 Picking
    202 Pickup failed
    203 On the way to drop-off
    210 Processing at warehouse
    211 Ready to ship at warehouse
    212 Out of stock
    220 Awaiting to sourcing
    230 Cross border processing
    231 Received at origin facility
    232 Departed at origin facility
    233 Cross border transit
    235 Customs cleared
    234 Customs onhold
    236 Received at desitination facility
    237 Departed at desitination facility
    300 Shipped
    310 Out for delivery
    400 Out of delivery
    410 Awaiting to return
    420 Return processing
    430 Return approved
    500 Returning
    510 Out of return
    511 Return refused
    520 Awaiting receive at facility
    530 Return to orgin facility
    610 Returned at orgin facility
    600 Returned Return to your warehouse or Boxme warehouse (Final)
    605 Destroy at destination Parcels destroy at destination hub (Final)
    700 Cancelled by sellers
    701 Cancelled by operator
    702 Cancelled by partner
    703 Cancelled by system
    704 Pending for audit Operator need check and verify next status of order
    705 Cancel at warehouse Order cancelled after pick & pack (final)
    800 Delivered Delivery successfull (Final)
    801 Fulfilled Order fulfilled and ship to your courier(final)

    Receive inventory event

    Please refer sample JSON in right side.

    A sample JSON of a hook Boxme sends:

     {
        "bsin": "BSN123456789",
        "seller_sku": "SKU0001",
        "weight": 100,
        "volume": "15x10x5",
        "time_create": 1593497728,
        "country": "VN",
        "ff_center_code": "BMVN_HCM",
        "quantity_in_stock": 100,
        "waiting_outbound": 5,
        "damaged_in_stock": 0
    }
    
    Parameter Data Type Description
    bsin string Bsin.
    seller_sku string Product SKU.
    weight number Actual weight by gram
    volume string Product dimensions (LxWxH)
    time_create number Event updated time (TimeStamp)
    country string Country store this product.
    ff_center_code string OrderFulfillment code of BOXME
    quantity_in_stock number Total number items Available.
    inventory number Total number items stocking.
    waiting_outbound number Total number items waiting pickup.
    damaged_in_stock number Total number items damage.

    Receive Shipment Status

    Please refer sample JSON in right side.

    A sample JSON of a hook Boxme sends:

        {
        "shipment_code" : "SM-VN-123-123456",
        "is_unloaded": false,
        "status": 6,
        "list_products" : [
            {
                "seller_sku" : "SKU-123456",
                "quantity_damaged" : 0,
                "quantity_received" : 20,
                "barcode" : "1010101010",
                "weight_packed" : 200,
                "volume" : "40x30x20",
                "list_serial_number" : [ ],
                "box_no" : "#1001",
                "quantity_barcode" : 20
            },
            {
                "seller_sku" : "SKU-222222",
                "quantity_damaged" : 0,
                "quantity_received" : 10,
                "barcode" : "1010101011",
                "weight" : 200,
                "volume" : "40x30x20",
                "list_serial_number" : [ ],
                "box_no" : "#1001",
                "quantity_barcode" : 0
            }
        ]
    }
    
    Parameter Data Type Description
    shipment_code string Boxme shipment code.
    is_unloaded boolean True : Boxme unloaded (containers, ...).
    status int Shipment status code, please refer List Shipment Status.
    status_nane string Shipment status name, please refer List Shipment Status.
    list_products string Shipment status name, please refer List Shipment Products.

    Shipment Product Detail

    Parameter Data Type Description
    sku string Your product SKU.
    quantity_received number Quantity received in warehouse
    quantity_damaged number Quantity damaged in warehouse
    barcode number Your product barcode.
    weight number weight at warehouse (gram)
    volume string volume at warehouse
    list_serial_number string list serial number
    box_no string Box code
    quantity_barcode string Number of labels

    Shipment Status Event

    Status Code Status Name Detail
    1 New Shipment created waiting for approval
    2 Approved Shipment Shipment approved
    4 Processing at warehouse Processing at warehouse
    5 Cancelled by sellers Shipment cancelled by sellers
    6 Success Shipment success
    7 Cancelled by operator Shipment cancelled by operator Boxme
    8 Out of stock Shipment (outbound) out of stock

    Webhook testing

    You can use for testing & check authentication

    Wehook test page

    Errors

    Error Code Meaning
    400 Bad Request -- Your request is invalid.
    401 Unauthorized -- Your API key is wrong.
    403 Forbidden -- Your API key is wrong..
    404 Not Found -- API could not be found.
    405 Method Not Allowed -- You tried to access with an invalid method.
    406 Not Acceptable -- You requested a format that isn't json.
    410 Gone -- The api requested has been removed from our servers.
    418 I'm a teapot.
    429 Too Many Requests -- You're requesting too many api ! Slow down!
    500 Internal Server Error -- We had a problem with our server. Try again later.
    503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.