發票作業 / 開立折讓發票

應用場景

買方/賣方開立折讓單:
特店(營業人)收到發票訊息後,發生銷貨退回、調換貨物或折讓等情事。特店(營業人)傳送折讓發票參數給綠界科技加值中心(以下簡稱綠界),由綠界暫存相關資料。綠界於隔日將發票折讓並上傳至財政部電子發票整合服務平台,同時根據發送通知API設定,通知交易相對人(營業人)電子發票已折讓。

❗ 注意事項:
  1. 由賣方開立折讓的目的是為了避免買方開立折讓單填寫錯誤
  2. 需等待交易相對人(營業人)確認後才完成交換,才屬於有效憑證。請依財政部規定請交易相對人(營業人)完成確認,以免衍伸後續問題。

API介接網址

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

特店Request參數說明 (Json格式)

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

  • 提供特約合作平台商向綠界申請開通後使用,一般廠商介接請放空值。
  • 平台商使用時,MerchantID(特店編號)欄位僅限帶入已綁定子廠商的特店編號,以免造成失敗。

MerchantID String(10)
特店編號 必填

RqHeader Object
傳入資料 必填

Timestamp  Number
傳入時間 必填

綠界會利用此參數將當下的時間轉為Unix TimeStamp來驗證此次介接的時間區間

❗ 注意事項

  • 驗證時間區間暫訂為 10 分鐘內有效,若超過此驗證時間則此次訂單將無法建立,參考資料:http://www.epochconverter.com/
  • 合作特店須進行主機「時間校正」,避免主機產生時差,導致API無法正常運作。

Data String
加密資料 必填

此為加密過JSON格式的資料。加密方法說明

特店Request參數範例 (Json格式)

				
					{
    "MerchantID": "2000132",
    "RqHeader": {
        "Timestamp": 1234567890
    },
    "Data": "…"
}
				
			

Data參數說明(Json格式)

❗ 注意事項:請在加密前對參數值進行 URLEncode

MerchantID String(10)
特店編號 必填

AllowanceDate String(20)
折讓單時間

  • 格式為 yyyy-mm-dd hh:mm:ss
  • 參數有值時,僅接受6天內日期,沒有值則會開立當下日期。

CustomerEmail String(200)
買方電子信箱

  • 僅接受 Email 的標準格式。
  • 多組Email請以半形分號區隔,未帶值時將自動帶入交易對象維護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])))\.?$

❗ 注意事項

  • 測試環境請勿帶入之真實電子信箱,避免個資外洩。
  • 測試環境僅作API串接測試使用,僅以API回覆成功或失敗;批次匯入功能/API不提供發信測試,僅驗規則。

CustomerAddress String(100)
買方公司地址

TaxAmount Number
營業稅額 必填

  • 請帶整數,最多11位。
  • 定義【折讓金額總計(未稅)[TotalAmount]乘以開立發票API的稅率[TaxRate]後再四捨五入至整數】為C,則營業稅額[TaxAmount]的值與C的差距不可大於2
❗ 注意事項:如發票僅含特種稅額請直接帶0

TotalAmount Number
折讓金額總計(未稅) 必填

  • 請帶整數,最多12位,金額不可為 0 元。
  • 需等於每張發票折讓的商品金額[ItemAmount]加總後四捨五入至
    整數的值

Details Array[Object]
傳入資料 必填

B2B可以在一張折讓單上同時折讓多筆發票,以下是每項商品的折讓明細

OriginalInvoiceNumber String(10)
原發票號碼 必填

OriginalInvoiceDate String(20)
原發票日期 必填

格式為:yyyy-mm-dd

OriginalSequenceNumber Int
原發票號碼排序 必填

  • 請帶1~999的整數值
  • 商品排序需與原發票開立時的商品排序相同

ItemName String(500)
商品名稱 必填

折讓的商品名稱,需與原發票號碼排序的對應商品名稱相同

ItemCount Number
商品數量 必填

  • 折讓的商品數量,不可超過原發票商品開立的數量
  • 支援整數最多8位,小數7位

ItemPrice Number
商品價格 必填

  • 折讓的商品價格,不可超過原發票商品開立的價格
  • 支援整數最多10位,小數7位

ItemAmount Number
商品合計 必填

  • 折讓的商品合計,定義為:【折讓的商品數量[ItemCount] * 折讓的商品價格[ItemPrice]】=A,則折讓的商品合計[ItemAmount]與A的差距不可大於1
  • 支援整數最多12位,小數7位

Tax Number
商品稅額 

  • 折讓的商品稅額,定義為:【折讓的商品合計[ItemAmount] * 開立發票API的稅率[TaxRate]】 = B,則折讓的商品稅額[Tax]與B四捨五入至整數的差距不可大於1
  • 須為整數,最多11位

❗ 注意事項:特種稅額發票請直接帶0

Data參數範例(Json格式)

				
					{
    "MerchantID": "2000132",
    "AllowanceDate": "2019-09-24 00:00:00",
    "CustomerEmail": "abc1234@gmail.com",
    "TaxAmount": 1,
    "TotalAmount": 24,
    "Details": [
        {
            "OriginalInvoiceNumber": "VG11000003",
            "OriginalInvoiceDate": "2019-09-24",
            "OriginalSequenceNumber": 1,
            "ItemName":"小浣熊",
            "ItemCount": 2,
            "ItemPrice": 12,
            "ItemAmount": 24,
            "Tax": 1
        }        
    ]
}

				
			

綠界Response參數說明 (Json格式)

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

MerchantID String(10)
特店編號 

RpHeader Object
回傳資料 

Timestamp Number
回傳時間

時間戳 Unix timestamp

TransCode Int
回傳代碼 

1 代表 API 傳輸資料(MerchantID, RqHeader, Data)接收成功,實際的 API 執行結果狀態請參考 RtnCode

TransMsg String(200)
回傳訊息 

Data String
加密資料 

回傳相關資料,此為加密過JSON格式的資料。加密方法說明

綠界Response參數範例 (Json格式)

				
					{
    "MerchantID": "3002607",
    "RpHeader": {
        "Timestamp": 1234564848,
        "RqID": "3F2504E0-4F89-11D3-9A0C-0305E82C3303"
    },
    "TransCode": 1,
    "TransMsg": "Success",
    "Data": "…"
}
				
			

Data參數說明(Json格式)

RtnCode Int
回應代碼

1 為成功,其餘為失敗

RtnMsg String(200)
回應訊息

AllowanceNo String(16)
綠界折讓編號

若開立成功,則會回傳一組綠界折讓編號;若開立失敗,則會回傳空值。

AllowanceNumber String(16)
折讓單號碼

廠商自訂折讓單號碼

Data參數範例(Json格式)

				
					{
    "RtnCode": 1,
    "RtnMsg": "",
    "AllowanceNo": "1909241702402030",
    "AllowanceNumber": "1909241702402030"
}

				
			

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

綠界官方網站