宅建業の媒介報酬の上限をClaudeで検算する手順 — 800万円以下の特例まで
売買の媒介報酬の上限は価格帯ごとの速算式で決まり、800万円以下の低廉な空家等には30万円の1.1倍という特例があります。案件表にコードで当てて、請求額の超過を洗い出す手順です。
宅建業者が売買の媒介で受け取れる報酬には上限があり、上限を超えた請求は宅建業法46条2項で禁じられています。上限は売買代金(税抜)を3つの価格帯に分けて計算し、800万円以下の低廉な空家等だけは特例で30万円の1.1倍(33万円)まで引き上がります。
この計算を案件表の全行に当てるなら、Claudeに式を説明させるより、式をコードにして実行させるほうが確実です。本稿では速算式の根拠を押さえたうえで、Pythonの検算スクリプトと実行結果、請求書の超過を見つけるときの落とし穴を順に扱います。
上限の根拠は法律ではなく告示にある
宅建業法46条1項は、媒介の報酬額を「国土交通大臣の定めるところによる」としています。金額そのものは法律に書かれていません。2項が、その額を超えて報酬を受けてはならないと定めます。
つまり検算の対象は、国土交通省の報酬告示(昭和45年建設省告示第1552号)です。令和6年の改正告示(国土交通省の告示949号)が6月21日に公布され、7月1日に施行されました。事務所に掲げる報酬額の掲示(46条4項)も、この改正で差し替えが必要になっています。
検算の前提を固める順序
- 1
法律で枠を確認する
宅建業法46条で、上限を超える受領が禁止されていることを確かめます。
- 2
告示の式を取り出す
売買の媒介は告示の第2(本則)と第7(低廉な空家等の特例)です。代理は第3と第8です。
- 3
式をコードにする
価格帯の境界と税の扱いを、Claudeに口頭で説明させず関数として書かせます。
- 4
案件表に当てる
売買代金、請求額、売主か買主か、特例の合意の有無を列にして実行します。
本則の速算式 — 価格帯は3つ
告示第2は、依頼者の一方につき、売買代金を価格帯に区分して料率を掛け、合計した金額以内と定めています。代金は消費税等相当額を含まない額で判定し、受け取れる報酬額には媒介に係る消費税等相当額が含まれます。課税事業者であることが前提の式です。
| 売買代金(税抜) | 料率 | 速算式 |
|---|---|---|
| 200万円以下 | 料率5% | 速算式代金×5% |
| 200万円超〜400万円以下 | 料率4% | 速算式代金×4%+2万円 |
| 400万円超 | 料率3% | 速算式代金×3%+6万円 |
速算式の「+2万円」「+6万円」は、下の価格帯を5%や4%で計算した差額です。400万円までを段階計算すると200万円×5%+200万円×4%=18万円で、400万円ちょうどの速算式(400万円×3%+6万円=18万円)と一致します。ここまでが税抜の上限で、請求書と比べるときは1.1を掛けた税込額を使います。
たとえば代金500万円なら、500万円×3%+6万円=21万円、税込で23.1万円が上限です。
低廉な空家等の特例 — 800万円以下は30万円の1.1倍
告示第7は、売買代金(消費税等相当額を含まない)が800万円以下の宅地または建物を「低廉な空家等」とし、媒介に要する費用を勘案して、第2の計算方法で出した額を超えて報酬を受けられるとします。その場合の上限は30万円の1.1倍、つまり33万円です。
令和6年7月1日の改正で変わった点は次のとおりです。
改正前後の特例
令和6年6月30日まで
上限は18万円の1.1倍(19.8万円)で、特例の相手方は売主のみでした。買主には本則が適用されていました。
令和6年7月1日から
上限は30万円の1.1倍(33万円)です。買主からも特例の額を受け取れるようになりました。
交換の場合は、交換する宅地・建物の価額に差があるとき、多いほうの価額で800万円以下かを判定します。物件の使用状態は問われません。「空家」とあっても、判定の軸は800万円以下という価格だけです(宅建業法の解釈・運用の考え方 第46条第1項関係)。
特例を使うには、媒介契約の締結に際してあらかじめ、上限の範囲内で報酬額を依頼者に説明し、合意しておく必要があります。報酬額は媒介契約書に記載するため、検算でも「合意済みか」を列として持たせます。
代理の場合は、本則なら第2の額の2倍以内、特例を適用するなら第7の額の2倍以内(第8)です。本稿の検算は媒介だけを対象にします。
800万円ちょうどでは特例の意味がない
800万円×3%+6万円=30万円で、税込33万円。本則の上限がすでに特例の上限と同じです。特例が効くのは800万円未満の価格帯で、たとえば300万円なら本則は税込15.4万円、特例なら33万円になります。800万円を1円でも超えると特例の対象外に戻り、本則の式で再計算します。
検算スクリプトと案件表
ここからがClaudeの出番です。コード実行とファイル作成は、Free・Pro・Max・Team・Enterpriseの全ユーザーが利用でき、Free・Pro・Maxでは既定で有効です。案件表のCSVを添付して、次のような依頼文で頼みます。
添付の cases.csv の各行について、売買の媒介報酬の上限(税込)を
Pythonで計算してください。本則は200万円以下5%、400万円以下4%、
400万円超3%の段階計算、特例は代金が税抜800万円以下で
special_agreed が yes のとき30万円×1.1です。billed が上限を
超える行に「超過」を付け、上限の計算過程も列に出してください。Claudeには式を暗算させず、コードに計算させます。数値の精度についてはClaudeの数式・計算の精度と検算が必要な理由で扱っています。以下は、生成されるスクリプトの一例です(式は告示の文言に合わせた形です)。
import csv
from decimal import Decimal as D
TAX = D("1.1")
SPECIAL_BASE = 300_000 # 低廉な空家等の特例: 30万円 x 1.1
SPECIAL_MAX_PRICE = 8_000_000
def normal_limit(price):
"""媒介の本則上限(税込)。price は税抜の売買代金(円)。"""
p = D(price)
tier1 = min(p, D(2_000_000)) * D("0.05")
tier2 = max(D(0), min(p, D(4_000_000)) - D(2_000_000)) * D("0.04")
tier3 = max(D(0), p - D(4_000_000)) * D("0.03")
return (tier1 + tier2 + tier3) * TAX
def limit(price, agreed):
if agreed and price <= SPECIAL_MAX_PRICE:
return D(SPECIAL_BASE) * TAX
return normal_limit(price)
for r in csv.DictReader(open("cases.csv", encoding="utf-8")):
price, billed = int(r["price"]), int(r["billed"])
agreed = r["special_agreed"] == "yes"
cap = limit(price, agreed)
flag = "超過" if D(billed) > cap else "OK"
print(r["id"], price, r["party"], billed, int(cap), flag)案件表は次の7行にしました。売買代金は税抜、請求額は税込で、partyは請求先が売主か買主かを表します。
id,price,party,billed,special_agreed
A,3000000,seller,200000,no
B,3000000,seller,200000,yes
C,3000000,buyer,330000,yes
D,5000000,seller,250000,no
E,8000000,seller,330000,no
F,8500000,seller,330000,yes
G,1500000,seller,110000,yes実行した結果です。
| id | 売買代金(税抜) | 請求額 | 上限(税込) | 判定 |
|---|---|---|---|---|
| A | 売買代金(税抜)300万円 | 請求額20万円 | 上限(税込)15.4万円(本則) | 判定超過 |
| B | 売買代金(税抜)300万円 | 請求額20万円 | 上限(税込)33万円(特例) | 判定OK |
| C | 売買代金(税抜)300万円(買主) | 請求額33万円 | 上限(税込)33万円(特例) | 判定OK |
| D | 売買代金(税抜)500万円 | 請求額25万円 | 上限(税込)23.1万円(本則) | 判定超過 |
| E | 売買代金(税抜)800万円 | 請求額33万円 | 上限(税込)33万円(本則) | 判定OK |
| F | 売買代金(税抜)850万円 | 請求額33万円 | 上限(税込)34.65万円(本則) | 判定OK |
| G | 売買代金(税抜)150万円 | 請求額11万円 | 上限(税込)33万円(特例) | 判定OK |
AとBは代金も請求額も同じで、判定を分けたのは合意の有無だけです。本則の上限が15.4万円の案件に20万円を請求しているので、特例の合意が契約書に残っていなければ超過になります。
Dも同じ型です。500万円は800万円以下なので特例の対象ですが、合意がないため本則の23.1万円が上限になり、25万円の請求は超過として拾われます。
Fは850万円で特例の対象外のため本則の34.65万円が上限になり、33万円の請求は収まっています。special_agreedがyesでも、コードが価格条件を先に見るので特例は掛かりません。
境界値でスクリプト自体を検算する
生成されたスクリプトは、案件表に当てる前に境界値で試します。上の式から手計算で出せる期待値は次のとおりです。
| 売買代金(税抜) | 特例なしの上限(税込) | 見るポイント |
|---|---|---|
| 200万円 | 特例なしの上限(税込)11万円 | 見るポイント5%の価格帯の最後 |
| 400万円 | 特例なしの上限(税込)19.8万円 | 見るポイント速算式と段階計算が一致するか |
| 800万円 | 特例なしの上限(税込)33万円 | 見るポイント本則と特例が同額になる点 |
| 800万円1円 | 特例なしの上限(税込)約33万円(本則) | 見るポイント特例の対象外に戻るか |
400万円では段階計算と速算式が同じ19.8万円になるはずです。ずれていれば、価格帯の境界が「未満」と「以下」で取り違えられています。この4行をClaudeに実行させ、期待値と並べて出させてから案件表に進むと、式の誤りを先に潰せます。
請求書の超過を見つけるときの落とし穴
落とし穴
税込の代金をそのまま式に入れる
告示の判定に使う売買代金は、消費税等相当額を含まない額です。建物に消費税がかかる取引で、契約書の税込金額をpriceに入れると、上限が少し高く出て超過を見逃します。土地の代金には消費税がかからないので、建物部分だけ税抜に戻した合計を使います。案件表に「税抜代金」の列を別に持たせると防げます。
落とし穴
特例の上限を、受け取れる額の保証と読む
告示第7は「媒介に要する費用を勘案して」本則を超える報酬を受けられると定めています。33万円は上限であり、請求してよい額ではありません。コードで確かめられるのは「上限を超えていないか」までで、費用との釣り合いは判定できません。
落とし穴
買主側の請求を本則で見てしまう
改正前は特例の相手方が売主だけだったため、古い社内ルールでは買主の請求を本則で縛っていることがあります。改正後は買主にも特例が使えます。表のCは買主へ33万円を請求していますが、合意があれば収まります。
売主・買主は別々に検算する
上限は依頼者の一方につき計算します。売主から33万円、買主から33万円を受けても、それぞれが上限内ならそれぞれ適合です。1つの取引を行にするときは、売主行と買主行に分けておくと集計がぶれません。
実務の確認事項
コードが返す「超過」は、請求の誤りを疑うきっかけです。結論を出す前に、次の3点を人が確かめます。
- 特例を適用する旨と報酬額が、媒介契約書に記載され合意されているか
- 事業者が課税事業者かどうか(本稿の式は課税事業者を前提にしています)
- 代金に消費税等相当額が混ざっていないか
給与や納付金の計算でも、式を書かせて表に当てる流れは同じです。給与計算の検算や障害者雇用納付金の検算は、入力の列と判定の列を分ける考え方が共通しています。
社内の宅建業者で使い回すなら、検算の手順をプロジェクトの指示に入れておく方法もあります。
報酬の検算では、売買代金は税抜、請求額は税込で扱う。
上限は必ずコードで計算し、結果を表で出す。
特例(800万円以下)は special_agreed が yes の行だけに適用する。これを毎回の依頼文に貼れば、価格条件と合意の有無を取り違えにくくなります。
よくある質問
賃貸の報酬も同じスクリプトで検算できますか
できません。賃貸借は、依頼者の双方から受けられる合計が借賃1か月分に1.1を乗じた額以内で、居住用建物は、依頼を受ける時点で依頼者の承諾を得ている場合を除き、一方から0.55か月分以内です。長期の空家等には貸主から2.2か月分までの特例があります。式が別なので、別の関数として書かせます。
800万円以下なら、必ず33万円を請求できますか
できません。33万円は上限です。媒介に要する費用を勘案したうえで、あらかじめ依頼者に説明して合意した額が受け取れる額になります。