請求書からクレジットノートを作成
元の請求書参照番号、明確な理由、取り消す明細を基に、一貫したクレジットノート記録を作成します。各行の小計と税額を計算して最終的な与信額を合算し、その金額が元の請求書合計を超えていないことを確認します。結果は構造化されたJSONで返されるため、確認、保存、会計処理、またはお客様のシステムによる自社書式の印刷文書への変換に利用できます。
無料で実行
元の請求書と明確な理由から始めます
有効なクレジットノートは、訂正対象の取引と明確に結び付いている必要があります。元の請求書参照番号を請求・会計システムに記載されているとおりに入力し、税込みの請求書合計と3文字の通貨コードを指定してください。理由には、単に与信を発行すると記載するのではなく、その原因となった商取引上の事実を記載します。返品、合意済みのサービス減額、破損在庫、価格訂正、過剰請求などが該当します。具体的な理由があれば、承認担当者、顧客、経理担当者、監査人は、売上と税額を取り消す根拠を把握できます。本機能はその文章を構造化文書に保持しますが、クレジットノート番号、発行日、顧客の身元、法的文言、承認状況を自動的に作成することはありません。これらは組織や法域によって異なるため、採番と発行を管理するシステムで追加してください。元データと生成識別子を分離することで計算の再現性を保ち、通常の承認手続きが終わる前に正式発行済みと見える文書が作られることを防げます。
与信対象の各明細を入力して合計を計算します
与信する商品、サービス、手数料、調整ごとに1行追加してください。各行には説明、正の数量、税引前の0以上の単価が必要です。任意の税率はパーセントで指定し、省略した場合は0になります。各行について、数量と単価を乗算し、算出した小計を小数第2位までに丸め、その丸めた小計に税率を適用して税額と行合計を求めます。続いて、すべての行の小計と税額を合算し、与信総額を作成します。行単位の丸めは意図的なものです。多くの請求システムが明細文書を表示・計上する方法に合わせるとともに、表示される各行と集計欄を一致させるためです。金額には正の値を使用してください。文書種別自体が請求の一部を取り消すことを示すため、負の数量や単価を使うと二重否定となり、意味が不明瞭になります。元の請求書に割引や特別な丸めがある場合は、実際に取り消す金額を独立した分かりやすい調整行として入力し、生成された合計を元の請求書と照合できるようにしてください。
最終文書を発行する前に結果を確認します
完成した応答には、文書種別、元の請求書参照番号、理由、通貨、番号付き明細、集計欄が含まれます。集計欄には、与信対象の小計、税額、与信総額、元の請求書合計、与信後の残額が表示されます。計算された与信総額が入力された元の請求書合計を超える場合、リクエストは拒否されます。この確認により一般的な入力ミスは防げますが、同じ請求書に対して過去に発行されたクレジットノートの確認までは行えません。本機能は現在のリクエストだけを受け取り、ネットワークや保存履歴を使用しないため、複数回の与信を行う場合は、お客様の請求システムで累計額を確認してください。承認前に、説明、数量、価格、税務処理、通貨、顧客情報を元の請求書と照合します。その後、会計統制と地域の要件に従って、正式なクレジットノート番号と発行日を割り当ててください。構造化された応答は、表示や法令対応の判断を計算処理に持ち込まずに、テンプレート、元帳処理、承認キュー、PDF生成へ渡せます。
活用例
返品商品の与信処理
返品数量、元の価格、税率から、承認可能な明細付きクレジットノートを作成します。
請求超過の訂正
価格や手数料の調整内容を記録し、取り消すべき正確な金額を計算します。
会計処理用データの準備
保存、確認、または自社文書生成機能への受け渡しに適した、一貫性のある構造化合計を作成します。
よくある質問
1回のリクエスト料金はいくらですか?
APIリクエスト1回の料金は$0.002です。ブラウザー版は有料APIリクエストを行わず、ローカルで実行されます。
正式なクレジットノート番号は発行されますか?
いいえ。計算済みの文書データを作成しますが、正式な採番と発行日はお客様の管理された請求手続きで設定してください。
税額はどのように計算されますか?
各行の丸め済み小計と税率から税額を計算し、すべての行の税額を合算します。
与信額が請求額を超えるとどうなりますか?
計算された与信総額が入力された元の請求書合計を超えると、無効な入力としてリクエストが失敗します。
同じ請求書への過去の与信を検出できますか?
いいえ。ネットワークや保存履歴を使用しないため、発行前にお客様の請求システムで累計与信額をご確認ください。
税率を0に設定できますか?
はい。税を加算しない行では、tax_rateを省略するか0に設定してください。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/doc/credit-note-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"original_invoice_reference":"INV-2026-0042","original_invoice_total":250,"currency":"USD","reason":"Two items were returned unopened.","items":[{"description":"Wireless keyboard","quantity":2,"unit_price":45,"tax_rate":10},{"description":"Shipping adjustment","quantity":1,"unit_price":5}]}'const res = await fetch("https://api.kit.forhosting.com/doc/credit-note-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"original_invoice_reference": "INV-2026-0042",
"original_invoice_total": 250,
"currency": "USD",
"reason": "Two items were returned unopened.",
"items": [
{
"description": "Wireless keyboard",
"quantity": 2,
"unit_price": 45,
"tax_rate": 10
},
{
"description": "Shipping adjustment",
"quantity": 1,
"unit_price": 5
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/credit-note-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"original_invoice_reference": "INV-2026-0042",
"original_invoice_total": 250,
"currency": "USD",
"reason": "Two items were returned unopened.",
"items": [
{
"description": "Wireless keyboard",
"quantity": 2,
"unit_price": 45,
"tax_rate": 10
},
{
"description": "Shipping adjustment",
"quantity": 1,
"unit_price": 5
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/credit-note-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"original_invoice_reference":"INV-2026-0042","original_invoice_total":250,"currency":"USD","reason":"Two items were returned unopened.","items":[{"description":"Wireless keyboard","quantity":2,"unit_price":45,"tax_rate":10},{"description":"Shipping adjustment","quantity":1,"unit_price":5}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"original_invoice_reference":"INV-2026-0042","original_invoice_total":250,"currency":"USD","reason":"Two items were returned unopened.","items":[{"description":"Wireless keyboard","quantity":2,"unit_price":45,"tax_rate":10},{"description":"Shipping adjustment","quantity":1,"unit_price":5}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/credit-note-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"original_invoice_reference": "INV-2026-0042",
"original_invoice_total": 250,
"currency": "USD",
"reason": "Two items were returned unopened.",
"items": [
{
"description": "Wireless keyboard",
"quantity": 2,
"unit_price": 45,
"tax_rate": 10
},
{
"description": "Shipping adjustment",
"quantity": 1,
"unit_price": 5
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.credit_note_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_items | 200 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |