Manage Subscriptions
Response Status Codes
Responses include one of these HTTP status codes:
200: Successful.201: Successful.202: Accepted.400: Invalid request.404: Not found.502: Unexpected system error or system timeout.
Create a Subscription with an Existing Plan
Creates a Recurring Billing subscription using an existing standard plan.
Before creating a subscription, a Token Management Service (TMS) customer token is required. The subscription request uses values from the TMS response. For prerequisites and field mapping, see Subscriptions.
The endpoint is POST /rbs/v1/subscriptions. A 200-level response code indicates success.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
Endpoint
POST /rbs/v1/subscriptions
POST /rbs/v1/subscriptions
Example
{ "subscriptionInformation": { "planId": "1619212820", "name": "Test subscription", "startDate": "2026-01-15T10:00:00Z", "originalTransactionId": "123456789012345" }, "paymentInformation": { "customer": { "id": "AB1234EFGH56I78K9012LMNO" } }, "clientReferenceInformation": { "code": "MerchantRef001" }}{ "_links": { "self": { "href": "/rbs/v1/subscriptions/1619212821", "method": "GET" } }, "id": "1619212821", "status": "PENDING"}{ "status": "INVALID_REQUEST", "reason": "INVALID_DATA", "message": "One or more fields in the request contains invalid data.", "details": [ { "field": "subscriptionInformation.planId", "reason": "NOT_FOUND" } ]}| Field | Type | Description |
|---|---|---|
paymentInformation.customer.id | string | TMS customer token ID. |
subscriptionInformation.name | string | Subscription name. |
subscriptionInformation.planId | string | The ID of the existing plan to assign to the subscription. |
subscriptionInformation.startDate | string | Start date in UTC format: YYYY-MM-DDThh:mm:ssZ. |
Optional Fields
| Field | Type | Description |
|---|---|---|
subscriptionInformation.originalTransactionId | string | Network transaction ID from the payment that initializes the subscription. Providing this value improves authorization rates and Strong Customer Authentication (SCA) compliance. This value is returned in the Payments response as processorInformation.networkTransactionId. For EFTPOS cards, a network token is not generated. In this case, provide the transaction request ID or use 0. |
subscriptionInformation.code | string | Subscription code for reference. |
clientReferenceInformation.code | string | Merchant reference number. |
For more details, see the Create a Subscription section of the interactive API Reference.
Create a Subscription with Plan Overrides
A subscription can be created with plan overrides. Plan overrides apply only to the individual subscription and do not change the standard plan used for other subscriptions.
Before creating a subscription, a Token Management Service (TMS) customer token is required. The subscription request uses values from the TMS response. For prerequisites and field mapping, see Subscriptions.
The endpoint is POST /rbs/v1/subscriptions. A 200-level response code indicates success.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
Endpoint
POST /rbs/v1/subscriptions
POST /rbs/v1/subscriptions
Example
{ "subscriptionInformation": { "planId": "1619212820", "name": "Test subscription with overrides", "startDate": "2026-01-15T10:00:00Z" }, "paymentInformation": { "customer": { "id": "AB1234EFGH56I78K9012LMNO" } }, "planInformation": { "billingCycles": { "total": "6" } }, "orderInformation": { "amountDetails": { "billingAmount": "12", "setupFee": "5" } }}{ "_links": { "self": { "href": "/rbs/v1/subscriptions/1619212822", "method": "GET" } }, "id": "1619212822", "status": "PENDING"}{ "status": "INVALID_REQUEST", "reason": "INVALID_DATA", "message": "One or more fields in the request contains invalid data.", "details": [ { "field": "subscriptionInformation.code", "reason": "DUPLICATE" } ]}| Field | Type | Description |
|---|---|---|
paymentInformation.customer.id | string | TMS customer token ID. |
subscriptionInformation.name | string | Subscription name. |
subscriptionInformation.planId | string | The ID of the existing plan to assign to the subscription. |
subscriptionInformation.startDate | string | Start date in UTC format: YYYY-MM-DDThh:mm:ssZ. |
Optional Fields
| Field | Type | Description |
|---|---|---|
subscriptionInformation.originalTransactionId | string | Network transaction ID from the payment that initializes the subscription. Providing this value improves authorization rates and Strong Customer Authentication (SCA) compliance. This value is returned in the Payments response as processorInformation.networkTransactionId. For EFTPOS cards, a network token is not generated. In this case, provide the transaction request ID or use 0. |
subscriptionInformation.code | string | Subscription code for reference. |
clientReferenceInformation.code | string | Merchant reference number. |
For more details, see the Create a Subscription section of the interactive API Reference.
Create a Fully Customized Subscription
Creates a Recurring Billing subscription with a one-time plan. The plan is embedded in the subscription at creation time and cannot be reused for other subscriptions. One-time plans do not include a plan code, plan name, or plan description.
The start date must be in UTC in this format: YYYY-MM-DDThh:mm:ssZ. The T separates the date and the time. The Z indicates UTC. For example, 2026-01-15T10:00:00Z indicates January 15, 2026, at 10:00:00 (10:00:00 a.m.) UTC. For subscriptions created on the start date, the time value must be the current time and day in the applicable time zone.
Before creating a subscription, a Token Management Service (TMS) customer token is required. The subscription request uses values from the TMS response. For prerequisites and field mapping, see Subscriptions.
The endpoint is POST /rbs/v1/subscriptions. A 200-level response code indicates success.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
For information about response codes, see Transaction Response Codes.
Fields specific to this use case
These fields define the one-time plan embedded in the subscription:
orderInformation.amountDetails.billingAmountorderInformation.amountDetails.currencyorderInformation.amountDetails.setupFeeplanInformation.billingCycles.totalplanInformation.billingPeriod.lengthplanInformation.billingPeriod.unitsubscriptionInformation.startDate
Endpoint
POST /rbs/v1/subscriptions
POST /rbs/v1/subscriptions
Example
{ "subscriptionInformation": { "name": "Custom subscription", "startDate": "2026-01-15T10:00:00Z" }, "paymentInformation": { "customer": { "id": "AB1234EFGH56I78K9012LMNO" } }, "planInformation": { "billingPeriod": { "unit": "m", "length": "1" }, "billingCycles": { "total": "12" } }, "orderInformation": { "amountDetails": { "billingAmount": "15", "currency": "USD", "setupFee": "0" } }}{ "_links": { "self": { "href": "/rbs/v1/subscriptions/1619212823", "method": "GET" } }, "id": "1619212823", "status": "PENDING"}{ "status": "INVALID_REQUEST", "reason": "INVALID_DATA", "message": "One or more fields in the request contains invalid data.", "details": [ { "field": "planInformation.billingPeriod.unit", "reason": "MISSING_FIELD" } ]}| Field | Type | Description |
|---|---|---|
orderInformation.amountDetails.billingAmount | string | Billing amount. |
orderInformation.amountDetails.currency | string | Currency. |
orderInformation.amountDetails.setupFee | string | Setup fee. |
paymentInformation.customer.id | string | TMS customer token ID. |
planInformation.billingPeriod.length | string | Length. |
planInformation.billingPeriod.unit | string | Unit. |
subscriptionInformation.name | string | Name. |
subscriptionInformation.startDate | string | Start date. |
Optional Fields
| Field | Type | Description |
|---|---|---|
subscriptionInformation.originalTransactionId | string | Network transaction ID from the payment that initializes the subscription. Providing this value improves authorization rates and Strong Customer Authentication (SCA) compliance. This value is returned in the Payments response as processorInformation.networkTransactionId. For EFTPOS cards, a network token is not generated. In this case, provide the transaction request ID or use 0. |
subscriptionInformation.code | string | Subscription code for reference. |
clientReferenceInformation.code | string | Merchant reference number. |
For more details, see the Create a Subscription section of the interactive API Reference.
Create a Follow-on Subscription
Creates a subscription from an existing payment transaction. The subscription uses the payment instrument and billing information from the existing transaction, so a customer token is not required.
The follow-on subscription can be assigned to an existing standard plan or to a one-time plan.
The start date must be in UTC in this format: YYYY-MM-DDThh:mm:ssZ. The T separates the date and the time. The Z indicates UTC. For example, 2026-01-15T10:00:00Z indicates January 15, 2026, at 10:00:00 (10:00:00 a.m.) UTC. For subscriptions created on the start date, the time value must be the current time and day in the applicable time zone.
For payment instrument and billing details, see the follow-on subscription endpoint in Manage Subscriptions.
Endpoint
POST /rbs/v1/subscriptions/follow-ons/{requestId}
POST /rbs/v1/subscriptions/follow-ons/{requestId}
Example
{ "subscriptionInformation": { "planId": "1619212820", "name": "Follow-on subscription", "startDate": "2026-01-15T10:00:00Z" }}{ "_links": { "self": { "href": "/rbs/v1/subscriptions/1619212824", "method": "GET" } }, "id": "1619212824", "status": "PENDING"}{ "status": "NOT_FOUND", "reason": "TRANSACTION_NOT_FOUND", "message": "The requested transaction was not found."}| Field | Type | Description |
|---|---|---|
subscriptionInformation.name | string | Subscription name. |
subscriptionInformation.startDate | string | Start date in UTC format: YYYY-MM-DDThh:mm:ssZ. |
Optional Fields
| Field | Type | Description |
|---|---|---|
subscriptionInformation.code | string | Subscription code for reference. |
clientReferenceInformation.code | string | Merchant reference number. |
For more details, see the Create a Follow-on Subscription section of the interactive API Reference.
Amend a Subscription
Updates an existing Recurring Billing subscription. The subscription code, name, start date, TMS token, and plan assignment can be amended.
Endpoint
PATCH /rbs/v1/subscriptions/{id}
PATCH /rbs/v1/subscriptions/{id}
Example
{ "subscriptionInformation": { "planId": "1619212825", "name": "Updated subscription name" }}{ "_links": { "self": { "href": "/rbs/v1/subscriptions/1619212821", "method": "GET" } }, "id": "1619212821", "status": "COMPLETED"}{ "status": "INVALID_REQUEST", "reason": "INVALID_DATA", "message": "One or more fields in the request contains invalid data.", "details": [ { "field": "subscriptionInformation.planId", "reason": "NOT_FOUND" } ]}| Subscription Status | Amendable Fields |
|---|---|
| Delinquent, Suspended, Canceled, or Completed | Only subscriptionInformation.code, subscriptionInformation.name, and clientReferenceInformation.code can be amended. |
| Pending | All fields can be amended except orderInformation.amountDetails.currency, paymentInformation.customer.id, planInformation.billingPeriod.length, and planInformation.billingPeriod.unit. |
| Active | All fields can be amended except orderInformation.amountDetails.currency, orderInformation.amountDetails.setupFee, paymentInformation.customer.id, planInformation.billingPeriod.length, and planInformation.billingPeriod.unit. |
For more details, see the Amend a Subscription section of the interactive API Reference.
Cancel a Subscription
Cancels a Recurring Billing subscription. Subscriptions with a pending, active, suspended, or delinquent status can be canceled. A subscription cannot be canceled within 10 minutes of its next scheduled payment.
For more details, see the Cancel a Subscription section of the interactive API Reference.
Endpoint
POST /rbs/v1/subscriptions/{id}/cancel
POST /rbs/v1/subscriptions/{id}/cancel
Example
{ "_links": { "self": { "href": "/rbs/v1/subscriptions/1619212821", "method": "GET" } }, "id": "1619212821", "status": "ACCEPTED"}{ "status": "NOT_FOUND", "reason": "SUBSCRIPTION_NOT_FOUND", "message": "The requested subscription was not found."}Reactivate a Subscription
Reactivates a suspended Recurring Billing subscription. Canceled or completed subscriptions cannot be reactivated.
The processMissedPayments query parameter controls whether missed payments are collected:
true: collects missed payments when the subscription is reactivated.false: does not collect missed payments.
The processMissedPayments parameter is only effective when the Ask each time option is selected in the recurring billing settings. To check how many payments were missed and the total amount, retrieve the subscription — the response includes reactivationInformation.missedPaymentsCount and reactivationInformation.missedPaymentsTotalAmount.
For more details, see the Reactivate a Subscription section of the interactive API Reference.
Endpoint
POST /rbs/v1/subscriptions/{id}/activate?processMissedPayments={true|false}
POST /rbs/v1/subscriptions/{id}/activate?processMissedPayments={true|false}
Example
{ "_links": { "self": { "href": "/rbs/v1/subscriptions/1619212821", "method": "GET" } }, "id": "1619212821", "status": "COMPLETED", "subscriptionInformation": { "status": "ACTIVE" }}{ "status": "INVALID_REQUEST", "reason": "INVALID_FOR_ACTIVATION", "message": "The subscription cannot be activated."}Suspend a Subscription
Suspends a Recurring Billing subscription. Subscriptions with a pending, active, or delinquent status can be suspended. A subscription cannot be suspended within 10 minutes of its next scheduled payment.
For more details, see the Suspend a Subscription section of the interactive API Reference.
Endpoint
POST /rbs/v1/subscriptions/{id}/suspend
POST /rbs/v1/subscriptions/{id}/suspend
Example
{ "_links": { "self": { "href": "/rbs/v1/subscriptions/1619212821", "method": "GET" } }, "id": "1619212821", "status": "ACCEPTED", "subscriptionInformation": { "status": "ACTIVE" }}{ "status": "NOT_FOUND", "reason": "SUBSCRIPTION_NOT_FOUND", "message": "The requested subscription was not found."}Skip or Restore a Payment
Skips or restores scheduled payments in a Recurring Billing subscription. Provide the billingCyclesToSkip array with the billing cycle numbers to skip. To restore a previously skipped payment, send the same request without that cycle number in the array.
Endpoint
POST /rbs/v1/subscriptions/{id}/payments
POST /rbs/v1/subscriptions/{id}/payments
Example
{ "billingCyclesToSkip": [4, 5]}{ "_links": { "self": { "href": "/rbs/v1/subscriptions/1619212821/payments", "method": "GET" } }, "id": "1619212821", "status": "COMPLETED"}{ "status": "INVALID_REQUEST", "reason": "UNMODIFIABLE_PAYMENT_SKIP_ATTEMPT_CYCLE", "message": "One or more billing cycles cannot be modified because they are currently in processing."}{ "status": "NOT_FOUND", "reason": "SUBSCRIPTION_NOT_FOUND", "message": "The requested subscription was not found."}| Field | Type | Description |
|---|---|---|
billingCyclesToSkip | string | Array of billing cycle numbers to skip. Send an empty array to restore all previously skipped payments. |
For more details, see the Skip or Restore a Payment section of the interactive API Reference.
Retrieve a Subscription
Retrieves details for a specific Recurring Billing subscription.
Response details
The response returns this information:
- Billing amount
- Currency
- Customer email
- Customer first name
- Customer ID
- Customer last name
- Next payment date
- Number of billing cycles completed
- Number of billing cycles remaining
- Plan code
- Plan ID
- Plan name
- Set-up fee
- Start date
- Subscription code
- Subscription ID
- Subscription name
- Subscription status
For suspended subscriptions, the response also includes:
missedPaymentsCount: the number of payments missed during the suspension.missedPaymentsTotalAmount: the total amount of payments missed during the suspension.
For more details, see the Retrieve a Subscription section of the interactive API Reference.
Endpoint
GET /rbs/v1/subscriptions/{id}
GET /rbs/v1/subscriptions/{id}
Example
{ "_links": { "self": { "href": "/rbs/v1/subscriptions/1619212821", "method": "GET" }, "update": { "href": "/rbs/v1/subscriptions/1619212821", "method": "PATCH" }, "suspend": { "href": "/rbs/v1/subscriptions/1619212821/suspend", "method": "POST" }, "cancel": { "href": "/rbs/v1/subscriptions/1619212821/cancel", "method": "POST" } }, "id": "1619212821", "code": "SUB001", "name": "Test subscription", "status": "ACTIVE", "planId": "1619212820", "startDate": "2026-01-15T10:00:00Z", "nextPaymentDate": "2023-08-18T22:47:57Z", "billingAmount": "7", "currency": "USD", "setupFee": "0", "billingCyclesCompleted": "2", "billingCyclesRemaining": "2"}{ "status": "NOT_FOUND", "reason": "INVALID_DATA", "details": []}Retrieve a List of Subscriptions
Retrieves a list of Recurring Billing subscriptions. Results can be filtered, paginated, and sorted.
Query Parameters
planName: filter by plan name.customerId: filter by TMS customer ID.status: filter by subscription status.customerFirstName: filter by customer first name.customerLastName: filter by customer last name.code: filter by subscription code.plancode: filter by plan code.offset: the number of records before the first record in the result set.limit: the number of records in the result set. The default is 20. The maximum is 100.
Response details
The response returns this information for each subscription:
- Billing amount
- Currency
- Customer email
- Customer first name
- Customer ID
- Customer last name
- Next payment date
- Number of billing cycles completed
- Number of billing cycles remaining
- Plan code
- Plan ID
- Plan name
- Set-up fee
- Start date
- Subscription code
- Subscription ID
- Subscription name
- Subscription status
For more details, see the Retrieve a List of Subscriptions section of the interactive API Reference.
Endpoint
GET /rbs/v1/subscriptions
GET /rbs/v1/subscriptions
Example
{ "_links": { "self": { "href": "/rbs/v1/subscriptions?limit=20&offset=0", "method": "GET" }, "next": { "href": "/rbs/v1/subscriptions?limit=20&offset=20", "method": "GET" } }, "offset": 0, "limit": 20, "totalCount": 21, "subscriptions": [ { "id": "1619212821", "code": "SUB001", "name": "Test subscription", "status": "ACTIVE", "planId": "1619212820", "startDate": "2026-01-15T10:00:00Z", "nextPaymentDate": "2023-08-18T22:47:57Z", "billingAmount": "7", "currency": "USD", "setupFee": "0" } ]}{ "status": "NOT_FOUND", "reason": "INVALID_DATA"}Retrieve a List of Payments in a Subscription
Retrieves the list of payments in a Recurring Billing subscription, including past and scheduled payments.
Query Parameters
offset: the number of records before the first record in the result set.limit: the number of records in the result set. The default is 20. The maximum is 100.scheduledPaymentsCount: the number of future scheduled payments to include. The default is 5. The maximum is 9999.
Response details
The response returns:
totalCount: total number of payments in the subscription.cyclesCompletedCount: number of billing cycles completed.billingCyclesToSkip: array of billing cycle numbers currently set to skip.subscriptionPayment: array of payment objects, each containing:
- Authorization code (for processed payments)
- Billing cycle number
- Currency
- Payment amount
- Payment ID
- Payment method type
- Payment status
- Processor transaction ID (for processed payments)
- Request ID (for processed payments)
- Response code (for processed payments)
- Response reason code (for processed payments)
- Scheduled payment date
- Skip flag
- Transaction ID (for processed payments)
For more details, see the Retrieve a List of Payments in a Subscription section of the interactive API Reference.
Endpoint
GET /rbs/v1/subscriptions/{id}/payments
GET /rbs/v1/subscriptions/{id}/payments
Example
{ "totalCount": 12, "cyclesCompletedCount": 6, "billingCyclesToSkip": [], "subscriptionPayment": [ { "paymentId": "1619212830", "billingCycle": "1", "scheduledPaymentDate": "2026-01-15T10:00:00Z", "paymentAmount": "7", "currency": "USD", "status": "PROCESSED", "transactionId": "1234567890", "requestId": "ABC123" }, { "paymentId": "1619212831", "billingCycle": "2", "scheduledPaymentDate": "2023-08-18T22:47:57Z", "paymentAmount": "7", "currency": "USD", "status": "PROCESSED" }, { "paymentId": "1619212832", "billingCycle": "7", "scheduledPaymentDate": "2023-09-22T22:47:57Z", "paymentAmount": "7", "currency": "USD", "status": "SCHEDULED" }, { "paymentId": "1619212833", "billingCycle": "8", "scheduledPaymentDate": "2023-09-29T22:47:57Z", "paymentAmount": "7", "currency": "USD", "status": "SCHEDULED" }, { "paymentId": "1619212834", "billingCycle": "9", "scheduledPaymentDate": "2023-10-06T22:47:57Z", "paymentAmount": "7", "currency": "USD", "status": "SCHEDULED_SKIPPED" }, { "paymentId": "1619212835", "billingCycle": "10", "scheduledPaymentDate": "2023-10-13T22:47:57Z", "paymentAmount": "7", "currency": "USD", "status": "SCHEDULED" } ]}{ "status": "NOT_FOUND", "reason": "INVALID_DATA"}Retrieve Details for Follow-on Subscription Creation
Retrieves the payment instrument, billing, and shipping details from an existing transaction. Use this to verify the information before creating a follow-on subscription.
For more details, see the Retrieve Details for Follow-on Subscription Creation section of the interactive API Reference.
Endpoint
GET /rbs/v1/subscriptions/follow-ons/{requestId}
GET /rbs/v1/subscriptions/follow-ons/{requestId}
Example
{ "buyerInformation": { "email": "[email protected]", "firstName": "John", "lastName": "Doe" }, "paymentInstrument": { "type": "CREDIT_CARD", "card": { "expirationMonth": "12", "expirationYear": "2025", "number": "411111XXXXXX1111", "type": "001" } }, "shippingAddress": { "firstName": "John", "lastName": "Doe", "address1": "1 Main Street", "locality": "Mountain View", "administrativeArea": "CA", "postalCode": "94043", "country": "US" }}{ "status": "NOT_FOUND", "reason": "INVALID_DATA"}Retrieve the Next Subscription Code
Retrieves the next consecutive subscription code that the system automatically assigns. Use this to preview the next code before creating a subscription.
For more details, see the Retrieve the Next Subscription Code section of the interactive API Reference.
Endpoint
GET /rbs/v1/subscriptions/code
GET /rbs/v1/subscriptions/code
Example
{ "code": "AWC-50"}{ "status": "INVALID_REQUEST", "reason": "INVALID_DATA", "message": "One or more fields in the request contains invalid data."}Thanks for your feedback!
Last published: September 29, 2026