使用流程說明
綠界收到營業人(特店)傳送發票註銷重開參數後,同時通知消費者(買家)電子發票已註銷重開。
並立即將發票註銷請求上傳財政部,待財政部回覆發票註銷成功後,重新上傳發票開立至財政部。
應用場景
適用於發票註銷重開(發票號碼、自訂編號、開立時間不可更改)。
API介接網址
- 測試環境:https://einvoice-stage.ecpay.com.tw/B2BInvoice/VoidWithReIssue
- 正式環境:https://einvoice.ecpay.com.tw/B2BInvoice/VoidWithReIssue
HTTPS傳輸協定
- Content Type :application/json
- HTTP Method :POST
特店傳入參數(Json格式)
PlatformID String(10)
特約合作平台商代號
- 提供特約合作平台商向綠界申請開通後使用,一般廠商介接請放空值。
- 平台商使用時,MerchantID(特店編號)欄位僅限帶入已綁定子廠商的特店編號,以免造成失敗。
MerchantID String(10)
特店編號 必填
RqHeader String(10)
傳入資料 必填
Timestamp umber
傳入時間 必填
綠界會利用此參數將當下的時間轉為Unix TimeStamp來驗證此次介接的時間區間
注意事項:
- 驗證時間區間暫訂為 10 分鐘內有效,若超過此驗證時間則此次訂單將無法建立,參考資料:http://www.epochconverter.com/。
- 合作特店須進行主機「時間校正」,避免主機產生時差,導致API無法正常運作。
Data String
加密資料 必填
此為加密過JSON格式的資料。加密方法說明
特店傳入參數範例(Json格式)
{
"MerchantID": "2000132",
"RqHeader": {
"Timestamp": 1525168923
},
"Data": "加密資料"
}
Data參數說明(Json格式): 請先將Json字串進行urlencode後再進行AES加密
MerchantID String(10)
特店編號 必填
VoidModel Json
註銷資料 必填
IssueModel Json
開立資料 必填
Data參數範例(Json格式)
{
"MerchantID": "2000132",
"VoidModel": "…",
"IssueModel": "…"
}
VoidModel參數說明(Json格式)
InvoiceNumber String(10)
發票號碼 必填
VoidReason String(20)
註銷原因 必填
VoidModel參數範例(Json格式)
{
"InvoiceNo": " MM00000000",
"VoidReason": "Test"
}
IssueModel參數說明(Json格式)
RelateNumber String(50)
特店自訂編號 必填
需為唯一值不可重複使用。
注意事項:請勿使用特殊符號
InvoiceTime String(20)
發票開立時間 必填
- 格式為 『yyyy-MM-dd HH:mm:ss』 或 『yyyy/MM/dd HH:mm:ss』
- 發票開立時間需為先前開立發票的時間
CustomerIdentifier String(8)
統一編號
- 格式為數字,固定長度為8碼
- 根據財政部的最新公告,針對統一編號的檢核方式做了調整。
您可以點擊以下連結查看:
[財政部財政資訊中心營利事業統一編號檢查碼邏輯修正說明] - 如未符合上述檢核邏輯,則開立發票、設定交易對象維護資料時將會失敗,請營業人務必提供正確的統一編號
CustomerAddress String(100)
客戶地址
CustomerTelephoneNumber String(30)
客戶手機號碼
格式為數字。
CustomerEmail String(200)
客戶電子信箱
- 僅接受 Email 的標準格式。
- 多組Email請以半形分號區隔,未帶值時自動帶入交易對象維護API設定的資料
注意事項:
- 測試環境請勿帶入之真實電子信箱,避免個資外洩。
- 測試環境僅作API串接測試使用,僅以API回覆成功或失敗;批次匯入功能/API不提供發信測試,僅驗規則。
- 格式檢核正規表達式為:^((([A–Za–z]|\d|[!#\$%&‘\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([A-Za-z]|\d|[!#\$%&’\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([A-Za-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([A-Za-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([A-Za-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([A-Za-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([A-Za-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([A-Za-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([A-Za-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([A-Za-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$
ClearanceMark String(1)
通關方式
當課稅類別[TaxType]為2(零稅率)時,則該參數請帶1(非經海關出口)或2(經海關出口)
InvType String(2)
字軌類別 必填
- 該張發票的字軌類型。
07:一般稅額
08 : 特種稅額
ZeroTaxRateReason String(2)
零稅率原因
- 自115年1月1日起,當課稅類別[TaxType]為2(零稅率) 或9(混合應稅與零稅率)時,此欄位必填或廠商後台必須設定以便程式抓取,否則將會開立失敗,其值如下
71:第一款 外銷貨物
72:第二款 與外銷有關之勞務,或在國內提供而在國外使用之勞務
73:第三款 依法設立之免稅商店銷售與過境或出境旅客之貨物
74:第四款 銷售與保稅區營業人供營運之貨物或勞務
75:第五款 國際間之運輸。但外國運輸事業在中華民國境內經營國際運輸業務者,應以各該國對中華民國國際運輸事業予以相等待遇或免徵類似稅捐者為限
76:第六款 國際運輸用之船舶、航空器及遠洋漁船
77:第七款 銷售與國際運輸用之船舶、航空器及遠洋漁船所使用之貨物或修繕勞務78:第八款 保稅區營業人銷售與課稅區營業人未輸往課稅區而直接出口之貨物
79:第九款 保稅區營業人銷售與課稅區營業人存入自由港區事業或海關管理之保稅倉庫、物流中心以供外銷之貨物 - 自115年1月1日起,當零稅率原因[ZeroTaxRateReason]值為74、75、76、77、78、79時,統一編號[CustomerIdentifier]為必填
SpecialTaxType String(1)
特種稅額類別
當課稅別為3 (免稅)時,則該參數必填,請填入數字【8】
當課稅別為4 (特種應稅)時,則該參數必填,可填入數字【1-8】,分別代表以下類別與稅率:
- 【1】代表酒家及有陪侍服務之茶室、咖啡廳、酒吧之營業稅稅率,稅率為25%
- 【2】代表夜總會、有娛樂節目之餐飲店之營業稅稅率,稅率為15%
- 【3】代表銀行業、保險業、信託投資業、證券業、期貨業、票券業及典當業之專屬本業收入(不含銀行業、保險業經營銀行、保險本業收入)之營業稅稅率,稅率為2%
- 【4】代表保險業之再保費收入之營業稅稅率,稅率為1%
- 【5】代表銀行業、保險業、信託投資業、證券業、期貨業、票券業及典當業之非專屬本業收入之營業稅稅率,稅率為5%
- 【6】代表銀行業、保險業經營銀行、保險本業收入之營業稅稅率(適用於民國103年07月以後銷售額) ,稅率為5%
- 【7】代表銀行業、保險業經營銀行、保險本業收入之營業稅稅率(適用於民國103年06月以前銷售額) ,稅率為5%
- 【8】代表空白為免稅或非銷項特種稅額之資料
Items Array[Object]
商品
可多筆,商品最多支援200項
ItemSeq Number
商品排列序號 必填
- 請帶1~999的整數值
- 商品排序不可重複
ItemName String(500)
商品名稱 必填
ItemCount Number
商品數量 必填
支援整數8位,小數7位
ItemWord String(6)
商品單位 必填
商品單位最多6碼
ItemPrice Number
商品單價 必填
支援整數最多10位,小數7位,請固定填入未稅價
ItemTax Number
商品稅額
- 請帶整數,最多11位。
- 若商品稅額[ItemTax]有值,定義【商品合計[ItemAmount]*
稅率[TaxRate]】=B,則商品稅額的值與B四捨五入後的值,差距不可大於1
注意事項:
- 財政部無提供此參數格式,此處提供營業人檢核營業稅額合計[TaxAmount]用,不會上傳。
- 特種稅額發票請直接帶0
ItemRemark String(120)
商品備註
SalesAmount Number
銷售額合計 必填
- 請帶整數,最多12位,不可為0元
- 需等於商品合計[ItemAmount]加總後四捨五入至整數的值
TaxAmount Number
稅額合計 必填
- 請帶整數,最多11位。
- 定義【銷售額合計[SalesAmount]乘以稅率[TaxRate]後再四捨五入至整數】為C,則稅額合計[TaxAmount]的值與C的差距不可大於2
注意事項:
1. 特種稅額發票請直接帶0
2. 當收到以下錯誤訊息”商品稅額加總與營業稅額誤差超過2元”,請將各商品之商品稅額[ItemTax]填入,並確認與調整各商品稅額[ItemTax],使得商品稅額[ItemTax]加總與稅額合計[TaxAmount]誤差少於2元
TotalAmount Number
發票金額 必填
- 請帶整數,最多12位,不可為0元
- 需等於銷售額合計[SalesAmountAmount]與稅額合計[TaxAomunt]相加
InvoiceRemark String(200)
發票備註
IssueModel參數範例(Json格式)
{
{
"RelateNumber": "20181028000000001",
"InvoiceDate": "2018-10-28 23:12:34",
"CustomerID": "",
"CustomerIdentifier": "",
"CustomerName": "綠界科技股份有限公司",
"CustomerAddr": "106台北市南港區發票一街1號1樓",
"CustomerPhone": "",
"CustomerEmail": "test@ecpay.com.tw",
"ClearanceMark": "1",
"Print": "1",
"Donation": "0",
"LoveCode": "",
"CarrierType": "",
"CarrierNum": "",
"TaxType": "1",
"SalesAmount": 100,
"InvoiceRemark": "發票備註",
"InvType": "07",
"vat": "1",
"Items": [
{
"ItemSeq": 1,
"ItemName": "item01",
"ItemCount": 1,
"ItemWord": "件",
"ItemPrice": 50,
"ItemTaxType": "1",
"ItemAmount": 50,
"ItemRemark": "item01_desc"
},
{
"ItemSeq": 2,
"ItemName": "item02",
"ItemCount": 1,
"ItemWord": "個",
"ItemPrice": 20,
"ItemTaxType": "1",
"ItemAmount": 20,
"ItemRemark": "item02_desc"
},
{
"ItemSeq": 3,
"ItemName": "item03",
"ItemCount": 3,
"ItemWord": "粒",
"ItemPrice": 10,
"ItemTaxType": "1",
"ItemAmount": 30,
"ItemRemark": "item03_desc"
}
]
}
}
綠界回傳參數格式
- Content Type :application/json
- HTTP Method :POST
綠界回傳參數(Json格式)
PlatformID String(10)
特約合作平台商代號
MerchantID String(10)
特店編號
RpHeader Object
回傳資料
Timestamp Number
回傳時間
Unix timestamp(GMT+8)
TransCode Int
回傳代碼
1 代表 API 傳輸資料(MerchantID, RqHeader, Data)接收成功,實際的 API 執行結果狀態請參考 RtnCode。
TransMsg String(200)
回傳訊息
Data String
加密資料
回傳相關資料,此為加密過JSON格式的資料。加密方法說明
綠界回傳參數範例
{
"MerchantID": "2000132",
"RpHeader": {
"Timestamp": 1525169058
},
"TransCode": 1,
"TransMsg": "",
"Data": "加密資料"
}
Data參數說明(Json格式) : 請先將Data進行AES解密後再做urldecode
RtnCode Int
回應代碼
1 代表 API 執行成功,其餘代碼均為失敗。
RtnMsg String(200)
回應訊息
InvoiceNo String(10)
發票號碼
- 若開立成功,則會回傳一組發票號碼
- 若開立失敗,則會回傳空值。
InvoiceDate String(20)
發票開立時間
格式為 yyyy-MM-dd HH:mm:ss
RandomNumber String(4)
隨機碼
Data參數範例
{
"RtnCode": 1,
"RtnMsg": "開立發票成功",
"InvoiceNo": "20181028000000001",
"InvoiceDate": "2018-10-28 23:12:34",
"RandomNumber": "6866"
}
YAML
提供的 YAML 文件用於定義 API 的配置、結構、操作和基礎設施管理等資訊,方便開發人員理解和使用 API。
openapi: 3.1.0
info:
title: ECPay Void and Reissue Invoice API
version: 1.0.0
servers:
- url: https://einvoice-stage.ecpay.com.tw
description: Testing Environment
- url: https://einvoice.ecpay.com.tw
description: Production Environment
paths:
/B2CInvoice/VoidWithReIssue:
post:
summary: Void and Reissue Invoice
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- MerchantID
- RqHeader
- Data
properties:
PlatformID:
type: string
maxLength: 10
description: Platform ID for partnered platforms
MerchantID:
type: string
maxLength: 10
description: Merchant ID
RqHeader:
type: object
required:
- Timestamp
properties:
Timestamp:
type: integer
description: Unix timestamp (GMT+8)
Data:
type: string
description: Encrypted data containing request details
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
PlatformID:
type: string
maxLength: 10
description: Platform ID for partnered platforms
MerchantID:
type: string
maxLength: 10
description: Merchant ID
RpHeader:
type: object
properties:
Timestamp:
type: integer
description: Unix timestamp (GMT+8)
TransCode:
type: integer
description: Transmission code
TransMsg:
type: string
maxLength: 200
description: Transmission message
Data:
type: string
description: Encrypted data containing response details
components:
schemas:
requestBody.Data:
type: object
required:
- MerchantID
- VoidModel
- IssueModel
properties:
MerchantID:
type: string
maxLength: 10
description: Merchant ID
VoidModel:
type: object
required:
- InvoiceNo
- VoidReason
properties:
InvoiceNo:
type: string
maxLength: 10
description: Invoice number
VoidReason:
type: string
maxLength: 20
description: Reason for voiding the invoice
IssueModel:
type: object
required:
- RelateNumber
- InvoiceDate
- Print
- Donation
- TaxType
- SalesAmount
- Items
- InvType
- vat
properties:
RelateNumber:
type: string
maxLength: 30
description: Unique merchant number
InvoiceDate:
type: string
description: Invoice issue date in 'yyyy-MM-dd HH:mm:ss' format
CustomerID:
type: string
maxLength: 20
description: Customer ID
CustomerIdentifier:
type: string
maxLength: 8
description: Unified Business Number
CustomerName:
type: string
maxLength: 60
description: Customer name
CustomerAddr:
type: string
maxLength: 100
description: Customer address
CustomerPhone:
type: string
maxLength: 20
description: Customer phone number
CustomerEmail:
type: string
maxLength: 80
description: Customer email
ClearanceMark:
type: string
maxLength: 1
description: Customs clearance mark
Print:
type: string
maxLength: 1
description: Print mark
Donation:
type: string
maxLength: 1
description: Donation mark
LoveCode:
type: string
maxLength: 7
description: Donation code
CarrierType:
type: string
maxLength: 1
description: Carrier type
CarrierNum:
type: string
maxLength: 64
description: Carrier number
TaxType:
type: string
maxLength: 1
description: Tax type
SpecialTaxType:
type: integer
description: Special tax type
SalesAmount:
type: integer
description: Total invoice amount (including tax)
InvoiceRemark:
type: string
maxLength: 200
description: Invoice remark
Items:
type: array
items:
type: object
required:
- ItemName
- ItemCount
- ItemWord
- ItemPrice
- ItemAmount
properties:
ItemSeq:
type: integer
description: Item sequence number
ItemName:
type: string
maxLength: 100
description: Item name
ItemCount:
type: number
description: Item quantity
ItemWord:
type: string
maxLength: 6
description: Item unit
ItemPrice:
type: number
description: Item unit price
ItemTaxType:
type: string
maxLength: 1
description: Item tax type
ItemAmount:
type: number
description: Item total amount (including tax)
ItemRemark:
type: string
maxLength: 40
description: Item remark
InvType:
type: string
maxLength: 2
description: Invoice type
vat:
type: string
maxLength: 1
description: Whether the item price includes tax
responses.Data:
type: object
properties:
RtnCode:
type: integer
description: Response code
RtnMsg:
type: string
maxLength: 200
description: Response message
InvoiceNo:
type: string
maxLength: 10
description: New invoice number if reissued successfully
InvoiceDate:
type: string
description: Invoice issue date in 'yyyy-MM-dd HH:mm:ss' format
RandomNumber:
type: string
description: Random number for the invoice