# 既存のサブスクリプションを更新する

既存のサブスクリプションを Stripe Tax に更新する方法をご紹介します。

[Stripe Tax](https://docs.stripe.com/tax.md) を使用すると、取引で徴収する税金を計算できます。税額は商品および顧客の所在地に基づいて、自動的に計算され、支払いに追加されます。

Stripe Tax を導入する際は、それ以降税金が自動的に計算されるようにするため、既存のサブスクリプションを更新する必要があります。Stripe は、サブスクリプションの更新に役立つツールを提供しています。また、特定のオプションをより詳細に制御したい場合、サブスクリプションを手動で更新することもできます。

## 自動化ツールを使用して既存のサブスクリプションを更新する

まず、Stripe Tax を有効にする必要があります。方法については、[設定ガイド](https://docs.stripe.com/tax/set-up.md)をご覧ください。

このツールを使用するには、次の手順に従います。

1. [ダッシュボード](https://dashboard.stripe.com/tax/migrations)に移動します。
2. 更新が必要なサブスクリプションを確認します。
3. 推奨される対応を確認します。
4. 請求先住所がなく、Stripe が[推定所在地](https://docs.stripe.com/tax/subscriptions/update.md#inferred-locations)を提供するサブスクを含めるかどうかを選択します。このオプションはデフォルトで有効になっていますが、無効にしてそのようなサブスクを除外することもできます。
5. 予測される結果の内訳 (請求先住所を使用した税金徴収の準備ができているサブスク、推定所在地を使用した税金徴収の準備ができているサブスク、解決できないサブスク) を確認します。
6. 更新を確認します。
7. 残りのサブスクに必要な更新を手動で行います。

Stripe はサブスクから手動の[税率](https://docs.stripe.com/tax/tax-rates.md)を削除します。処理が完了しましたら、メールでお知らせします。

> 税額変更の比例配分は行われません。更新は、次の請求サイクルの開始時に有効になります。

このツールを使用して、次の条件を満たすサブスクリプションを更新できます。

- アクティブである
- 税金を自動的に徴収しない
- 税金の計算に必要な[住所情報](https://docs.stripe.com/tax/customer-locations.md#address-hierarchy-other)があるか、推定所在地がある
- 価格に[税務処理](https://docs.stripe.com/tax/products-prices-tax-codes-tax-behavior.md#set-tax-behavior-on-price)を設定

以下のタイプのサブスクリプションを更新する必要があります。

- スケジュールが設定されたサブスクリプション。詳細については、[サブスクリプションスケジュールを使用してサブスクリプションを更新する](https://docs.stripe.com/tax/subscriptions/update.md#existing-subscription-schedules)セクションをご覧ください。
- デスティネーション支払いまたは支払いと送金別方式の[支払いタイプ](https://docs.stripe.com/connect/charges.md#types)を使用するサブスクリプション。

自動化ツールでは、一部のサブスクを更新できない場合があります。その場合、次の理由により、[無効な顧客の住所](https://docs.stripe.com/tax/customer-locations.md#other)の場所をツールで推測できないことが考えられます。

- 顧客のメールアドレスが登録されていない。
- メールアドレスが Stripe ネットワークにある過去の取引と一致しない。

> 自動化ツールは、Test Subscriptions では機能しません。

自動化ツールを使用すると、再度実行できるようになるまで数日待つ必要があります。その間に、最初の試行で失敗したサブスクリプションを確認して修正します。

## 既存のサブスクリプションを手動で更新する

- [顧客の居住地を確認する](https://docs.stripe.com/tax/subscriptions/update.md#customer-locations)をクリックし、必要な更新を行います。
- 税コードと税務処理を使用して、[商品と価格](https://docs.stripe.com/tax/subscriptions/update.md#products-prices)を更新します。
- [サブスクリプションを更新](https://docs.stripe.com/tax/subscriptions/update.md#subs)し、以降のインボイスで税金を自動的に計算します。
- サブスクリプションを適切に更新したことを[確認](https://docs.stripe.com/tax/subscriptions/update.md#confirm)します。

## 顧客の地域を確認する

税金を正確に計算するには、顧客の納税場所のステータスを知る必要があります。移行ツールでは、[場所の帰属の階層](https://docs.stripe.com/tax/monitoring.md#location-attribution)を使用して顧客の納税場所を判断します。この情報はダッシュボードまたはエクスポートされたデータで確認でき、API を使用して取得することもできます。

#### ダッシュボード

ダッシュボードを使用して顧客の納税場所ステータスを確認するには、[顧客ページ](https://dashboard.stripe.com/customers)に移動して顧客を選択し、詳細を展開します。納税場所ステータス (`automatic_tax`) には、次の 4 つの値があります。

| ステータス | 説明 | 想定されるアクション |
| --- | --- | --- |
| 有効 (`supported`) | 税金の自動計算が完全にサポートされています。 | これ以上のアクションは必要ありません。 |
| 認識されていない場所 (`unrecognized_location`) | この住所は納税場所の判断には有効ではありません。 | 顧客に住所の更新を依頼し、[customer.address](https://docs.stripe.com/api/customers/update.md#update_customer-address) に新しい値を設定します。顧客の詳細を編集することで、API またはダッシュボードから値を更新できます。 |
| 未登録 (`not_collecting`) | 住所が認識され、場所が判別されましたが、徴収場所として設定されていない場所でした。 | 必要なアクションは、お客様の[納税義務](https://docs.stripe.com/tax/monitoring.md)によって異なります。続行しても、Stripe Tax は税金を評価しません。Stripe Tax で税金を評価するには、顧客が在住する管轄区域の[有効な登録を追加](https://docs.stripe.com/tax/registering.md)してください。 |
| `failed` | Stripe のサーバーで[エラー](https://docs.stripe.com/error-codes.md)が発生しました。これはまれなケースです。 | 再度リクエストをお試しください。問題が解決しない場合は、Stripe サポートにご連絡ください。 |

`status=unrecognized_location` の場合は、[Stripe Taxが使用できる住所](https://docs.stripe.com/tax/customer-locations.md) を使用して顧客の所在地を更新する必要があります。ダッシュボードで[顧客](https://dashboard.stripe.com/customers)に移動し、顧客を選択し、詳細で請求先住所や配送先住所を変更できます。

### エクスポートで納税場所のステータスを確認する

ダッシュボードのエクスポートを使用して顧客の納税場所のステータスを確認するには、[顧客のページ](https://dashboard.stripe.com/customers)に移動して**エクスポート**をクリックし、**すべての列**を選択します。

CSV ファイルには、**Tax Location Recognized**という名前のブール列が含まれています。これを使用して、顧客に[有効な](https://docs.stripe.com/tax/customer-locations.md#supported-formats)住所があるかどうかを判別できます。

#### API

API を使用して顧客の納税場所のステータスを確認するには、[Customer (顧客) オブジェクト](https://docs.stripe.com/api/customers/object.md)を取得し、リクエストに `expand: ['tax']` を追加してレスポンスを[拡張](https://docs.stripe.com/api/expanding_objects.md)します。デフォルトのレスポンスには [tax](https://docs.stripe.com/api/customers/object.md#customer_object-tax) フィールドが含まれていないため、`expand` を使用する必要があります。

```curl
curl -G https://api.stripe.com/v1/customers/{{CUSTOMER_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "expand[]=tax"
```

応答には、税金が計算された場所を示す拡張税金フィールドや、特定の顧客に自動税金計算を使用できるかどうかなどが含まれます。

```json
{
  "tax": {
    "automatic_tax": "supported",
    "ip_address": null,
    "location": {"country": "US", "state": "CA", "source": "billing_address"}
  },
  "id": "cus_JvecILHjNPGKSI",
  "object": "customer",
  "address": null,
  "balance": 0,
  "created": 1627380831,
  "currency": null,
  "default_source": "src_0JHnP4507O8KAxCGgDurDgoS",
  "delinquent": false,
  "description": "1st Deposit",
  "discount": null,
  "email": "jenny.rosen@example.com",
  "invoice_prefix": "66CD4DB9",
  "invoice_settings": {
    "custom_fields": null,
    "default_payment_method": null,
    "footer": null
  },
  "livemode": false,
  "metadata": {
  },
  "name": "Jenny Rosen",
  "next_invoice_sequence": 1,
  "phone": null,
  "preferred_locales": [
  ],
  "shipping": null,
  "tax_exempt": "none"
}
```

`automatic_tax` (ダッシュボードの**納税場所のステータス** ) の値として使用可能な値は、次の 4 つです。

| ステータス | 説明 | 想定されるアクション |
| --- | --- | --- |
| 有効 (`supported`) | 税金の自動計算が完全にサポートされています。 | これ以上のアクションは必要ありません。 |
| 認識されていない場所 (`unrecognized_location`) | この住所は納税場所の判断には有効ではありません。 | 顧客に住所の更新を依頼し、[customer.address](https://docs.stripe.com/api/customers/update.md#update_customer-address) に新しい値を設定します。顧客の詳細を編集することで、API またはダッシュボードから値を更新できます。 |
| 未登録 (`not_collecting`) | 住所が認識され、場所が判別されましたが、徴収場所として設定されていない場所でした。 | 必要なアクションは、お客様の[納税義務](https://docs.stripe.com/tax/monitoring.md)によって異なります。続行しても、Stripe Tax は税金を評価しません。Stripe Tax で税金を評価するには、顧客が在住する管轄区域の[有効な登録を追加](https://docs.stripe.com/tax/registering.md)してください。 |
| `failed` | Stripe のサーバーで[エラー](https://docs.stripe.com/error-codes.md)が発生しました。これはまれなケースです。 | 再度リクエストをお試しください。問題が解決しない場合は、Stripe サポートにご連絡ください。 |

`status=unrecognized_location` の場合は、[Stripe Taxが税額計算に使用できる住所](https://docs.stripe.com/tax/customer-locations.md)を使用して顧客の所在地を更新する必要があります。API を使用して[顧客を更新](https://docs.stripe.com/api/customers/update.md#update_customer-address)できます。

```curl
curl https://api.stripe.com/v1/customers/{{CUSTOMER_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "address[line1]=27 Fredrick Ave" \
  -d "address[city]=Brothers" \
  -d "address[postal_code]=97712" \
  -d "address[state]=OR" \
  -d "address[country]=US" \
  -d "expand[]=tax"
```

有効な顧客の住所、その使用方法、エラーの対処方法については、[顧客の住所を収集する](https://docs.stripe.com/tax/customer-locations.md)で詳細をご覧ください。

### 推定所在地

顧客の請求先住所が登録されていない場合、Stripe は顧客のメールアドレスを、Stripe ネットワークにある過去の取引の所在地データと照合できます。利用可能なデータに応じて、推定所在地には国、郵便番号、住所 1 行目が含まれます。これにより、移行が失敗せず、税金の徴収を開始できます。推定所在地には次の事項が当てはまります。

- 他に税金を徴収する方法がない場合にのみ適用されます。
- 利用可能な国、郵便番号、住所 1 行目が含まれます。
- Stripe のファーストパーティーネットワーク内で一致する必要があります。
- 優先順位は最も低くなります。請求先住所または配送先住所が自動的に推定所在地よりも優先されます。

推定所在地を使用するには、住所の更新が有効になっているアクティブな[カスタマーポータル](https://docs.stripe.com/customer-management.md)が必要です。これにより、正確な税金計算のために顧客がいつでも完全な住所を提供できます。

推定所在地に番地が含まれていない場合、同じ郵便番号内で税率が異なる地域では、郵便番号によって顧客の正確な税務管轄区域が反映されないことがあります。米国における大半の税金計算では、郵便番号レベルの特定で十分です。

Stripe はプライバシーを保護するため、ファーストパーティーネットワーク内でのみメールアドレスと所在地データを照合します。

サブスクに推定所在地が使用されているかどうかを確認するには、顧客の詳細ページまたは取引の詳細を確認します。推定所在地には **推定** というラベルが表示されます。

## 商品と価格を更新する

商品と価格には、Stripe Tax を有効化する際に割り当てたデフォルトの課税動作が使用されます。アクティブな商品と価格を更新して個別に税金を計算したい場合は、tax_code と tax_behavior を設定してください。詳細については、[利用可能なタックスコードの全リスト](https://docs.stripe.com/tax/tax-codes.md)と、[タックスコードとタックスビヘイビアを設定するためのガイド](https://docs.stripe.com/tax/products-prices-tax-codes-tax-behavior.md)を参照してください。

### 商品を更新する

まず、`tax_code` で既存の商品を更新します。商品の `tax_code` が明示的に定義されていない場合、Stripe Tax は、設定されている事前設定の商品税コードを使用します。

#### ダッシュボード

ダッシュボードで `tax_code` を指定して Product を更新するには、[商品ページ](https://dashboard.stripe.com/products?active=true)に移動して、編集する商品を選択し、商品情報ページでドロップダウンメニューから税コードを選択します。

#### API

API を使用し、`tax_code` を設定して商品を更新する方法は次のとおりです。

```curl
curl https://api.stripe.com/v1/products/{{PRODUCT_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "tax_code={{TAXCODE_ID}}"
```

### 価格を更新する

次に、価格の税金処理を更新します。

> `tax_behavior` は、一度 `exclusive` または `inclusive` のいずれかに設定すると、後から変更することはできません。価格の税金処理を変更するには、必要な税金処理で新しい価格を作成し、古い価格をアーカイブする必要があります。

#### ダッシュボード

ダッシュボードを使用して価格を更新する:

1. [商品ページ](https://dashboard.stripe.com/products)に移動します。
2. 価格を更新する商品を選択します。
3. 価格情報セクションで追加オプションを選択します。
4. **価格に税金を含める**ドロップダウンメニューで、価格に関連付ける処理を選択します。

#### API

以下は、API を使用して価格を更新する方法です。

```curl
curl https://api.stripe.com/v1/prices/{{PRICE_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d tax_behavior=exclusive
```

## サブスクリプションを更新する

顧客、商品、価格を更新すると、既存のサブスクリプションを更新する準備が整います。

[ダッシュボードのサブスクリプションページ](https://dashboard.stripe.com/subscriptions)から、更新が必要なサブスクリプションのリストを取得します。税金の自動計算が有効化されていないサブスクリプションのみを表示するには、**フィルター**をクリックし、**税金の自動計算**にチェックマークを付け、**無効**を選択します。または、フィルターで絞り込まれたすべてのサブスクリプションをエクスポートして、CSV ファイルとして表示することもできます。これを行うには、**エクスポート**をクリックして、**日付範囲**として**すべて**を選択します。

ステータスに応じてサブスクリプションを更新する方法:

- サブスクリプションに[既存の税率](https://docs.stripe.com/tax/subscriptions/update.md#no-tax-rates)がない場合は、税金の自動計算を有効にするだけで済みます。
- サブスクリプションのサブスクリプションまたはラインアイテムのレベルに[既存の税率](https://docs.stripe.com/tax/subscriptions/update.md#existing-tax-rates)がある場合は、既存の税率を消去し、税金の自動計算を有効化する必要があります。比例配分が適用されたアイテムの作成を避けるには、この更新のスケジュールを作成することができます。
- サブスクリプションに[サブスクリプションスケジュール](https://docs.stripe.com/tax/subscriptions/update.md#existing-subscription-schedules)がある場合、サブスクリプションスケジュールプランで `automatic_tax[enabled]=false` のインスタンスを削除する必要があります。

### 既存の税率がないサブスクリプションを更新する

#### ダッシュボード

ダッシュボードで既存の税率のないサブスクリプションを更新するには、サブスクリプションを更新して**税金を自動計算**オプションをオンにします。

#### API

[税率](https://docs.stripe.com/tax/tax-rates.md)を設定していない[サブスクリプションを更新する](https://docs.stripe.com/api/subscriptions/update.md)には、[automatic_tax.enabled](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-automatic_tax) を `true` に設定します。

```curl
curl https://api.stripe.com/v1/subscriptions/{{SUBSCRIPTION_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "automatic_tax[enabled]=true"
```

`automatic_tax.enabled=true` に設定すると、そのサブスクリプションで作成されたその後のすべての請求書の自動税金計算が有効になります。

### 既存の税率でサブスクリプションを更新する

#### ダッシュボード

[税率](https://docs.stripe.com/tax/tax-rates.md)が設定されたサブスクリプションをダッシュボードで更新するには、サブスクリプションを編集してから、**税額を自動計算**オプションを有効にします。ダッシュボードは既存の税率を削除し、以降の税額を自動的に計算します。価格を更新して `tax_behavior` を設定していない場合は、サブスクリプションを更新する前に不足している詳細を更新するようダッシュボードに表示されます。

#### API

[サブスクリプションレベル](https://docs.stripe.com/billing/taxes/collect-taxes.md?tax-calculation=tax-rates#static-configuration)で[税率](https://docs.stripe.com/tax/tax-rates.md) が設定されているサブスクリプションを更新するには、`automatic_tax` を有効にする前に税率を削除する必要があります。更新時には次の処理が行われます。

- 各サブスクリプションの [item](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-items) の [default_tax_rates](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-default_tax_rates) と [tax_rates](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-items-data-tax_rates) のフィールドに空の文字列を渡します。これにより、サブスクリプション (`default_tax_rates`) レベルとラインアイテム (`tax_rates`) レベルの両方で設定された税率がクリアされます。
- [automatic_tax.enabled](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-automatic_tax) を `true` に設定します。
- [proration_behavior](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-proration_behavior) を `none` に設定します。

#### Ruby

```ruby

# Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
# Find your keys at https://dashboard.stripe.com/apikeys.
client = Stripe::StripeClient.new('<<YOUR_SECRET_KEY>>')

subscription = client.v1.subscriptions.retrieve('{{SUBSCRIPTION_ID}}')
client.v1.subscriptions.update(
  subscription.id,
  {
    automatic_tax: { enabled: true },
    # Removes existing tax_rates for each item in the subscription
    items: subscription.items.data.map {|item| {id: item.id, tax_rates: ''}},
    default_tax_rates: '',
    proration_behavior: 'none'
  }
)
```

### サブスクリプションのスケジュールを使用してサブスクリプションを更新する

税金を徴収する必要があり、サブスクリプションに `automatic_tax[enabled]=false` を設定するサブスクリプションスケジュールが含まれている場合は、そのパラメーターを削除する必要があります。これを行うには、`automatic_tax[enabled]=false` を削除し、`default_settings[automatic_tax][enabled]=true` を設定して、サブスクリプションスケジュールの全フェーズを更新します。

サブスクリプションのスケジュールを更新する際には、現在および以降のフェーズをすべて渡す必要があります。このためには、設定されているパラメーターを確認してから、サブスクリプションのスケジュールで Stripe Tax を有効にします。

```curl
curl https://api.stripe.com/v1/subscription_schedules/{{SUBSCRIPTIONSCHEDULE_ID}} \
  -u "<<YOUR_SECRET_KEY>>:"
```

サブスクリプションのスケジュールを取得後に更新するには、`automatic_tax[enabled]=false`パラメーターを削除し、他のフェーズとパラメーターを渡します。

```curl
curl https://api.stripe.com/v1/subscription_schedules/{{SUBSCRIPTIONSCHEDULE_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "phases[0][items][0][price]={{PRICE_ID}}" \
  -d "phases[0][items][0][quantity]=1" \
  -d "phases[0][start_date]=1577865600" \
  -d "phases[0][end_date]=1578038400" \
  -d "phases[1][items][0][price]={{PRICE_ID}}" \
  -d "phases[1][items][0][quantity]=2" \
  -d "phases[1][start_date]=1578038400" \
  -d "phases[1][end_date]=1580544000" \
  -d "default_settings[automatic_tax][enabled]=true"
```

#### 更新をスケジュールする

比例配分アイテムが作成されないようにするには、次のサイクルの開始時に更新するようにスケジュールできます。

現在、サブスクリプションの更新をスケジュールするには、API を使用する必要があります。

#### Ruby

```ruby

# Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
# Find your keys at https://dashboard.stripe.com/apikeys.
client = Stripe::StripeClient.new('<<YOUR_SECRET_KEY>>')

subscription = client.v1.subscriptions.retrieve(
  '{{SUBSCRIPTION_ID}}',
)
schedule = client.v1.subscription_schedules.create({
  from_subscription: subscription.id
})
client.v1.subscription_schedules.update(
  schedule.id,
  {
    end_behavior: 'release',
    phases: [
      # The first phase contains items for the
      # latest subscription invoice
      {
        items: [
          # Prices and tax_rates for each item
          {
            price: '{{PRICE_ID}}',
            tax_rates: [
              '{{TAX_RATE_ID}}'
            ]
          }
        ],
        default_tax_rates: ['{{TAX_RATE_ID}}'],
        start_date: subscription.items.data[0].current_period_start,
        end_date: subscription.items.data[0].current_period_end
      },
      # The second phase removes manual tax rates and enables
      # automatic tax calculation
      {
        items: [
          # Prices for each item with tax_rates: []
          {
            price: '{{PRICE_ID}}',
            tax_rates: []
          }
        ],
        default_tax_rates: [],
        automatic_tax: {enabled: true},
        iterations: 1
      }
    ]
  }
)
```

## 更新を確認する

サブスクリプションが適切に更新されたことを確認するには、各サブスクリプションの[請求書のプレビュー](https://docs.stripe.com/api/invoices/create_preview.md)を作成し、税額計算の結果を確認します。

プレビュー請求書の [tax](https://docs.stripe.com/api/invoices/object.md#invoice_object-tax) フィールドと [total_tax_amounts](https://docs.stripe.com/api/invoices/object.md#invoice_object-total_tax_amounts) フィールド、およびライン項目ごとの [tax_amounts](https://docs.stripe.com/api/invoice-line-item/object.md#invoice_line_item_object-tax_amounts) フィールドから税額を取得できます。請求書には計算のステータスを示す [automatic_tax](https://docs.stripe.com/api/invoices/object.md#invoice_object-automatic_tax) フィールドがあり、3 つのステータスのいずれかが表示されます。

| ステータス | 説明 | 想定されるアクション |
| --- | --- | --- |
| `complete` | Stripe Tax は支払いに対する税金の評価を完了しました。 | 税額は、最新の請求書の tax および `total_tax_amounts` フィールドから、または各ラインアイテムの `tax_amounts` フィールドから取得できます。 |
| `requires_location_inputs`1 | Stripe Tax に顧客の居住地を特定するための情報が不足していたため、税金を評価できませんでした。 | 顧客から完全な番地などの追加情報を収集し、v1 の顧客の場合は、[customer.address](https://docs.stripe.com/api/customers/update.md#update_customer-address)フィールドを更新します。v2 アカウントの場合は、アカウントのアイデンティティ、または顧客の設定にある[住所](https://docs.stripe.com/api/v2/core/accounts/update.md)を更新します。 |
| `failed` | Stripe の内部エラー。 | 再度リクエストをお試しください。問題が解決しない場合は、Stripe サポートにご連絡ください。 |

1 推定所在地を有効にすると、以前に `requires_location_inputs` が返されていたサブスクが更新され、[推定所在地](https://docs.stripe.com/tax/subscriptions/update.md#inferred-locations)に基づいて計算された税金が適用されて完了することがあります。

## See also

- [Stripe Tax で新しいサブスクリプションを作成する](https://docs.stripe.com/tax/subscriptions.md)
- [税コード、商品、価格を設定する](https://docs.stripe.com/tax/products-prices-tax-codes-tax-behavior.md)
