Set a specific billing cycle start date when using mutation subscriptionContractAtomicCreate

Topic summary

A developer is trying to set a specific billing cycle start date when creating subscription contracts using the subscriptionContractAtomicCreate GraphQL mutation.

Current Problem:

  • The nextBillingDate parameter in the mutation appears to have no effect on actual Shopify billing cycles
  • Unclear if this field is only for metadata purposes

Available Workaround:

  • The subscriptionBillingCycleScheduleEdit mutation can update individual billing cycles, but not the entire schedule
  • This approach is cumbersome for bulk imports of multiple contracts

Additional Context:

  • The native Shopify Subscription app supports this functionality
  • The feature is notably absent from Shopify’s Subscription Reference App
  • Documentation is described as inadequate for this use case

Status: The issue remains unresolved, with a second user confirming they encountered the same problem.

Summarized with AI on October 31. AI used: claude-sonnet-4-5-20250929.

How to set a specific start date for the billing cycle tied to the subscription contract when using subscriptionContractAtomicCreate? Based on the docs here https://shopify.dev/docs/api/admin-graphql/2025-01/mutations/subscriptionContractAtomicCreate we can set nextBillingDate which has no affect on the Shopify billy cycles. Is that just used for meta data not sure why its even in the input if not used to calculate the billing cycles.

Shopify documentation is not that good at all and I cant find anywhere to do that except the calls here https://shopify.dev/docs/api/admin-graphql/2025-01/mutations/subscriptionBillingCycleScheduleEdit which only updates a single billing cycle not the entire schedule itself. Seems very cumbersome especially when you are doing a bulk import for a few contracts at once.

Shopify Subscription app you are able to do this but they conveniently didn’t add it to the Subscription Reference App for a reason I’m not sure why.

1 Like

I ran into the same issue here. Have you got the solution yet?