Immediately triggers a billing attempt for a subscription contract, bypassing the normal scheduled billing time. This endpoint processes the billing asynchronously via Shopify’s Subscription Billing API, creating an order and charging the customer’s payment method.
How Billing Retry Works:
enableImmediatePlaceOrder permission (premium feature)subscriptionBillingAttemptCreate mutation to ShopifySUBSCRIPTION_BILLING_ATTEMPTS_SUCCESS or _FAILURE webhookWhen to Use This Endpoint:
Important Limitations & Restrictions:
enableImmediatePlaceOrder permission
QUEUED, SCHEDULED, or FAILEDSUCCESS (order already created)Asynchronous Processing Details: This endpoint returns immediately (200 OK) before billing completes. Actual billing happens in background:
/subscription-billing-attempts endpointChecking Billing Result (Recommended Flow):
Step 1: Call this endpoint to trigger billing
PUT /subscription-billing-attempts/attempt-billing/123456
Response: 200 OK (billing queued)
Step 2: Wait 10-15 seconds for processing
Step 3: Poll billing attempt status
GET /subscription-billing-attempts?id=123456
Check 'status' field:
- SUCCESS: Order created, payment captured
- FAILED: Payment declined or error occurred
- PROCESSING: Still in progress, poll again
Step 4: (Alternative) Use webhooks for real-time updates
Configure webhook: SUBSCRIPTION_BILLING_ATTEMPTS_SUCCESS
Receive notification when billing completes
Common Error Scenarios:
enableImmediatePlaceOrder featurePayment Failure Reasons (Check After Async Processing):
After billing processes, if status becomes FAILED, common reasons include:
Integration Best Practices:
/shop-info or similar to verify feature accessExample Use Case - Customer Portal:
Scenario: Customer's card declined, they updated payment method
1. Customer sees "Payment Failed" in portal
2. Customer clicks "Update Payment Method" → adds new card
3. Customer clicks "Retry Payment Now" button
4. Frontend calls: PUT /subscription-billing-attempts/attempt-billing/789
5. Display: "Processing payment..." spinner
6. Poll endpoint every 5 seconds for status update
7. On SUCCESS: Show "Payment successful! Order #12345 created."
8. On FAILED: Show decline reason + retry instructions
Difference from Skip/Reschedule:
Authentication: Requires API key authentication via X-API-Key header or api_key parameter. Additionally requires merchant account to have enableImmediatePlaceOrder permission (premium feature).
curl --request PUT \
--url https://membership-admin.appstle.com/api/external/v2/subscription-billing-attempts/attempt-billing/{id}Documentation Index
Fetch the complete documentation index at: https://developers.appstle.com/llms.txt
Use this file to discover all available pages before exploring further.
Billing attempt ID to retry
API Key (Deprecated - Use Header X-API-Key instead)
Billing attempt successfully queued for asynchronous processing. This does NOT mean payment succeeded - billing happens in background. Poll the billing attempt status or use webhooks to check actual result.
curl --request PUT \
--url https://membership-admin.appstle.com/api/external/v2/subscription-billing-attempts/attempt-billing/{id}