概要
請求書ジェネレーターAPIを使用すると、多言語対応、RTLレイアウト、さまざまなデザインテンプレートをサポートしたプロフェッショナルなPDF請求書を作成できます。各APIコールは1クレジットを消費します。
シンプルな料金体系
請求書生成ごとに1クレジット
多言語対応
英語、アラビア語、フランス語、スペイン語など
RTLサポート
アラビア語の完全な右から左へのレイアウト
プロフェッショナルテンプレート
複数のデザインオプション
ベースURL:
https://invovate.com/apiクイックスタート
3つの簡単なステップで最初の請求書を生成:
ステップ1: APIキーの取得
invovate.comでサインアップし、ダッシュボードでAPIキーを生成
invovate.comでサインアップし、ダッシュボードでAPIキーを生成
ステップ2: 請求書JSONファイルの作成
請求書データをJSONファイルとして保存(以下の例を参照)
請求書データをJSONファイルとして保存(以下の例を参照)
ステップ3: APIコールの実行
curl -X POST https://invovate.com/api/render -H "Content-Type: application/json" -H "Authorization: inv_sk_your_api_key_here" -d "@invoice.json"
認証
すべてのAPIリクエストには認証用のAPIキーが必要です。APIキーをAuthorizationヘッダーに含めてください。
Authorization: inv_sk_your_api_key_here
APIキーフォーマット:APIキーは
inv_sk_で始まり、一意の識別子が続きます。 重要:APIキーは安全に保管し、クライアントサイドコードで公開しないでください。APIキーはアカウントのクレジットにフルアクセスを提供します。
クレジットシステム
成功したPDF生成ごとに、アカウント残高から1クレジットが消費されます。
シンプルな料金体系:1クレジット = 1生成された請求書
クレジット残高の確認
各APIレスポンスには現在のクレジット残高が含まれます:
{ "credits": { "remaining": 95, "used": 1, "userType": "api", "verified": true } }
クレジットの購入
追加のクレジットを購入するには、invovate.comにアクセスし、課金セクションに移動してください。
注意:クレジットが不足している場合、APIコールは失敗します。常にAPIレスポンスで残高を確認してください。
PDF請求書の生成
POST
/api/render
JSONデータからPDF請求書を生成します。成功時に1クレジットを消費します。
リクエストヘッダー
Content-Type: application/json Authorization: inv_sk_your_api_key_here
リクエストボディ
請求書データをJSONファイルまたはインラインJSONオブジェクトとして送信します。
リクエスト形式
必須フィールド
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
| title | string | はい | 会社名 |
| invno | string | はい | 請求書番号 |
| date | string | はい | 請求書日付(YYYY-MM-DD) |
| to | string | はい | クライアント住所(複数行) |
| currency | string | はい | 通貨コード(USD, EUR, AED, など) |
| lang | string | はい | 言語コード(ja, en, ar, fr, es, など) |
| template | string | はい | テンプレート名(neat-pro, など) |
| rows | array | はい | 明細行の配列 |
明細行フィールド
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
| desc | string | はい | 品目説明 |
| qty | number/string | はい | 数量 |
| rate | number/string | はい | 単価 |
| disc | number/string | いいえ | 割引率 |
| tax | number/string | いいえ | 税率 |
オプションフィールド
| フィールド | タイプ | 説明 |
|---|---|---|
| due | string | 支払期日(YYYY-MM-DD) |
| po | string | 発注書番号 |
| terms | string | 支払条件 |
| ship | string | 配送先住所 |
| notes | string | 追加メモ |
| refund | string | 返品ポリシー |
| logo | string | Base64エンコードされたロゴ画像 |
| sig | string | Base64エンコードされた署名画像 |
| customLabels | object | 異なる言語のカスタムテキストラベル |
レスポンス形式
成功レスポンス
{ "success": true, "pdf": "base64_encoded_pdf_string_here", "credits": { "remaining": 95, "used": 1, "userType": "api", "verified": true }, "mode": "api", "metadata": { "template": "neat-pro", "language": "ja", "direction": "ltr", "fileSize": 15432, "creditsRemaining": 95, "itemsCount": 3, "hasLogo": true, "hasSignature": false } }
レスポンスフィールド
| フィールド | タイプ | 説明 |
|---|---|---|
| success | boolean | リクエスト成功ステータス |
| string | Base64エンコードされたPDFファイル | |
| credits.remaining | number | 残りのクレジット残高 |
| credits.used | number | このコールで使用されたクレジット(常に1) |
| credits.userType | string | APIコールでは常に"api" |
| mode | string | APIコールでは常に"api" |
| metadata | object | 生成されたPDFに関する追加情報 |
エラー処理
エラーレスポンス形式
{ "success": false, "error": "エラーメッセージの説明", "code": "ERROR_CODE" }
一般的なエラーコード
| エラーコード | HTTPステータス | 説明 |
|---|---|---|
| API_KEY_REQUIRED | 401 | AuthorizationヘッダーにAPIキーがありません |
| INVALID_API_KEY | 401 | 無効または期限切れのAPIキー |
| EMAIL_VERIFICATION_REQUIRED | 403 | アカウントのメールが確認されていません |
| INVALID_JSON | 400 | リクエストボディのJSONが無効です |
| INSUFFICIENT_CREDITS | 402 | PDF生成のためのクレジットが不足しています |
| API_SECURITY_LIMIT_EXCEEDED | 429 | レート制限を超えました |
| RENDER_ERROR | 400 | PDF生成に失敗しました |
| INTERNAL_ERROR | 500 | 内部サーバーエラー |
コード例
日本語請求書例 (invoice_ja.json)
{ "title": "サンプル商事株式会社", "invno": "INV-2025-001", "date": "2025-11-13", "due": "2025-12-13", "currency": "JPY", "lang": "ja", "template": "neat-pro", "to": "クライアント会社\n123 ビジネス通り\[email protected]", "ship": "グローバルテックソリューション - 倉庫\n456 配送レーン\n東京都渋谷区 100-0001", "notes": "ご利用ありがとうございます!", "rows": [ { "desc": "ウェブサイト開発", "qty": "10", "rate": "75", "disc": "0", "tax": "10" }, { "desc": "コンサルティング時間", "qty": "5", "rate": "120", "disc": "0", "tax": "10" } ] }
英語請求書例 (invoice_en.json)
{ "title": "Sample Business Inc.", "invno": "INV-2025-001", "date": "2025-11-13", "due": "2025-12-13", "currency": "USD", "lang": "en", "template": "neat-pro", "to": "Client Company\n123 Business Ave\[email protected]", "ship": "Global Tech Solutions - Warehouse\n456 Shipping Lane\nNew York, NY 10001", "notes": "Thank you for your business!", "rows": [ { "desc": "Website Development", "qty": "10", "rate": "75", "disc": "0", "tax": "20" }, { "desc": "Consulting Hours", "qty": "5", "rate": "120", "disc": "0", "tax": "20" } ] }
cURLコマンド
# JSONファイルを使用 curl -X POST https://invovate.com/api/render -H "Content-Type: application/json" -H "Authorization: inv_sk_your_api_key_here" -d "@invoice_ja.json" # レスポンスをファイルに保存 curl -X POST https://invovate.com/api/render -H "Content-Type: application/json" -H "Authorization: inv_sk_your_api_key_here" -d "@invoice_ja.json" --output response.json
JavaScript例
async function generateInvoice(invoiceData) { const API_KEY = 'inv_sk_your_api_key_here'; try { const response = await fetch('https://invovate.com/api/render', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': API_KEY // 「Bearer」プレフィックスなし }, body: JSON.stringify(invoiceData) }); const result = await response.json(); if (result.success) { // Base64 PDFをデコード const pdfBytes = Uint8Array.from(atob(result.pdf), c =>c.charCodeAt(0)); const blob = new Blob([pdfBytes], { type: 'application/pdf' }); // PDFをダウンロード const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `請求書-${invoiceData.invno}.pdf`; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); console.log(`PDF生成完了!残りクレジット: ${result.credits.remaining}`); } else { console.error('エラー:', result.error); } } catch (error) { console.error('リクエスト失敗:', error); } } // 使用例 const invoiceData = { title: "私の会社", invno: "INV-001", date: "2024-01-15", currency: "JPY", lang: "ja", template: "neat-pro", to: "クライアント名\nクライアント住所", rows: [ { desc: "ウェブデザイン", qty: 1, rate: 1000 } ] }; generateInvoice(invoiceData);
Python例
import requests import base64 import json API_KEY = "inv_sk_your_api_key_here" URL = "https://invovate.com/api/render" invoice_data = { "title": "私の会社", "invno": "INV-001", "date": "2024-01-15", "currency": "JPY", "lang": "ja", "template": "neat-pro", "to": "クライアント会社\n123 クライアント通り", "rows": [ {"desc": "ウェブデザイン", "qty": 1, "rate": 1000} ] } headers = { "Content-Type": "application/json", "Authorization": API_KEY # 「Bearer」プレフィックスなし } response = requests.post(URL, headers=headers, json=invoice_data) result = response.json() if result["success"]: # PDFをファイルに保存 pdf_data = base64.b64decode(result["pdf"]) with open("請求書.pdf", "wb") as f: f.write(pdf_data) print(f"PDF生成完了!残りクレジット: {result['credits']['remaining']}") else: print(f"エラー: {result['error']}")
対応言語
| 言語コード | 言語 | 方向 |
|---|---|---|
ja | 日本語 | LTR |
en | 英語 | LTR |
ar | アラビア語 | RTL |
ar-e | 東部アラビア語 | RTL |
fr | フランス語 | LTR |
es | スペイン語 | LTR |
hi | ヒンディー語 | LTR |
pt | ポルトガル語 | LTR |
利用可能なテンプレート
| テンプレート名 | 説明 |
|---|---|
neat-pro | クリーンなプロフェッショナルデザイン |
modern-right | 右揃えのモダンレイアウト |
classic-left | 伝統的な左揃えデザイン |
elegant-gray-pro | エレガントなグレーカラースキーム |
band-blue-pro | ブルーヘッダーバンドデザイン |
cool-waves-pro | モダンな波パターンデザイン |