Submarine lets you attach Shopify discounts — both automatic discounts and discount codes — as well as individual manual discounts to a subscription.
💡 Discounts apply at the subscription level, not the subscription-order level. If an order is skipped or fails payment, the discount automatically carries over to the next order.
ℹ️ A discount code that is valid for ongoing subscription use at checkout is shown on the subscription when it's created. Once the code has been used or becomes invalid, the Submarine UI shows it as inactive.
Discount types
The table below shows which discount types can be attached to a subscription. Supported types are attached automatically when applied at checkout, and can also be added later via the Submarine UI or API.
Discount type | Code | Automatic | Manual |
Amount off order (fixed or %) | ✅ | ✅ | ✅ |
Free shipping | ✅ | ✅ | ✅ |
Amount off products | ❌ | ❌ | ❌ |
Buy X get Y | ❌ | ❌ | ❌ |
Amount off order — both fixed-price and percentage-based amount-off-order discounts are supported. We endeavour to validate or invalidate a code if it changes after being applied — for example, if the code is deleted, its restrictions are increased, or its usage limit is decreased.
Free shipping — both discount-code and automatic application types are supported. If the code changes or its limit is exhausted on Shopify, we re-check its validity and set the discount on the subscription to Active or Inactive accordingly.
⚠️ Not yet supported: Amount off products and Buy X get Y discounts can't be added to a subscription yet — they're on our roadmap. If a code of this type is set at checkout, Submarine removes it when creating the subscription.
Adding & removing discounts
Discounts can be added to a subscription via the checkout order, the Submarine UI, or the API. You can add an Automatic, Code, or Manual discount.
Adding a discount
- Automatic — search the discount's title in the discount modal. We match on the exact title and don't show partial matches.
- Code — search the discount code in the discount modal. We match on the exact code and don't show partial matches.
- Manual — open the Discounts modal, choose Manual, then select the type (Amount off order or Free shipping). Give it a title that's unique across the subscription's discounts, set the fixed $ amount or percentage, and choose how many recurrences it should apply for.
Removing a discount
You can remove a discount from a subscription via the Submarine UI or the API. In the UI, hover over the discount and click Remove — this sets the discount to inactive.
How discounts behave on subscriptions
Subscription-level behaviour
Discounts apply at the subscription level. Once added, a discount applies to the next upcoming order; if that order is skipped or the subscription is paused, the discount stays active until it's used.
ℹ️ A discount can't be attached to a single future subscription-order instance at this stage.
Editing a discount in Shopify
When you update a discount in Shopify that's already applied to subscriptions, the change takes effect on the next subscription order. Example: reducing a 15% amount-off-order discount to 10% updates the ongoing subscription discount.
End dates & deactivation
A discount code's end date and deactivation only stop customers from adding it to a new checkout or subscription. The code remains valid after that date if it's already applied to a subscription.
Subscription status changes
Moving a subscription between statuses (Active, Paused, Cancelled) doesn't affect its discounts. If a customer pauses or cancels and later resumes, the discount still applies — unless it has since been deleted or become invalid.
Bulk-changing discounts
To invalidate a discount code that's already applied to subscriptions, we recommend deleting it or lowering its usage limit to 1 so it can't apply to future orders. For other bulk actions, reach out to help@getsubmarine.com.
Choosing a currency for manual discounts
When you add a fixed $ amount manual discount in Submarine, you can now choose whether that amount is applied in the Store or Presentment currency. This option is available from both the Submarine UI and the API.
In the Submarine UI the currency selector sits to the left of the value in the Add manual discount modal. The Store currency is always the default. The Presentment option only appears when the order came through checkout in a different currency to your store currency — for example, on the NZD subscription below the store currency is AUD, so the selector offers both AUD (Store) and NZD (Presentment).
📷 Screenshot — insert here: drop in the "Add manual discount" screenshot for the NZD subscription, showing the AUD / NZD currency selector in the Value row.
Setting the currency via the API
When creating a manual discount through the API, set the currencyType field inside customerGets.value. Use PRESENTMENT for the presentment currency, or SHOP for the store currency. Note that the API value for the Store option is SHOP.
Presentment currency request:
Store (shop) currency request:
Limitations
- Amount off products and Buy X get Y discount types aren't supported yet.
- Discount codes aren't exposed in our exports yet — coming soon.
- Discount changes don't yet trigger a Subscription updated Flow trigger — coming soon.
Customer portal support
Support for adding discounts via our customer-facing portal is coming soon, please reach out to help@getsubmarine.com if you are interested in activating this feature on your portal.
Loyalty program discount code generations
Support for applying discounts generated from loyalty apps can be done on a per-merchant basis and will depend on the loyalty program and the behaviour you wish to implement. Please reach out to help@getsubmarine.com if you are interested implementing this.
API documentation
Adding, removing, and validating discounts can all be done via our API. To view these details please use our graphql documentation. The subscriptionDiscount* mutations will be of the most interest.