Skip to content

The plan object

A plan is one thing you sell — Pro, Team — and the prices it is billed as: monthly and annual, one per currency, and the prices of the same plan in every billing system you have used. Metrics can be broken down and filtered by plan. A plan is created with the first price that names it, or ahead of time, and plans can be renamed and merged without touching the subscriptions on them.

Attributes

  • idstring (UUID)

    The plan’s Summerbase id. Anywhere a plan is addressed, one of its identities works too.

  • objectstring

    The object’s type, always plan.

    Always plan

  • archivedboolean

    Whether the plan has stopped being offered — the archived property, resolved to the highest-priority source that says one; Stripe says it of a product it has archived. Write properties.archived to change it. Existing subscriptions keep the plan: what somebody paid for last year does not stop being true when you withdraw it.

  • created_attimestamp

    When the plan was first seen.

  • identitiesarray of strings

    What each source calls this plan, as source:id. Any entry addresses it — stripe:cus_123.

  • namestring

    What the plan is called in a filter, a legend or a breakdown — the name property, resolved to the highest-priority source that has one. Write properties.name to change it. Null when no source names it.

  • price_countinteger

    How many prices are on this plan.

  • pricesarray of objects

    The prices on this plan, in every source. Expandable.

    Show 17 child attributes
    • idstring (UUID)

      The price’s Summerbase id. Anywhere a price is addressed, one of its identities works too.

    • objectstring

      The object’s type, always price.

      Always price

    • archivedboolean

      Whether the price has stopped being offered. Existing subscriptions keep it — what somebody paid for last year does not stop being true when you withdraw the price.

    • created_attimestamp

      When the price was first seen.

    • currency_codestring

      The currency it is listed in, by its ISO 4217 code.

    • identitiesarray of strings

      What each source calls this price, as source:id. Any entry addresses it — stripe:cus_123.

    • intervalenum

      The unit it bills in. None for a price charged once.

      One of day, week, month, year

    • interval_countinteger

      How many intervals between charges.

    • namestring

      What the price is called in the source it lives in, when it has a name of its own there — a Stripe price’s nickname. Most have none, and are told apart by their terms.

    • owner_sourceobject

      The source the price came from. Expandable.

      Show 18 child attributes
      • idstring (UUID)

        The source’s unique identifier. Records are identified by its slug.

      • objectstring

        The object’s type, always source.

        Always source

      • connected_attimestamp

        When a provider source was given its credential, or empty: a provider source that has not been connected yet or has been disconnected, and every source that is not a provider’s.

      • created_attimestamp

        When the source was added.

      • import_failed_attimestamp

        When the last import gave up, or empty when none has since the last one succeeded. The source’s log says why.

      • import_progressdecimal string

        How far the running import has got, from 0 to 1, or empty while it does not know yet.

      • import_started_attimestamp

        When the import now running began, or empty when none is. Every metric that reads this source’s records is incomplete until it ends.

      • import_stepstring

        What the running import is doing, in a sentence: Importing customers, 1,240 of 8,100.

      • imported_attimestamp

        When the last import finished, or empty when none has.

      • namestring

        What the source is called, for people reading a screen.

      • priorityinteger

        Where this source sits when resolving name and email. Lower wins, and the project’s own source starts at the top so a manual correction outranks a provider sync. It orders nothing else — every other property is namespaced by source and never arbitrated.

      • project_idstring (UUID)

        The project the source belongs to.

      • provider_account_idstring

        The provider’s own id for the account the source is connected to: acct_… for Stripe. Kept through a disconnect, so that connecting again is checked against it.

      • provider_codeenum

        The code of the system the source pulls from. custom is a source you write to yourself, and the only one that accepts writes; stripe is connected with connect_stripe and fetches for itself.

        One of custom, stripe, summerbase

      • sandboxboolean

        Whether the connection is to the provider’s test mode rather than a live account; empty while nothing is connected.

      • slugstring

        How this source’s records are identified — the stripe in stripe:cus_123. Lowercase letters, digits, hyphens and underscores; unique within the project and fixed once the source exists, because integrations hard-code it. A reference shaped like an id is read as one, so a slug may not look like a UUID.

      • webhook_installed_attimestamp

        When the provider’s webhook was installed for this source — by the connection, or by hand and registered with register_stripe_webhook — or empty: nothing is connected, or the source is connected without a webhook and its changes arrive with the hourly reconcile.

      • webhook_urlstring

        Where the provider posts this source’s events: the address of the endpoint a connection installs, and of one to install by hand. Empty for a source whose provider posts no webhooks.

    • owner_source_idstring (UUID)

      The source the price came from.

    • planobject

      The plan the price is on. Expandable.

      Show 10 child attributes
      • idstring (UUID)

        The plan’s Summerbase id. Anywhere a plan is addressed, one of its identities works too.

      • objectstring

        The object’s type, always plan.

        Always plan

      • archivedboolean

        Whether the plan has stopped being offered — the archived property, resolved to the highest-priority source that says one; Stripe says it of a product it has archived. Write properties.archived to change it. Existing subscriptions keep the plan: what somebody paid for last year does not stop being true when you withdraw it.

      • created_attimestamp

        When the plan was first seen.

      • identitiesarray of strings

        What each source calls this plan, as source:id. Any entry addresses it — stripe:cus_123.

      • namestring

        What the plan is called in a filter, a legend or a breakdown — the name property, resolved to the highest-priority source that has one. Write properties.name to change it. Null when no source names it.

      • price_countinteger

        How many prices are on this plan.

      • pricesarray of objects

        The prices on this plan, in every source. Expandable.

      • propertiesobject

        Your source’s properties on this plan, as they stand now. What you write here is what you read back — another source’s values never appear in it and can never be overwritten through it. properties_by_source has everyone’s.

      • properties_by_sourceobject

        Every source’s properties on this plan, keyed by source slug — including your own. Read-only: a write only ever reaches the source it is attributed to.

    • plan_idstring (UUID)

      The plan the price is on.

    • pricing_modelenum

      How an item’s unit amount is arrived at on this price.

      One of fixed, tiered, metered

    • propertiesobject

      Your source’s properties on this price, as they stand now. What you write here is what you read back — another source’s values never appear in it and can never be overwritten through it. properties_by_source has everyone’s.

    • properties_by_sourceobject

      Every source’s properties on this price, keyed by source slug — including your own. Read-only: a write only ever reaches the source it is attributed to.

    • unit_amountdecimal string

      What one unit is listed at per interval: for a metered price, one unit of usage. None for a tiered one, whose units cost what their tier says. Excludes tax.

  • propertiesobject

    Your source’s properties on this plan, as they stand now. What you write here is what you read back — another source’s values never appear in it and can never be overwritten through it. properties_by_source has everyone’s.

  • properties_by_sourceobject

    Every source’s properties on this plan, keyed by source slug — including your own. Read-only: a write only ever reaches the source it is attributed to.

Example

{
"archived": false,
"created_at": "2025-09-08T14:12:30Z",
"id": "0198f1a4-1d2e-7a40-9b31-5c6d7e8f9a0b",
"identities": [
"stripe:prod_QhR2sT4uV6wX8y"
],
"name": "Growth",
"object": "plan",
"price_count": 2,
"properties": {
"tier": "mid"
},
"properties_by_source": {
"backend": {
"tier": "mid"
}
}
}

Endpoints