mcpField
T
tax-compliance-automation

tax-compliance-automation

github.com/finsilabsその他60117 回インストール6 日前に更新
リポジトリ

tax-compliance-automation について

ECの税務コンプライアンスを自動化するためのスキルです。ネクサスの追跡、チェックアウト時の税額計算、免税証明書、申告、監査記録を扱い、TaxJarやAvalaraの利用方法も説明します。

主な機能

  1. 01ネクサス基準の追跡
  2. 02チェックアウト時の税額計算
  3. 03B2B免税証明書の管理
  4. 04売上税とVATの申告自動化
  5. 05監査に備えた税務記録

活用シーン

  1. 01登録が必要な米国の州を特定
  2. 02欧州注文のOSS/IOSS VATに対応
  3. 03B2B顧客の免税証明書を管理
  4. 04監査に向けて照合可能な記録を準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill tax-compliance-automation

インストール後、Claude Code で/tax-compliance-automationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

tile.json
evals/audit-ready-tax-reporting-and-exemption-/
criteria.json
task.md
evals/eu-vat-calculation-and-oss-quarterly-rep/
criteria.json
task.md
evals/us-economic-nexus-threshold-tracking/
criteria.json
task.md

詳細

税務コンプライアンスの自動化

概要

大規模な事業において、Eコマースの税務コンプライアンスは最も複雑な運用上の課題のひとつです。米国だけでも、税率、商品の課税ルール、申告頻度、経済的ネクサスの基準がそれぞれ異なる課税管轄区域が13,000以上あります。国際的には、VAT(欧州、英国、オーストラリア)とGST(カナダ、インド、ニュージーランド)が加わり、それぞれ独自の登録基準、請求書要件、報告義務を伴うコンプライアンス上の負担が増えます。

このスキルでは、ネクサスの基準額を追跡して新たな管轄区域で登録が必要になる時期を把握することから、チェックアウト時のリアルタイム税額計算、B2B 顧客向けの免税証明書管理、自動申告、監査対応レポートまで、税務コンプライアンスの全ライフサイクルを扱います。主要なプラットフォームにはすべて TaxJar および Avalara との直接連携があり、カスタムコードなしでこれらの処理に対応できます。

このスキルを使用する場面

  • 複数の米国州の顧客に商品を発送しており、ネクサスに関する義務が不明な場合
  • 欧州の顧客向けに OSS/IOSS に基づく EU VAT を徴収する必要がある場合
  • 免税証明書の管理が必要な B2B Eコマースを構築する場合
  • 現在の税率がハードコードされており、12 か月以上更新されていない場合
  • 監査に備えており、文書化され、照合可能な税務記録が必要な場合
  • 新しい国で事業を開始するにあたり、VAT/GST の登録要件を把握する必要がある場合

主な手順

ステップ 1:プラットフォームを特定し、適切な税務コンプライアンスツールを選択する
プラットフォーム推奨ツール備考
ShopifyShopify Tax(組み込み)+TaxJar または Avalara AvaTax(Shopify App Store)Shopify Tax は基本的な米国のネクサスに対応します。TaxJar と Avalara では、申告の自動化、免税証明書の管理、国際 VAT の機能が追加されます
WooCommerceTaxJar for WooCommerce(無料プラグイン)または Avalara AvaTax for WooCommerceTaxJar は WooCommerce で最も広く使われている税務プラグインです。Avalara のプラグインは Avalara のウェブサイトから入手できます
BigCommerceAvalara AvaTax(ネイティブ連携)または TaxJar(BigCommerce App Marketplace 経由)BigCommerce には Avalara とのネイティブコネクターがあります。TaxJar も App Marketplace から利用できます
カスタム/ヘッドレスTaxJar API または Avalara AvaTax APIチェックアウト時に API を呼び出してリアルタイムの税率を取得し、申告記録用に決済後に取引を確定します

申告の自動化に特化したサービス:

  • TaxJar AutoFile:TaxJar Plus および Professional プランで利用できます。登録済みの州で申告書を自動提出します
  • Avalara Returns:Avalara のサブスクリプションに含まれます。米国および国際的な申告に対応します
  • Vertex:複雑な商品課税ルールを扱う大規模小売業者向けのエンタープライズグレードの製品です。TaxJar や Avalara よりも大幅に高額です

ステップ 2:ネクサス登録とリアルタイム税額計算を設定する

Shopify

ステップ 1:Shopify にネクサス州を登録する

  1. 設定 → 税金と関税 → アメリカ合衆国に移動します
  2. 売上税を徴収をクリックし、ネクサスがある州を選択します
  3. その州の売上税許可番号を入力します。Shopify はこの番号を税金の納付記録に使用します
  4. ネクサスがある各州(物理的または経済的)で同じ手順を繰り返します
  5. EU の場合:税務地域の欧州連合をクリックし、VAT 登録番号(OSS または国別)を設定します

ステップ 2:TaxJar をインストールしてコンプライアンスを完全に自動化する

  1. Shopify アプリストアからTaxJarをインストールします(「TaxJar」で検索)
  2. taxjar.comで登録し、アカウント → TaxJar APIから API トークンを取得します
  3. TaxJar Shopify アプリで API トークンを入力し、接続をクリックします
  4. TaxJar でネクサス州を設定します:TaxJar ダッシュボード → アカウント → ネクサスのある州に移動し、登録済みの各州を追加します
  5. TaxJar アプリで取引の同期を有効にします。完了した Shopify の注文が、申告記録用に自動的に TaxJar に送信されます
  6. TaxJar に代理で申告してもらう場合は、TaxJar → アカウント → AutoFileでAutoFileを有効にします(TaxJar Plus または Professional プランが必要です)

Shopify での免税証明書:

  1. Shopify アプリストアからAvalara CertCaptureをインストールするか、TaxJar → 免税にある TaxJar の証明書管理機能を使用します
  2. B2B の顧客は、ホスト型ポータルから免税証明書をアップロードできます。承認されると、今後の注文に自動的に適用されます

Shopify での EU VAT:

  • 設定 → 税金と関税 → 欧州連合に移動します
  • OSS 登録番号を追加します(形式:EU + 自国の VAT 番号)
  • Shopify は、顧客の配送先住所に基づいて、EU 各国の適切な VAT 税率を自動的に適用します
  • IOSS(EU 域外からの 150 ユーロ未満の注文に対する輸入 OSS)の場合は、設定 → 税金 → 関税と輸入税に IOSS 番号を入力します

WooCommerce

ステップ 1:TaxJar をインストールして設定する

  1. taxjar.comで登録し、API トークンを取得します
  2. TaxJar for WooCommerceプラグインをインストールします(無料。WordPress.org から入手できます。「TaxJar」で検索)
  3. WooCommerce → TaxJarに移動し、API トークンを入力します
  4. 税金の自動計算を有効にします。TaxJar がチェックアウト時にリアルタイムで適切な税率を計算します
  5. 取引の同期を有効にします。完了した注文が、申告記録用に自動的に TaxJar に送信されます
  6. 差出人住所(倉庫の住所)を入力します。ネクサスの判定における発送元として使用されます

ステップ 2:TaxJar でネクサス州を設定する

  1. taxjar.com → アカウント → ネクサスのある州にログインします
  2. 売上税許可を取得している米国の各州を追加します
  3. ネクサス州ごとに、売上税登録番号を入力します
  4. TaxJar は、ネクサス州宛てに発送される注文についてのみ、税金を計算して記録します

ステップ 3:申告の自動化を有効にする

  1. AutoFile を利用するには、TaxJar PlusまたはProfessionalにアップグレードします
  2. TaxJar → アカウント → AutoFileに移動し、各州で AutoFile を有効にします
  3. TaxJar が納期限までに、代理で自動的に申告と納付を行います

WooCommerce での免税証明書:

  • WooCommerce B2Bプラグインをインストールするか、TaxJar の証明書管理機能を使用します。TaxJar → 免税に移動し、メールアドレスまたは顧客タイプで免税対象の顧客を追加します
  • 「卸売」または「再販売業者」のロールを持つ顧客は、自動的に免税対象として指定できます

WooCommerce での EU VAT:

  • WooCommerce EU VAT AssistantまたはWooCommerce Germanized(ドイツ固有のコンプライアンス向け)をインストールします
  • WooCommerce → 設定 → 税金 → EU VATに移動し、OSS 登録番号を入力します
  • プラグインが EU 各国の適切な VAT 税率を自動的に適用し、準拠した請求書を生成します

BigCommerce

ステップ 1:Avalara AvaTax に接続する(推奨)

  1. 設定 → 税金 → 税金プロバイダーに移動します
  2. Avalara AvaTaxを選択します。BigCommerce には Avalara とのネイティブコネクターが用意されています
  3. 接続をクリックし、Avalara アカウントにログインします(必要に応じて avalara.com で登録してください)
  4. Avalara は BigCommerce の組み込み税金エンジンをリアルタイムの法令準拠税率に自動で置き換えます

ステップ 2:Avalara でネクサスを設定する

  1. Avalara Dashboard → Settings → Company → Nexusにログインします
  2. 登録済みの米国各州または各国を追加します
  3. 各管轄区域の登録番号を入力します
  4. Avalara はネクサスがある管轄区域についてのみ税金を計算し、記録します

ステップ 3:Avalara Returns を有効にする

  1. Avalara Dashboard → Returnsで、ネクサスがある各州のManaged Returnsを有効にします
  2. Avalara は申告書を自動で作成し、提出します。提出前に確認したい州については、Unmanaged Returnsを使用してください(Avalara が申告書を作成し、お客様が提出します)

BigCommerce での免税証明書の管理:

  • Avalara CertCaptureを使用します。Avalara Dashboard → CertCaptureに移動し、証明書収集ポータルを設定します
  • 顧客には免税証明書をアップロードするためのリンクが届きます。CertCapture で承認されると、以降の注文は自動的に免税になります

BigCommerce での EU VAT:

  • Store Setup → Tax → VATに移動し、VAT by countryを有効にします
  • OSS または国別の VAT 登録番号を入力します
  • 申告の自動化を含む OSS への完全な準拠には、Avalara の VAT Reporting モジュールを使用してください。国際 VAT の設定については Avalara にお問い合わせください

カスタム/ヘッドレス

リアルタイム計算と申告記録には、TaxJar APIまたはAvalara AvaTax APIを使用します。

チェックアウト時の TaxJar リアルタイム計算:

const Taxjar = require('taxjar');
const taxjar = new Taxjar({ apiKey: process.env.TAXJAR_API_KEY });

async function calculateTaxForOrder({ fromAddress, toAddress, lineItems, shippingCost }) {
  const response = await taxjar.taxForOrder({
    from_country: fromAddress.country,
    from_zip: fromAddress.zip,
    from_state: fromAddress.state,
    to_country: toAddress.country,
    to_zip: toAddress.zip,
    to_state: toAddress.state,
    to_city: toAddress.city,
    amount: lineItems.reduce((sum, i) => sum + i.unit_price * i.quantity, 0),
    shipping: shippingCost,
    line_items: lineItems.map(item => ({
      id: item.id,
      quantity: item.quantity,
      unit_price: item.unit_price,
      product_tax_code: item.taxCode ?? null, // e.g., '20010' for general goods
      exemption_type: item.exemptionType ?? null,
    })),
    exemption_type: customer.exemptionType ?? null, // 'wholesale', 'government', etc.
  });

  return {
    totalTax: response.tax.amount_to_collect,
    taxRate: response.tax.rate,
    hasNexus: response.tax.has_nexus,   // false = no tax to collect in this jurisdiction
    breakdown: response.tax.breakdown,
  };
}

支払い後に取引を確定する(申告記録に必須):

async function commitTaxTransaction(order) {
  await taxjar.createOrder({
    transaction_id: order.id,
    transaction_date: new Date().toISOString().split('T')[0],
    from_country: WAREHOUSE_ADDRESS.country,
    from_zip: WAREHOUSE_ADDRESS.zip,
    from_state: WAREHOUSE_ADDRESS.state,
    to_country: order.shippingAddress.country,
    to_zip: order.shippingAddress.zip,
    to_state: order.shippingAddress.state,
    amount: order.subtotal,
    shipping: order.shippingCost,
    sales_tax: order.taxAmount,
    line_items: order.lineItems.map(item => ({
      id: item.id,
      quantity: item.quantity,
      unit_price: item.price,
      sales_tax: item.taxAmount,
    })),
  });
}

// On refund: void the transaction so it is excluded from filing reports
async function voidTaxTransaction(orderId) {
  await taxjar.deleteOrder(orderId);
}

EU VAT の B2B リバースチャージ — VIES で VAT 番号を検証:

async function validateEUVATNumber(vatNumber) {
  const countryCode = vatNumber.slice(0, 2);
  const number = vatNumber.slice(2);
  const res = await fetch(
    `https://ec.europa.eu/taxation_customs/vies/rest-api/ms/${countryCode}/vat/${number}`
  );
  const data = await res.json();
  return data.isValid === true;
  // If valid: apply zero-rate (reverse charge); if invalid: charge local VAT rate
}

ネクサスのしきい値の監視: TaxJar では、TaxJar Dashboard のEconomic Nexus Insights機能により、州ごとの販売量を自動で追跡し、しきい値に近づくと通知を受け取れます。TaxJar Dashboard → Economic Nexus Insightsからアクセスできます。これにより、しきい値を追跡するカスタムコードを作成する必要がなくなります。


ステップ 3:免税証明書を検証・管理する

米国での B2B 販売の場合:顧客にゼロ税率を適用する前に、免税証明書を収集して検証する必要があります。顧客の自己申告だけを根拠に免税を適用しないでください。

  • Avalara CertCapture:最も包括的なソリューションです。証明書の収集、検証、更新通知、州固有の書式要件に対応します。Avalara のすべてのサブスクリプションにアドオンとして追加できます。
  • TaxJar Exemptions:より簡易な方法です。メールアドレス、顧客 ID、または顧客タイプを指定して、TaxJar Dashboard → Customers → Exemptionsで免税顧客を追加します。TaxJar は該当する顧客の税金計算を自動的にスキップします。
  • WooCommerce の場合:WooCommerce B2B プラグインまたは WooCommerce Tax Exemptions プラグインを使用すると、卸売顧客がチェックアウト時に免税証明書をアップロードするよう必須にできます。

証明書の保管要件:

  • 証明書は、最低 4 年間(ほとんどの州)、または発行州におけるその顧客との最後の取引から 3 年後まで保管します
  • 検索可能なシステムに保管します。監査時には、短期間で証明書の提出を求められる場合があります

手順 4:申告の自動化を設定する
申告方法使用するタイミング
TaxJar AutoFileTaxJar を利用する米国のストア向け。Plus/Professional プランで利用でき、全 50 州に対応します
Avalara Managed ReturnsAvalara の顧客向け。米国の州および一部の海外管轄区域に対応します
Avalara VAT ReportingEU/英国/オーストラリアの VAT 申告向け。Avalara が代わりに OSS 申告書を作成します
TaxJar のレポートを使った手動申告申告頻度が低い場合(四半期ごとまたは年次)に使用します。TaxJar から事前入力済みの州別申告データをエクスポートし、各州の税務当局のウェブサイトで手動申告します

申告カレンダーの設定:

  1. TaxJar または Avalara のダッシュボードにログインし、登録済みの各州の申告頻度(月次、四半期ごと、または年次。売上高に基づいて州が設定します)を確認します
  2. 各州で AutoFile または Managed Returns を有効にします
  3. 自動納付用の銀行口座が接続されていることを確認します。TaxJar → Account → AutoFile → Payment Method または Avalara → Settings → Bank Accounts に移動してください
  4. アカウントの通知設定で、申告完了確認のメールアラートを設定します

ベストプラクティス

  • 独自の税率テーブルを作成しないでください — 税率は常に変わります。API の利用料金は、誤った金額を徴収したり、税率の更新を見逃したりするリスクに比べてはるかに低額です。
  • ネクサスの基準に達する前に登録してください — 経済的ネクサスが発生すると、発生日まで遡って税金を支払う義務が生じる場合があります。TaxJar Economic Nexus Insights ダッシュボードを監視し、州の基準値の 80%に達した時点で登録してください。
  • 取引は支払い後に確定し、支払い前には確定しないでください — 確定した取引のみが申告レポートに表示されます。注文作成時ではなく、支払いが確認された時点で確定してください。
  • 返金時は税取引を無効にしてください — 返金を行う際は、申告時の過大報告を避けるため、TaxJar または Avalara で該当する税取引を無効にしてください。
  • 税率をゼロにする前に免税証明書を確認してください — 証明書の管理には Avalara CertCapture または TaxJar Exemptions を使用してください。証明書の記録なしに免税を認めないでください。
  • デジタル商品は個別に扱ってください — 米国のほとんどの州と EU のすべての国には、デジタル商品、SaaS、ストリーミングに関する特別な課税規則があります。各デジタル商品に正しい TaxJar 商品税コード(例:SaaS には DC010100)または Avalara 税コードを設定してください。

よくある落とし穴

問題解決策
チェックアウト時に税金が計算されるが、TaxJar/Avalara に確定されないプラットフォームのプラグインで Transaction Sync の設定が有効になっていることを確認してください。プロバイダーの取引ダッシュボードで、注文が欠落していないか確認してください
EU 域内の B2B 越境販売に VAT が課されるリバースチャージを適用する前に、VIES で購入者の VAT 番号を確認してください。確認に失敗した場合は、B2C 取引として VAT を課してください
VAT 込み価格と VAT 別価格の混同価格に VAT を含める(EU の B2C で一般的)か、含めない(米国で一般的)かをあらかじめ決め、プラットフォームの税設定をそれに合わせてください。両方を混在させると、チェックアウト時の合計額に誤りが生じます
買収時のデューデリジェンスで、ネクサス登録漏れが発覚するTaxJar の Nexus Insights を使って毎年ネクサスを確認してください。買収者は、未開示の税務債務を重大なリスクとみなします
B2B の顧客が、有効な証明書が保管されていないのに免税を申告する免税を適用する前に、必ず証明書を収集して保管してください。チェックアウト時にこれを徹底するには、Avalara CertCapture または TaxJar Exemptions を使用してください
EU VAT OSS 申告書の通貨換算OSS の四半期申告書は EUR で提出する必要があります。個々の取引日ではなく、報告期間の ECB 為替レートを使用してください。Avalara の VAT Reporting モジュールを使えば、これを自動処理できます
TaxJar のインストール後、Shopify で税額が $0 と表示されるTaxJar API キーが正しいことを確認してください。ネクサスの州が TaxJar ダッシュボードと Shopify アプリの設定の両方で設定されているか確認し、倉庫の住所が正しく設定されていることも確認してください

Related Skills

  • @tax-calculation
  • @payment-reconciliation-automation
  • @invoice-generation-automation
  • @checkout-flow-optimization
  • @multi-currency

コメント