View Categories

Subscriptions, Memberships & Rental Queue Endpoints

2 min read

The Subscriptions & Memberships add-on registers its endpoints under https://your-store.com/wp-json/wc-sisubscriptions/v1/. Authentication and conventions are the same as for the rental endpoints: a WooCommerce REST API key with Read/Write permissions, JSON bodies, X-WP-Total pagination headers and 409 for conflicts. See the REST API overview. For what subscriptions, memberships and queues are from the store owner’s side, see Setting up Subscriptions and Setting up Memberships.

Subscriptions #

Method and pathWhat it does
GET /subscriptionsList subscriptions. Filters: user_id, status, search, page, per_page.
POST /subscriptionsCreate one. Required: user_id, items (array of { product_id, quantity, recurring_amount }), billing_period (day, week, month, year). Optional: billing_interval (default 1), next_payment_date, parent_order_id, status (default active).
GET /subscriptions/{id}One subscription with its items, its pending scheduled renewals and the ids of memberships it pays for.
PUT /subscriptions/{id}Change billing_period, billing_interval, next_payment_date, parent_order_id, user_id, status or replace the items.
DELETE /subscriptions/{id}Remove the subscription, its items and its scheduled actions. Orders already created are kept.
POST /subscriptions/{id}/cancelCancel it. The parent order’s rental reservations are released and a note is added to the order.
POST /subscriptions/{id}/pausePause billing (status paused).
POST /subscriptions/{id}/resumeResume a paused subscription (only a paused one; anything else is a 409).
{
  "id": 57,
  "user_id": 2,
  "status": "active",
  "parent_order_id": 4402,
  "last_synced_order_id": 4519,
  "billing_period": "month",
  "billing_interval": 1,
  "next_payment_date": "2026-10-14 00:00:00",
  "last_payment_date": "2026-09-14 09:12:31",
  "date_created": "2026-06-14 09:12:31",
  "date_modified": "2026-09-14 09:12:31",
  "items": [
    { "id": 91, "subscription_id": 57, "product_id": 2101, "quantity": 1, "recurring_amount": 89, "is_one_time": 0 }
  ],
  "scheduled_actions": [
    { "action_id": 3310, "subscription_id": 57, "type": "renewal", "status": "pending", "scheduled_date": "2026-10-14 00:00:00", "renewal_order_id": 0 }
  ],
  "memberships": [ 12 ]
}

Renewals are charged by the plugin’s daily cron using the payment method saved on the parent order, so a subscription created through the API with no parent_order_id has nothing to charge: it is useful for migrating records or for subscriptions billed outside WooCommerce, and its next_payment_date should then be managed by the caller. Setting status to cancelled or expired through PUT has the same side effects as the /cancel action.

Memberships #

Method and pathWhat it does
GET /membershipsList memberships. Filters: user_id, status, page, per_page.
POST /membershipsCreate one. Required: user_id. Then either queue_items (how many rentals the member may have out at once: a rental queue membership) or storecredit_amount (a store credit membership). Optional: subscription_id that pays for it, status (active, paused, cancelled, expired).
GET /memberships/{id}One membership with the credit used so far, the number of rentals out and the linked subscription’s status and dates.
PUT /memberships/{id}Change any of the fields above.
DELETE /memberships/{id}Delete the membership.
{
  "id": 12,
  "user_id": 2,
  "subscription_id": 57,
  "type": "queue",
  "status": "active",
  "storecredit_amount": null,
  "credit_used": 0,
  "queue_items": 3,
  "rentals_out": 1,
  "date_created": "2026-06-14 09:12:31",
  "date_modified": "2026-09-14 09:12:31",
  "subscription_status": "active",
  "next_payment_date": "2026-10-14 00:00:00"
}

Rental queue #

A rental queue is the list of products a queue member wants next, in priority order. Sending the item at the top checks it out against one of the member’s free slots; returning it frees the slot. These endpoints do exactly what the member’s “Manage Queue” page and the admin Rental Queue Send / Return screens do.

Method and pathWhat it does
GET /queue?user_id=2The member’s queue, top priority first.
POST /queueAdd a product: user_id, product_id. A product already queued is a 409.
PUT /queue/{id}Move an item: priority (1 = next).
DELETE /queue/{id}Remove an item from the queue.
POST /queue/{id}/sendCheck the queued item out to the member (with serials on a serial-tracked product). Refused with 409 when the member has no free slot or no unit is available.
POST /queue-sent/{id}/returnTake a sent item back; {id} is the id from /queue/out.
GET /queue/out?user_id=2What the member currently has out, with the sent date and serials.

A queue checkout creates a rental reservation without a WooCommerce order, so it appears in the bookings endpoints with order_id 0 and counts against the product’s availability like any other booking.