Issue Description
I’m encountering a RecurringApplicationCharge::InvalidTransitionError
when trying to cancel a Shopify app subscription programmatically. This error occurs when calling the appSubscriptionCancel
GraphQL mutation.
Error Details
Subscription cancellation failed: RecurringApplicationCharge::InvalidTransitionError
Full Error Stack:
Error canceling subscription: Error: Subscription cancellation failed: RecurringApplicationCharge::InvalidTransitionError
at cancelSubscription (file:///app/build/server/assets/server-build-D7Gew7pK.js:5120:13)
Code Implementation
I’m using the following GraphQL mutation to cancel subscriptions:
mutation AppSubscriptionCancel($id: ID!, $prorate: Boolean) {
appSubscriptionCancel(id: $id, prorate: $prorate) {
userErrors {
field
message
}
appSubscription {
id
status
}
}
}
Variables:
id
: The subscription ID (e.g., “gid://shopify/AppSubscription/123456789”)prorate
: Boolean (true/false)
Subscription Structure
The subscription being canceled has:
- Recurring pricing: $19.99/month (EVERY_30_DAYS)
- Usage pricing: 10% of recovered cart value (capped at $100)
- Trial period: 3 days
- Status: ACTIVE (before cancellation attempt)
Questions for the Community
-
What causes this InvalidTransitionError?
- Is it related to the subscription’s current state?
- Are there specific conditions that prevent cancellation?
-
Subscription State Validation
- Should I check the subscription status before attempting cancellation?
- What are the valid states for cancellation?
-
Error Handling Best Practices
- How should I handle this specific error in production?
- Should I implement retry logic or show a specific user message?
Environment
- Platform: Shopify App (Node.js/Remix)
- API Version: 2024-01
- Authentication: Admin API access token
- Subscription Type: Recurring + Usage-based pricing