Solving the 'Payment Provider Not Enabled' Error for Shopify Subscription Testing

Hey everyone! As a Shopify migration expert, I spend a lot of time diving into the nitty-gritty of what makes stores tick, especially when it comes to new features like subscriptions. And let me tell you, one common head-scratcher that popped up in the community recently is around testing subscription billing on development stores. It's a classic case of 'it should work, but it just doesn't,' and it can be super frustrating.

Our friend 1256 hit this exact wall, asking for help on a dev store called mealapp-test.myshopify.com. They were diligently setting up subscription recurring billing, using Shopify's bulk charge API (subscriptionBillingCycleBulkCharge), and everything looked fine on the surface. The job ID was returned, indicating acceptance, but then – BAM! – billing attempts failed with a rather blunt error: errorCode: payment_provider_is_not_enabled and errorMessage: Payment provider is not enabled on the shop. The puzzling part? They had the Bogus Gateway enabled in their settings. So, what gives?

This is where the community really shines, and @software-clever swooped in with the definitive answer. Turns out, the Bogus Gateway, while fantastic for testing one-time checkouts and getting your order flow right, has a significant limitation: it doesn't support subscription recurring billing. Yep, you read that right. Even if it appears 'enabled' in your Settings → Payments, Shopify's sophisticated subscription billing engine needs a payment provider that's explicitly configured and capable of handling recurring charges at the provider level. The Bogus Gateway simply isn't built for that, and that's the core reason for the payment_provider_is_not_enabled error.

So, if you're like 1256 and trying to test those crucial recurring charges, you've got a couple of solid options to get past this hurdle. It's all about tricking Shopify into thinking you've got a 'real' recurring-capable gateway, even if you're just using test data.

Option 1: Embrace a Real Payment Provider in Test Mode

This is often the most straightforward path. Many popular payment gateways, like Stripe and Braintree, are excellent for recurring billing and, crucially, offer robust sandbox or test modes. Here’s how you can set it up:

  1. Choose Your Gateway: Pick a payment provider that you know supports recurring billing. Stripe and Braintree are common go-tos.
  2. Add to Your Dev Store: Go to your Shopify admin, navigate to Settings > Payments, and add one of these real payment providers.
  3. Enable Test Mode: Make sure you activate their test or sandbox mode within the Shopify settings for that provider. This is critical so you don't accidentally process real payments.
  4. Run a Test Checkout: Use a test card provided by that gateway (e.g., Stripe's test card numbers) to complete a subscription checkout on your dev store. This will create a valid payment instrument linked to a recurring-capable gateway.
  5. Test Billing: Now, when you trigger your subscriptionBillingCycleBulkCharge, the resulting payment instrument should be eligible for recurring charges, and your billing attempts should go through successfully.

Option 2: Leverage Shopify Payments in Test Mode

If your development store is on a plan that supports Shopify Payments (many do!), this is another excellent and often integrated option. Shopify Payments, naturally, fully supports subscription billing. Here's how to configure it:

  1. Enable Shopify Payments: If not already enabled, go to Settings > Payments in your Shopify admin and activate Shopify Payments.
  2. Turn on Test Mode: Click 'Manage' next to Shopify Payments, and you'll find the option to 'Enable test mode.' Make sure this is checked.
  3. Use Shopify's Test Cards: Shopify provides specific test card numbers for various scenarios (successful, failed, etc.). Use these published test card numbers to create your subscription contracts.
  4. Initiate Billing: With Shopify Payments in test mode and contracts created with its test cards, your recurring billing attempts should now proceed without the payment_provider_is_not_enabled error.

A couple of other quick checks, as @software-clever reminded us, are always good practice. While they might lead to different error messages, it's worth confirming that your SubscriptionContract has an ACTIVE status and that the CustomerPaymentMethod attached to it is valid (not expired or revoked). And remember, getting a Job ID back from subscriptionBillingCycleBulkCharge simply means the job was accepted, not that the charges succeeded – you're doing great by polling for the actual billing attempt status!

{
"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"
}

So, there you have it! The next time you're deep in the trenches of developing or migrating a store with subscriptions and you hit that pesky payment_provider_is_not_enabled error, remember that the Bogus Gateway is likely the culprit for recurring charges. Switch over to a real payment provider like Stripe or Braintree in test mode, or enable Shopify Payments' test mode, and you'll be well on your way to smooth, successful subscription billing tests. It’s a common pitfall, but thankfully, the community has our backs with clear, actionable solutions. Happy testing!

Share:

Use cases

Explore use cases

Agencies, store owners, enterprise — find the migration path that fits.

Explore use cases