發票作業/註銷重開

使用流程說明

綠界收到營業人(特店)傳送發票註銷重開參數後,同時通知消費者(買家)電子發票已註銷重開。
並立即將發票註銷請求上傳財政部,待財政部回覆發票註銷成功後,重新上傳發票開立至財政部。

應用場景

適用於發票註銷重開(發票號碼、自訂編號、開立時間不可更改)。

API介接網址

  • 測試環境:https://einvoice-stage.ecpay.com.tw/B2CInvoice/VoidWithReIssue
  • 正式環境:https://einvoice.ecpay.com.tw/B2CInvoice/VoidWithReIssue

HTTPS傳輸協定

  • Content Type :application/json
  • HTTP Method :POST

特店傳入參數(Json格式)

PlatformID String(10)
特約合作平台商代號

  • 這個參數是專為與綠界簽約的指定平台商所設計,只有在申請開通後才能使用。
  • 如果您是一般廠商,請在介接時將此參數欄位保留為空。
  • 對於平台商,在使用時需要在MerchantID(特店編號)欄位中填入與您已經完成綁定子廠商的MerchantID(特定編號)。
    請注意,只能使用已綁定的子廠商編號,以避免操作失敗。綁定作業請洽所屬業務。

MerchantID String(10)
特店編號 必填

RqHeader Object
傳入資料 必填

Timestamp Number
傳入時間 必填

請將傳輸時間轉換為時間戳(GMT+8),綠界會利用此參數將當下的時間轉為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格式)

InvoiceNo String(10)
發票號碼 必填

VoidReason String(20)
註銷原因 必填

VoidModel參數範例(Json格式)

				
					{
  "InvoiceNo": " MM00000000",
  "VoidReason": "Test"
}
				
			

IssueModel參數說明(Json格式)

RelateNumber String(50)
特店自訂編號 必填

需為唯一值不可重複使用。

❗ 注意事項:請勿使用特殊符號

InvoiceDate String(20)
發票開立時間 必填

  • 格式為 『yyyy-MM-dd HH:mm:ss』 或 『yyyy/MM/dd HH:mm:ss』
  • 發票開立時間需為先前開立發票的時間

CustomerID String(20)
客戶編號 

格式為『英文、數字、下底線』等字元。

CustomerIdentifier String(8)
統一編號 

CustomerName String(60)
客戶名稱 

  • 當列印註記[Print]=1(列印)時,為必填
  • 當統一編號[CustomerIdentifier]有值時,此參數須填上客戶的公司名稱。
  • 格式為中、英文及數字等。

CustomerAddr String(100)
客戶地址 

當列印註記[Print]=1(列印)時,為必填

CustomerPhone String(20)
客戶手機號碼 

  • 當客戶電子信箱[CustomerEmail]為空字串時,為必填
  • 格式為數字。

CustomerEmail String(80)
客戶電子信箱 

  • 當客戶手機號碼[CustomerPhone]為空字串時,為必填
  • 需為有效的Email格式,且僅可填寫一組Email。

❗ 注意事項

  • 測試環境請勿帶入之真實電子信箱,避免個資外洩。
  • 測試環境僅作API串接測試使用,僅以API回覆成功或失敗;批次匯入功能/API不提供發信測試,僅驗規則。
  • 格式檢核正規表達式為:^((([AZaz]|\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:經海關出口

Print String(1)
列印註記 必填

0:不列印
1:要列印

❗ 注意事項

  1. 請注意此參數的意義為註記這張發票之後會被廠商自行印出紙本,綠界上傳財政部時也會提供這個參數讓財政部知道這張發票是被列印成紙本的,並不是指由綠界代為列印與寄送
  2. 當捐贈註記[Donation]=1(要捐贈),此參數請帶0
  3. 當統一編號[CustomerIdentifier]有值時
    2.a 載具類別[CarrierType]為空值時,此參數請帶1
    2.b 載具類別[CarrierType]=1或2時,此參數請帶0
    2.c 載具類別[CarrierType]=3時,此參數可帶0或1

Donation String(1)
捐贈註記 必填

0:不捐贈
1:要捐贈

❗ 注意事項

當統一編號[CustomerIdentifier]有值或載具類別[CarrierType]有值時,此參數請帶0

LoveCode String(7)
捐贈碼 

  • 當捐贈註記[Donation]=1(要捐贈)時,為必填。
  • 格式為阿拉伯數字為限,最少三碼,最多七碼,首位可以為零。

❗ 注意事項

使用捐贈碼時,請先呼叫捐贈碼驗證進行檢核,避免輸入錯誤。

推薦捐贈碼168001 OMG關懷社會愛心基金會

成立於2009年,希望能集結網友族群的心意,將愛傳遞到社會的每一個角落。

本基金會致力於:清寒學生及偏遠學校助學、流浪動物與動物保育議題、老人及弱勢團體、急難救助、人道救援、社會公益活動推廣及廣告贊助…等。

CarrierType String(1)
載具類別 

空字串:無載具
1:綠界電子發票載具
2:自然人憑證號碼
3:手機條碼載具

❗ 注意事項

  • 當列印註記[Print]=1(要列印),請帶空字串
  • 當列印註記[Print]=0(不列印),且統一編號[CustomerIdentifier]有值時,此參數不可帶空字串。
  • 只有存在綠界電子發票載具(此參數帶1)的發票,中獎後才能在ibon列印領取必填

CarrierNum String(64)
載具編號 

  • [CarrierType]=””
    請帶空字串。
  • [CarrierType]=1
    請帶空字串,系統會自動帶入值,為客戶電子信箱或客戶手機號碼擇一(以客戶電子信箱優先)
  • [CarrierType]=2
    請帶固定長度為16且格式為2碼大寫英文字母加上14碼數字。
  • [CarrierType]=3
    請帶固定長度為8碼字元,第1碼為【/】; 其餘7碼則由數字【0-9】、大寫英文【A-Z】與特殊符號【+】【-】【.】這39個字元組成的編號。

❗ 注意事項

  • 英文、數字、符號僅接受半形字元
  • 若為手機條碼載具時,請先呼叫手機條碼驗證進行檢核,一旦手機條碼有誤,會造成發票歸戶失敗。

TaxType String(1)
課稅類別 必填

  • 當字軌類別[InvType]為07時,則此欄位請填入1、2或9
  • 當字軌類別[InvType]為08時,則此欄位請填入3或4
    1:應稅。
    2:零稅率。
    3:免稅。
    4:應稅(特種稅率)
    9:混合應稅與免稅或零稅率時(限收銀機發票無法分辨時使用,且需通過申請核可)

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 Int
特種稅額類別 

  • 當課稅類別[TaxType]為1/2/9時,系統將會自動帶入數字【0】
  • 當課稅類別[TaxType]為3時,則該參數必填,請填入數字【8】
  • 當課稅類別[TaxType]為4時,則該參數必填,可填入數字【1-8】
  • 數字【1-8】分別代表以下類別與稅率
    1:
    代表酒家及有陪侍服務之茶室、咖啡廳、酒吧之營業稅稅率,稅率為25%
    2:
    代表夜總會、有娛樂節目之餐飲店之營業稅稅率,稅率為15%
    3:
    代表銀行業、保險業、信託投資業、證券業、期貨業、票券業及典當業之專屬本業收入(不含銀行業、保險業經營銀行、保險本業收入)之營業稅稅率,稅率為2%
    4:
    代表保險業之再保費收入之營業稅稅率,稅率為1%
    5:
    代表銀行業、保險業、信託投資業、證券業、期貨業、票券業及典當業之非專屬本業收入之營業稅稅率,稅率為5%
    6:
    代表銀行業、保險業經營銀行、保險本業收入之營業稅稅率(適用於民國103年07月以後銷售額) ,稅率為5%
    7:
    代表銀行業、保險業經營銀行、保險本業收入之營業稅稅率(適用於民國103年06月以前銷售額) ,稅率為5%
    8:
    代表空白為免稅或非銷項特種稅額之資料

SalesAmount Number
發票總金額(含稅) 必填

  • 請帶整數,支援至12位,不可有小數點。
  • 僅限新台幣。
  • 金額不可為0元。

InvoiceRemark String(200)
發票備註 

Items Array[Object]
商品

可多筆,商品最多支援200項

ItemSeq Int
商品序號

ItemName String(500)
商品名稱 必填

ItemCount Number
商品數量 必填

支援整數8位,小數7位

ItemWord String(6)
商品單位 必填

ItemPrice Number
商品單價 必填

  • 支援整數10位,小數7位
    若vat=0(未稅),商品金額需為未稅金額
    若vat=1(含稅),商品金額需為含稅金額

ItemTaxType String(1)
商品課稅別 

  • 當課稅類別[TaxType] = 9時,此欄位不可為空。
    1:應稅
    2:零稅率
    3:免稅

❗ 注意事項

當課稅類別[TaxType] = 9時,商品課稅類別只能
1.應稅+免稅
2.應稅+零稅率,
免稅和零稅率發票不能同時開立。

ItemAmount Number
商品合計 必填 

  • 支援整數12位,小數7位
  • 此為含稅小計金額
  • ItemAmount各項總合並四捨五入=salesAmount(含稅)

❗ 注意事項

  • ItemAmount需統一為含稅金額,且商品金額需符合以下規則:
    1. 當vat = 1, 且TaxType = 1:
    ItemPrice(含稅)*ItemCount = ItemAmount(含稅)
    ex: 500*5 = 2500
    2. 當vat = 0,且TaxType = 1(稅率5%):
    ItemPrice(不含稅)*ItemCount*1.05 = ItemAmount(含稅)
    ex: 500*5*1.05 = 2625

ItemRemark String(120)
商品備註 

InvType String(2)
字軌類別 必填 

  • 該張發票的字軌類型。
    07:一般稅額
    08 : 特種稅額

vat String(1)
商品單價是否含稅

1:含稅(預設)
0:未稅

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

				
			

Copyright © Green World FinTech Service Co., Ltd. All rights reserved.

綠界官方網站