WooCommerce 訂單對帳自動化,用 Google Sheets 範本把金流與退款對起來

WooCommerce 訂單對帳自動化,用 Google Sheets 範本把金流與退款對起來

featured-woocommerce-google-sheets-ddee1284
🚀 讀者專屬工具

在開始閱讀前,先用 AI 自動生成您的網站架構圖?

立即開啟

每天對帳像在撿散落的拼圖嗎?沒有 WooCommerce 對帳 自動化,訂單來自 WooCommerce 的結帳流程,撥款在金流後台,退款又在另一張明細。只要有一筆漏看,月底就要加班重算。

用一份設計好的 WooCommerce 對帳 自動化 Google Sheets 範本,你可以把訂單、撥款、手續費、退款集中到同一個地方,讓差異自己浮出來,財會只要處理「例外」。後台運作順暢,還能支持轉換率優化與使用者體驗,讓前台服務更專注客戶。

一張表就能跑的對帳流程(你要看的只有差異)

Flat design infographic flowchart illustrating WooCommerce orders flow including payments, shipping, discounts, taxes, and refunds exporting to Google Sheets for payouts via Stripe, PayPal, ECPay, and reconciliation, using Traditional Chinese labels.
對帳資料從訂單到撥款,再到差異清單的流程示意圖,使用 AI 製作。

流程建議拆成三張分頁,分工很清楚:

  • Orders:受單頁結帳和結帳流程影響,從 WooCommerce 來的「訂單事實」,含狀態與退款。
  • Payouts:從金流串接來的「實際入帳」,含手續費與撥款批次。
  • Reconcile:用公式把兩邊匹配,輸出已匹配比例與差異清單。

這樣做的好處是,營運同事可以在 Orders 查客訴,財會在 Payouts 看入帳,主管只看 Reconcile 的摘要。你不需要每天把所有資料看完,只要盯住「未匹配」和「金額差異」。另外,追蹤購物車遺棄資料是完整銷售漏斗分析的一部分,不過本工作表專注於已完成的交易。

小提醒:對帳不是比「訂單總額」,而是比「可入帳淨額」。手續費、退款、匯差都要進模型,才不會永遠對不起來。

Google Sheets 範本欄位設計(可直接照抄)

Flat design illustration of a Google Sheets template interface displaying Orders, Payouts, and Reconcile tabs with columns like order_id, gross, net, and payout_id. Features Traditional Chinese headers, blue-green colors on white background, clean business style for blog posts.
三個分頁與主要欄位的範本示意圖,使用 AI 製作。

先把欄位定義好,後面公式才不會一直改。下面這張表是「最小可用」版本,台灣與香港常見金流也適用。建議在結帳流程採用行動友善設計,確保捕捉到的帳單資訊與物流服務資料準確無誤。

分頁欄位說明範例
Ordersorder_idWooCommerce 訂單編號(結帳欄位編輯可能自訂)10532
Orderscreated_at下單時間(建議統一時區)2026-03-05 14:21
Ordersstatus訂單狀態(含退款後狀態)completed
Orderspayment_method付款方式代碼(如綠界科技)綠界科技
Orderscurrency幣別TWD
Ordersgross商品小計(來自帳單資訊)1200
Ordersdiscount折扣(含優惠碼,來自帳單資訊)100
Ordersshipping運費(物流服務費用)60
Orderstax稅額(如客製化結帳表單所需)0
Ordersrefunded已退款總額(累計)300
Ordersexpected_net預估可入帳(你定義的口徑)860
Payoutspayout_id撥款批次或結算單號P20260308-01
Payoutspayout_date入帳日/撥款日2026-03-08
Payoutsorder_id金流明細帶出的訂單號(或備註欄解析,結帳欄位編輯可能影響)10532
Payoutsfee手續費25
Payoutsnet實際入帳金額835
Reconcilematch_key建議用 order_id 或 order_id+金流交易號10532
Reconcilematch_statusmatched, diff, pendingdiff
Reconcilediff_amountOrders 與 Payouts 差額25

expected_net 建議用你公司對帳口徑計算,例如「gross – discount + shipping + tax – refunded」,涵蓋客製化結帳表單中的物流服務費用與稅額等。若金流手續費能拿到,就在 Reconcile 再扣一次做第二層核對。

想把這份範本變成可複製的標準作業,也可以把欄位命名、保護範圍、共用權限一起定好。若你希望把 WooCommerce 電商營運的表單與維護流程一併標準化,可以參考 WPTOOLBEAR 的網站維運與電商維護方案,把「報表」和「穩定性」一起顧到。

WooCommerce 訂單狀態與退款資料怎麼匯出或取得

你有兩條路,先用匯出跑起來,再升級到 API 自動抓,實現對帳自動化。

方法一:後台匯出 CSV(最快上線)

  1. 進 WooCommerce 後台,打開「訂單」列表。
  2. 用篩選器選日期區間,狀態先包含 processing, completed, refunded。
  3. 匯出 CSV,欄位至少要有訂單編號、總額、運費、折扣、稅、付款方式、狀態。如果有使用結帳欄位編輯插件改過欄位名稱,可能需要特別確認。
  4. 退款要特別處理,若匯出檔沒有「累計退款」,就另匯出退款報表或在訂單明細補抓。

如果你想把「匯出後直接進 Sheets」當成過渡方案,可以參考 匯出到 Google Sheets 的做法 的流程概念,重點是固定欄位與固定匯入位置,別每次貼到不同欄。

方法二:WooCommerce REST API 串接(適合定時自動化)

  1. 到 WooCommerce 設定,建立 REST API 金鑰。
  2. 權限選 Read,不要給寫入權限。
  3. /wp-json/wc/v3/orders 抓訂單,帶上 afterper_page 做增量同步,這些資料源自結帳流程。
  4. 退款資料通常在訂單的 refunds 或相關端點,抓回後匯總成 refunded

如果你剛開始接觸 WooCommerce 設定,也可以先複習 WooCommerce 中文教學指南 的訂單與金流區塊,確保狀態定義一致,後面對帳才不會亂。如果需要加入自訂追蹤碼,建議使用子佈景主題來安全新增。

6 個關鍵公式示例,把匹配與報表一次做完

下面公式用「欄位名稱」描述,你套用時只要換成實際欄位位置即可。建議把公式放在 Reconcile,保持 Orders 與 Payouts 乾淨。在 Reconcile 中,你也可以計算平均訂單價值等商業指標,方便分析業績。

目的公式示例(可直接改欄位)小訣竅
用 QUERY 做期間訂單清單=QUERY(Orders!A:K,"select A,B,C,J where B >= date '"&TEXT($B$1,"yyyy-mm-dd")&"' and B <= date '"&TEXT($B$2,"yyyy-mm-dd")&"'",1)用 B1, B2 做報表期間,依結帳流程篩選訂單狀態
用 XLOOKUP 把撥款金額拉回訂單=XLOOKUP(A2,Payouts!C:C,Payouts!F:F,"",0)A2 是 order_id
用 SUMIFS 彙總同一訂單多筆入帳=SUMIFS(Payouts!F:F,Payouts!C:C,A2)分批撥款時很常見
用 ARRAYFORMULA 自動填滿整欄=ARRAYFORMULA(IF(A2:A="",,E2:E-F2:F+G2:G+H2:H-I2:I))例:計算 expected_net,扣除訂單加價購促銷折扣
用 PIVOT/樞紐做每日入帳=PIVOT(Payouts!B:F,"select B,sum(F) group by B label sum(F) '每日入帳'",1)B 是 payout_date
計算平均訂單價值=QUERY(Reconcile!A:J,"select avg(J) where B >= date '"&TEXT($B$1,"yyyy-mm-dd")&"' and B <= date '"&TEXT($B$2,"yyyy-mm-dd")&"' label avg(J) '平均訂單價值'",1)用相同期間快速得出平均訂單價值

想更穩一點,可以再加一個「差異判斷」欄位,使用資料驗證檢查 diff_amount:=IFERROR(IF(ABS(order_net - payout_net)<=1,"matched","diff"),"pending")。搭配資料驗證邏輯匹配訂單,容許 1 元差異,能吸收四捨五入或匯差的小尾巴。

Apps Script 範例:定時抓取,整理後寫入,並留下日誌

把 API 抓取自動化後,就能實現自動化訂單流程,讓 Sheets 每天自己更新。以下範例包含排程、寫入、基本錯誤處理與日誌,請把網址與金鑰改成你的值,並用 Script Properties 存放敏感資訊。

  1. function syncOrders(){
  2. const p=PropertiesService.getScriptProperties();
  3. const base=p.getProperty('WC_BASE'), ck=p.getProperty('WC_CK'), cs=p.getProperty('WC_CS');
  4. const ss=SpreadsheetApp.getActive(); const sh=ss.getSheetByName('Orders');
  5. const since=p.getProperty('SINCE') || new Date(Date.now()-7*864e5).toISOString();
  6. const url=base+'/wp-json/wc/v3/orders?per_page=100&after='+encodeURIComponent(since);
  7. try{
  8. const res=UrlFetchApp.fetch(url,{headers:{Authorization:'Basic '+Utilities.base64Encode(ck+':'+cs)},muteHttpExceptions:true});
  9. if(res.getResponseCode()>=300) throw new Error('HTTP '+res.getResponseCode()+': '+res.getContentText());
  10. const data=JSON.parse(res.getContentText());
  11. const rows=data.map(o=>[o.id,o.date_created,o.status,o.payment_method,o.currency,o.total,o.discount_total,o.shipping_total,o.total_tax,(o.refunds||[]).reduce((s,r)=>s+Number(r.total||0),0)]);
  12. if(rows.length) sh.getRange(sh.getLastRow()+1,1,rows.length,rows[0].length).setValues(rows);
  13. p.setProperty('SINCE', new Date().toISOString()); console.log('synced',rows.length);
  14. }catch(err){ console.error('syncOrders failed',err); }
  15. }

此範例會將訂單基本資料寫入 Sheets,自訂結帳欄位則儲存在訂單後設資料,可依需求擴充程式碼擷取。同步完成後,還能加入自動歸檔通知等動作,提升整體自動化訂單流程。

接著到 Apps Script 的觸發條件,新增「時間驅動」,例如每 1 小時跑一次;更進階可透過 WooCommerce Hooks 後端鉤子,或 Webhook 應用,直接觸發 syncOrders 函式,避免輪詢 API,搭配 WooCommerce Hooks 就能打造即時的自動化訂單流程。金流的 Payouts 也能用同樣方式匯入,來源可能是金流 API 或每日下載檔,再由 Script 整理成一致欄位。

對帳輸出建議(差異清單、匹配比例、每日每週報表)與常見差異原因

Flat design infographic highlighting reconciliation differences in WooCommerce orders, including amount differences, transaction fees, refunds, and exchange rates with Traditional Chinese labels and alert-style icons on a clean white background.
對帳常見差異原因的提示示意圖,使用 AI 製作。

Reconcile 建議做三個輸出區塊,主管一眼就懂:

  • 已匹配比例matched / 全部訂單,再加上 pending 數量。
  • 差異清單:只列 diff,欄位帶出 order_id、差額、可能原因(用規則分類)。
  • 每日/每週報表:用樞紐表把 net 按日彙總,對照銀行入帳日。

2026 年常見的「對不起來」通常不是人為疏失,而是規則沒寫進表裡,例如部分退款、分批撥款、跨幣別匯率、超商取貨取消後的逆交易,或追加銷售導致的複雜訂單總額。先把原因分類,處理速度會快很多。這些已對帳完成的訂單,與購物車遺棄形成鮮明對比,能讓你掌握銷售漏斗的全貌,提供關鍵業務洞察。

對帳順利後,下一步就是推動轉換率優化,透過客製化結帳表單與結帳欄位編輯,改善結帳流程摩擦,提升使用者體驗,減少遺棄率。

同時要顧資安。API Key 請放 Script Properties,不要寫在儲存格。試算表共用權限也要最小化,財會只需要看報表,就不要給編輯 Orders 的權限。若欄位含姓名、電話、地址,能不匯入就不匯入,或採用行動友善設計的客製化結帳表單,搭配結帳欄位編輯,只保留訂單編號與金額,讓對帳表專注對帳,同時強化轉換率優化與使用者體驗。

結語

當你把 Orders、Payouts、Reconcile 三張表跑順,WooCommerce 對帳 自動化 就會從「月底大工程」變成「每天 5 分鐘看例外」。先用匯出 CSV 上線,再用 Apps Script 逐步自動抓取,風險最低,回收最快。對帳順暢後,迎接行銷自動化的下一步,提升網站載入速度以強化整體電商健康;優化結帳流程與金流串接,搭配自訂功能外掛擴展商店,朝顧客留存的終極目標邁進,同時深化行銷自動化。你想先自動化訂單匯入,還是先把金流撥款明細規格化?