Customs Declaration
Update Time:2025.01.07This API allows merchants to submit additional order information required by the customs.
|
1. API Intro
Applicable object: Common mode Institutional mode
API rules:https://apihk.mch.weixin.qq.com/v3/global/customs/orders
Request method:POST
Path parameter is a path parameter.
Query parameter needs to be passed in the request URL.
Body parameter needs to be passed in the request JSON.
2. Request Parameters
Name | Variable Name | Type | Required | Description |
---|---|---|---|---|
Institution APPID | appid | string[1,32] | Yes | Body Specifies Official Account ID assigned |
Merchant ID | mchid | string[1,32] | Yes | Body Specifies Merchant ID assigned by |
Merchant order No. | out_trade_no | string[1,32] | Yes | Body internal order No. of the merchant system. Should be within 32 characters and can only contain numbers, uppercase and lowercase letters, and _-|*@. It is unique for a merchant ID. |
WeChat order No. | transaction_id | string[1,32] | Yes | Body Order No. returned by WeChat Pay |
Customs | customs | string[1,32] | Yes | Body Customs for declaration. For the enumerated values, refer to Parameter Specifications |
Merchant's customs registration No. | merchant_customs_no | string[1,32] | Yes | Body Customs registration No. of the merchant |
Tariff | duty | int | No | Body Tariff (in 0.01 CNY). It is not required and will not be submitted to the customs. |
Merchant sub-order No. | sub_order_no | string[1,32] | No | Body Merchant sub-order No. It is required if there is a split order. |
Currency type | fee_type | string[1,32] | No | Body The currency used for order payment via WeChat Pay. Only CNY is currently supported. It is required if there is a split order. |
Sub-order amount | order_fee | int | No | Body Sub-order amount (in 0.01 CNY). Cannot exceed the original order amount. order\_fee=transport_fee+product_fee (payable amount = logistics fee + product price). It is required if there is a split order |
Logistics fee | transport_fee | int | No | Body Logistics fee (in 0.01 CNY). It is required if there is a split order. |
Product price | product_fee | int | No | Body Product price (in 0.01 CNY). It is required if there is a split order. |
Request Example:
JSON
3. Response Parameters
Response for successful request:
Name | Variable Name | Type | Required | Description |
---|---|---|---|---|
Institution APPID | appid | string[1,32] | Yes | Official Account ID assigned by WeChat |
Merchant ID | mchid | string[1,32] | Yes | Merchant ID assigned by WeChat Pay |
Declaration status | state | string[1,32] | Yes | Declaration result status code |
Merchant order No. | out_trade_no | string[1,32] | Yes | internal order No. of the merchant system. Should be within 32 characters and can only contain numbers, uppercase and lowercase letters, and _-|*@. It is unique for a merchant ID. |
WeChat order No. | transaction_id | string[1,32] | Yes | Order No. returned by WeChat Pay |
Merchant sub-order No. | sub_order_no | string[1,32] | No | Merchant sub-order No., which is returned for a split order. |
WeChat sub-order No. | sub_order_id | string[1,32] | No | WeChat sub-order No., which is returned for a split order. |
Verification institution | verify_department | string[1,16] | Yes | Verification institution code |
Transaction ID from verification institution | Verify_department_trade_id | string[1,64] | Yes | Transaction ID from the verification institution (such as UnionPay) for the merchant to register at the customs |
Response for failed request:
Name | Variable Name | Type | Required | Description | |||
---|---|---|---|---|---|---|---|
Returned status code | code | string[1,32] | Yes | Error code. See the error code list for the enumerated values. | |||
Returned information | message | string[1,256] | Yes | Returned message. It indicates the reason for the error if not empty. | |||
Detailed error description | detail | object | No | It is returned when code is PARAM_ERROR. Details will be described below. | |||
|
Response Example:
SUCCESS
ERROR
4. Error Codes
Error Message | Description | Solution |
---|---|---|
INVALID_REQUEST | The information re-entered by merchant for customs declaration is different from the original one | To modify payment order information, use the Declaration Modification API; to push a payment order again, use the Information Re-push API. |
Customs information is not configured | The customs declaration API is only accessible after the customs information has been configured for the merchant. Please configure the customs information by referring to the customs registration guidelines above. | |
Order amount does not match | The order amount for declaration must be same as the payment amount. Check whether the order amount for declaration is correct. | |
Declaration is not allowed for refunded orders. | The merchant has not registered with the current customs. Try again after the registration is completed. | |
NOAUTH | The merchant has not registered with the current customs | The merchant has not registered with the current customs. Try again after the registration is completed. |
Self-Clearance is not enabled. | Check whether the Self-Clearance tool has been enabled for the merchant ("WeChat Pay Merchants Platform" > "Product Center" > "Apply for Self-Clearance"). | |
PARAM_ERROR | Merchant ID (mch_id) is not set | Merchant ID is required. Check whether the merchant ID is empty. |
Invalid merchant ID length | The Merchant ID here must be 10 digit number. | |
Currency is not set | Currency is required for split declaration. Check whether fee_type is empty. | |
Merchant order No. (out_trade_no) is not set | Check whether the merchant order No. (out_trade_no) is empty. | |
WeChat order No. (transaction_id) is not set. | Check whether the WeChat order No. (transaction_id) is empty. | |
Invalid WeChat order No. length | WeChat order No. should be a 28-digit number. Check whether the WeChat order No. (transaction_id) is correct. | |
Customs information is not set | Customs information is required. Check whether it is empty. | |
Customs registration No. is not set | Check whether the registration No. is empty. | |
Invalid customs registration No. length | Customs registration No. should be a 6-digit string. Check whether the registration No. is correct. | |
Invalid sub-order No. length (sub_order_no) | Sub-order No. should be a string with a maximum of 32 digits. Check whether the sub-order No. is correct. | |
AppId is not set | Check whether appid is correct. | |
Transaction currency is different from merchant's settlement currency | Check whether the currency parameter (fee_type) is empty. | |
Parameter error | Invalid parameter. The parameter may be incorrect or is missing. Check whether the API parameters have been summited as required. | |
Incorrect order amount | The order amount is different from the payment order amount. Make a check and declare again. | |
Incorrect transaction order information | The transaction order information is incorrect. Make a check and declare again. | |
Merchant's split declaration amount is incorrect. | The merchant's split order amount is greater than the amount of the original payment order. Make a check and declare again. | |
Transaction currency is different from merchant's settlement currency. | Declare again, or contact WeChat Pay Assistant to find out the reason. | |
Missing parameters in split declaration. | Parameters fee_type, order_fee, transport_fee, and product_fee are required for split order. | |
SYSTEMERROR | System error | Declare again, or contact WeChat Pay Assistant to find out the reason. |