Skip to main content
Find and manage subscription contracts that were created through Appfox.

Contract identifiers

The API base URL is https://subscriptions-app-new.getappfox.com. The contractId parameter can be either:
  • The numeric Shopify contract ID (e.g., 123456789)
  • The full Shopify GID (e.g., gid://shopify/SubscriptionContract/123456789)
Official routes live under /api/v1/subscription-contracts. Do not use /api/external/contracts.

Search contracts

All filters are optional and combine with each other. For example, find a customer’s active contracts:
Response (200 OK)
Email filter is an exact match. Search results come from Appfox’s shop-scoped contract mirror. Get-by-id reads live Shopify data.

Get a contract

This endpoint returns the current status, customer, billing policy, delivery price, and product lines directly from Shopify. It also returns the scheduled Appfox resume time when the contract is paused.

Manage a contract

Pause a subscription

Pause a subscription for up to 60 days. The resumeAt field is required and must be a future ISO-8601 timestamp. The contract auto-resumes at that time via the billing cron. This explicit resumeAt date always takes precedence over any shop-level auto-resume automation configured in Settings. The shop default only applies to portal and admin pauses that don’t specify a resume date.
Validation:
  • resumeAt is required on pause
  • resumeAt must be a future timestamp
  • Maximum pause duration is 60 days from the request time

Resume a subscription

Resume a paused subscription immediately.

Cancel a subscription

Permanently cancel a subscription. This action cannot be undone. Merchant and API cancels are not blocked by the plan-level minimum cycles setting. That setting only blocks customer-portal cancels.

POS

Shopify POS can enroll customers in subscription selling plans directly at the register using the Appfox Subscriptions smart grid tile (requires POS 10.15+ and Shopify Payments). Staff add products to the cart, tap the Subscriptions tile, and select an available plan. Custom POS extensions or third-party POS systems can use this API to look up, pause, resume, or cancel existing subscription contracts through server-to-server calls. Creating new subscriptions from a custom POS backend is not supported — use the native Shopify POS tile or online enrollment instead.

Error responses

All errors use the following structure:

Status codes and error codes

Example error responses

Contract not found:
Invalid pause duration:
Shopify rejected the action: