概要
Invovate請求書APIを使用すると、開発者はシンプルなHTTP POSTリクエストでプロの請求書を生成できます。すべての計算を含む構造化されたJSONレスポンスか、直接PDFダウンロードかを選択できます。APIは11言語、20以上の通貨、5種類のデザインテンプレートをサポートしています。日本のフリーランサー、SaaS企業、会計アプリケーションに最適です。
無料で開始
40リクエスト/時間、カード不要
JSONまたはPDF
出力形式を選択
消費税計算
行ごとまたは全体 (10%/8%)
多言語対応
ja, en, de, fr, zh など
ベースURL:
https://invovate.com/api
クイックスタート
3ステップで最初の請求書を作成:
ステップ1 — アカウント作成
invovate.comで無料登録し、メールアドレスを確認してください。
invovate.comで無料登録し、メールアドレスを確認してください。
ステップ2 — APIキー取得
ダッシュボードで「APIキーを生成」をクリック。キーは
ダッシュボードで「APIキーを生成」をクリック。キーは
inv_で始まります。
ステップ3 — 最初のリクエスト
curl -X POST https://invovate.com/api/generate-invoice \
-H "Content-Type: application/json" \
-H "Authorization: Bearer inv_yourApiKeyHere" \
-d '{
"from": {"name": "株式会社サンプル"},
"to": {"name": "クライアント株式会社"},
"items": [{"description": "ウェブ制作", "quantity": 1, "unit_price": 500000, "tax_rate": 10}],
"invoice": {"currency": "JPY", "language": "ja"}
}'
認証
APIは3種類の認証方法をサポートしています:
1. APIキー(サーバーサイドに推奨)
Authorization: Bearer inv_yourApiKeyHere
2. セッションCookie(Webアプリ向け)
ブラウザでログイン済みの場合、inv_sessionクッキーが自動的に送信されます。
3. 匿名(認証なし)
認証なしでの呼び出しはJSON出力のみに制限され、IPアドレスによるレート制限があります。APIのテストに便利です。
セキュリティ: APIキーをクライアントサイドのコードに含めたり、Gitリポジトリに保存したりしないでください。サーバーの環境変数を使用してください。
制限とプラン
| プラン | 料金 | 1時間あたり | 1週間あたり |
|---|---|---|---|
| 無料 | ¥0 | 40 | 400 |
| Starter | ¥1,400/月 | 200 | 4,000 |
| Pro | ¥4,400/月 | 1,000 | 40,000 |
| Enterprise | お問い合わせ | 無制限 | 無制限 |
制限はレスポンスヘッダーで確認できます:
X-RateLimit-Limit-Hourly: 40
X-RateLimit-Remaining-Hourly: 39
X-RateLimit-Reset-Hourly: 1712123456
X-RateLimit-Limit-Weekly: 400
X-RateLimit-Remaining-Weekly: 399
X-RateLimit-Reset-Weekly: 1712345678
請求書生成
POST
/api/generate-invoice
請求書を生成し、すべての計算を含むJSONまたはバイナリPDFファイルを返します。
リクエスト形式
送信者 (from)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| from.name | string | 必須 | 会社名または氏名 |
| from.address | string | 任意 | 住所 |
| from.email | string | 任意 | メールアドレス |
| from.tax_id | string | 任意 | 法人番号または適格請求書発行事業者登録番号 |
受信者 (to)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| to.name | string | 必須 | 取引先の名称 |
| to.address | string | 任意 | 取引先の住所 |
| to.email | string | 任意 | 取引先のメールアドレス |
請求書データ (invoice)
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
| invoice.number | string | 自動 | 請求書番号 |
| invoice.date | string | 本日 | 請求日 (YYYY-MM-DD) |
| invoice.due_date | string | — | 支払期日 (YYYY-MM-DD) |
| invoice.currency | string | USD | 通貨コード(例: JPY) |
| invoice.language | string | en | 言語コード(例: ja) |
| invoice.terms | string | — | 支払い条件 |
| invoice.po_number | string | — | 発注番号 |
明細 (items 配列)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| description | string | 必須 | 商品またはサービスの説明 |
| quantity | number | 必須 | 数量 |
| unit_price | number | 必須 | 単価(税抜) |
| discount | number | 任意 | 割引(パーセントまたは金額) |
| discount_type | string | percent | "percent" または "amount" |
| tax_rate | number | 任意 | 行ごとの消費税率(例: 10) |
その他のフィールド
| フィールド | 型 | 説明 |
|---|---|---|
| global_tax | number | 全体税率(行ごとの税率がない場合に適用) |
| global_discount | number | 合計に対する割引 |
| amount_paid | number | 既払い金額(部分払いの場合) |
| notes | string | 請求書下部の備考 |
| template | string | テンプレート名: classic, modern, bold, minimal, navy |
| output | string | "json"(デフォルト)または "pdf" |
レスポンス形式
JSONレスポンス (output: "json")
{
"success": true,
"invoice": {
"number": "INV-2026-042",
"date": "2026-04-03",
"due_date": "2026-05-03",
"currency": "JPY",
"language": "ja",
"template": "classic",
"from": { "name": "株式会社サンプル" },
"to": { "name": "クライアント株式会社" },
"items": [
{
"description": "ウェブサイト制作",
"quantity": 1,
"unit_price": 500000,
"discount": 0,
"tax_rate": 10,
"tax_amount": 50000,
"line_total": 550000
}
],
"subtotal": 500000,
"total_tax": 50000,
"grand_total": 550000,
"amount_paid": 0,
"balance_due": 550000,
"notes": "お取引ありがとうございます。"
},
"meta": {
"processing_ms": 11,
"credits_remaining": { "hourly": 39, "weekly": 399 }
}
}
PDFレスポンス (output: "pdf")
以下のヘッダーを含むバイナリPDFファイルを返します:
Content-Type: application/pdf
Content-Disposition: attachment; filename="invoice.pdf"
エラーコード
{
"success": false,
"error": { "message": "少なくとも1つの明細が必要です" }
}
| HTTPステータス | 意味 |
|---|---|
| 400 | バリデーションエラー — リクエスト形式を確認してください |
| 401 | 認証が必要またはAPIキーが無効 |
| 403 | メールアドレスが未確認 |
| 429 | レート制限を超過 |
| 500 | サーバー内部エラー |
認証エンドポイント
| メソッド | パス | 説明 |
|---|---|---|
| POST | /api/auth/register | メールとパスワードでアカウント作成 |
| POST | /api/auth/login | ログイン、セッションCookieを返す |
| POST | /api/auth/logout | ログアウト |
| GET | /api/auth/me | 現在のユーザー情報とAPIキーを取得 |
| POST | /api/auth/generate-api-key | 新しいAPIキーを生成(メール確認済み必須) |
コードサンプル
cURL — 消費税込みPDF請求書
curl -X POST https://invovate.com/api/generate-invoice \
-H "Content-Type: application/json" \
-H "Authorization: Bearer inv_yourApiKeyHere" \
-d '{
"from": {
"name": "株式会社ウェブクリエイト",
"address": "東京都渋谷区道玄坂1-1-1",
"tax_id": "T1234567890123",
"email": "billing@webcreate.co.jp"
},
"to": {
"name": "株式会社クライアント",
"address": "大阪府大阪市北区梅田2-2-2",
"email": "accounting@client.co.jp"
},
"invoice": {
"number": "INV-2026-042",
"date": "2026-04-03",
"due_date": "2026-05-03",
"currency": "JPY",
"language": "ja",
"terms": "30日以内にお支払いください"
},
"items": [
{"description": "ウェブサイト制作", "quantity": 1, "unit_price": 800000, "tax_rate": 10},
{"description": "SEOコンサルティング", "quantity": 5, "unit_price": 50000, "tax_rate": 10}
],
"notes": "お取引ありがとうございます。",
"template": "classic",
"output": "pdf"
}' --output invoice.pdf
JavaScript (Node.js)
// Invovate APIで請求書を生成
const response = await fetch('https://invovate.com/api/generate-invoice', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer inv_yourApiKeyHere'
},
body: JSON.stringify({
from: { name: '株式会社サンプル', tax_id: 'T1234567890123' },
to: { name: 'クライアント株式会社', email: 'client@example.co.jp' },
invoice: { number: 'INV-001', currency: 'JPY', language: 'ja', due_date: '2026-05-03' },
items: [{ description: 'コンサルティング', quantity: 10, unit_price: 30000, tax_rate: 10 }],
output: 'json'
})
});
const data = await response.json();
if (data.success) {
console.log('合計金額(税込):', data.invoice.grand_total, '円');
console.log('残りリクエスト数(1時間):', data.meta.credits_remaining.hourly);
}
Python
import requests
API_KEY = "inv_yourApiKeyHere"
URL = "https://invovate.com/api/generate-invoice"
# 日本語請求書の作成
invoice = {
"from": { "name": "フリーランス デザイナー", "tax_id": "T1234567890123" },
"to": { "name": "株式会社クライアント", "address": "東京都新宿区1-1-1" },
"invoice": { "number": "INV-2026-001", "currency": "JPY", "language": "ja" },
"items": [
{"description": "ロゴデザイン", "quantity": 1, "unit_price": 150000, "tax_rate": 10},
{"description": "名刺デザイン", "quantity": 2, "unit_price": 30000, "tax_rate": 10}
],
"output": "pdf"
}
response = requests.post(URL, json=invoice, headers={"Authorization": f"Bearer {API_KEY}"})
if response.status_code == 200:
with open("invoice.pdf", "wb") as f:
f.write(response.content)
print("請求書を保存しました: invoice.pdf")
else:
print(f"エラー: {response.json()['error']['message']}")
対応言語
| コード | 言語 | テキスト方向 |
|---|---|---|
ja | 日本語 | LTR |
en | 英語 | LTR |
de | ドイツ語 | LTR |
fr | フランス語 | LTR |
nl | オランダ語 | LTR |
es | スペイン語 | LTR |
it | イタリア語 | LTR |
pt | ポルトガル語 | LTR |
ru | ロシア語 | LTR |
hi | ヒンディー語 | LTR |
ar | アラビア語 | RTL |
PDFテンプレート
| 名前 | スタイル |
|---|---|
classic | ブルーアクセント、交互グレー行(デフォルト) |
modern | ティール/シアン、クリーンでモダンなデザイン |
bold | ダークアンスラサイトヘッダー、高コントラスト |
minimal | ライトグレー、ボーダーなし |
navy | ネイビーヘッダーとゴールドアクセントライン |
対応通貨
JPY, USD, EUR, GBP, CAD, AUD, CHF, CNY, INR, AED, SAR, SGD, NZD, KRW, BRL, MXN, ZAR, SEK, NOK, DKK