APIs for managing Shopify delivery profiles, shipping rates, zones, and free shipping configuration for subscription memberships
- updateSubscriptionBillingAttempt
Customer Portal APIs (0.0.1)
Important Note:
The APIs in this document are for reference only and will not work directly in Swagger. To use these APIs, you need to call them from your shop.
The base URL for these APIs is your shop's domain. For example, if your shop domain is https://www.myshop.com/apps, then the full API endpoint will be based on this domain (e.g., https://www.myshop.com/apps/memberships/cp/api/**).
Please ensure the customer is logged in when calling the Customer Portal Proxy API. If the customer is not logged in, the API will return a 401 Unauthorized error.
Request
Skips the next scheduled billing/order for a membership contract. The membership remains active, but the next billing date is moved to the following cycle.
Key Features:
- Skip next billing without canceling membership
- Automatically reschedule to next billing cycle
- Works for both regular and prepaid memberships
- Activity logging for audit trail
How It Works:
- Validates billing attempt exists and belongs to shop
- Updates next billing date to skip current cycle
- Moves billing to the next scheduled interval
- Logs activity (customer portal vs merchant portal)
Customer Portal Restrictions:
- Cannot skip if membership is frozen until min cycles
- Validates contract ownership for security
Use Cases:
- Customer is traveling and wants to skip one delivery
- Customer has excess inventory and wants to pause one cycle
- Merchant wants to skip a billing due to out-of-stock items
- Skip billing for special circumstances (holidays, etc.)
Prepaid Handling:
- Set
isPrepaid=truefor prepaid memberships - Different validation logic for prepaid vs pay-as-you-go
Authentication: Requires authenticated shop user or customer portal token
- https://www.myshop.com/apps/memberships/cp/api/subscription-billing-attempts/skip-order/{id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
'https://www.myshop.com/apps/memberships/cp/api/subscription-billing-attempts/skip-order/123456?subscriptionContractId=789012&isPrepaid=false'Billing order successfully skipped
{ "id": 0, "shop": "string", "billingAttemptId": "string", "status": "SUCCESS", "billingDate": "2019-08-24T14:15:22Z", "contractId": 0, "attemptCount": 0, "attemptTime": "2019-08-24T14:15:22Z", "graphOrderId": "string", "orderId": 0, "orderAmount": 0.1, "orderName": "string", "retryingNeeded": true, "transactionFailedEmailSentStatus": "SENT", "upcomingOrderEmailSentStatus": "SENT", "applyUsageCharge": true, "recurringChargeId": 0, "transactionRate": 0.1, "usageChargeStatus": "SUCCESS", "transactionFailedSmsSentStatus": "SENT", "upcomingOrderSmsSentStatus": "SENT", "billingAttemptResponseMessage": "string", "progressAttemptCount": 0, "orderNote": "string", "variantList": [ { … } ], "orderAmountUSD": 0.1, "securityChallengeSentStatus": "SENT", "upgradeDowngradeBilling": true }
- https://www.myshop.com/apps/memberships/cp/api/subscription-billing-attempts/attempt-billing/{id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
'https://www.myshop.com/apps/memberships/cp/api/subscription-billing-attempts/attempt-billing/{id}?shop=string'- https://www.myshop.com/apps/memberships/cp/api/subscription-billing-attempts
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
https://www.myshop.com/apps/memberships/cp/api/subscription-billing-attempts \
-H 'Content-Type: application/json' \
-d '{
"id": 0,
"shop": "string",
"billingAttemptId": "string",
"status": "SUCCESS",
"billingDate": "2019-08-24T14:15:22Z",
"contractId": 0,
"attemptCount": 0,
"attemptTime": "2019-08-24T14:15:22Z",
"graphOrderId": "string",
"orderId": 0,
"orderAmount": 0.1,
"orderName": "string",
"retryingNeeded": true,
"transactionFailedEmailSentStatus": "SENT",
"upcomingOrderEmailSentStatus": "SENT",
"applyUsageCharge": true,
"recurringChargeId": 0,
"transactionRate": 0.1,
"usageChargeStatus": "SUCCESS",
"transactionFailedSmsSentStatus": "SENT",
"upcomingOrderSmsSentStatus": "SENT",
"billingAttemptResponseMessage": "string",
"progressAttemptCount": 0,
"orderNote": "string",
"variantList": [
{
"variantId": 0,
"quantity": 0,
"title": "string",
"image": "string",
"productTitle": "string",
"productId": "string",
"sellingPlanId": "string"
}
],
"orderAmountUSD": 0.1,
"securityChallengeSentStatus": "SENT",
"upgradeDowngradeBilling": true
}'OK
- https://www.myshop.com/apps/memberships/cp/api/subscription-billing-attempts/top-orders
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://www.myshop.com/apps/memberships/cp/api/subscription-billing-attempts/top-orders?contractId=0'OK
- https://www.myshop.com/apps/memberships/cp/api/subscription-billing-attempts/past-orders
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://www.myshop.com/apps/memberships/cp/api/subscription-billing-attempts/past-orders?contractId=0'OK