お客様の経理データでスタバカードやSuica、PASMOは、チャージ時に経費にして、使った時にも経費にしてしまうケースがよくあります。
いわゆる二重計上です。
税務調査でも見られやすい項目です。
気づきにくいのは、どちらもお金が減るからです。
チャージした時も支出に見えるし、使った時も支出に見える。
その感覚のままで処理すると、両方を経費にしてしまいやすいです。

目次
チャージと使用、両方で経費にしていませんか
チャージ時点では、まだ何も買っていません。
会社のお金を別の財布に移しただけです。
正しい処理はこうなります。
- チャージ時:預け金など(資産)
- 使用時:会議費、交通費など(経費)

チャージ時を「預け金」にしておけば、経費になるのは使った時だけです。
これなら二重計上は起きません。
ここは、残高がズレやすいポイントです。
チャージも支出、利用も支出、で経理をすると残高がズレてしまいます。
サービスメニュー
交通系ICカードはfreeeでラクに
freeeは、交通系ICカードの利用内容を連携できます。
チャージ時は「預け金」、利用時は「交通費」として処理する形にしておけば、手入力をかなり減らせます。
交通費は細かい回数が増えやすいので、ここを自動化できるだけでもだいぶ違います。
毎月の処理が少し軽くなるだけでも、地味に効きます。
スタバのモバイルオーダーはGASで自動化
スタバのモバイルオーダーは、freeeと直接連携できません。
注文後にメールが届くだけです。
そこで私は、GASを使ってメールからfreeeのCSV取込用データを自動生成するようにしています。
- GmailでスタバのメールをGASで検索
- 本文から合計金額と消費税額を抽出
- スプレッドシートに出力
このあと私は、抽出したデータをfreeeのCSV取込フォーマットに整えて使っています。
ただ、この部分は人によって変わるので、ここでは日付・金額・消費税を抜き出すところだけ載せます。
function extractMobileOrderData() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const headers = ['日付', '金額', '消費税'];
sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
const lastRow = sheet.getLastRow();
if (lastRow > 1) {
sheet.getRange(2, 1, lastRow - 1, headers.length).clearContent();
}
// スタバのモバイルオーダー確認メールを検索
const threads = GmailApp.search('subject:"Mobile Order & Pay"', 0, 100);
const rows = [];
threads.forEach(thread => {
thread.getMessages().forEach(message => {
const date = Utilities.formatDate(
message.getDate(),
Session.getScriptTimeZone(),
'yyyy/MM/dd'
);
const body = message.getPlainBody();
const totalMatch = body.match(/総合計\s*¥\s*([\d,]+)/);
const taxMatch = body.match(/消費税\s*¥\s*([\d,]+)/);
const totalAmount = totalMatch ? Number(totalMatch[1].replace(/,/g, '')) : '';
const taxAmount = taxMatch ? Number(taxMatch[1].replace(/,/g, '')) : '';
if (totalAmount !== '') {
rows.push([date, totalAmount, taxAmount]);
}
});
});
if (rows.length > 0) {
sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
}
Logger.log(`${rows.length}件 書き出し完了`);
}【余白ログ】
昨日は、GASを色々触ってその後ベター・コール・ソウルを観賞