{
“success”: true,
“found”: true,
“contractId”: “gid://shopify/SubscriptionContract/22985474132”,
“shop”: “mealapp-test.myshopify.com”,
“status”: “FAILURE”,
“sourceTopic”: “subscription_billing_attempts/failure”,
“billingAttemptId”: “gid://shopify/SubscriptionBillingAttempt/83749077076”,
“errorCode”: “payment_provider_is_not_enabled”,
“errorMessage”: “Payment provider is not enabled on the shop”
}
Store/payment context
Development store
Bogus Gateway enabled in Settings → Payments
Contracts show customer payment method on contract details
Please confirm whether this store/payment setup supports subscription renewal billing attempts, and what exact payment-provider configuration is required to avoid payment_provider_is_not_enabled for subscriptionBillingCycleBulkCharge / recurring subscription charges.
The Bogus Gateway is the catch here. It supports one-time checkout payments but doesn’t support subscription recurring billing. Shopify’s subscription billing engine needs a payment provider that has been explicitly enabled for recurring charges, and the Bogus Gateway isn’t one of them, regardless of what shows in Settings → Payments.
For testing subscription renewal billing on a dev store you have two options:
Option 1: Use a real payment provider in test mode
Stripe, Braintree, and a handful of others support recurring billing and have sandbox/test modes. Add one of these to your dev store instead of the Bogus Gateway, run through the checkout with a test card, and the resulting payment instrument will be eligible for recurring charges. Billing attempts should then go through.
Option 2: Use Shopify Payments in test mode (if available on your store)
If your dev store is on a plan that supports Shopify Payments, enable it and turn on test mode (Settings → Payments → Manage → Test mode). Shopify Payments does support subscription billing. Use the published test card numbers to create contracts.
A few things worth confirming on the contract side:
The SubscriptionContract must have a ACTIVE status, and the CustomerPaymentMethod attached to it must itself be valid (not expired or revoked). Even with a capable gateway, a stale payment method will produce a different error, but it’s worth ruling out.
When you call subscriptionBillingCycleBulkCharge, the returned Job ID confirms the job was accepted, not that the charges succeeded. You’re already polling the billing attempt status correctly, so that part looks fine.
The payment_provider_is_not_enabled error is specifically Shopify telling you the gateway attached to the contract’s payment method doesn’t have recurring billing enabled at the provider level. Swapping to a recurring-capable gateway in test mode should clear it.