Application Scenarios
Merchants can use this function to cancel the e-invoice issued via ECPay. When the API request is successful, ECPay will upload the e-invoice data that is to be invalidated or to be cancelled to the Platform of Ministry of Finance the next day. If the e-invoice is successfully invalidated, ECPay will notify the cutomer to whom the initial e-invoice issued to.
Special Notes :
- If the e-invoice is allowanced, it cannot be invalidated. The allowance ticket should be invalidated firstly and then call this API to invalidate the original e-invoice.
- After 23:59:59 of the 13th of each odd month ( i.e. January, March, May, July, September and November), because the regular routine of reporting to Ministry of Finance is complete, e-invoice issued in two months earlier cannot be invalidated or cancelled. For example, on March 14th, the e-invoice issued in January and February cannot be invalidated.
API URLs:
- Stage: https://einvoice-stage.ecpay.com.tw/B2CInvoice/Invalid
- Production: https://einvoice.ecpay.com.tw/B2CInvoice/Invalid
HTTPS format
- Content Type :application/json
- HTTP Method :POST
Request by Merchant (Json format)
PlatformID String(10)
- This parameter is specifically designed for platform vendors collaborating with ECPay. It can only be utilized after applying for and activating the service.
- If you are a general vendor, please leave the PlatformID empty.
- When using this parameter, the MerchantID must be filled in with the specific store code bound to your PlatformID to prevent operation failures.
- Please note that only the MerchantID of a bound sub-merchant can be used to avoid operational failures. For binding operations, please contact your business representative.
MerchantID String(10)
Required
RqHeader Object
Required
Request header
Timestamp Number
Required
- Please convert the transmission time to a timestamp (GMT+8).
- ECPay will use this parameter to convert the current time to Unix TimeStamp to verify the time interval of this connection.
Special Notes:
- If ECPay receives the API call is more 10 minutes late than the timestamp sent by merchants, this request will be failed. Reference information is as follows:http://www.epochconverter.com/。
- Merchants are suggested to frequently synchronize the time zone of server to another server of the nearest time zone.
Data String
Required
- Message payload
- This is the encrypted data in JSON format.
AES Encryption Description
Example
{
"MerchantID": "2000132",
"RqHeader": {
"Timestamp": 1525168923
},
"Data": "..."
}
Message payload of Data(Json format) : please urlencode the JSON string firstly and then do AES encryption
MerchantID String(10)
Required
InvoiceNo String(10)
Required
- Number of e-invoice
- Fix length: 10
InvoiceDate String(10)
Required
- Time of e-invoice created
- The format: yyyy-MM-dd HH:mm:ss
Reason String(20)
Required
- Reason for cancellation
Example
{
"MerchantID": 2000132,
"InvoiceNo": "AA123456",
"InvoiceDate": "2019-09-17",
"Reason": ""
}
Response format
- Content Type :application/json
- HTTP Method :POST
Response by ECPay (Json format)
PlatformID String(10)
MerchantID String(10)
Required
Response header
Timestamp Number
Unix timestamp(GMT+8)
TransCode Int
- Response code to indicate whether the payload is successfully accepted
- Possible values:
1: Payload (i.e. MerchantID, RqHeader, and Data) is successfully accepted by ECPay.
Others: failed.
TransMsg String(200)
Response message to indicate whether the payload is successfully accepted
Data String
- Message payload
- Responde relevant data, this is the encrypted JSON format data。
AES Encryption Description
Example
{
"MerchantID": "2000132",
"RpHeader": {
"Timestamp": 1525169058
},
"TransCode": 1,
"TransMsg": "",
"Data": "..."
}
Message payload of Data(Json format) : please do AES decryption to the Data firstly and then do urldecode.
RtnCode Int
- Return codes to indicate whether the API is successfully executed or not.
- Possible values:
1: API is successfully executed.
Others: failed.
RtnMsg String(200)
Return messages to indicate whether the API is successfully executed or not.
InvoiceNo String(10)
- Number of e-invoice
- Possible values:
If the cancellation is successful, the number of e-invoice will be returned.
If not successful, no value will be returned.
Example
{
"RtnCode": "1",
"RtnMsg": "Success",
"InvoiceNo": "AA123456"
}