第 11 章 / 全 27 章
領収書と請求書(インボイス)
PDF は pdf-lib で生成し、Noto Sans JP のサブセット(JIS X 0208、約 3 MB)を同梱して日本語を埋め込みます。ヘッドレスブラウザは使いません(Vercel のサーバーレス関数サイズ制限に収めるため)。
領収書
完了した取引(完了 / 一部返金)に対して 領収書 PDF を発行します。
| 項目 | 内容 |
|---|---|
| 領収書番号 | RC-YYYYMM-00001(月ごとの連番)。初回発行時に採番し、再発行でも変わりません |
| 宛名 | 発行時に編集できます。空欄ならユーザー名(無ければ「上様」) |
| 金額 | 取引金額から返金済み額を差し引いた額(税込) |
| 但し書き | 発行時に入力できます。空欄なら商品名(無ければ「商品代金」) |
| 発行者 | 加盟店(会社名 / サイト名 / 住所 / 登録番号)。決済代行として Wire Pay(全体設定の発行者情報)を併記 |
| 再発行 | 回数を記録し、PDF 右上に「再発行」と表示します |
発行の手順
- 取引詳細(決済一覧)の右側「領収書」カードで 領収書を発行 を押す(権限: admin / accounting / cs)
- 宛名を確認して確定すると領収書番号が採番され、操作ログに
receipt.issueが記録されます - PDF を開く で
GET /api/payments/<id>/receiptから PDF を表示します(ログイン必須)
加盟店も 加盟店管理画面の取引詳細(完了 / 一部返金の取引のみ)から宛名・但し書きを入力して発行・再発行できます(POST /api/merchant-portal/receipts/<取引ID>、source = merchant、操作ログの操作者は加盟店)。領収書番号・再発行回数は PSP 側と同じ行を共有し、取引詳細の領収書カードに「加盟店管理画面から発行」と表示されます。
顧客によるダウンロード
決済リンクページで支払いを完了すると、署名付きの領収書ダウンロード URL(30 日有効)が表示されます。管理者セッションとは無関係で、その取引 1 件だけを解決します。初回ダウンロードで領収書行が作られ(source = customer)、以後の再ダウンロードは再発行に数えません。
請求書(適格請求書)
精算バッチの 決済手数料 について、PSP から加盟店への 適格請求書 PDF を出力します。
| 項目 | 内容 |
|---|---|
| 出力条件 | 確定以降のバッチのみ(集計中は 409)。権限: admin / accounting |
| 請求書番号 | INV-YYYYMM-<加盟店番号>-<連番 2 桁>(対象期間の開始月、同月・同加盟店の確定順)。バッチの 確定時に採番して保存 し、PDF は保存値を印字します(未採番のバッチは 409 invoice_no_missing。詳細は 精算管理) |
| 発行者 | 全体設定の発行者名 / 登録番号(T + 13 桁)/ 住所 / 電話 |
| 宛先 | 加盟店の会社名 / 住所 / 登録番号(精算設定タブで登録) |
| 明細 | 決済手段ごとの手数料(件数・対象売上・税区分・税込金額)と振込手数料 |
| 税率ごとの内訳 | 10% / 8%(軽減)/ 対象外 ごとの税抜金額・消費税額・税込金額 |
消費税の扱い
- 明細行の手数料は 内税 として扱います(精算の差引支払額は手数料を全額控除済みのため、税を上乗せしません)
- 税区分は明細行ごとに持ち(
taxCategory)、売上行の手数料は 10%、返金・チャージバック行は対象外です - 消費税額は 税率ごと に計算し、円未満の端数は全体設定の 消費税の端数処理(既定: 切り捨て / 四捨五入 / 切り上げ)で丸めます
- 出力は操作ログに
settlement.invoice_exportとして記録します
設定場所
- 全体設定(admin): 発行者名・登録番号・住所・電話・端数処理
- 加盟店詳細 → 精算設定タブ(admin / accounting): 加盟店の登録番号・住所