---
title: "Synchronize billing from Stripe"
method: POST
path: "/v1/workspaces/{workspaceId}/billing"
---

# Synchronize billing from Stripe

`POST /v1/workspaces/{workspaceId}/billing`

## Request

- Base URL: `https://api.bangermail.com`
- URL: `https://api.bangermail.com/v1/workspaces/{workspaceId}/billing`
- Auth: HTTP bearer

Alias of POST /billing/sync. Requires workspace:admin.

## Path parameters

- `workspaceId` string, uuid, required

## Response `200`

Successful response.

- object
  - `data` BillingSnapshot, required
    - `billing` object, required
      - `workspaceId` string, uuid, required
      - `tier` 'free' | 'starter' | 'pro' | 'business' | 'scale' | 'enterprise', required
      - `planKey` 'free' | 'starter' | 'pro' | 'business' | 'scale' | 'enterprise', required
      - `status` string, required
      - `planInterval` 'month' | 'year' | 'null', nullable, required
      - `stripeCustomerId` string, nullable, required
      - `stripeSubscriptionId` string, nullable, required
      - `currentPeriodEnd` integer, nullable, required: Unix timestamp in milliseconds.
      - `cancelAtPeriodEnd` boolean, required
      - `prepaidPlanKey` string, nullable, required
      - `prepaidUntil` integer, nullable, required: Unix timestamp in milliseconds.
    - `usagePricing` object, required: What Premium includes each month, what it pays per use past that, and the spending limit that caps it.
      - `active` boolean, required: Whether usage charges run for this workspace now.
      - `currency` string, required: Lowercase ISO currency of the rates and the limit.
      - `rates` object, required
        - `emailsPerThousand` number, required
        - `storagePerGbMonth` number, required
        - `triagePerThousand` number, required
      - `spendLimit` number, required: The monthly spending limit in whole units of currency.
      - `spendLimitIsDefault` boolean, required
      - `included` object, required
        - `emails` integer, required
        - `storageBytes` integer, required
        - `triageRuns` integer, required
      - `thisMonth` object, nullable, required: While usage charges run, this billing period's use and charge so far. A monthly subscription's period is its subscription period (billed on its renewal invoice); a yearly one's is the UTC calendar month.
        - `emails` integer, required
        - `averageStorageBytes` integer, required
        - `triageRuns` integer, required
        - `emailsOver` integer, required
        - `storageGbOver` number, required
        - `triageOver` integer, required
        - `chargeSoFar` number, required: In whole units of currency
        - `spendLimitUsedPercent` integer, required: How much of the spending limit this period's use has reached.
        - `nearSpendLimit` boolean, required: At 80% of the spending limit or more but under it; the admins were emailed.
        - `reachedSpendLimit` boolean, required: At the spending limit; the admins were emailed.
        - `usageStopped` boolean, required: Sending
        - `periodStart` integer, required: Unix timestamp in milliseconds.
        - `periodEnd` integer, required: Unix timestamp in milliseconds; the meters start over then.
        - `carriedOver` number, required: Use from earlier months under the minimum usage invoice (about US$2)
    - `usage` object, required
      - `storageBytes` number, required
      - `storageLimitBytes` number, required
      - `sendsThisMonth` number, required
      - `sendLimit` number, required: Where sending stops this month
      - `includedSendLimit` number, nullable, required: What the plan includes while usage charges run; null otherwise.
      - `sendsToday` number, required
      - `dailySendLimit` number, nullable, required
      - `periodEnd` integer, nullable, required: Unix timestamp in milliseconds.
    - `catalog` object, required
      - `plans` object[], required
        - `planKey` 'free' | 'starter' | 'pro' | 'business' | 'scale' | 'enterprise', required
        - `label` string, required
        - `sendLimit` number, required
        - `storageGb` number, required
        - `gmailImportLimit` number, required
        - `triageRuleLimit` number, required
        - `triageRunLimit` number, required
        - `prices` object[], required
          - `priceId` string, required
          - `interval` 'month' | 'year', required
          - `currency` string, required: Lowercase ISO currency.
          - `unitAmount` integer, nullable, required
      - `addons` unknown[], required
        - unknown
    - `agentPayment` object, nullable, required
      - `network_id` string, required
      - `currency` 'usd', required
      - `how` string, required
      - `options` object[], required
        - `plan_key` 'starter', required
        - `interval` 'month' | 'year', required
        - `months` 1 | 12, required
        - `amount_cents` integer, required: What to mint the token for
        - `discount` AgentPaymentDiscount
          - `offer` 'switch_from_mailchimp', required
          - `amount_off_cents` integer, required
          - `full_price_cents` integer, required
          - `message` string, required
    - `switchOffer` object, nullable: The month free on a yearly plan this workspace gets for switching from Mailchimp; null when it doesn't.
      - `offer` 'switch_from_mailchimp', required
      - `source` 'signup_campaign' | 'mailchimp_connection', required
      - `appliesTo` 'year', required
      - `plans` object[], required
        - `planKey` 'starter', required
        - `currency` string, required
        - `yearlyPrice` integer, required: In the currency's smallest unit.
        - `firstYearPrice` integer, required: In the currency's smallest unit.
      - `message` string, required

## Other responses

- `default`: Request failed.

---

[API](https://skmtc.dev/bangermail/apis/banger-api.md) · [All operations](https://skmtc.dev/bangermail/apis/banger-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bangermail/apis/banger-api/revisions/a149909267f9?raw)
