---
title: "invoice.sync.failed"
method: POST
path: "/webhook-events/invoice.sync.failed"
tags: ["Webhook Events"]
---

# invoice.sync.failed

`POST /webhook-events/invoice.sync.failed`

## Request

- Base URL: `https://us.api.flexprice.io/v1`
- URL: `https://us.api.flexprice.io/v1/webhook-events/invoice.sync.failed`
- Auth: none declared

Fired once per provider when an invoice sync fails after its last retry.

## Response `200`

Webhook payload

- WebhookDtoInvoiceSyncWebhookPayload
  - `error` string
  - `event_type` 'subscription.created' | 'subscription.draft.created' | 'subscription.activated' | 'subscription.updated' | 'subscription.paused' | 'subscription.cancelled' | 'subscription.resumed' | 'subscription.plan_changed' | 'subscription.phase.created' | 'subscription.phase.updated' | 'subscription.phase.deleted' | 'feature.created' | 'feature.updated' | 'feature.deleted' | 'feature.wallet_balance.alert' | 'entitlement.created' | 'entitlement.updated' | 'entitlement.deleted' | 'wallet.created' | 'wallet.updated' | 'wallet.terminated' | 'wallet.transaction.created' | 'wallet.transaction.updated' | 'payment.created' | 'payment.updated' | 'payment.failed' | 'payment.success' | 'payment.pending' | 'refund.created' | 'refund.succeeded' | 'refund.failed' | 'customer.created' | 'customer.updated' | 'customer.deleted' | 'invoice.update.finalized' | 'invoice.update.payment' | 'invoice.update.voided' | 'invoice.update' | 'invoice.payment.overdue' | 'invoice.sync.success' | 'invoice.sync.failed' | 'wallet.credit_balance.dropped' | 'wallet.credit_balance.recovered' | 'wallet.ongoing_balance.dropped' | 'wallet.ongoing_balance.recovered' | 'wallet.ongoing_balance.updated' | 'subscription.spend.threshold_reached' | 'subscription.spend.threshold_recovered' | 'subscription.line_item_spend.threshold_reached' | 'subscription.line_item_spend.threshold_recovered' | 'subscription.group_spend.threshold_reached' | 'subscription.group_spend.threshold_recovered' | 'entitlement.grant.exhausted' | 'subscription.renewal.due' | 'invoice.communication.triggered' | 'credit_note.created' | 'credit_note.updated' | 'checkout.session.initiated' | 'checkout.session.completed' | 'checkout.session.failed' | 'checkout.session.expired' | 'event.rejected'
  - `invoice` WebhookDtoInvoice
    - `amount_due` string
    - `amount_paid` string
    - `amount_remaining` string
    - `billing_period` string
    - `billing_reason` string
    - `billing_sequence` integer
    - `coupon_applications` WebhookDtoCouponApplication[]
      - `applied_at` string, date-time
      - `coupon_association_id` string
      - `coupon_id` string
      - `coupon_snapshot` object
      - `currency` string
      - `discount_percentage` string
      - `discount_type` 'fixed' | 'percentage'
      - `discounted_amount` string
      - `final_price` string
      - `id` string
      - `invoice_line_item_id` string
      - `metadata` object
      - `original_price` string
      - `subscription_id` string
    - `created_at` string, date-time
    - `currency` string
    - `customer` WebhookDtoCustomer
      - `address_city` string
      - `address_country` string
      - `address_line1` string
      - `address_line2` string
      - `address_postal_code` string
      - `address_state` string
      - `email` string
      - `environment_id` string
      - `external_id` string
      - `id` string
      - `metadata` object
      - `name` string
      - `timezone` string
    - `customer_id` string
    - `description` string
    - `due_date` string, date-time
    - `environment_id` string
    - `finalized_at` string, date-time
    - `fx_conversion` TypesFxConversion
      - `billing_currency` string: BillingCurrency is the currency the invoice was issued in.
      - `charge_currency` string: ChargeCurrency is the invoice's original (draft) currency.
      - `converted_at` string, date-time: ConvertedAt is when the conversion ran.
      - `rate` string: Rate is the frozen rate: billing per 1 charge unit.
      - `rate_id` string: RateID is the fx_rates row used, for reference only; never read again.
      - `scope` 'tenant' | 'customer' | 'subscription'
      - `source` TypesFxConversionSource
        - `net` string
        - `subtotal` string
        - `total_discount` string
        - `total_prepaid_credits_applied` string
    - `id` string
    - `idempotency_key` string
    - `invoice_number` string
    - `invoice_pdf_url` string
    - `invoice_status` 'DRAFT' | 'FINALIZED' | 'VOIDED' | 'SKIPPED'
    - `invoice_type` 'SUBSCRIPTION' | 'ONE_OFF' | 'CREDIT'
    - `line_items` WebhookDtoInvoiceLineItem[]
      - `adjusted_entitlement_quantity` string
      - `amount` string
      - `commitment_info` TypesCommitmentInfo
        - `amount` string
        - `computed_commitment_utilized_amount` string
        - `computed_overage_amount` string
        - `computed_true_up_amount` string: total_cost = computed_commitment_utilized_amount + computed_overage_amount + computed_true_up_amount
        - `duration` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
        - `is_windowed` boolean
        - `overage_factor` string
        - `quantity` string: Only used for quantity-based commitments
        - `true_up_enabled` boolean
        - `type` 'amount' | 'quantity'
      - `currency` string
      - `display_name` string
      - `entity_id` string
      - `entity_type` string
      - `fx_conversion` TypesFxConversion
        - `billing_currency` string: BillingCurrency is the currency the invoice was issued in.
        - `charge_currency` string: ChargeCurrency is the invoice's original (draft) currency.
        - `converted_at` string, date-time: ConvertedAt is when the conversion ran.
        - `rate` string: Rate is the frozen rate: billing per 1 charge unit.
        - `rate_id` string: RateID is the fx_rates row used, for reference only; never read again.
        - `scope` 'tenant' | 'customer' | 'subscription'
        - `source` TypesFxConversionSource
          - `net` string
          - `subtotal` string
          - `total_discount` string
          - `total_prepaid_credits_applied` string
      - `id` string
      - `invoice_level_discount` string
      - `line_item_discount` string
      - `metadata` TypesMetadata
      - `meter_display_name` string
      - `meter_id` string
      - `period_end` string, date-time
      - `period_start` string, date-time
      - `plan_display_name` string
      - `prepaid_credits_applied` string
      - `price_id` string
      - `price_type` string
      - `price_unit` string
      - `price_unit_amount` string
      - `quantity` string
      - `subscription_line_item_id` string
    - `metadata` TypesMetadata
    - `paid_at` string, date-time
    - `payment_status` 'INITIATED' | 'PENDING' | 'PROCESSING' | 'SUCCEEDED' | 'OVERPAID' | 'FAILED' | 'REFUNDED' | 'PARTIALLY_REFUNDED' | 'VOIDED'
    - `period_end` string, date-time
    - `period_start` string, date-time
    - `subscription` WebhookDtoSubscription
      - `billing_cadence` 'RECURRING'
      - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
      - `billing_period_count` integer
      - `cancel_at` string, date-time
      - `cancel_at_period_end` boolean
      - `cancelled_at` string, date-time
      - `coupon_associations` WebhookDtoCouponAssociation[]
        - `coupon_id` string
        - `end_date` string, date-time
        - `id` string
        - `metadata` object
        - `start_date` string, date-time
        - `subscription_id` string
        - `subscription_line_item_id` string
      - `currency` string
      - `current_period_end` string, date-time
      - `current_period_start` string, date-time
      - `customer` WebhookDtoCustomer
        - `address_city` string
        - `address_country` string
        - `address_line1` string
        - `address_line2` string
        - `address_postal_code` string
        - `address_state` string
        - `email` string
        - `environment_id` string
        - `external_id` string
        - `id` string
        - `metadata` object
        - `name` string
        - `timezone` string
      - `customer_id` string
      - `end_date` string, date-time
      - `id` string
      - `invoicing_customer_id` string
      - `line_items` WebhookDtoSubscriptionLineItem[]
        - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
        - `billing_period_count` integer
        - `currency` string
        - `display_name` string
        - `end_date` string, date-time
        - `entity_id` string
        - `entity_type` 'plan' | 'addon' | 'subscription'
        - `id` string
        - `invoice_cadence` 'ARREAR' | 'ADVANCE'
        - `metadata` object
        - `meter_display_name` string
        - `meter_id` string
        - `plan_display_name` string
        - `price` WebhookDtoPrice
          - `amount` string
          - `billing_cadence` 'RECURRING'
          - `billing_model` 'FLAT_FEE' | 'PACKAGE' | 'TIERED'
          - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
          - `billing_period_count` integer
          - `currency` string
          - `description` string
          - `display_amount` string
          - `display_name` string
          - `display_price_unit_amount` string
          - `id` string
          - `invoice_cadence` 'ARREAR' | 'ADVANCE'
          - `lookup_key` string
          - `metadata` PriceJSONBMetadata
          - `meter` WebhookDtoMeter
            - `aggregation` MeterAggregation
              - …
            - `event_name` string
            - `id` string
            - `name` string
            - `reset_usage` 'BILLING_PERIOD' | 'NEVER'
          - `meter_id` string
          - `price_unit` string
          - `price_unit_amount` string
          - `tier_mode` 'VOLUME' | 'SLAB'
          - `tiers` PricePriceTier[]
            - `flat_amount` string: flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
            - `unit_amount` string: unit_amount is the amount per unit for the given tier
            - `up_to` integer: up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
          - `transform_quantity` PriceJSONBTransformQuantity
            - `divide_by` integer: Divide quantity by this number
            - `round` 'up' | 'down'
          - `type` 'USAGE' | 'FIXED'
        - `price_id` string
        - `price_type` 'USAGE' | 'FIXED'
        - `price_unit` string
        - `quantity` string
        - `start_date` string, date-time
        - `subscription_id` string
      - `lookup_key` string
      - `metadata` TypesMetadata
      - `parent_subscription_id` string
      - `pause_status` 'none' | 'active' | 'scheduled' | 'completed' | 'cancelled'
      - `plan` WebhookDtoPlan
        - `description` string
        - `id` string
        - `lookup_key` string
        - `metadata` TypesMetadata
        - `name` string
        - `prices` WebhookDtoPrice[]
          - `amount` string
          - `billing_cadence` 'RECURRING'
          - `billing_model` 'FLAT_FEE' | 'PACKAGE' | 'TIERED'
          - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
          - `billing_period_count` integer
          - `currency` string
          - `description` string
          - `display_amount` string
          - `display_name` string
          - `display_price_unit_amount` string
          - `id` string
          - `invoice_cadence` 'ARREAR' | 'ADVANCE'
          - `lookup_key` string
          - `metadata` PriceJSONBMetadata
          - `meter` WebhookDtoMeter
            - `aggregation` MeterAggregation
              - …
            - `event_name` string
            - `id` string
            - `name` string
            - `reset_usage` 'BILLING_PERIOD' | 'NEVER'
          - `meter_id` string
          - `price_unit` string
          - `price_unit_amount` string
          - `tier_mode` 'VOLUME' | 'SLAB'
          - `tiers` PricePriceTier[]
            - `flat_amount` string: flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
            - `unit_amount` string: unit_amount is the amount per unit for the given tier
            - `up_to` integer: up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
          - `transform_quantity` PriceJSONBTransformQuantity
            - `divide_by` integer: Divide quantity by this number
            - `round` 'up' | 'down'
          - `type` 'USAGE' | 'FIXED'
      - `plan_id` string
      - `start_date` string, date-time
      - `subscription_status` 'active' | 'paused' | 'cancelled' | 'incomplete' | 'trialing' | 'draft'
      - `subscription_type` 'standalone' | 'delegated_invoicing' | 'parent' | 'inherited' | 'grouped_invoicing'
      - `trial_end` string, date-time
      - `trial_start` string, date-time
    - `subscription_id` string
    - `subtotal` string
    - `tax_summary` TaxSummary
      - `exclusive_tax` string
      - `exemption` TaxExemptionSummary
        - `reason` string
        - `reason_code` 'customer_exempt' | 'no_tax_configured' | 'reverse_charge' | 'not_collecting' | 'not_subject_to_tax' | 'not_supported'
      - `inclusive_tax` string
      - `total_tax` string
    - `taxes` WebhookDtoTaxApplied[]
      - `applied_at` string, date-time
      - `currency` string
      - `external_tax_details` TypesExternalTaxDetails
        - `calculation_expires_at` string, date-time: CalculationExpiresAt is when the calculation can no longer be filed, RFC3339.
        - `calculation_id` string: CalculationID is the provider calculation this row was written from. Commit files it.
        - `display_name` string: DisplayName is the engine's own name for the tax, such as "Integrated goods and services tax (IGST)".
        - `jurisdiction` TypesTaxJurisdiction
          - `country` string
          - `display_name` string
          - `level` string
          - `state` string
        - `percentage` string: Percentage is the resolved rate, such as "18.0". This is what was charged, not the rate that would apply if the tax were imposed.
        - `reference` string: Reference is what this row's provider transaction was filed under. It is unique across every transaction on the account, so it is also the only way back to a transaction whose id failed to land here.
        - `reversal` TypesTaxReversal
          - `mode` 'full' | 'partial'
          - `original_transaction` string
        - `sourcing` string: Sourcing is whether the jurisdiction followed the seller's address or the buyer's.
        - `tax_code` string: TaxCode is the product tax category the engine priced against, such as txcd_10000000. It belongs to the line rather than the rate, so today every row on an invoice carries the account default. It only varies once tax is calculated per line item.
        - `tax_type` string: TaxType is the tax family, such as vat, igst or sales_tax.
        - `taxability_reason` string: TaxabilityReason is why the engine charged what it did, such as standard_rated or reverse_charge. Recorded, not yet rendered.
      - `id` string
      - `metadata` object
      - `provider` 'flexprice' | 'stripe'
      - `tax_amount` string
      - `tax_behavior` 'inclusive' | 'exclusive'
      - `tax_rate` WebhookDtoTaxRate
        - `code` string
        - `description` string
        - `id` string
        - `name` string
        - `percentage_value` string
        - `tax_rate_type` 'percentage'
      - `tax_rate_id` string
      - `tax_transaction_type` 'filing' | 'reversal'
      - `taxable_amount` string
    - `total` string
    - `total_discount` string
    - `total_prepaid_credits_applied` string
    - `total_tax` string
    - `updated_at` string, date-time
    - `voided_at` string, date-time
  - `provider_details` WebhookDtoProviderDetails
    - `hosted_invoice_url` string
    - `invoice_id` string
    - `provider` 'flexprice' | 'stripe' | 's3' | 'gcs' | 'hubspot' | 'razorpay' | 'chargebee' | 'quickbooks' | 'zoho_books' | 'nomod' | 'moyasar' | 'paddle' | 'whop' | 'tabs' | 'aws_marketplace' | 'gcp_marketplace' | 'azure_marketplace'

## Changes

- **2026-10-14** `3798546cc4a3`: 4 warning, 3 info
  - added the new `not_collecting` enum value to the `invoice/tax_summary/exemption/reason_code` response property for the response status `200`
  - added the new `not_subject_to_tax` enum value to the `invoice/tax_summary/exemption/reason_code` response property for the response status `200`
  - added the new `not_supported` enum value to the `invoice/tax_summary/exemption/reason_code` response property for the response status `200`
  - added the new `reverse_charge` enum value to the `invoice/tax_summary/exemption/reason_code` response property for the response status `200`
  - …3 more
- **2026-10-12** `9b1ab5a75b5e`: 1 info
  - endpoint added
- **2026-10-12** `d663503436ad`: 1 breaking
  - api path removed without deprecation
- **2026-10-10** `dbd15795e0ad`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/flexprice/apis/flexprice-api/changes/webhook-events/invoice.sync.failed/post.md)

---

[API](https://skmtc.dev/flexprice/apis/flexprice-api.md) - [All operations](https://skmtc.dev/flexprice/apis/flexprice-api/llms.txt) - [OpenAPI document](https://skmtc.dev/flexprice/apis/flexprice-api/revisions/84cb4a3af400?raw)
