Taiwan Logistics logo

Taiwan Logistics

Community
Moksa1123
taiwan-logistics

Taiwan Logistics API integration specialist for ECPay, NewebPay, PAYUNi, SmilePay, PChomePay, PayNow and ezShip aggregators, HCT direct carrier API, and on-demand delivery (Lalamove, pandago). Use when developing shipping flows, implementing CVS pickup (7-11/全家/萊爾富/OK), home delivery (黑貓/中華郵政), cold-chain, store-map selectors, COD orders, or shipment tracking. Handles encryption (MD5, AES-256-CBC, AES-256-GCM, 3DES), store maps, and provider field mappings.

Overview

PublisherMoksa1123
Repositorytaiwan-ecommerce-toolkit
Skill nametaiwan-logistics
Stars
51
Forks
10
Bundled files
32
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 32 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by Moksa1123 on GitHub. Read the source before you install it.

Installation

Install the Taiwan Logistics AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Moksa1123/taiwan-ecommerce-toolkit/tree/main/logistics-cli/assets/taiwan-logistics
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Moksa1123/taiwan-ecommerce-toolkit.git /tmp/taiwan-ecommerce-toolkit
mkdir -p .claude/skills
cp -r /tmp/taiwan-ecommerce-toolkit/logistics-cli/assets/taiwan-logistics .claude/skills/taiwan-logistics
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Taiwan Logistics in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Taiwan Logistics on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Taiwan Logistics is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Taiwan Logistics Development Skill

Comprehensive guide for Taiwan Logistics integration (ECPay, NewebPay, PAYUNi, SmilePay, PChomePay, PayNow, ezShip + HCT direct API + on-demand delivery)


Supported Providers

This skill covers 7 logistics aggregators + 1 direct carrier API + 3 on-demand delivery services:

Provider類型Reference
ECPay 綠界aggregatorreferences/ecpay-logistics-api.md
NewebPay 藍新aggregatorreferences/NEWEBPAY_LOGISTICS_REFERENCE.md
PAYUNi 統一aggregatorreferences/payuni-logistics-api.md
SmilePay 速買配aggregator (含 7-11/全家 + 黑貓 Pay_zg 矩陣)references/smilepay-logistics-api.md
PChomePay 拍錢包aggregator (金物流二合一)references/pchomepay-logistics-api.md
PayNow 立吉富aggregator (Logistic_service 產品線, 3DES/ECB/Zero-Padding)references/paynow-logistics-api.md
ezShip 台灣便利配aggregator (全家/萊爾富/OK、宅配、店港澳;不含 7-11)references/ezship-logistics-api.md
HCT 新竹物流直連 carrier APIreferences/hct-logistics-api.md
Lalamove即時/同城配送references/lalamove-logistics-api.md
pandago即時/同城配送references/ondemand-delivery.md

黑貓、宅配通、中華郵政、超商賣家平台等沒有對外商家 API,替代路徑見 references/carrier-direct-access.md。 各家實際參數值(子類型、溫層、代收上限)見 data/logistics-types.csv。

註:本 skill 收錄的聚合商(ECPay、NewebPay、PAYUNi、SmilePay、PChomePay、PayNow、ezShip)官方規格都沒有新竹物流選項,要用 HCT 只能直連(需向 HCT 申請)。


Quick Reference

Core Concepts

Logistics Types:

  • B2C (大宗寄倉): Bulk warehouse shipping - Merchant ships to logistics center, then distributed to stores
  • C2C (店到店): Store-to-store - Merchant ships to convenience store, then delivered to pickup store

Trade Types:

  • 取貨付款 (Cash on Delivery): Customer pays when picking up
  • 取貨不付款 (No Payment): Customer only picks up (payment already completed)

Supported Convenience Stores:

  1. 7-ELEVEN
  2. FamilyMart (全家)
  3. Hi-Life (萊爾富)
  4. OK Mart

Key APIs:

  1. Store Map Query - Select pickup/sender store
  2. Create Shipment - Create logistics order
  3. Get Shipment Number - Get shipping code
  4. Print Label - Print shipping label
  5. Query Shipment - Check order status
  6. Modify Shipment - Update order details
  7. Track Shipment - Track delivery history
  8. Status Notification - Real-time status updates

Service Providers

NewebPay Logistics (藍新物流)

Encryption: AES-256-CBC + SHA256 (same as NewebPay payment)

API Style: Form POST with AES encryption

Supported Services:

  • C2C Store-to-Store: 4 convenience stores (7-11, FamilyMart, Hi-Life, OK Mart)
  • B2C Bulk Warehouse: 7-ELEVEN only

Test Environment:

  • Store Map: https://ccore.newebpay.com/API/Logistic/storeMap
  • Create Shipment: https://ccore.newebpay.com/API/Logistic/createShipment
  • Get Shipment No: https://ccore.newebpay.com/API/Logistic/getShipmentNo
  • Print Label: https://ccore.newebpay.com/API/Logistic/printLabel
  • Query Shipment: https://ccore.newebpay.com/API/Logistic/queryShipment
  • Modify Shipment: https://ccore.newebpay.com/API/Logistic/modifyShipment
  • Track Shipment: https://ccore.newebpay.com/API/Logistic/trace

Production Environment:

  • Replace ccore.newebpay.com with core.newebpay.com

ECPay Logistics (綠界物流)

Encryption: MD5 CheckMacValue

API Style: Form POST with URL-encoded parameters

Supported Services:

  • B2C 超商取貨:7-11(常溫/冷凍)、全家、萊爾富
  • C2C 店到店:7-11 交貨便、全家、萊爾富、OK
  • 宅配:黑貓(常溫/冷藏/冷凍)、中華郵政(僅常溫)

Test Environment:

  • Base URL: https://logistics-stage.ecpay.com.tw
  • Create: POST /Express/Create
  • Query: POST /Helper/QueryLogisticsTradeInfo/V2
  • Print: POST /helper/printTradeDocument
  • Map: POST /Express/map

Production Environment:

  • Base URL: https://logistics.ecpay.com.tw

Logistics SubTypes (LogisticsType=CVS):

  • B2C:FAMI 全家、UNIMART 7-11、UNIMARTFREEZE 7-11 冷凍店取、HILIFE 萊爾富
  • C2C:FAMIC2C 全家、UNIMARTC2C 7-11 交貨便、HILIFEC2C 萊爾富、OKMARTC2C OK
  • B2C 合約只能用 B2C 代碼,C2C 合約只能用 C2C 代碼;OK 只有 C2C

Logistics SubTypes (LogisticsType=HOME):

  • TCAT - 黑貓宅急便(代收貨款時商品金額上限 20,000)
  • POST - 中華郵政(Temperature 只能 0001,不可代收)

Temperature Control (Home Delivery, TCAT):

  • 0001 - Normal temperature (常溫)
  • 0002 - Refrigerated (冷藏)
  • 0003 - Frozen (冷凍)

Specification (Package Size):

  • 0001 - 60cm
  • 0002 - 90cm
  • 0003 - 120cm
  • 0004 - 150cm

Distance (Delivery Range):

  • 00 - Same district
  • 01 - Same city
  • 02 - Cross city
  • 03 - Outlying islands

Test Credentials:

  • B2C 及宅配:MerchantID 2000132、HashKey 5294y06JbISpM5x9、HashIV v77hoKGq4kWxNNIS
  • C2C:MerchantID 2000933、HashKey XBERn1YOvpM9nfZc、HashIV h1ONHk4P4yqbl5LK

PAYUNi Logistics (統一物流)

Encryption: AES-256-GCM + SHA256 (same as PAYUNi payment): EncryptInfo = hex(base64(ciphertext) + ":::" + base64(tag)), HashInfo = SHA256(HashKey + EncryptInfo + HashIV)

API Style: form POST (MerID, Version, EncryptInfo, HashInfo), JSON response with an encrypted EncryptInfo. Source: official docs docs.payuni.com.tw/web/#/7; details in references/payuni-logistics-api.md.

Supported Services: 7-ELEVEN B2C bulk / C2C store-to-store / C2B return (normal + frozen); T-Cat home delivery (normal, frozen, refrigerated)

Endpoints (base https://sandbox-api.payuni.com.tw/api / https://api.payuni.com.tw/api):

PurposePathVersion
Store map (browser form)/logistics/ship_map1.1
Query shipment/logistics/query1.1
Print 7-11 label (browser form)/logistics/print_label1.0
T-Cat label PDF (browser form)/home_delivery/get_obt_number_pdf1.0
T-Cat label re-download/home_delivery/download_pdf1.0

Shipments are created inside a payment request: UPP with ShipTag=1 (+ Ship=1 for COD), or the backend ATM / CVS / credit-token / LINE Pay / JKoPay / AFTEE APIs with ServiceType=3 (no COD).

Codes: ShipType 1=7-ELEVEN 2=T-Cat · LgsType B2C / C2C / HOME / C2B · GoodsType 1=normal 2=frozen 3=refrigerated · DeliveryTimeTag 01 / 02 / 04(not set)


Transaction Flows

1. B2C Bulk Warehouse - Cash on Delivery

  1. Create Order: Customer selects store, merchant calls Create Shipment API
  2. Get Shipping Code: Merchant calls Get Shipment Number API & Print Label API
  3. Merchant Ships: Merchant delivers goods to logistics center
  4. Logistics Distributes: Logistics center verifies and distributes to pickup store
  5. Customer Picks Up: Customer picks up and pays, NewebPay notifies merchant

2. C2C Store-to-Store - Cash on Delivery

  1. Create Order: Customer selects store, merchant calls Create Shipment API
  2. Get Shipping Code: Merchant calls Get Shipment Number API & Print Label API
  3. Merchant Ships: Merchant delivers goods to sender store
  4. Store Ships: Sender store ships to logistics center, then to pickup store
  5. Customer Picks Up: Customer picks up and pays, NewebPay notifies merchant

3. B2C Bulk Warehouse - No Payment

  1. Create Order: Customer selects store (payment already completed)
  2. Get Shipping Code: Merchant calls Get Shipment Number API & Print Label API
  3. Merchant Ships: Merchant delivers goods to logistics center
  4. Logistics Distributes: Logistics center verifies and distributes to pickup store
  5. Customer Picks Up: Customer picks up, NewebPay notifies merchant

4. C2C Store-to-Store - No Payment

  1. Create Order: Customer selects store (payment already completed)
  2. Get Shipping Code: Merchant calls Get Shipment Number API & Print Label API
  3. Merchant Ships: Merchant delivers goods to sender store
  4. Store Ships: Sender store ships to logistics center, then to pickup store
  5. Customer Picks Up: Customer picks up, NewebPay notifies merchant

API Operations

1. Store Map Query API [NPA-B51]

Query convenience store locations for pickup or sender.

Endpoint:

  • Test: https://ccore.newebpay.com/API/Logistic/storeMap
  • Production: https://core.newebpay.com/API/Logistic/storeMap

Request Parameters:

FieldDescriptionTypeRequired
UID_Merchant IDVarchar(15)V
EncryptData_Encrypted dataTextV
HashData_Hash dataTextV
Version_API versionVarchar(5)V
RespondType_Response formatVarchar(6)V

EncryptData_ Parameters:

FieldDescriptionTypeRequiredNotes
MerchantOrderNoMerchant order numberVarchar(30)VUnique order ID
LgsTypeLogistics typeVarchar(15)VB2C or C2C
ShipTypeLogistics providerVarchar(15)V1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart
ReturnURLReturn URLVarchar(50)VURL after store selection
TimeStampUnix timestampTextVCurrent time in seconds
ExtraDataExtra dataVarchar(20)-Returned as-is

Response EncryptData_ Parameters:

FieldDescriptionTypeNotes
LgsTypeLogistics typeVarchar(15)B2C or C2C
ShipTypeLogistics providerVarchar(15)1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart
MerchantOrderNoMerchant order numberVarchar(30)Order ID
StoreNameStore nameVarchar(10)Selected store name
StoreTelStore phoneVarchar(12)Store phone number
StoreAddrStore addressVarchar(100)Store address
StoreIDStore codeVarchar(8)Store ID (use this for shipment)
ExtraDataExtra dataVarchar(20)Original value returned

2. Create Shipment API [NPA-B52]

Create logistics shipment order after payment order is established.

Endpoint:

  • Test: https://ccore.newebpay.com/API/Logistic/createShipment
  • Production: https://core.newebpay.com/API/Logistic/createShipment

EncryptData_ Parameters:

FieldDescriptionTypeRequiredNotes
MerchantOrderNoMerchant order numberVarchar(30)VUnique order ID
TradeTypeTrade typeInt(1)V1=COD, 3=No Payment
UserNameRecipient nameVarchar(20)VPickup person name
UserTelRecipient phoneVarchar(10)VMobile number
UserEmailRecipient emailVarchar(50)VEmail address
StoreIDPickup store IDVarchar(10)VFrom store map query
AmtTransaction amountInt(10)VOrder amount
NotifyURLNotification URLVarchar(100)-Pickup completion callback
ItemDescProduct descriptionVarchar(100)-Product name
LgsTypeLogistics typeVarchar(3)VB2C or C2C
ShipTypeLogistics providerVarchar(15)V1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart
TimeStampUnix timestampVarchar(50)VCurrent time in seconds

Response EncryptData_ Parameters:

FieldDescriptionTypeNotes
MerchantIDMerchant IDVarchar(15)NewebPay merchant ID
AmtTransaction amountInt(10)Order amount
MerchantOrderNoMerchant order numberVarchar(30)Order ID
TradeNoNewebPay trade numberVarchar(20)Platform transaction ID
LgsTypeLogistics typeVarchar(15)B2C or C2C
ShipTypeLogistics providerVarchar(15)1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart
StoreIDPickup store IDVarchar(10)Store code
TradeTypeTrade typeInt(1)1=COD, 3=No Payment

3. Get Shipment Number API [NPA-B53]

Get shipping code before shipment. Merchants can print labels at convenience store Kiosk.

Endpoint:

  • Test: https://ccore.newebpay.com/API/Logistic/getShipmentNo
  • Production: https://core.newebpay.com/API/Logistic/getShipmentNo

EncryptData_ Parameters:

FieldDescriptionTypeRequiredNotes
MerchantOrderNoMerchant order numbersJson_arrayVMax 10 orders at once
TimeStampUnix timestampVarchar(50)VCurrent time in seconds

Response EncryptData_ Parameters:

FieldDescriptionTypeNotes
SUCCESSSuccess arrayJson_arrayMultiple records
ERRORError arrayJson_arrayMultiple records
MerchantOrderNoMerchant order numberVarchar(30)Order ID
ErrorCodeError codeVarchar(20)SUCCESS or error code
LgsNoShipment numberVarchar(20)Logistics tracking number
StorePrintNoStore print codeVarchar(20)Code for Kiosk printing
ShipTypeLogistics providerVarchar(15)1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart
LgsTypeLogistics typeVarchar(15)B2C or C2C

4. Print Label API [NPA-B54]

Print shipping labels to attach to products.

Endpoint:

  • Test: https://ccore.newebpay.com/API/Logistic/printLabel
  • Production: https://core.newebpay.com/API/Logistic/printLabel

Important: Must use Form POST method (not JSON API call)

EncryptData_ Parameters:

FieldDescriptionTypeRequiredNotes
LgsTypeLogistics typeVarchar(15)VB2C or C2C
ShipTypeLogistics providerVarchar(15)V1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart
MerchantOrderNoMerchant order numbersjson_arrayVMax: 7-11(18), FamilyMart(8), Hi-Life(18), OK Mart(18)
TimeStampUnix timestampVarchar(50)VCurrent time in seconds

Response: Returns HTML page with printable shipping label


5. Query Shipment API [NPA-B55]

Query logistics order information and status.

Endpoint:

  • Test: https://ccore.newebpay.com/API/Logistic/queryShipment
  • Production: https://core.newebpay.com/API/Logistic/queryShipment

EncryptData_ Parameters:

FieldDescriptionTypeRequiredNotes
MerchantOrderNoMerchant order numberVarchar(30)VOrder ID
TimeStampUnix timestampVarchar(50)VCurrent time in seconds

Response EncryptData_ Parameters:

FieldDescriptionTypeNotes
MerchantIDMerchant IDVarchar(15)NewebPay merchant ID
LgsTypeLogistics typeVarchar(15)B2C or C2C
TradeNoNewebPay trade numberVarchar(20)Platform transaction ID
MerchantOrderNoMerchant order numberVarchar(30)Order ID
AmtTransaction amountInt(10)Order amount
ItemDescProduct descriptionVarchar(100)Product name
NotifyURLNotification URLVarchar(50)Callback URL
LgsNoShipment numberVarchar(20)Logistics tracking number
StorePrintNoStore print codeVarchar(20)Kiosk print code
collectionAmtCollection amountInt(10)COD amount
TradeTypeTrade typeInt(1)1=COD, 3=No Payment
TypeOrder typeInt(1)1=Normal, 3=Return
ShopDateShip dateDateShipping date
UserNameRecipient nameVarchar(20)Pickup person
UserTelRecipient phoneVarchar(10)Mobile number
UserEmailRecipient emailVarchar(50)Email
StoreIDPickup store IDVarchar(10)Store code
ShipTypeLogistics providerVarchar(15)1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart
StoreNameStore nameVarchar(20)Store name
RetIdStatus codeVarchar(10)See status code table
RetStringStatus descriptionVarchar(30)See status description

6. Modify Shipment API [NPA-B56]

Modify shipment order details (only for orders not yet shipped or expired).

Endpoint:

  • Test: https://ccore.newebpay.com/API/Logistic/modifyShipment
  • Production: https://core.newebpay.com/API/Logistic/modifyShipment

Modifiable Conditions:

  • Not yet obtained shipping number
  • Shipment expired
  • Store reselection

EncryptData_ Parameters:

FieldDescriptionTypeRequiredNotes
MerchantOrderNoMerchant order numberVarchar(30)VOrder ID
LgsTypeLogistics typeVarchar(15)VB2C or C2C
ShipTypeLogistics providerVarchar(15)V1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart
UserNameRecipient nameVarchar(20)-New recipient name
UserTelRecipient phoneVarchar(10)-New phone number
UserEmailRecipient emailVarchar(50)-New email
StoreIDPickup store IDVarchar(10)+New store ID
TimeStampUnix timestampVarchar(50)VCurrent time in seconds

Response EncryptData_ Parameters:

FieldDescriptionTypeNotes
MerchantIDMerchant IDVarchar(15)NewebPay merchant ID
MerchantOrderNoMerchant order numberVarchar(30)Order ID
LgsTypeLogistics typeVarchar(15)B2C or C2C
ShipTypeLogistics providerVarchar(15)1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart

7. Track Shipment API [NPA-B57]

Track complete logistics delivery history.

Endpoint:

  • Test: https://ccore.newebpay.com/API/Logistic/trace
  • Production: https://core.newebpay.com/API/Logistic/trace

EncryptData_ Parameters:

FieldDescriptionTypeRequiredNotes
MerchantOrderNoMerchant order numberVarchar(30)VOrder ID
TimeStampUnix timestampVarchar(50)VCurrent time in seconds

Response EncryptData_ Parameters:

FieldDescriptionTypeNotes
LgsTypeLogistics typeVarchar(15)B2C or C2C
MerchantOrderNoMerchant order numberVarchar(30)Order ID
LgsNoShipment numberVarchar(20)Tracking number
TradeTypeTrade typeInt(1)1=COD, 3=No Payment
ShipTypeLogistics providerVarchar(15)1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart
HistoryHistory arrayjson_arrayTracking history
RetIdStatus codeVarchar(10)See status code table
RetStringStatus descriptionVarchar(30)See status description
EventTimeEvent timeVarchar(20)Timestamp

8. Status Notification [NPA-B58]

Real-time notification when shipment status changes.

Merchant provides NotifyURL to receive notifications

POST Parameters:

FieldDescriptionTypeNotes
StatusResponse statusVarchar(10)SUCCESS or error code
MessageResponse messageVarchar(30)Status description
EncryptData_Encrypted dataText-
HashData_Hash dataText-
UID_Merchant IDVarchar(15)NewebPay merchant ID
Version_API versionVarchar(5)Fixed: 1.0

EncryptData_ Parameters:

FieldDescriptionTypeNotes
LgsTypeLogistics typeVarchar(15)B2C or C2C
MerchantOrderNoMerchant order numberVarchar(30)Order ID
LgsNoShipment numberVarchar(20)Tracking number
TradeTypeTrade typeInt(1)1=COD, 3=No Payment
ShipTypeLogistics providerVarchar(15)1=7-11, 2=FamilyMart, 3=Hi-Life, 4=OK Mart
RetIdStatus codeVarchar(10)See status code table
RetStringStatus descriptionVarchar(30)See status description
EventTimeEvent timeVarchar(20)Timestamp

Encryption Methods

Hash Data Processing

NewebPay Logistics uses the same encryption method as NewebPay Payment:

  1. AES-256-CBC Encryption: Encrypt data using merchant's HashKey and HashIV
  2. SHA256 Hash: HashKey= + key + & + AES result + &HashIV= + iv, then SHA256 and uppercase

Process:

EncryptData = hex(AES-256-CBC(JSON, HashKey, HashIV))
HashData    = SHA256("HashKey={HashKey}&{EncryptData}&HashIV={HashIV}").toUpperCase()

Spec NDNS 1.0.0 appendix (1) gives a worked example: SHA256("HashKey=12345678901234567890123456789012&AAAABBBBCCCCDDDD&HashIV=12345678") = 5C6C504A2F2B2E3EB5CA80998F626307ACD327AC6DCE4FF84F86B021988B2576.

Field names: requests use a trailing underscore (UID_, EncryptData_, HashData_, Version_, RespondType_); API responses and the store-map callback use EncryptData / HashData without underscore; the status push (NPA-B58) uses the underscored names.


Status Codes

RetId Status Codes & RetString Descriptions

RetIdRetStringCategory
0_1Order not processedPending
0_2Shipment number expired, please get new numberPending
0_3Shipment canceledPending
1Order processingProcessing
2Store received shipmentIn Transit
3Store reselected, waiting for re-shipmentIn Transit
4Arrived at logistics centerIn Transit
11Pickup store closed, please reselectIn Transit
5Arrived at pickup storeReady for Pickup
6Customer picked upCompleted
-1Returned to merchantCompleted
-6Home delivery return requestedCompleted
-9Logistics inspection errorCompleted
-2Returned to sender/designated return storeReturn/Compensation
-3Returned to logistics centerReturn/Compensation
-4Returning to logistics center (customer did not pickup)Return/Compensation
-5Soon to be returned (customer did not pickup)Return/Compensation
-7Error compensation approvedReturn/Compensation
-10Product destroyed/discardedReturn/Compensation
-11Product destroyed/discardedReturn/Compensation
10Soon to be returnedReturn/Compensation
12Return store closed, please reselectReturn/Compensation
13Returning to logistics center (merchant did not pickup)Return/Compensation
14Please request home delivery returnReturn/Compensation
15Product destroyed/discardedReturn/Compensation
16Please confirm bank accountReturn/Compensation

Error Codes

Common Error Codes

CodeMessageNotes
SUCCESSSuccess-
1101Failed to create logistics order-
1102Merchant not found-
1103Duplicate merchant order number-
1104Logistics service not enabled-
1105Store information invalid or empty-
1106IP not allowed-
1107Payment order not found-
1108System error, cannot query logistics order-
1109Logistics order not found-
1110System error, cannot modify logistics order-
1111Order status cannot be modified-
1112Failed to modify logistics order-
1113System error, cannot query tracking history-
1114Insufficient prepaid balance-
1115Failed to get shipment number-
1116Shipment already created for this transaction-
2100Data format error-
2101Version error-
2102UID_ cannot be empty-
2103COD amount limit: 20000 NTD-
2104No payment amount limit: 20000 NTD-
2105Max 10 shipment numbers per request-
2106Max labels per request: 7-11(18), FamilyMart(8), Hi-Life(18), OK Mart(18)-
4101IP restricted-
4103HashData_ verification failed-
4104Encryption error, check Hash_Key and Hash_IV-

Important Notes

Amount Limits

  • COD (Cash on Delivery): Maximum 20,000 NTD
  • No Payment: Maximum 20,000 NTD

Batch Limits

  • Get Shipment Number: Maximum 10 orders per request
  • Print Label:
    • 7-ELEVEN: Maximum 18 labels
    • FamilyMart: Maximum 8 labels
    • Hi-Life: Maximum 18 labels
    • OK Mart: Maximum 18 labels

Store Code Notes

  • For FamilyMart and OK Mart, the store code displayed on the map may not be the real code
  • Always use the store code returned in the API response (StoreID field)

Timestamp

  • Must use Unix timestamp (seconds since 1970-01-01 00:00:00 GMT)
  • Tolerance: 120 seconds
  • Incorrect timestamp will cause transaction failure

PAYUNi API Operations

All requests: form POST MerID, Version, EncryptInfo, HashInfo. Verify HashInfo on every response and notification before decrypting.

1. Create shipment (inside the payment request)

EncryptInfo fieldUPPBackend APINotes
ShipTag1enable logistics
Ship1 = COD
ServiceType3backend APIs support no-COD only
LgsType / ShipType / GoodsType●●
Consignee / ConsigneeMobile●●real name, 09xxxxxxxx
StoreID● (7-11)from the store map
ConsigneeAddress / DeliveryTimeTag○● (T-Cat)

The payment response includes ShipTradeNo (used for query / print / notifications).

2. Query shipment

POST /api/logistics/query, Version 1.1, EncryptInfo: MerID, Timestamp, LgsType, and ShipTradeNo or ReturnOdno (C2B). Response: Odno, PartnerId, ValidationNo (C2C), FileNo (T-Cat), ShipStatus, ShipStatusDesc, ShipStatusTime, PickupStoreType (status 81).

ShipStatus codes (official page 120):

CodeMeaningCodeMeaning
91Not processed11Picked up
92Processing (CVS)41Cancelled
98Processing, received (B2C)43Compensation
21Waiting for shipment44Lost
22Logistics-center check-in (CVS)46Discarded (C2C)
31In delivery51Return
32At pickup store (CVS)52Not collected by buyer
33Exception53Returned to warehouse (CVS)
81Store closed, reselect55Not collected by seller (C2C)
82Awaiting home-delivery return (C2C)56Returned by home delivery (C2C)

3. Notifications

The notify URL is set in the PAYUNi back office (logistics settings). Decrypted ApiType is ShipStatus (ShipTradeNo, ShipStatus, ShipStatusDesc, ShipStatusTime; T-Cat adds OBTNumber, FileNo) or Print (label result). Match orders by ShipTradeNo.


Best Practices

  1. Store Selection: Always use the StoreID from the Store Map API response, not the displayed code
  2. Error Handling: Implement proper error handling for all API calls with retry logic
  3. Status Tracking: Use Status Notification webhook for real-time updates instead of polling
  4. Encryption: Securely store HashKey and HashIV, never expose in client-side code
  5. Order Numbers: Ensure MerchantOrderNo is unique across all orders
  6. Timestamp: Always generate fresh timestamp for each API call
  7. Testing: Use test environment extensively before going to production
  8. Validation: Validate all user input (name, phone, email) before API calls
  9. Logging: Log all API requests and responses for debugging and auditing
  10. Notification URL: Ensure NotifyURL is accessible from NewebPay servers (not localhost)

Use Cases

E-commerce Platform

  • Integrate store map for customers to select pickup location
  • Create shipment automatically after order confirmation
  • Send tracking updates to customers via email/SMS
  • Handle returns and exchanges through modify shipment API

Marketplace

  • Support multiple vendors shipping to convenience stores
  • Provide unified logistics tracking interface
  • Automate shipment number retrieval and label printing
  • Handle COD payment collection and settlement

Subscription Service

  • Schedule recurring shipments to same pickup store
  • Automatic label generation for regular deliveries
  • Batch shipment creation for multiple orders
  • Track delivery success rate and optimize logistics

Related Resources


Support

NewebPay Technical Support

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Taiwan Logistics AI skill do?

Taiwan Logistics API integration specialist for ECPay, NewebPay, PAYUNi, SmilePay, PChomePay, PayNow and ezShip aggregators, HCT direct carrier API, and on-demand delivery (Lalamove, pandago). Use when developing shipping flows, implementing CVS pickup (7-11/全家/萊爾富/OK), home delivery (黑貓/中華郵政), cold-chain, store-map selectors, COD orders, or shipment tracking. Handles encryption (MD5, AES-256-CBC, AES-256-GCM, 3DES), store maps, and provider field mappings.

Why use Taiwan Logistics on TypingMind?

Because you install it once and use it with any model. Taiwan Logistics is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Taiwan Logistics in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Moksa1123/taiwan-ecommerce-toolkit/tree/main/logistics-cli/assets/taiwan-logistics. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Taiwan Logistics?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Taiwan Logistics?

As many as you like. As long as a model supports skills, you can use Taiwan Logistics with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Taiwan Logistics AI skill free?

Yes. It is published on GitHub by Moksa1123 under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇