APIs for managing Shopify delivery profiles, shipping rates, zones, and free shipping configuration for subscription memberships
- Update billing interval for subscription contract
External (0.0.1)
Request
Changes the delivery/shipping frequency of a subscription contract. This allows customers to modify how often they receive their subscription orders.
Key Features:
- Flexible Delivery: Change delivery frequency (daily, weekly, monthly, yearly)
- Custom Intervals: Set custom interval counts (e.g., every 2 weeks, every 3 months)
- Independent from Billing: Delivery interval can differ from billing interval
- Immediate Effect: Changes apply to the next delivery cycle
- Activity Logging: All changes are logged for audit trail
Delivery Interval Options:
- DAY: Daily delivery (intervalCount: how many days)
- WEEK: Weekly delivery (intervalCount: how many weeks)
- MONTH: Monthly delivery (intervalCount: how many months)
- YEAR: Yearly delivery (intervalCount: how many years)
Common Examples:
intervalCount=1, interval=MONTH: Deliver monthlyintervalCount=2, interval=WEEK: Deliver every 2 weeksintervalCount=3, interval=MONTH: Deliver quarterlyintervalCount=1, interval=WEEK: Deliver weeklyintervalCount=6, interval=MONTH: Deliver twice a year
Billing vs. Delivery Intervals: These can be different! For example:
- Bill monthly, deliver weekly: Customer pays monthly but receives weekly shipments
- Bill quarterly, deliver monthly: Customer pays every 3 months but receives monthly shipments
- Bill annually, deliver monthly: Customer pays yearly upfront for monthly deliveries
Common Use Cases:
- Customer wants deliveries less frequently (save on shipping)
- Customer wants deliveries more frequently (use products faster)
- Adjust delivery to match consumption rate
- Seasonal frequency changes (more in summer, less in winter)
- Align deliveries with schedule (delivery when home from vacation)
Important Notes:
- Billing Date Unchanged: Only affects delivery schedule, not billing schedule
- Next Delivery Date: System recalculates next delivery date based on new interval
- Order Fulfillment: Each delivery creates a new order at the specified interval
- Prepaid Memberships: Particularly useful for prepaid plans with multiple deliveries
Authentication: Requires API key authentication via X-API-Key header or api_key parameter
- https://membership-admin.appstle.com/api/external/v2/subscription-contracts-update-delivery-interval
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
'https://membership-admin.appstle.com/api/external/v2/subscription-contracts-update-delivery-interval?contractId=12345&api_key=string&deliveryIntervalCount=1&deliveryInterval=MONTH' \
-H 'X-API-Key: string'{ "get__typename": "string", "id": "string", "createdAt": {}, "updatedAt": {}, "nextBillingDate": {}, "status": "ACTIVE", "deliveryPrice": { "get__typename": "string", "amount": {}, "currencyCode": "USD" }, "lastPaymentStatus": "SUCCEEDED", "billingPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [ … ], "maxCycles": 0, "minCycles": 0 }, "deliveryPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [ … ] }, "lines": { "get__typename": "string", "nodes": [ … ], "pageInfo": { … } }, "customerPaymentMethod": { "get__typename": "string", "id": "string", "instrument": { … }, "revokedAt": {}, "revokedReason": "AUTHORIZE_NET_GATEWAY_NOT_ENABLED" }, "deliveryMethod": { "get__typename": "string", "id": "string", "methodType": "SHIPPING", "serviceCode": "string", "minDeliveryDateTime": {}, "maxDeliveryDateTime": {}, "additionalInformation": { … }, "brandedPromise": { … } }, "originOrder": { "get__typename": "string", "id": "string", "name": "string", "fulfillmentOrders": { … } }, "customer": { "get__typename": "string", "id": "string", "email": "string", "displayName": "string", "firstName": "string", "lastName": "string", "phone": "string" }, "discounts": { "get__typename": "string", "nodes": [ … ], "pageInfo": { … } }, "note": "string", "customAttributes": [ { … } ], "billingAttempts": { "get__typename": "string", "nodes": [ … ] } }
Request
Changes the billing frequency of a subscription contract. This allows customers to modify how often they are charged for their membership.
Key Features:
- Flexible Billing: Change billing frequency (daily, weekly, monthly, yearly)
- Custom Intervals: Set custom interval counts (e.g., every 2 weeks, every 3 months)
- Immediate Effect: Changes apply to the next billing cycle
- Independent from Delivery: Billing interval can differ from delivery interval
- Activity Logging: All changes are logged for audit trail
Billing Interval Options:
- DAY: Daily billing (intervalCount: how many days)
- WEEK: Weekly billing (intervalCount: how many weeks)
- MONTH: Monthly billing (intervalCount: how many months)
- YEAR: Yearly billing (intervalCount: how many years)
Common Examples:
intervalCount=1, interval=MONTH: Bill monthlyintervalCount=2, interval=WEEK: Bill every 2 weeksintervalCount=3, interval=MONTH: Bill quarterlyintervalCount=6, interval=MONTH: Bill semi-annuallyintervalCount=1, interval=YEAR: Bill annually
Common Use Cases:
- Customer wants to change from monthly to quarterly billing
- Switch from annual to monthly payments
- Adjust billing frequency to match cash flow
- Promotional frequency changes
- Align billing with payday schedules
Important Notes:
- Next Billing Date: System recalculates the next billing date based on new interval
- Pro-rata Billing: No pro-rata adjustment; new interval starts from next billing date
- Minimum Cycles: Respects minimum billing cycle requirements if configured
- Customer Portal Protection: Includes freeze checks if called from customer portal
Authentication: Requires API key authentication via X-API-Key header or api_key parameter
- https://membership-admin.appstle.com/api/external/v2/subscription-contracts-update-billing-interval
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
'https://membership-admin.appstle.com/api/external/v2/subscription-contracts-update-billing-interval?contractId=12345&api_key=string&intervalCount=1&interval=MONTH' \
-H 'X-API-Key: string'{ "get__typename": "string", "id": "string", "createdAt": {}, "updatedAt": {}, "nextBillingDate": {}, "status": "ACTIVE", "deliveryPrice": { "get__typename": "string", "amount": {}, "currencyCode": "USD" }, "lastPaymentStatus": "SUCCEEDED", "billingPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [ … ], "maxCycles": 0, "minCycles": 0 }, "deliveryPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [ … ] }, "lines": { "get__typename": "string", "nodes": [ … ], "pageInfo": { … } }, "customerPaymentMethod": { "get__typename": "string", "id": "string", "instrument": { … }, "revokedAt": {}, "revokedReason": "AUTHORIZE_NET_GATEWAY_NOT_ENABLED" }, "deliveryMethod": { "get__typename": "string", "id": "string", "methodType": "SHIPPING", "serviceCode": "string", "minDeliveryDateTime": {}, "maxDeliveryDateTime": {}, "additionalInformation": { … }, "brandedPromise": { … } }, "originOrder": { "get__typename": "string", "id": "string", "name": "string", "fulfillmentOrders": { … } }, "customer": { "get__typename": "string", "id": "string", "email": "string", "displayName": "string", "firstName": "string", "lastName": "string", "phone": "string" }, "discounts": { "get__typename": "string", "nodes": [ … ], "pageInfo": { … } }, "note": "string", "customAttributes": [ { … } ], "billingAttempts": { "get__typename": "string", "nodes": [ … ] } }
Request
Updates the next billing date for a subscription contract. This reschedules when the next payment will be charged for the membership.
Key Features:
- Flexible Rescheduling: Move billing date forward or backward
- Immediate Effect: Changes take effect immediately in the billing schedule
- Automatic Adjustments: Future billing dates recalculate based on frequency
- Customer Portal Compatible: Can be triggered from customer self-service portal
- Activity Logging: All changes are tracked in activity logs
Billing Date Update Rules:
- New date must be in the future (past dates are rejected)
- Cannot update if contract is paused or cancelled
- Cannot update if minimum billing cycles enforcement is active
- Date format must be ISO 8601 with timezone (e.g., 2024-12-25T10:00:00Z)
- Subsequent billing dates auto-calculate based on delivery frequency
Common Use Cases:
- Customer requests to postpone next delivery/billing
- Align billing date with customer payday or preference
- Skip a billing cycle due to vacation or temporary hold
- Synchronize multiple subscriptions to bill on same day
- Resolve payment timing conflicts or scheduling issues
- Adjust for seasonal demand or customer availability
Important Notes:
- Changing billing date does NOT change the billing cycle frequency
- If minimum cycles are configured, this may be restricted
- Activity logs capture old date, new date, and change source
- Customer receives updated billing schedule notification
Authentication: Requires API key authentication via X-API-Key header or api_key parameter
- https://membership-admin.appstle.com/api/external/v2/subscription-contracts-update-billing-date
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
'https://membership-admin.appstle.com/api/external/v2/subscription-contracts-update-billing-date?contractId=12345&api_key=string&nextBillingDate=2024-12-25T10%3A00%3A00Z' \
-H 'X-API-Key: string'{ "get__typename": "string", "id": "string", "createdAt": {}, "updatedAt": {}, "nextBillingDate": {}, "status": "ACTIVE", "deliveryPrice": { "get__typename": "string", "amount": {}, "currencyCode": "USD" }, "lastPaymentStatus": "SUCCEEDED", "billingPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [ … ], "maxCycles": 0, "minCycles": 0 }, "deliveryPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [ … ] }, "lines": { "get__typename": "string", "nodes": [ … ], "pageInfo": { … } }, "customerPaymentMethod": { "get__typename": "string", "id": "string", "instrument": { … }, "revokedAt": {}, "revokedReason": "AUTHORIZE_NET_GATEWAY_NOT_ENABLED" }, "deliveryMethod": { "get__typename": "string", "id": "string", "methodType": "SHIPPING", "serviceCode": "string", "minDeliveryDateTime": {}, "maxDeliveryDateTime": {}, "additionalInformation": { … }, "brandedPromise": { … } }, "originOrder": { "get__typename": "string", "id": "string", "name": "string", "fulfillmentOrders": { … } }, "customer": { "get__typename": "string", "id": "string", "email": "string", "displayName": "string", "firstName": "string", "lastName": "string", "phone": "string" }, "discounts": { "get__typename": "string", "nodes": [ … ], "pageInfo": { … } }, "note": "string", "customAttributes": [ { … } ], "billingAttempts": { "get__typename": "string", "nodes": [ … ] } }