Skip to content

Subscriptions API

The Subscriptions API provides comprehensive endpoints for managing subscriptions in FluentCart. This includes creating, reading, updating, and managing subscription lifecycle operations like cancellation, reactivation, and payment method updates.

Base URL

https://yoursite.com/wp-json/fluent-cart/v2/subscriptions

Authentication

All endpoints require authentication and appropriate permissions:

  • Authentication: WordPress Application Password or Cookie
  • Policy: SubscriptionsPolicy (Admin) / CustomerFrontendPolicy (Customer)
  • Permissions: Various subscription-related permissions

Admin Endpoints

List Subscriptions

GET /subscriptions

Retrieve a paginated list of subscriptions with optional filtering and searching.

Parameters

ParameterTypeDescriptionDefault
pageintegerPage number1
per_pageintegerItems per page (max 100)10
searchstringSearch query-
filtersobjectFilter options-
order_bystringSort fieldid
order_typestringSort direction (ASC/DESC)DESC

Filter Options

json
{
  "status": "active",
  "customer_id": 123,
  "product_id": 456,
  "date_from": "2024-01-01",
  "date_to": "2024-12-31"
}

Response

json
{
  "success": true,
  "data": {
    "subscriptions": [
      {
        "id": 1,
        "uuid": "sub_abc123",
        "customer_id": 123,
        "product_id": 456,
        "variation_id": 789,
        "status": "active",
        "billing_cycle": "monthly",
        "amount": 2500,
        "currency": "USD",
        "next_billing_date": "2024-02-01T00:00:00Z",
        "created_at": "2024-01-01T10:00:00Z",
        "customer": {
          "id": 123,
          "email": "[email protected]",
          "first_name": "John",
          "last_name": "Doe"
        },
        "product": {
          "id": 456,
          "title": "Premium Plan",
          "sku": "PREMIUM-001"
        }
      }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 10,
      "total": 100,
      "total_pages": 10
    }
  }
}

Example Request

bash
curl -X GET "https://yoursite.com/wp-json/fluent-cart/v1/subscriptions?page=1&per_page=20&search=premium" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Get Subscription Details

GET /subscriptions/{subscriptionOrderId}

Retrieve detailed information about a specific subscription.

Parameters

ParameterTypeDescription
subscriptionOrderIdintegerSubscription Order ID

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "uuid": "sub_abc123",
      "customer_id": 123,
      "product_id": 456,
      "variation_id": 789,
      "status": "active",
      "billing_cycle": "monthly",
      "amount": 2500,
      "currency": "USD",
      "next_billing_date": "2024-02-01T00:00:00Z",
      "created_at": "2024-01-01T10:00:00Z",
      "updated_at": "2024-01-15T14:30:00Z",
      "customer": {
        "id": 123,
        "email": "[email protected]",
        "first_name": "John",
        "last_name": "Doe"
      },
      "product": {
        "id": 456,
        "title": "Premium Plan",
        "sku": "PREMIUM-001"
      },
      "order": {
        "id": 1,
        "status": "completed",
        "payment_status": "paid"
      },
      "transactions": [
        {
          "id": 1,
          "amount": 2500,
          "status": "succeeded",
          "created_at": "2024-01-01T10:00:00Z"
        }
      ]
    }
  }
}

Example Request

bash
curl -X GET "https://yoursite.com/wp-json/fluent-cart/v1/subscriptions/1" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Cancel Subscription

PUT /orders/{order}/subscriptions/{subscription}/cancel

Cancel a subscription.

Parameters

ParameterTypeDescription
orderintegerOrder ID
subscriptionintegerSubscription ID

Request Body

json
{
  "reason": "Customer requested cancellation",
  "cancel_immediately": false
}

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "status": "cancelled",
      "cancelled_at": "2024-01-15T14:30:00Z",
      "cancellation_reason": "Customer requested cancellation"
    }
  }
}

Example Request

bash
curl -X PUT "https://yoursite.com/wp-json/fluent-cart/v1/orders/1/subscriptions/1/cancel" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Customer requested cancellation"
  }'

Fetch Subscription

PUT /orders/{order}/subscriptions/{subscription}/fetch

Fetch subscription data from payment gateway.

Parameters

ParameterTypeDescription
orderintegerOrder ID
subscriptionintegerSubscription ID

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "status": "active",
      "next_billing_date": "2024-02-01T00:00:00Z",
      "updated_at": "2024-01-15T14:30:00Z"
    }
  }
}

Example Request

bash
curl -X PUT "https://yoursite.com/wp-json/fluent-cart/v1/orders/1/subscriptions/1/fetch" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Reactivate Subscription

PUT /orders/{order}/subscriptions/{subscription}/reactivate

Reactivate a cancelled subscription.

Parameters

ParameterTypeDescription
orderintegerOrder ID
subscriptionintegerSubscription ID

Request Body

json
{
  "reactivation_date": "2024-02-01T00:00:00Z"
}

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "status": "active",
      "reactivated_at": "2024-01-15T14:30:00Z",
      "next_billing_date": "2024-02-01T00:00:00Z"
    }
  }
}

Example Request

bash
curl -X PUT "https://yoursite.com/wp-json/fluent-cart/v1/orders/1/subscriptions/1/reactivate" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "reactivation_date": "2024-02-01T00:00:00Z"
  }'

Pause Subscription

PUT /orders/{order}/subscriptions/{subscription}/pause

Pause a subscription.

Parameters

ParameterTypeDescription
orderintegerOrder ID
subscriptionintegerSubscription ID

Request Body

json
{
  "pause_until": "2024-03-01T00:00:00Z",
  "reason": "Customer requested pause"
}

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "status": "paused",
      "paused_at": "2024-01-15T14:30:00Z",
      "pause_until": "2024-03-01T00:00:00Z"
    }
  }
}

Example Request

bash
curl -X PUT "https://yoursite.com/wp-json/fluent-cart/v1/orders/1/subscriptions/1/pause" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "pause_until": "2024-03-01T00:00:00Z",
    "reason": "Customer requested pause"
  }'

Resume Subscription

PUT /orders/{order}/subscriptions/{subscription}/resume

Resume a paused subscription.

Parameters

ParameterTypeDescription
orderintegerOrder ID
subscriptionintegerSubscription ID

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "status": "active",
      "resumed_at": "2024-01-15T14:30:00Z",
      "next_billing_date": "2024-02-01T00:00:00Z"
    }
  }
}

Example Request

bash
curl -X PUT "https://yoursite.com/wp-json/fluent-cart/v1/orders/1/subscriptions/1/resume" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Customer Frontend Endpoints

Get Customer Subscriptions

GET /customer-profile/subscriptions

Get all subscriptions for the authenticated customer.

Response

json
{
  "success": true,
  "data": {
    "subscriptions": [
      {
        "id": 1,
        "uuid": "sub_abc123",
        "product_id": 456,
        "variation_id": 789,
        "status": "active",
        "billing_cycle": "monthly",
        "amount": 2500,
        "currency": "USD",
        "next_billing_date": "2024-02-01T00:00:00Z",
        "product": {
          "id": 456,
          "title": "Premium Plan",
          "sku": "PREMIUM-001"
        }
      }
    ]
  }
}

Example Request

bash
curl -X GET "https://yoursite.com/wp-json/fluent-cart/v1/customer-profile/subscriptions" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Get Customer Subscription Details

GET /customer-profile/subscriptions/{subscription_uuid}

Get detailed information about a specific customer subscription.

Parameters

ParameterTypeDescription
subscription_uuidstringSubscription UUID

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "uuid": "sub_abc123",
      "product_id": 456,
      "variation_id": 789,
      "status": "active",
      "billing_cycle": "monthly",
      "amount": 2500,
      "currency": "USD",
      "next_billing_date": "2024-02-01T00:00:00Z",
      "created_at": "2024-01-01T10:00:00Z",
      "product": {
        "id": 456,
        "title": "Premium Plan",
        "sku": "PREMIUM-001"
      },
      "transactions": [
        {
          "id": 1,
          "amount": 2500,
          "status": "succeeded",
          "created_at": "2024-01-01T10:00:00Z"
        }
      ]
    }
  }
}

Example Request

bash
curl -X GET "https://yoursite.com/wp-json/fluent-cart/v1/customer-profile/subscriptions/sub_abc123" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Update Payment Method

POST /customer-profile/subscriptions/{subscription_uuid}/update-payment-method

Update the payment method for a subscription.

Parameters

ParameterTypeDescription
subscription_uuidstringSubscription UUID

Request Body

json
{
  "payment_method_id": "pm_1234567890",
  "payment_method_type": "card"
}

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "payment_method_id": "pm_1234567890",
      "updated_at": "2024-01-15T14:30:00Z"
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customer-profile/subscriptions/sub_abc123/update-payment-method" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "payment_method_id": "pm_1234567890",
    "payment_method_type": "card"
  }'

Get or Create Plan

POST /customer-profile/subscriptions/{subscription_uuid}/get-or-create-plan

Get or create a subscription plan.

Parameters

ParameterTypeDescription
subscription_uuidstringSubscription UUID

Request Body

json
{
  "plan_id": "plan_1234567890",
  "amount": 2500,
  "billing_cycle": "monthly"
}

Response

json
{
  "success": true,
  "data": {
    "plan": {
      "id": "plan_1234567890",
      "amount": 2500,
      "billing_cycle": "monthly",
      "created": false
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customer-profile/subscriptions/sub_abc123/get-or-create-plan" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "plan_id": "plan_1234567890",
    "amount": 2500,
    "billing_cycle": "monthly"
  }'

Switch Payment Method

POST /customer-profile/subscriptions/{subscription_uuid}/switch-payment-method

Switch the payment method for a subscription.

Parameters

ParameterTypeDescription
subscription_uuidstringSubscription UUID

Request Body

json
{
  "new_payment_method_id": "pm_0987654321",
  "payment_method_type": "card"
}

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "payment_method_id": "pm_0987654321",
      "updated_at": "2024-01-15T14:30:00Z"
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customer-profile/subscriptions/sub_abc123/switch-payment-method" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "new_payment_method_id": "pm_0987654321",
    "payment_method_type": "card"
  }'

Confirm Subscription Switch

POST /customer-profile/subscriptions/{subscription_uuid}/confirm-subscription-switch

Confirm a subscription payment method switch.

Parameters

ParameterTypeDescription
subscription_uuidstringSubscription UUID

Request Body

json
{
  "confirmation_token": "conf_1234567890"
}

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "status": "active",
      "payment_method_switched": true,
      "updated_at": "2024-01-15T14:30:00Z"
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customer-profile/subscriptions/sub_abc123/confirm-subscription-switch" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "confirmation_token": "conf_1234567890"
  }'

Confirm Subscription Reactivation

POST /customer-profile/subscriptions/{subscription_uuid}/confirm-subscription-reactivation

Confirm a subscription reactivation.

Parameters

ParameterTypeDescription
subscription_uuidstringSubscription UUID

Request Body

json
{
  "reactivation_token": "react_1234567890"
}

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "status": "active",
      "reactivated_at": "2024-01-15T14:30:00Z",
      "next_billing_date": "2024-02-01T00:00:00Z"
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customer-profile/subscriptions/sub_abc123/confirm-subscription-reactivation" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "reactivation_token": "react_1234567890"
  }'

Cancel Auto Renew

POST /customer-profile/subscriptions/{subscription_uuid}/cancel-auto-renew

Cancel auto-renewal for a subscription.

Parameters

ParameterTypeDescription
subscription_uuidstringSubscription UUID

Request Body

json
{
  "reason": "Customer requested cancellation",
  "cancel_at_period_end": true
}

Response

json
{
  "success": true,
  "data": {
    "subscription": {
      "id": 1,
      "auto_renew": false,
      "cancel_at_period_end": true,
      "cancellation_date": "2024-02-01T00:00:00Z",
      "updated_at": "2024-01-15T14:30:00Z"
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customer-profile/subscriptions/sub_abc123/cancel-auto-renew" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Customer requested cancellation",
    "cancel_at_period_end": true
  }'

Error Handling

Common Error Codes

CodeDescription
subscription_not_foundSubscription with specified ID not found
invalid_subscription_statusSubscription status does not allow this operation
payment_method_invalidPayment method is invalid or expired
insufficient_permissionsUser lacks required permissions
validation_errorRequest data validation failed
gateway_errorPayment gateway error occurred

Error Response Example

json
{
  "success": false,
  "error": {
    "code": "subscription_not_found",
    "message": "Subscription with ID 999 not found"
  }
}

Rate Limiting

  • List operations: 100 requests per hour
  • Create operations: 50 requests per hour
  • Update operations: 200 requests per hour
  • Cancel operations: 20 requests per hour

Next Steps

Continue with subscription management:

  1. Orders API - Manage subscription orders
  2. Customers API - Manage customer data
  3. Products API - Manage subscription products
  4. Database Models - Understand subscription data structure

Previous/Next Navigation


FluentCart developer documentation