Unfortunately, this feature is not supported on mobile devices. For the best experience, please use a computer.

Core APIs (latest)

Introduction

The Rebilly API is built on HTTP and is RESTful. It has predictable resource URLs and returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. Use your favorite HTTP/REST library in your programming language when using this API, or use one of the Rebilly SDKs, which are available in PHP and JavaScript.

Every action in the Rebilly UI is supported by an API which is documented and available for use, so that you may automate any necessary workflows or processes. This API reference documentation contains the most commonly integrated resources.

Authentication

This topic describes the different forms of authentication that are available in the Rebilly API, and how to use them.

Rebilly offers four forms of authentication: secret key, publishable key, JSON Web Tokens, and public signature key.

  • Secret API key: Use to make requests from the server side. Never share these keys. Keep them guarded and secure.
  • Publishable API key: Use in your client-side code to tokenize payment information.
  • JWT: Use to make short-life tokens that expire after a set period of time.

Manage API keys

To create or manage API keys, select one of the following:

For more information on API keys, see API keys.

Errors

Rebilly follows the error response format proposed in RFC 9457, which is also known as Problem Details for HTTP APIs. As with any API responses, your client must be prepared to gracefully handle additional members of the response.

SDKs

Rebilly provides a JavaScript SDK and a PHP SDK to help interact with the Rebilly API. However, no SDK is required to use the API.

Rebilly also provides FramePay, a client-side iFrame-based solution, to help create payment tokens while minimizing PCI DSS compliance burdens and maximizing your customization ability. FramePay interacts with the payment tokens creation operation.

JavaScript SDK

For installation and usage instructions, see SDKs. All JavaScript SDK code examples are included in the API reference documentation.

PHP SDK

For installation and usage instructions, see SDKs. All SDK code examples are included in the API reference documentation. To use them, you must configure the $client as follows:

$client = new Rebilly\Client([
    'apiKey' => 'YourApiKeyHere',
    'baseUrl' => 'https://api.rebilly.com',
]);

Get started

The full Rebilly API has over 500 operations. This is likely more than you may need to implement your use cases. If you would like to implement a particular use case, contact Rebilly for guidance and feedback on the best API operations to use for the task.

To integrate Rebilly, and learn about related resources and concepts, see Get started.

Rate limits

Rebilly enforces rate limits on the API to ensure that no single organization consumes too many resources. Rate limits are applied to the organization, and not to the API key. In sandbox environment, rate limits are enforced for non-GET endpoints and are set at 3000 requests per 10 minutes. You can find the exact number of consumed requests in the X-RateLimit-Limit and X-RateLimit-Remaining headers in the response. If the rate limit is exceeded, the API returns a 429 Too Many Requests response and a X-RateLimit-Retry-After header that includes a UTC timestamp of when the rate limit resets.

Download OpenAPI description
Languages
Servers
Mock server
https://www.rebilly.com/_mock/docs/dev-docs/api/
Sandbox server
https://api-sandbox.rebilly.com/organizations/{organizationId}/
Live server
https://api.rebilly.com/organizations/{organizationId}/

Customers

Use these operations to manage customers. A customer is an entity that purchases goods or services from you (a merchant), and is the payee in any transaction that is credited to you. Customers are associated with payment instruments, subscriptions, invoices, and other related resources.

In other systems, customers may be referred to as accounts, clients, members, patrons, or players. For information on the customer resource, see Resources.

Operations

Customer authentication

Use these operations to validate the identity of users and manage authentication credentials.

Operations

Tags

Use tags to organize and categorize customers or KYC documents based on keywords.

Operations

Customers timeline

Use customer timelines to maintain an audit trail of changes and activity for each customer.

Operations

Payment instruments

Use these operations to manage payment instruments. Payment instrument is a term which describes any means of making a digital payment, such as: credit cards, debit cards, direct debits, payment service providers, and digital wallets.

For more information on payment instruments, see Payment instruments.

OperationsWebhooks

Payment tokens

Use payment tokens to reduce the scope of PCI DSS compliance.

A payment token can be made using a different authentication scheme (public key authentication), which enables you to create a payment token directly from the browser. This bypasses the need to send sensitive cardholder info to your servers. We recommend using this with the FramePay library, which helps you integrate a form into this API resource and create payment tokens.

Operations

Transactions

Use these operations to:

  • set up payment instruments for payments
  • authorize and hold funds
  • capture funds
  • make payments
  • make payouts
  • refund transactions.
Operations

Disputes

Use these operations to manage disputes. A dispute occurs when a customer contests a charge to their account. The dispute and related information is made available to the merchant by the bank or credit card company. The merchant then has the option to represent the charge and win the case. This process is called dispute resolution. If the merchant is unable to represent the charge, the card issuer typically reverses the sale and adds fees on top of the charge. This process is called a chargeback.

OperationsWebhooks

Fees

Use fees to reconcile transactions with applicable fees and discount rates. Fees are not applied directly to transaction amounts, they do not modify the transaction amount. Fees help to describe each part of the transaction amount.

Important: These operations are experimental and may change.

Operations

Transactions timeline

Use transaction timelines to maintain an audit trail of changes and activity for each transaction.

Operations

Orders

Use these operations to manage customer orders. An order is a customer's request to purchase items. It can contain subscription and one-time sale items. When an order contains one or more subscription items, it is a subscription order.

An order generates an invoice. A subscription order generates an invoice for each service period. For more information, see Orders.

Operations

Retrieve orders

Request

Retrieves a list of orders.

Query
filterstring

Filters the collection items. This field requires a special format. Use , for multiple allowed values. Use ; for multiple fields.

For more information, see Using filter with collections.

sortArray of strings

Sorts and orders the collection of items. To sort in descending order, prefix with -. Multiple fields can be sorted by separating each with ,.

limitinteger[ 0 .. 1000 ]

Limits the number of collection items to be returned.

offsetinteger[ 0 .. 1000 ]

Specifies the starting point within the collection of items to be returned.

qstring

Use this field to perform a partial search of text fields.

expandstring

Expand a response to receive a full related object in the _embedded path.

To expand multiple objects, use a comma-separated list. Example: expand=recentInvoice,initialInvoice.

Available arguments are:

  • customer
  • leadSource
  • website
  • shippingRate
  • initialInvoice
  • recentInvoice
  • upcomingInvoice
  • paymentInstrument

For more information, see Expand to include embedded objects.

curl -i -X GET \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/subscriptions?expand=string&filter=string&limit=1000&offset=1000&q=string&sort=string' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

List of subscriptions retrieved.

Headers
Pagination-Totalinteger

Total number of items.

Example:

332

Pagination-Limitinteger

Maximum number of items per page.

Example:

100

Pagination-Offsetinteger

Specifies the starting point within the collection of resource results. For example, a request with limit=20 retrieves and displays the first 20 results on a page. A following request with limit=20 and offset=20, retrieves the next page of 20 results.

Example:

2

Bodyapplication/jsonArray [
idstring<= 50 charactersread-only

ID of the order.

Example:

"sub_01HRF27SATGE4Z6PBJE6PD8328"

orderIdstring<= 50 charactersread-only

ID of the order (experimental).

Example:

"ord_01HVKA5975PJBSQ1SX72G3MSZC"

orderTypestringrequired

Specifies the type of order. An order may be a subscription or a one-time purchase.

Value"subscription-order"
Discriminator
customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

renewalReminderTimestring or null(date-time)read-only

Date and time when the renewal reminder event triggers.

renewalReminderNumberinteger or nullread-only

Number of triggered renewal reminder events.

trialReminderTimestring or null(date-time)read-only

Date and time when the trial reminder event triggers.

trialReminderNumberinteger or nullread-only

Number of triggered trial reminder events.

abandonReminderTimestring or null(date-time)read-only

Date and time when the abandon order reminder event triggers.

abandonReminderNumberinteger or nullread-only

Number of abandon order reminder events that are triggered.

organizationIdstring<= 50 charactersread-only

Unique organization identifier. An organization is an entity that represents a company. For more information, see Obtain an organization ID.

Example:

"org_0YVDM8RC7GDADADSBSMW124JA8"

statusstringread-only

Status of the subscription service. A subscription starts in the pending status, and becomes active when the service period begins.

Enum"pending""active""abandoned""canceled""churned""paused""voided""completed""trial-ended"
inTrialbooleanread-only

Specifies if the subscription is currently in a trial period.

trialobject

Trial details. To use plan defaults do not send the trial key, or send a null value.

isTrialOnlyboolean

Specifies if a subscription ends after a trial period. If this value is true, recurring settings are ignored.

Default false
isTrialConvertedbooleanread-only

Specifies if a subscription had trial conversion. Trial conversion is when at least one successful payment is made on the subscription after a trial.

Example:

true

invoiceTimeShift(InvoiceTimeShift (object or null)) or null

Shifts issue time and due time of invoices for this subscription.

This setting overrides plan settings. To use plan settings, set this value to null.

To use multiple plans in one subscription, all plans must have the same billing period, this property enables the customer to subscribe to different plans.

Example:

null

One of:

Shifts issue time and due time of invoices for this subscription.

This setting overrides plan settings. To use plan settings, set this value to null.

To use multiple plans in one subscription, all plans must have the same billing period, this property enables the customer to subscribe to different plans.

recurringIntervalobject or null

Recurring interval to override plan settings. To use plan settings, set this value to null.

To use multiple plans in one subscription, all plans must have the same recurring period length.

Example:

null

autopayboolean

Specifies if payment attempts are made automatically. If autopay is enabled, the payment is retrieved from the customer on the renewal date using the payment instrument that is set at paymentInstrumentId, or the default payment instrument on the subscription.

Default true
startTimestring or null(date-time)

Date and time when the subscription starts. If this value is null, the current time is used. This value cannot be more than one service period in the past.

Example:

null

churnTimestring or null(date-time)read-only

Date and time when the subscription is deactivated.

renewalTimestring or null(date-time)

Date and time when the subscription renews.

rebillNumberinteger or nullread-only

Current billing period number.

lineItemsArray of objectsDeprecatedread-only

Subscription line items which queue until the next renewal, or interim, invoice is issued for the subscription.

lineItemSubtotalobjectread-only

Subtotal of line items in this subscription (signed value). If credits exceed debits, this value is a negative number.

paymentInstrumentIdstring or null<= 50 characters

ID of the payment instrument to use for autopay. If this value is not provided, or if the payment instrument is inactive, the customer's default payment instrument is used.

Example:

"inst_0YVB8KPKNXCBR9EDX7JHSED75N"

billingStatusstringread-only

Billing status of the most recent invoice. This value may help you to determine if you should change the service status of the service, such as suspending the service.

Enum"draft""unpaid""past-due""abandoned""paid""voided""refunded""disputed""partially-refunded""partially-paid"
websiteIdstring<= 50 charactersrequired
Example:

"web_0YV7DE4Z26DQSA1AC92FBJ7SEG"

currencystring(CurrencyCode)= 3 charactersread-only

Currency code in ISO 4217 format.

initialInvoiceIdstring or null<= 50 charactersread-only

ID of the initial invoice.

Example:

"in_0YVF9605RKC62BP14NE2R7V2XT"

recentInvoiceIdstring or null<= 50 charactersread-only

ID of the most recently issued invoice. The invoice might not be paid yet.

Example:

"in_0YVF9605RKC62BP14NE2R7V2XT"

itemsArray of objects(SubscriptionOrOneTimeSaleItem)non-emptyrequired

Details of items in the order.

items[].idstring<= 50 charactersread-only

ID of the order item.

items[].planIdstring<= 50 charactersDeprecated

ID of the plan.

Example:

"plan_0YV7DENSVGDBW9S71XZNNYYQ0X"

items[].quantityinteger

Number of product units in the specified plan.

items[].quantityFilledinteger

Number of filled product units.

items[].planOriginalPlan (object) or (FlexiblePlan (OneTimeSalePlan (object) or SubscriptionPlan (object) or TrialOnlyPlan (object)))required
Any of:

Use an existing plan without changes for the current order.

To create a new plan, see Create a plan.

items[].plan.idstring(ResourceId)<= 50 charactersrequired

Unique resource ID.

items[].usageLimitsobject

Specifies the soft and hard usage limit thresholds for an item with a metered billing plan. This value is ignored when the plan is not metered.

items[].revisionintegerread-only

Revision number that increments with each overriding change to this specific plan item.

items[].isModifiedbooleanread-only

Specifies if the plan information is modified for this subscription.

items[].isGrandfatheredbooleanread-only

Specifies if the current plan revision number is greater than the plan item revision number.

items[]._embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

deliveryAddressContactObject (object) or null

Delivery address of the order.

One of:

Delivery address of the order.

billingAddressContactObject (object) or null

Billing address of the order.

One of:

Billing address of the order.

activationTimestring or null(date-time)read-only

Date and time when the order is activated.

voidTimestring or null(date-time)read-only

Date and time when the order is voided.

abandonTimestring or null(date-time)

Date and time when the pending order is automatically abandoned. If this value is not passed during order creation, a pending order TTL setting is used to calculate the value.

delinquencyPeriodstring or null

Length of time, in ISO-8601 durations format, which is added to the due time of the order when setting the delinquency time for all related invoices. When the delinquency time of an invoice is reached, the order is automatically canceled.

If the provided value is null, the order does not change state.

Default null
Example:

"P7D"

poNumberstring or null

Purchase order number displayed on the issued invoices.

Example:

"PO123456"

shippingobject(Shipping)

Shipping settings.

notesstring

Notes for the customer displayed on the order invoice.

canceledBystring or nullread-only

Specifies who initiated the cancellation.

Enum"merchant""customer""rebilly"null
cancelCategorystring or nullread-only

Category of the cancellation.

Enum"billing-failure""did-not-use""did-not-want""missing-features""bugs-or-problems""do-not-remember""risk-warning""contract-expired""too-expensive""never-started"
cancelDescriptionstring or null<= 255 charactersread-only

Description of the cancellation reason in free form.

revisionintegerread-only

Number of times the order data has been modified.

The revision is useful when analyzing webhook data to determine if the change takes precedence over the current representation.

riskMetadataobject or null

Risk metadata. If this value is null, this field uses risk metadata that is captured when creating the payment token.

Example:

null

billingPortalTokenstring or nullread-only

Customer JWT to access billing portal. This field is presented only if billing portal exists. This is an experimental field and can be changed or removed in the future.

customFieldsobject(ResourceCustomFields)

Use custom fields to extend a resource scheme to include custom data that is not provided as a common field. For more information, see Custom fields.

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

]
Response
application/json
[ { "id": "sub_01HRF27SATGE4Z6PBJE6PD8328", "orderId": "ord_01HVKA5975PJBSQ1SX72G3MSZC", "orderType": "subscription-order", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "renewalReminderTime": "2019-08-24T14:15:22Z", "renewalReminderNumber": 0, "trialReminderTime": "2019-08-24T14:15:22Z", "trialReminderNumber": 0, "abandonReminderTime": "2019-08-24T14:15:22Z", "abandonReminderNumber": 0, "organizationId": "org_0YVDM8RC7GDADADSBSMW124JA8", "status": "pending", "inTrial": true, "trial": {}, "isTrialOnly": false, "isTrialConverted": true, "invoiceTimeShift": null, "recurringInterval": null, "autopay": true, "startTime": null, "churnTime": "2019-08-24T14:15:22Z", "renewalTime": "2019-08-24T14:15:22Z", "rebillNumber": 0, "lineItems": [], "lineItemSubtotal": {}, "paymentInstrumentId": "inst_0YVB8KPKNXCBR9EDX7JHSED75N", "billingStatus": "draft", "websiteId": "web_0YV7DE4Z26DQSA1AC92FBJ7SEG", "currency": "USD", "initialInvoiceId": "in_0YVF9605RKC62BP14NE2R7V2XT", "recentInvoiceId": "in_0YVF9605RKC62BP14NE2R7V2XT", "items": [], "deliveryAddress": {}, "billingAddress": {}, "activationTime": "2019-08-24T14:15:22Z", "voidTime": "2019-08-24T14:15:22Z", "abandonTime": "2019-08-24T14:15:22Z", "delinquencyPeriod": "P7D", "poNumber": "PO123456", "shipping": {}, "notes": "string", "canceledBy": "merchant", "cancelCategory": "billing-failure", "cancelDescription": "string", "revision": 0, "riskMetadata": null, "billingPortalToken": "string", "customFields": {}, "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "_links": [], "_embedded": {} } ]

Create an order

Request

Creates an order.

To create or update an order with a specified ID, use the Upsert an order operation.

Query
expandstring

Expand a response to receive a full related object in the _embedded path.

To expand multiple objects, use a comma-separated list. Example: expand=recentInvoice,initialInvoice.

Available arguments are:

  • customer
  • leadSource
  • website
  • shippingRate
  • initialInvoice
  • recentInvoice
  • upcomingInvoice
  • paymentInstrument

For more information, see Expand to include embedded objects.

Bodyapplication/jsonrequired

Order resource.

orderTypestringrequired

Specifies the type of order. An order may be a subscription or a one-time purchase.

Value"subscription-order"
Discriminator
customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

trialobject

Trial details. To use plan defaults do not send the trial key, or send a null value.

isTrialOnlyboolean

Specifies if a subscription ends after a trial period. If this value is true, recurring settings are ignored.

Default false
invoiceTimeShift(InvoiceTimeShift (object or null)) or null

Shifts issue time and due time of invoices for this subscription.

This setting overrides plan settings. To use plan settings, set this value to null.

To use multiple plans in one subscription, all plans must have the same billing period, this property enables the customer to subscribe to different plans.

Example:

null

One of:

Shifts issue time and due time of invoices for this subscription.

This setting overrides plan settings. To use plan settings, set this value to null.

To use multiple plans in one subscription, all plans must have the same billing period, this property enables the customer to subscribe to different plans.

recurringIntervalobject or null

Recurring interval to override plan settings. To use plan settings, set this value to null.

To use multiple plans in one subscription, all plans must have the same recurring period length.

Example:

null

autopayboolean

Specifies if payment attempts are made automatically. If autopay is enabled, the payment is retrieved from the customer on the renewal date using the payment instrument that is set at paymentInstrumentId, or the default payment instrument on the subscription.

Default true
startTimestring or null(date-time)

Date and time when the subscription starts. If this value is null, the current time is used. This value cannot be more than one service period in the past.

Example:

null

renewalTimestring or null(date-time)

Date and time when the subscription renews.

paymentInstrumentIdstring or null<= 50 characters

ID of the payment instrument to use for autopay. If this value is not provided, or if the payment instrument is inactive, the customer's default payment instrument is used.

Example:

"inst_0YVB8KPKNXCBR9EDX7JHSED75N"

websiteIdstring<= 50 charactersrequired
Example:

"web_0YV7DE4Z26DQSA1AC92FBJ7SEG"

itemsArray of objects(SubscriptionOrOneTimeSaleItem)non-emptyrequired

Details of items in the order.

items[].planIdstring<= 50 charactersDeprecated

ID of the plan.

Example:

"plan_0YV7DENSVGDBW9S71XZNNYYQ0X"

items[].quantityinteger

Number of product units in the specified plan.

items[].quantityFilledinteger

Number of filled product units.

items[].planOriginalPlan (object) or (FlexiblePlan (OneTimeSalePlan (object) or SubscriptionPlan (object) or TrialOnlyPlan (object)))required
Any of:

Use an existing plan without changes for the current order.

To create a new plan, see Create a plan.

items[].plan.idstring(ResourceId)<= 50 charactersrequired

Unique resource ID.

items[].usageLimitsobject

Specifies the soft and hard usage limit thresholds for an item with a metered billing plan. This value is ignored when the plan is not metered.

deliveryAddressContactObject (object) or null

Delivery address of the order.

One of:

Delivery address of the order.

billingAddressContactObject (object) or null

Billing address of the order.

One of:

Billing address of the order.

abandonTimestring or null(date-time)

Date and time when the pending order is automatically abandoned. If this value is not passed during order creation, a pending order TTL setting is used to calculate the value.

delinquencyPeriodstring or null

Length of time, in ISO-8601 durations format, which is added to the due time of the order when setting the delinquency time for all related invoices. When the delinquency time of an invoice is reached, the order is automatically canceled.

If the provided value is null, the order does not change state.

Default null
Example:

"P7D"

couponIdsArray of strings or nullwrite-only

List of coupons to redeem on the customer and restrict to this order.

For more information, see Coupons.

This parameter uses the following logic:

  • If this parameter is not supplied, applied coupons are not changed.
  • If an empty array is supplied, all applied coupon redemptions are canceled.
  • If a list of coupons is supplied, unapplied coupons in the list are applied. Coupons that have already been applied do not change state. Applied coupons that are not supplied in list are canceled.

If the list of applied coupons on a pending order is changed by this parameter during an order update, the invoice for the order is reissued.

poNumberstring or null

Purchase order number displayed on the issued invoices.

Example:

"PO123456"

shippingobject(Shipping)

Shipping settings.

notesstring

Notes for the customer displayed on the order invoice.

riskMetadataobject or null

Risk metadata. If this value is null, this field uses risk metadata that is captured when creating the payment token.

Example:

null

customFieldsobject(ResourceCustomFields)

Use custom fields to extend a resource scheme to include custom data that is not provided as a common field. For more information, see Custom fields.