Zid Docs
Apps
ThemesPayments
Apps
ThemesPayments
Help Center
Telegram Community
  1. Plans & billing
  • πŸ—‚οΈ Overview
  • πŸš€ Start Here
  • Responses
  • Rate Limiting
  • Embedded Apps
  • StoreFront Events
  • Zid MUI
  • Zid SDKs
  • Our custom MCP server
  • Zid AI Agent Skill
  • Build an app
    • Create your First App
    • Justifying your scopes
    • Test your app before you submit
    • Submitting your app for review
    • Plans & billing
      • Plans and pricing
      • Creating a plan
      • Usage-based plans
      • Private plans
      • Subscription and app events
      • Changing a plan
  • Authorization
    • Authorization
    • Public Apps OAuth Requirements
    • OAuth Errors & Troubleshooting
    • Zid Bridge Tool
  • Merchant APIs
    • Account
      • Me
        • Me
      • Store
        • Store
        • Branding
        • Localization
        • Social
        • Operations
        • Business
        • Upload Logo Image
        • Delete Logo Image
        • Upload Icon Image
        • Delete Icon Image
        • Upload Cover Image
        • Delete Cover Image
    • Orders
      • Order Tags
        • List Order Tags
        • Create Order Tag
      • Validate Order Request
      • Create Order
      • Change Order Status
      • Add Order Comment
      • View Order
      • List Orders
      • List Custom Order Statuses
      • List Order Credit Notes
      • Get Orders Highlights
      • Order Fulfillment Inventories
      • Bulk Create/Update Custom Order Statuses
    • Reverse Orders
      • Create Reverse Orders
      • Create Reverse Orders Waybill
      • Add Reverse Order Reasons
      • List Reverse Reasons
      • Calculate Reverse Totals
      • Create refund for reverse order
      • Upload bank transfer receipt
      • Update return products
      • Order Details – View for Return
    • Abandoned Carts
      • List Carts
      • View Cart
      • Validate Abandoned Cart Messages
      • Send Abandoned Cart Notification Manually
    • Products
      • Managing Products
        • Create Product Types
        • Create Product
        • List Products
        • View Product
        • List Product Settings
        • Update Product
        • Bulk Update Products
        • Delete Product
      • Digital Vouchers
        • List Vouchers
        • Order Vouchers
        • Create Voucher
        • Import Vouchers
        • Export Vouchers
        • Update Voucher
        • Remove Voucher
      • Product Categories
        • List Categories
        • View Category
        • Create Category
        • Create Subcategory
        • Update Category
        • Assign Product to Category
        • Bulk Assign Products to Category
        • Publish Category
        • Detach Category from All Products
        • Remove Product from Category
        • Set Categories Nesting
        • Delete Category Cover Image
        • Upload Category Cover Image
        • Delete Category
        • Delete Category Image
        • Upload Category Image
        • Update Category
      • Product Brands
        • List Brands
        • Single Brand
      • Product Badge
        • List Badges
      • Product Attributes
        • List Attributes
        • View Attribute
        • Create Attribute
        • Update Attribute
        • Delete Attribute
      • Product Attribute Presets
        • List Presets
        • Create Preset
        • Update Preset
        • Delete Preset
      • Product Variants
        • Create Variants
        • Create Custom Option
        • Update Custom Option
        • Delete Custom Option Field
        • Create Custom Input Field
        • Update Custom Input Field
        • Delete Custom Input Field
      • Product Sorting
        • Set Manual Product Order
        • Reset Manual Product Order
      • Product Images
        • List Images
        • Upload Image
        • Update Image Order
        • Delete Image
      • Product Availability Notifications
        • Notification Stats
        • Noticiation Settings
        • List Notifications
        • Create Notification
        • Update Settings
        • Send Notification Email
        • Export Notifications
      • Product Export
        • Email All Products to Store Owner
        • Import Products via CSV or xlsx File
      • Product Stock
        • Retrieve Product Stock
        • List Product Stock Records
        • Create Product Stock
        • Update Product Stock
        • Bulk Update Product Stock Records
      • Product Questions & Answers
        • Retrieve Product Question
        • Retrieve Product Answer
        • List Product Questions
        • List Answers for Question
        • Create Product Question
        • Create Product Answer
        • Update Product Question
        • Update Product Answer
        • Delete Product Question
        • Delete Product Answer
        • List Store Product Questions
      • Product Reviews
        • List Reviews
        • Count Reviews
      • Digital Products
        • Create Downloadable Product
        • Generate Upload URL
        • Upload File to S3
        • Create Product Downloadable
        • Get Product Downloadables
        • Delete Product Downloadable
        • List Store Downloadables
        • Create Store Downloadable
        • Delete Store Downloadable
    • Inventories
      • Create Location
      • Update Location
      • Update Product Stock for Location
      • List Locations
      • View Location
    • Shipping
      • List Store Shipping Methods
    • Marketing
      • Coupons
        • List Coupons
        • View Coupon
        • Create Coupon
        • Generate Bulk Coupons
        • Duplicate Coupon
        • Duplicate Bulk Coupons
        • Update Coupon Note
        • Update Coupon
        • Update Bulk Coupons
        • Update Coupon Status
        • Update Bulk Coupons Status
        • Delete Coupon
        • Delete Bulk Coupons
      • Bundle Offers
        • List Bundle Offers
        • View Bundle Offer
        • Create Bundle Offer
        • Update Bundle Offer
        • Delete Bundle Offer
        • Bulk Delete Bundle Offers
      • Loyalty Program
        • Loyalty Program Status
        • Loyalty Program Details
        • Loyalty Program Info
        • Customer Loyalty Summary
        • Customer Points History
        • Activate Loyalty Program
        • Set Points Expiration Rules
        • Update Cashback Rule
        • Create Points Redemption Method
        • Update Points Redemption Method
        • Delete Points Redemption Method
        • Adjust Customer Points
        • Update Redemption Method Status
        • Loyalty Program Analytics
        • Loyalty Program Settings
      • Customer Wallets
        • Cashback Rules
          • List Cashback Rules
          • Create Cashback Rule
          • Retrieve Cashback Rule
          • Update Cashback Rule
          • Delete Cashback Rule
        • Wallet Analytics
          • Get Wallet Analytics
          • Get Wallet Analytics by Rule
        • Manager Customer Wallet
          • List Customer Wallets
          • Bulk Credit Customer Wallets
          • Bulk Debit Customer Wallets
          • Export Customer Wallets
          • Get Customer Wallet Balance
          • Credit Customer Wallet
          • Debit Customer Wallet
          • Customer Pending Cashbacks
          • Customer Wallet Transactions
    • Customers
      • Customer Tags
        • List Customer Tags
        • Add Customer Tag
        • Ω’Update Customer Tag
        • Delete Customer Tag
      • Customer Portal Tickets
        • List Customer Portal Tickets
        • Customer Portal Ticket Detail
      • List Customers
      • View Customer
      • Primary Customer List
      • FInd Customer By Phone Number
      • Customer Profile
      • Add Customer
      • Update Customer
      • Delete Customer
      • Add Bulk Customers
      • Import Customers
    • Store Settings
      • πŸ“„ User Roles and Permissions
      • Retrieve Store Manager Profile
      • Retrieve VAT Settings
      • List Payment Methods
      • List Store Operating Countries
      • OneSignal Store Settings
      • Create or Update OneSignal Store Settings
      • Get Payment Options
    • Countries and Cities
      • List Countries
      • List Cities for Country
    • Blogs
      • Settings
        • Create
        • List
      • Categories
        • Create
        • List
        • Bulk Activate
        • Bulk Deactivate
        • Bulk Delete
        • Retrieve
        • Destroy
        • Partial Update
        • Bulk Add To Posts
        • Bulk Remove From Posts
        • Bulk Delete Blog Categories
      • Posts
        • Media
          • List
          • Create
          • Destroy
        • Create
        • List
        • Retrieve
        • Partial Update
        • Destroy
        • Archive
        • Publish
        • Bulk Archive
        • Bulk Publish
        • Bulk Delete
        • Export Posts
        • Import Template
        • Import Posts
      • Tags
        • Create
        • List
        • Retrieve
        • Partial Update
        • Destroy
        • Bulk Delete Tags
        • Bulk Add To Posts
        • Bulk Remove From Posts
      • Storefront
        • Posts
          • List
          • Retrieve
        • Categories
          • List
          • Retrieve
        • Tags
          • List
  • Webhooks
    • Overview
    • Webhook Health Tracking
    • Events
      • Order
      • Product
      • Abandoned Cart
      • Customer
      • Product Category
    • APIs
      • Health Summary
      • Broken Webhooks
      • Recover Broken Webhooks
      • List Webhooks
      • Create Webhook
      • Delete Webhook
      • Delete Webhook By subscriber
  • App Management
    • Events
    • APIs
      • Subscription Details
      • Update Usage-Based Charges
  1. Plans & billing

Changing a plan

When a merchant on one of your plans buys a different one, Zid has to decide what happens to the time they already paid for. This page explains that decision, so you can answer a merchant who thinks they were charged twice.
This page applies to OAuth apps published in Zid App Market.
Private apps are not sold through the market and have no subscriptions. Usage-based subscriptions work differently β€” they have no end date and nothing to carry over. See Usage-based plans.

The one rule#

Zid never prorates a plan change. The merchant always pays the full listed price of the plan they are moving to. Nothing is discounted for the days they have left.
But the value of those remaining days is never thrown away. It goes one of two ways:
What happens to the unused value
CreditedIt is deducted from the new plan's invoice, so the merchant pays less at checkout
FrozenIt is held, and the old plan comes back automatically after the new one ends
Which one you get depends on a single condition: whether the plan the merchant is moving to has a live offer.

A merchant holds one subscription per app#

A merchant can only be on one of your plans at a time. So a plan change is always a replacement, never an addition. There is no way for a merchant to hold two of your plans at once, and no way to buy a top-up on top of an existing plan. See Plans and pricing.

The four outcomes#

These are conditions, not steps. The merchant's situation selects exactly one.
OutcomeWhen it appliesThe old subscriptionIts unused valueCredit at checkout
Credit noteThe target plan has no live offer. This is the ordinary upgrade, and the defaultReplacedBecomes credit on the new invoiceDeducted
Freeze and start offerA different plan, and that plan has a live offer this merchant has not used yetSet to frozenHeld, then resumes after the new plan endsNothing
Extend existingThe merchant buys the same plan again, while an offer or a frozen plan is in playKept as-isStays on the same subscription; the end date moves outNothing
Upgrade mid-offerThe merchant is already mid-offer and moves up to a more expensive plan that has no offer of its ownReplacedBecomes credit β€” including anything frozen, which is then droppedDeducted

Why an offer freezes instead of crediting#

An offer already contains the discount. If Zid also credited the old subscription's remaining value, the same period would be discounted twice β€” once by the offer and once by the credit. Freezing keeps the merchant's paid time intact without discounting it twice, and keeps your revenue share correct on the offer purchase.

Freeze and resume, step by step#

This is the outcome partners get asked about, because the merchant sees the full price with no deduction.
Say a merchant is on your annual plan with 294 days left, and you are running a "subscribe for a year, get a year free" offer on a higher plan.
1.
The merchant buys the higher plan. They are charged its full price, with no credit line.
2.
They are granted the plan's own period plus the offer's free period β€” so a one-year plan with a one-year offer gives them 730 days, not 365.
3.
Their old subscription is set to frozen. Its remaining 294 days and its unused value are stored and stop counting down.
4.
Automatic renewal is paused, so the frozen plan cannot be billed while it is paused.
5.
When the new plan's 730 days end, Zid automatically creates a fresh subscription on the old plan for the remaining 294 days.
6.
Automatic renewal is restored, using whatever setting the merchant originally had.
The merchant ends up with every day they paid for. Nothing is lost at any point.

What the merchant sees#

Your app's plans page in the merchant's Zid dashboard shows the frozen plan next to the active one β€” its name, the days remaining, the price they paid, and the date it will resume.
Send a confused merchant here first. It usually answers the question without a support ticket.

What your app receives#

You get two events, and they can be years apart.
EventWhenplan_nameold_plan_name
app.market.subscription.upgradeAt purchaseThe new plan the merchant boughtThe plan that is now frozen
app.market.subscription.renewWhen the frozen plan resumesThe old planThe plan that just ended
Your app must accept a renew that moves a merchant down a tier.
When a frozen plan resumes, renew arrives carrying a cheaper plan with a shorter remaining period, long after the original purchase. This is not an error, a cancellation, or a downgrade request.
If your app assumes a plan change only ever moves upward, it will either ignore this event or keep the merchant on the higher plan. Your entitlements and Zid's billing records then disagree, and the merchant keeps access they are no longer paying for.
A subscription's status can be frozen. Treat it as "paused, not cancelled" β€” the merchant has no access on that plan right now, but they will get it back. See Subscription and app events.

Plan changes that are blocked#

Not every plan change is allowed. These are rejected at checkout, before payment.
A downgrade while an offer is in play. If the merchant has a frozen plan behind their subscription, or their subscription came from an offer, they can only move to a plan that is both longer or equal in duration and higher in price. Moving sideways or down is refused, because it would replace the subscription and leave the frozen plan with nothing to return to.
More than four years of committed time. Zid adds up the days left on the active subscription, the days held in any frozen plan, and the days the new purchase would add. If the total is over 1,460 days, the purchase is refused. A merchant already holding a two-year offer plan plus a frozen year has limited room left, so a second "buy one, get one" purchase on your app will be blocked.
An unpaid usage charge. A merchant with an overdue or defaulted usage-based charge cannot change plans until it is settled.

Refunds do not undo a plan change#

A refund is not a way to reverse an upgrade, and it is not a way to return the unused part of a subscription.
There is no partial refund. Zid cannot refund only the days a merchant has not used. A refund applies to a whole purchase.
A refund removes your app. It marks the subscription refunded, uninstalls your app from that store and revokes its tokens.
A refund destroys frozen time permanently. Anything held behind the subscription is discarded and will never resume.
Offer purchases stop being refundable after 24 hours.
If a merchant asks for the unused value back as money, the answer is no. Explain the freeze instead.

Common questions#

The merchant had 10 months left and was charged full price. Where did the money go?#

Nowhere. Check your app's plans page in their dashboard for a frozen plan. If it is listed with a resume date, the remaining time is being held and will come back automatically.

Can I make the merchant pay only the difference?#

No. There is no top-up, balance adjustment or difference-only purchase. Every plan change is a full purchase of the target plan. A private plan does not help here either β€” it is still a plan, and for a merchant mid-offer it is only allowed if it costs more than the plan they are on. See Private plans.

Can the unused value go to the merchant's Zid wallet?#

Only if they originally paid from the wallet. A card payment is refunded to the card. You cannot choose where a refund goes.

Does a merchant keep frozen time if they uninstall my app?#

Yes. Uninstalling does not discard it. The frozen plan still resumes, so the entitlement is there if the merchant reinstalls. Only a refund destroys it.

Can a merchant use the same offer twice?#

No. An offer can be redeemed once per store. If the merchant buys the same plan again later, it is treated as an ordinary renewal and the free period is not granted a second time.

Will the merchant be billed again when the frozen plan resumes?#

If they had automatic renewal switched on, yes β€” at the end of the resumed period, at that plan's price then. Renewal is restored to the setting they originally had. Tell merchants this up front; it is the part that surprises them.
Modified atΒ 2026-10-28 06:28:55
Previous
Subscription and app events
Next
Authorization
Built with