← ドキュメント / ガイド
Peppolによる請求書の送信と受信
自社のPeppolアクセスポイント(Recommand、Storecove、e-invoice.be)をNordletに接続し、Peppol経由で請求書や貸方通知書を送信、配送状況の追跡、および受信した電子請求書の仕入請求書への変換を行います。
Peppolは、企業と公共機関の間で構造化された電子請求書を交換するための欧州ネットワークです。すべての請求書は、送信側のアクセスポイントから受信側のアクセスポイントへと転送されます。NordletはPeppol BIS Billing 3.0形式の請求書および貸方通知書を作成し、企業のアクセスポイントアカウントを通じてそれらの送受信を行います。
Peppolはアクセスポイント同士が文書を交換するためのルールを定めていますが、ソフトウェアが自社のアクセスポイントと通信する方法については規定していません。プロバイダごとに独自のAPIが存在します。Nordletは以下のプロバイダに対応しています。
| プロバイダ | 送信 | 配送ステータス | 受信 |
|---|---|---|---|
| Recommand | 対応 | Webhookおよびリクエストによる取得 | 対応 |
| Storecove | 対応 | Webhookのみ | 対応 |
| e-invoice.be | 対応 | Webhookおよびリクエストによる取得 | 対応 |
アクセスポイントがない場合でも、Nordletは発行したすべての請求書および貸方通知書のPeppolファイルを作成するため、ユーザーがダウンロードして別の方法で送付することができます。ただし、自動での送受信は行われません。
必要なもの
- 上記いずれかのプロバイダのアカウント。そのプロバイダを通じて自社がPeppolに登録されている必要があります。各プロバイダはサービスに対して料金を請求します。詳細は各社の料金表をご確認ください。
- Nordletにおける、自社のVAT番号、登録番号、またはPeppol ID(「アカウント」→「企業」→「Peppol ID」)。送信先の各顧客についても、パートナーカードにこれらのいずれかを登録する必要があります。
アクセスポイントの接続
**「アカウント」→「コンプライアンス」→「EU」→「Peppolアクセスポイント」を開き、「プロバイダ」で利用するプロバイダを選択し、後述の手順に従って各項目を入力して保存します。プロバイダから異なるアドレスを指定された場合を除き、「APIベースURL」は空欄のままにしてください。保存後、ページに自社の「Webhook URL」**が表示されます。形式は https://api.nordlet.com/v1/peppol/webhooks/{provider}/{companyId} となり、{provider} には recommand、storecove、または e-invoice-be が入り、{companyId} には企業のIDが入ります。Nordletの企業ごとに独自のWebhook URLが割り当てられます。
Nordletは、Webhookシークレットを知っていることが証明されたリクエストのみを受け付けます。そのため、アクセスポイントアカウント以外からの呼び出しは拒否されます。Nordletがパブリックインターネットアドレスにアクセスするのは、アクセスポイントを呼び出す場合のみです。
Recommand
- Recommandで企業を開き、その**「企業ID」を「アクセスポイントのアカウントID」**にコピーします。
- Recommandで**「APIキー」を作成し、キーとシークレットをそれぞれ「APIキー」および「APIシークレット」**にコピーします。
- 推測されにくい長めのランダムな文字列(自分とRecommandだけが知るもの)を作成し、**「Webhookシークレット」**に入力して保存します。
- Recommandで企業の**「Webhook」**を作成し、Nordletが表示するWebhook URLと、上記と同じWebhookシークレットを設定します。
Recommandはこのシークレットを使用してすべてのWebhookリクエストに署名を付与します。
Storecove
- Storecoveで企業の**「法人の実体(legal entity)」を作成し、送受信の両方が有効になるように設定した上で、そのIDを「アクセスポイントのアカウントID」**にコピーします。
- Storecoveの**「API Keys」セクションでAPIキーを作成し、「APIキー」にコピーします。「APIシークレット」**は空欄のままにします。
- 長めのランダムな文字列を作成し、**「Webhookシークレット」**に入力して保存します。
- Storecoveで、Nordletが表示するWebhook URLを指定してプッシュWebhookを設定します。その際、HTTP Basic認証による保護を設定します(ユーザー名は何でもよく、パスワードにはWebhookシークレットを使用します)。
Storecoveには送信済み文書のステータスを確認するAPIコールが存在しないため、Storecoveを利用する場合の配送ステータスはWebhookからの通知のみで更新され、請求書ページに**「Peppolステータスを確認」**ボタンは表示されません。StorecoveのサンドボックスアカウントはPeppolテストネットワーク経由で送信を行います。本番用のAPIキーはStorecoveサポートにお問い合わせください。
e-invoice.be
- e-invoice.beアプリの**「API Settings」を開き、企業の「APIキー」を「APIキー」にコピーします。「アクセスポイントのアカウントID」と「APIシークレット」**は空欄のまま保存します。
- e-invoice.beのAPI(
POST https://api.e-invoice.be/api/webhooks/)を使用してWebhookを作成し、Nordletが表示するWebhook URLと、イベントとしてdocument.received、document.sent、document.failedを指定します。 - APIが新しく作成されたWebhookに対して返す
secretを、Nordletの**「Webhookシークレット」**にコピーして再度保存します。
e-invoice.beはこのシークレットを使用してすべてのWebhookリクエストに署名を付与します。e-invoice.beのサンドボックス企業では、Peppol経由で送信する代わりに、送信予定の文書がメールで送信されます。
請求書の送信
- 請求書または貸方通知書を発行します。
- 顧客のパートナーカードにPeppol ID、VAT番号、または登録番号が登録されていることを確認します。
- 請求書ページの**「配送」セクションで「Peppol経由で送信」**をクリックし、確認を行います。「配送」セクションは、まだ支払われていない発行済み請求書に表示され、ボタンはアクセスポイントが接続されている場合にのみ表示されます。
NordletはPeppolファイルを作成し、それをアクセスポイントに引き渡します。その後、請求書ページに**「Peppol配送」**セクションが表示されます。
| ステータス | 意味 |
|---|---|
| pending | アクセスポイントに引き渡されましたが、顧客側のアクセスポイントからまだ確認が取れていません |
| delivered | 顧客側のアクセスポイントが請求書の受信を確認しました |
| rejected | 顧客が請求書を拒否しました。理由はステータスの下に表示されます |
| failed | 請求書を配送できませんでした。アクセスポイントから理由が提供されている場合は、ステータスの下に表示されます |
アクセスポイントがWebhookを通じて変更を報告すると、ステータスは自動的に更新されます。**「Peppolステータスを確認」**をクリックすると、Recommandまたはe-invoice.beに対して現在のステータスが即座に問い合わせられます。e-invoice.beの場合は顧客からの請求書応答も読み取られ、拒否(応答コードRE)された場合は「rejected」として表示されます。拒否または失敗した請求書は、原因を修正した後に再送信できます。顧客がPeppolに登録されていないなどの理由でアクセスポイントが請求書を直接拒否した場合、Nordletに理由が表示され、請求書は未送信のまま保持されます。
請求書ページ上部の**「Peppol XML」**ボタンをクリックすると、送信を行わずに同じPeppolファイルをダウンロードできます。
EU域内取引の場合、Peppolのルールに従い、発行日が配送日となり、顧客の国が配送国となります。
請求書の受信
アクセスポイントからWebhookを通じて受信文書が報告されると、NordletはアクセスポイントからPeppolファイルをダウンロードします。企業が受信した請求書および貸方通知書は**「仕入」→「文書キャプチャ」**に表示され、送信者のPeppol IDからのPeppol経由での受信としてマークされます。Nordletが自らPeppolファイルを読み取るため、文書の受信に文書認識クレジットは消費されません。
- 受信した文書を開きます。
- サプライヤー、日付、および明細行を確認し、パートナーからサプライヤーを選択するか、新規作成します。
- **「下書きを保存」**をクリックします。Nordletは元のPeppolファイルを添付した仕入請求書の下書き(受信したのが貸方通知書の場合は仕入貸方通知書の下書き)を作成します。通常の仕入請求書と同様に処理してください。
Nordletの仕入請求書の明細行には負の金額を指定できません。文書全体の割引や追加料金、および負の明細行は、同じVAT税率を持つ明細行に分散されます。該当するVAT税率の明細行に割り当てられない金額(請求書内に他の行が存在しないVAT税率での返品商品など)は、2つ目のテーブルに表示されます。受信請求書の場合は**「貸方通知書の明細行」、受信貸方通知書の場合は「請求書の明細行」**として表示されます。これらの明細行は、同じサプライヤーに対する2つ目の文書として保存されます。新しく作成された請求書に対する仕入貸方通知書(番号は <文書番号>-CR)、または仕入請求書(番号は <文書番号>-INV)となります。これら2つの文書を合わせることで、受信文書の合計金額と一致します。
顧客のPeppol登録状況の確認
partnerId または participantId(<スキーム>:<識別子>)を指定して POST /v1/peppol/participants/lookup を実行すると、受信者が登録されているか、およびどの文書を受け入れるかをPeppolネットワークに問い合わせることができます。これはアクセスポイントなしでも機能します。
APIを通じた同等の操作
| タスク | 呼び出し |
|---|---|
| アクセスポイントの接続 | POST /v1/declarations/configs/update(system: "peppol" を指定し、config に provider(recommand、storecove、e-invoice-be)、accountId、apiKey、apiSecret、webhookSecret、およびオプションの apiBaseUrl を含める) |
| アクセスポイントからのWebhookの受信 | POST /v1/peppol/webhooks/{provider}/{companyId}(アクセスポイントから呼び出されます) |
| Peppolファイルのダウンロード | POST /v1/sales/invoices/peppol-xml |
| 送信 | POST /v1/sales/invoices/peppol-send(アクセスポイントがない場合は422エラー) |
| 配送ステータスの読み取り | POST /v1/sales/invoices/peppol-status(Storecoveの場合は422エラー)。請求書には peppolMessageId、peppolStatus、peppolDetail、peppolSentAt、peppolCheckedAt が含まれます |
| 受信済み文書の検索 | POST /v1/capture/documents/list(受信済み文書には provider: "peppol" と senderId が含まれます) |
| 文書を仕入請求書に変換 | POST /v1/capture/documents/confirm(2つ目の文書用の oppositeLines を指定します) |
Webhookイベント: sale_invoice.peppol_sent、sale_invoice.peppol_delivered、sale_invoice.peppol_rejected、sale_invoice.peppol_failed、document_capture.peppol_received。エラー、べき等性、Webhookの詳細については、API規約をご参照ください。