Yahoo!フリマで出品をしている方なら、こんなことを感じた経験はないでしょうか。
「販売手数料が5%のはずなのに、計算が合わない…」ということ。
私は、事業の一部でYahoo!フリマで物販もしているため、売上・取引内容を確定申告まで行っていますが、その手数料入力で、単純な5%金額になっていないこの謎にぶつかりました。
5%なのに5%じゃない!手数料
私は物販売上データをGoogle スプレッドシートで管理していて、GAS(Google Apps Script)で手数料や利益を自動計算し、商品の在庫管理(減算)まででき、果てには確定申告時に、CSV化して一発入力できる、壮大なシステムを自分用に作って、運用していました。
プラットフォームごとの手数料はこんな感じで設定していました。
- メルカリ / メルカリSHOPS:10%
- ラクマ / ヤフオク:10%
- Yahoo!フリマ:5%
ということで、Yahoo!フリマの販売手数料をはじきだすコードはこう書いていました。
fee = Math.floor(price * 0.05);ところが、実際の振込明細と突き合わせると、ズレが発生。
例えば、「1,500円」のものが売れた時、手数料は5%で「75円」のはず。
ですが、システムには「74円」とでてきます。(1円手数料が安い)
実際の手数料データを並べてみた
Yahoo!フリマの売上明細から手数料を抜き出して一覧にしてみました。
| 決済金額 | 5%計算(単純) | 実際の手数料 | 差額 |
|---|---|---|---|
| ¥990 | ¥49.5 → ¥49 | ¥49 | ± 0 |
| ¥1,280 | ¥64.0 | ¥63 | -1円 |
| ¥1,500 | ¥75.0 | ¥74 | -1円 |
| ¥1,600 | ¥80.0 | ¥80 | ± 0 |
| ¥2,000 | ¥100.0 | ¥100 | ± 0 |
| ¥2,600 | ¥130.0 | ¥129 | -1円 |
| ¥2,970 | ¥148.5 → ¥148 | ¥148 | ± 0 |
| ¥3,900 | ¥195.0 | ¥194 | -1円 |
| ¥5,000 | ¥250.0 | ¥249 | -1円 |
つまり、
- きれいに5%になるもの
- 5%から1円少ないもの
が何故か混在しています。
どういう仕組みなんだろう…
AIに聞いてみても、
- 「販売価格 × 5%」を計算して、小数点以下を切り捨て」だからではないか説
- クーポン等で、「表示の決済金額 ≠ 手数料計算基準額」ではないか説
- 販売価格の20円引きから5%を導き出しているのではないか説
など頓珍漢な答えばかりで迷走。。。
仮説検証してみた
仮説①:手数料5%からマイナス-1円なのでは?
一番多かったのは、手数料5%からマイナス1円なパターンが多いこと。
だから、最初に思いついたのは「とりあえず-1すればいい」作戦。
Math.floor(price * 0.05) - 1↑計算式をそのようにしてみたけど…
¥1,600や¥2,000など、5%ぴったりの手数料で一致しているケースがある!!
なので、この仮説は違ったみたい。
仮説②:奇数になると-1される?
計算結果が奇数のとき-1して偶数にそろえる「銀行家の丸め」的な処理では?と考えました。
- ¥1,500 → 75(奇数)→ 74 ✅
- ¥3,900 → 195(奇数)→ 194 ✅
- ¥1,600 → 80(偶数)→ 80 ✅
ところが…
- ¥1,280 → 64(偶数)→ 63 ❌
- ¥2,600 → 130(偶数)→ 129 ❌
偶数なのに-1されるケースがあり、この仮説も崩れました。
仮説③:販売価格から-20円して計算?
AIが唱えた、「販売価格から-20円したものから、5%計算してるんじゃないか」説を試してみました。
Math.round((price - 20) * 0.05)で計算してみると…
ざっと検証した例は、9件中8件一致!惜しい!
¥1,600と¥2,000の商品だけ、手数料が合わないのです。
クーポンの影響かとも考えましたが、¥20クーポンなんてまずないし、却下。
正解:消費税を別途計算していた?!
もったいぶってないで、とっとと正解を解説します。
システム、税務上の計算式があるのではないか?という仮説が出てきました。
システムが税抜手数料(四捨五入)と消費税(切り捨て)を別々に計算して足しているのでは?
具体的にはこういう計算です。
① 販売価格 × 4.54%(税抜料率)→ 四捨五入
② ① × 10%(消費税)→ 切り捨て
③ ① + ② = 実際の手数料
これで全データを検証した結果…
| 決済金額 | ①税抜(四捨五入) | ②消費税(切捨) | 合計 | 実際 | 一致? |
|---|---|---|---|---|---|
| ¥990 | ¥45 | ¥4 | ¥49 | ¥49 | ✅ |
| ¥1,280 | ¥58 | ¥5 | ¥63 | ¥63 | ✅ |
| ¥1,500 | ¥68 | ¥6 | ¥74 | ¥74 | ✅ |
| ¥1,600 | ¥73 | ¥7 | ¥80 | ¥80 | ✅ |
| ¥2,000 | ¥91 | ¥9 | ¥100 | ¥100 | ✅ |
| ¥2,600 | ¥118 | ¥11 | ¥129 | ¥129 | ✅ |
| ¥2,970 | ¥135 | ¥13 | ¥148 | ¥148 | ✅ |
| ¥3,900 | ¥177 | ¥17 | ¥194 | ¥194 | ✅ |
| ¥5,000 | ¥227 | ¥22 | ¥249 | ¥249 | ✅ |
検証分9件が全部一致!!! 🎉
まとめ:なぜ「5%なのに5%にならない」のか
Yahoo!フリマの手数料は、表示上は5%(税込)ですが、内部では税抜4.54%+消費税10%として計算されています!!
その理由は恐らく、税務上の正しいルールである「インボイス制度」や「税別価格での適切な消費税計算」に対応するためかと思われます。
それぞれの端数処理が独立しているため、合計すると単純な5%とは1円ズレることがある、というのが真相でした。
ちなみに 4.54% × 1.1 = 4.994% でほぼ5%になります。表示の5%はこの税込計算の結果です。
実装:これをGASへの計算式に当てはめると…
最終的にこのコードで対応しました。
if (platform === 'ペイマ') {
rate = 0.05;
const base = Math.round(price * 0.0454); // 税抜手数料(四捨五入)
const tax = Math.floor(base * 0.10); // 消費税(切り捨て)
fee = base + tax;
}GASではなく、単純なエクセルで計算式を入れる場合はこうなります。
(「A1」に販売価格を入れている計算の場合。入れている列名に合わせて適時変更してください。)
↓
=ROUNDDOWN(ROUND(A1*0.0454,0)*0.1,0)+ROUND(A1*0.0454,0)物販をやっている方であれば、エクセルやスプレッドシートで案件管理表を作っている方も多いと思います。
「Yahoo!フリマの手数料、5%なのになんか合わない…」と感じたら、この消費税の別途計算が原因かもしれません。
フリマアプリの手数料は表示がシンプルでも、内部計算はわりと複雑なことがあります。
自動化ツールを作っている方は、実際の明細データと突き合わせて検証することをおすすめします!

