Merchants can interact with Simplee Memberships using either our Storefront or Admin API. These allow for custom storefront experiences, as well as back-end interactions with the app.
Overview
The Simplee Memberships API allows merchants and developers to retrieve membership data and manage memberships programmatically.
Using the API, you can:
Retrieve memberships
Search memberships by customer information
Filter memberships by status
Pause and resume memberships
Cancel memberships
Reactivate memberships
Update billing dates
Update shipping addresses
Change billing frequencies
Send payment update emails
Delete memberships
Authentication
All API requests require authentication using a Bearer token.
Include the following header with every request:
Authorization: Bearer YOUR_ADMIN_API_TOKEN
If the token is missing, invalid, disabled, or deleted, the API will return a 401 Unauthorized response.
Base URL
https://api.simplee.best/api/admin/v1
Store ID
Every request to the API requires your store's unique ID. This ID can be generated within the Simplee Memberships app, under Settings > API Access. By enabling and saving one of the API access tokeys, a unique Store ID will also be generated.
Use this ID whenever and endpoint asks for [store_id]
Retrieve Memberships
Endpoint
GET /shops/{store_id}/membershipsExample Request
GET https://api.simplee.best/api/admin/v1/shops/123456789/memberships
Response
The following is a sample response from this query. Multiple results will be included in a single response if no filtering or pagination options have been sent.
{
"id": 123,
"contract_number": 15263392286,
"member_number": 3,
"status": "active",
"status_extended": null,
"created_method": "Online Store",
"created_at": "2026-06-03",
"next_order_date": "2026-07-03",
"next_processing_date": "2026-07-03",
"billing_interval_type": "month",
"billing_interval_count": 1,
"customer_shopify_id": 8708556292382,
"customer_email": "customer@gmail.com",
"customer_fname": "Jim",
"customer_lname": "Beam",
"customer_phone": null,
"tag_customer": "Gold",
"tag_order": "Membership",
"payment_method": "credit_card",
"payment_name": "Jim Beam",
"payment_brand": "visa",
"payment_last_four": "1",
"payment_expiry": "12\/25",
"payment_email": "",
"payment_amount": 100,
"plan_name": null,
"order_count": 1,
"order_minimum": 0,
"order_maximum": 0,
"store_credit_amount": null,
"store_credit_type": null,
"product": {
"product_id": 9669336498462,
"product_variant_id": 49471542329630,
"product_name": "Awesome Membership",
"product_variant_title": "Default Title",
"product_image_url": null
}
}
Membership IDs vs Shopify Contract IDs
⚠️ Important
The API uses two different identifiers:
Field | Description |
id | Internal Simplee Memberships ID |
contract_number | Shopify Subscription Contract ID |
When performing membership updates, use the membership's id value in the URL.
{ "id": 1022, "contract_number": 54321 }Correct:
PATCH /shops/{store_id}/memberships/1022Incorrect:
PATCH /shops/{store_id}/memberships/54321Filtering Memberships
Filter by Status
Retrieve active memberships:
GET /shops/{store_id}/memberships?status=activeRetrieve multiple statuses:
GET /shops/{store_id}/memberships?status=active,cancelledSupported filter values:
active
cancelled
expiring
paused
expired
failed
Status Values Returned by the API
Membership records may return:
ACTIVE
CANCELLED
PAUSED
EXPIRED
FAILED
Note: Filter values are lowercase while returned status values are uppercase.
Filter by Contract ID
GET /shops/{store_id}/memberships?contract=1234Filter by Customer Email
GET /shops/{store_id}/memberships?email=jane@example.comFilter by Customer First Name
GET /shops/{store_id}/memberships?first_name=JanePerforms a partial match on the customer's first name.
Filter by Customer Last Name
GET /shops/{store_id}/memberships?last_name=DoePerforms a partial match on the customer's last name.
Pagination
Example:
GET /shops/{store_id}/memberships?pageSize=50&page=1Parameter | Description |
pageSize | Number of results returned per page |
page | Page number |
Limits:
Default page size: 20
Maximum page size: 100
Sorting
Example:
GET /shops/{store_id}/memberships?sort=create_date descSupported sort fields:
create_date
next_order_date
member_number
contract_id
Example:
GET /shops/{store_id}/memberships?sort=next_order_date ascMembership Response Fields
Membership Information
id
contract_number
member_number
status
status_extended
created_method
created_at
next_order_date
next_processing_date
billing_interval_type
billing_interval_count
last_payment_status
Customer Information
customer_shopify_id
customer_email
customer_fname
customer_lname
customer_phone
Plan Information
plan_name
product.product_name
payment_amount
plan_currency_code
Payment Information
payment_method
payment_name
payment_brand
payment_last_four
payment_expiry
payment_email
Updating Memberships
Endpoint
PATCH /shops/{store_id}/memberships/{membership_id}The request body must include a type field that determines the action performed.
Cancel Membership
Cancels a membership while allowing access until the end of the current billing period.
{ "type": "cancelled" }Cancel Membership and Remove Access Immediately
Cancels the membership and removes access immediately.
{ "type": "cancelled-removeaccess" }Pause Membership
Pauses future billing.
{ "type": "paused" }Resume Membership
Resumes a paused membership.
{ "type": "resumed" }Reactivate Membership
Reactivates a cancelled membership using a new billing date.
{ "type": "reactive", "next_order_date": "2026-08-01" }Change Next Billing Date
Updates the next billing date.
{ "type": "next_order_date", "next_order_date": "2026-09-15" }Update Shipping Address
Updates the shipping address associated with a membership.
{
"type": "edit_shipping_address",
"shipping_address": {
"first_name": "Jane",
"last_name": "Doe",
"company": "Acme Inc",
"address1": "123 Main St",
"address2": "Suite 4",
"city": "Toronto",
"province": "Ontario",
"province_code": "ON",
"zip": "M5V 1A1",
"country": "Canada",
"phone": "416-555-0100"
}
}Change Billing Frequency
Updates the billing interval for a membership.
Example: Change a monthly membership to every 3 months.
{
"type": "change_frequency",
"billing_interval": "month",
"billing_interval_count": 3
}Supported interval values:
day
week
month
year
Send a Payment Update Email
Sends a payment update email to the customer.
{ "type": "update_payment_email" }Successful response:
{
"data": "Payment update email sent successfully.",
"success": true
}Possible responses:
{
"data": "Customer payment method not found. Update the payment method first, then retry."
}{
"data": "No supported payment gateway found for this shop."
}Delete a Membership
Permanently deletes a membership.
{ "type": "deleted" }⚠️ This action permanently removes the membership record.
Successful Responses
Most update operations return:
{ "success": true, "data": "Operation completed successfully." }Error Responses
401 Unauthorized
{ "error": "Invalid or disabled API token." }403 Forbidden
{ "error": "Token does not belong to this shop." }404 Not Found
{ "error": "Shop not found." }or
{ "error": "Membership not found." }422 Validation Error
{ "error": "Invalid type." }{ "error": "The next_order_date field is required." }{ "error": "The billing_interval field is required." }{ "error": "The billing_interval_count must be at least 1." }{ "error": "The shipping_address field is required." }Shopify Synchronization
Simplee Memberships automatically synchronizes supported membership updates with Shopify Subscription Contracts when applicable.
This includes:
Membership status changes
Next billing date changes
Membership reactivations
Membership resumptions
Billing frequency changes
Shipping address updates
If a membership is not connected to a Shopify Subscription Contract, the membership may still be updated within Simplee Memberships, but Shopify synchronization will be skipped.
