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.
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.
To create or manage API keys, select one of the following:
For more information on API keys, see API keys.
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.
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.
For installation and usage instructions, see SDKs. All JavaScript SDK code examples are included in the API reference documentation.
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',
]);
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.
To create and manage API keys, see API keys.
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.
https://www.rebilly.com/_mock/docs/dev-docs/api/
https://api-sandbox.rebilly.com/organizations/{organizationId}/
https://api.rebilly.com/organizations/{organizationId}/
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.
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.
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.
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.
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.
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.
Sorts and orders the collection of items. To sort in descending order, prefix with -
. Multiple fields can be sorted by separating each with ,
.
Specifies the starting point within the collection of items to be returned.
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.
https://www.rebilly.com/_mock/docs/dev-docs/api/subscriptions
https://api-sandbox.rebilly.com/organizations/{organizationId}/subscriptions
https://api.rebilly.com/organizations/{organizationId}/subscriptions
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'
List of subscriptions retrieved.
Specifies the type of order. An order may be a subscription or a one-time purchase.
Note: The order type cannot be changed after creation.
Date and time when the renewal reminder event triggers.
Date and time when the abandon order reminder event triggers.
Number of abandon order reminder events that are triggered.
Unique organization identifier. An organization is an entity that represents a company. For more information, see Obtain an organization ID.
Status of the subscription service. A subscription starts in the pending
status, and becomes active
when the service period begins.
Specifies if a subscription ends after a trial period. If this value is true
, recurring settings are ignored.
Date and time when the subscription had a trial conversion. Trial conversion occurs when the first successful payment is made after a trial period.
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.
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.
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.
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.
Subtotal of line items in this subscription (signed value). If credits exceed debits, this value is a negative number.
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.
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.
ID of the website. A website is where an organization obtains a customer. For more information, see Obtain an organization ID and website ID.
Note: The ID of the website cannot be changed after creation.
ID of the initial invoice.
ID of the most recently issued invoice. The invoice might not be paid
yet.
Details of items in the order.
Use an existing plan without changes for the current order.
To create a new plan, see Create a plan.
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.
Revision number that increments with each overriding change to this specific plan item.
Specifies if the plan information is modified for this subscription.
Specifies if the current plan revision number is greater than the plan item revision number.
Specifies if this item should be excluded from monthly recurring revenue calculations.
Delivery address of the order.
Delivery address of the order.
Billing address of the order.
Billing address of the order.
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.
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 this value is not passed during order creation, an order delinquency period setting is used to calculate the value.
Specifies who initiated the cancellation.
Category of the cancellation.
Description of the cancellation reason in free form.
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.
Risk metadata. If this value is null
, this field uses risk metadata that is captured when creating the payment token.
Risk metadata. If this value is null
, this field uses risk metadata that is captured when creating the payment token.
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.
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.
Date and time which is set automatically when the resource is created.
Date and time which updates automatically when the resource is updated.
Subscription line items which queue until the next renewal, or interim, invoice is issued for the subscription.
[ { "id": "sub_01HRF27SATGE4Z6PBJE6PD8328", "orderType": "subscription-order", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "renewalReminderTime": "2019-08-24T14:15:22Z", "renewalReminderNumber": 0, "abandonReminderTime": "2019-08-24T14:15:22Z", "abandonReminderNumber": 0, "organizationId": "org_0YVDM8RC7GDADADSBSMW124JA8", "status": "pending", "inTrial": true, "trial": { … }, "isTrialOnly": false, "isTrialConverted": true, "trialConversionTime": "2019-08-24T14:15:22Z", "invoiceTimeShift": { … }, "recurringInterval": null, "autopay": true, "startTime": null, "churnTime": "2019-08-24T14:15:22Z", "renewalTime": "2019-08-24T14:15:22Z", "rebillNumber": 0, "lineItems": [ … ], "lineItemSubtotal": { … }, "mrr": 49.95, "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": { … }, "billingPortalToken": "string", "customFields": { … }, "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "_links": [ … ], "_embedded": { … } } ]
Creates an order.
To create or update an order with a specified ID, use the Upsert an order operation.
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.
Order resource.
Specifies the type of order. An order may be a subscription or a one-time purchase.
Note: The order type cannot be changed after creation.
Specifies if a subscription ends after a trial period. If this value is true
, recurring settings are ignored.
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.
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.
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.
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.
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.
ID of the website. A website is where an organization obtains a customer. For more information, see Obtain an organization ID and website ID.
Note: The ID of the website cannot be changed after creation.
Details of items in the order.
Use an existing plan without changes for the current order.
To create a new plan, see Create a plan.
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.
Specifies if this item should be excluded from monthly recurring revenue calculations.
Delivery address of the order.
Delivery address of the order.
Billing address of the order.
Billing address of the order.
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.
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 this value is not passed during order creation, an order delinquency period setting is used to calculate the value.
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 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.
Risk metadata. If this value is null
, this field uses risk metadata that is captured when creating the payment token.
Risk metadata. If this value is null
, this field uses risk metadata that is captured when creating the payment token.
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.
https://www.rebilly.com/_mock/docs/dev-docs/api/subscriptions
https://api-sandbox.rebilly.com/organizations/{organizationId}/subscriptions
https://api.rebilly.com/organizations/{organizationId}/subscriptions
curl -i -X POST \
'https://www.rebilly.com/_mock/docs/dev-docs/api/subscriptions?expand=string' \
-H 'Content-Type: application/json' \
-H 'REB-APIKEY: YOUR_API_KEY_HERE' \
-d '{
"orderType": "subscription-order",
"customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF",
"trial": {
"enabled": true,
"endTime": "2019-08-24T14:15:22Z"
},
"isTrialOnly": false,
"invoiceTimeShift": {
"issueTimeShift": {
"chronology": "before",
"duration": 1,
"unit": "second"
},
"dueTimeShift": {
"duration": 1,
"unit": "hour"
}
},
"recurringInterval": null,
"autopay": true,
"startTime": null,
"renewalTime": "2019-08-24T14:15:22Z",
"paymentInstrumentId": "inst_0YVB8KPKNXCBR9EDX7JHSED75N",
"websiteId": "web_0YV7DE4Z26DQSA1AC92FBJ7SEG",
"currency": "USD",
"items": [
{
"planId": "plan_0YV7DENSVGDBW9S71XZNNYYQ0X",
"quantity": 0,
"quantityFilled": 0,
"plan": {
"id": "4f6cf35x-2c4y-483z-a0a9-158621f77a21"
},
"usageLimits": null,
"excludeFromMrr": true
}
],
"deliveryAddress": {
"firstName": "Benjamin",
"lastName": "Franklin",
"organization": "Rebilly",
"address": "36 Craven St",
"address2": "string",
"city": "Austin",
"region": "Texas",
"country": "GB",
"postalCode": "WC2N 5NF",
"phoneNumbers": [
{
"label": "main",
"value": "1-512-777-0269",
"primary": true
}
],
"emails": [
{
"label": "main",
"value": "rebilly@example.com",
"primary": true
}
],
"dob": "1980-04-01",
"jobTitle": "CEO"
},
"billingAddress": {
"firstName": "Benjamin",
"lastName": "Franklin",
"organization": "Rebilly",
"address": "36 Craven St",
"address2": "string",
"city": "Austin",
"region": "Texas",
"country": "GB",
"postalCode": "WC2N 5NF",
"phoneNumbers": [
{
"label": "main",
"value": "1-512-777-0269",
"primary": true
}
],
"emails": [
{
"label": "main",
"value": "rebilly@example.com",
"primary": true
}
],
"dob": "1980-04-01",
"jobTitle": "CEO"
},
"abandonTime": "2019-08-24T14:15:22Z",
"delinquencyPeriod": "P7D",
"couponIds": [
"string"
],
"poNumber": "PO123456",
"shipping": {
"amount": 0.1,
"calculator": "manual"
},
"notes": "string",
"riskMetadata": {
"ipAddress": "93.92.91.90",
"fingerprint": "pIUt3xbgX3l9g3YDiLbx",
"httpHeaders": {
"Content-Type": "application/json",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
},
"browserData": {
"colorDepth": 24,
"isJavaEnabled": true,
"language": "en-US",
"screenWidth": 1920,
"screenHeight": 1080,
"timeZoneOffset": 300,
"isAdBlockEnabled": true
},
"extraData": {
"kountFraudSessionId": "abcdefg12345abababab123456789012",
"payPalMerchantSessionId": "dd65ratxc5qv15iph3vyoq7l6davuowa",
"threatMetrixSessionId": "dd65ratxc5qv15iph3vyoq7l6davuowadd65ratxc5qv15iph3vyoq7l6davuowa"
}
},
"customFields": {
"foo": "bar"
}
}'
Order created.
Total number of rate limit tokens for this request within a rate limit period. For more information, see Rate limits.
Specifies the type of order. An order may be a subscription or a one-time purchase.
Note: The order type cannot be changed after creation.
Date and time when the renewal reminder event triggers.
Date and time when the abandon order reminder event triggers.
Number of abandon order reminder events that are triggered.
Unique organization identifier. An organization is an entity that represents a company. For more information, see Obtain an organization ID.
Status of the subscription service. A subscription starts in the pending
status, and becomes active
when the service period begins.
Specifies if a subscription ends after a trial period. If this value is true
, recurring settings are ignored.
Date and time when the subscription had a trial conversion. Trial conversion occurs when the first successful payment is made after a trial period.
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.
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.
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.
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.
Subtotal of line items in this subscription (signed value). If credits exceed debits, this value is a negative number.
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.
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.
ID of the website. A website is where an organization obtains a customer. For more information, see Obtain an organization ID and website ID.
Note: The ID of the website cannot be changed after creation.
ID of the initial invoice.
ID of the most recently issued invoice. The invoice might not be paid
yet.
Details of items in the order.
Use an existing plan without changes for the current order.
To create a new plan, see Create a plan.
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.
Revision number that increments with each overriding change to this specific plan item.
Specifies if the plan information is modified for this subscription.
Specifies if the current plan revision number is greater than the plan item revision number.
Specifies if this item should be excluded from monthly recurring revenue calculations.
Delivery address of the order.
Delivery address of the order.
Billing address of the order.
Billing address of the order.
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.
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 this value is not passed during order creation, an order delinquency period setting is used to calculate the value.
Specifies who initiated the cancellation.
Category of the cancellation.
Description of the cancellation reason in free form.
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.
Risk metadata. If this value is null
, this field uses risk metadata that is captured when creating the payment token.
Risk metadata. If this value is null
, this field uses risk metadata that is captured when creating the payment token.
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.
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.
Date and time which is set automatically when the resource is created.
Date and time which updates automatically when the resource is updated.
{ "id": "sub_01HRF27SATGE4Z6PBJE6PD8328", "orderType": "subscription-order", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "renewalReminderTime": "2019-08-24T14:15:22Z", "renewalReminderNumber": 0, "abandonReminderTime": "2019-08-24T14:15:22Z", "abandonReminderNumber": 0, "organizationId": "org_0YVDM8RC7GDADADSBSMW124JA8", "status": "pending", "inTrial": true, "trial": { "enabled": true, "endTime": "2019-08-24T14:15:22Z" }, "isTrialOnly": false, "isTrialConverted": true, "trialConversionTime": "2019-08-24T14:15:22Z", "invoiceTimeShift": { "issueTimeShift": { … }, "dueTimeShift": { … } }, "recurringInterval": null, "autopay": true, "startTime": null, "churnTime": "2019-08-24T14:15:22Z", "renewalTime": "2019-08-24T14:15:22Z", "rebillNumber": 0, "lineItems": [ { … } ], "lineItemSubtotal": { "currency": "USD", "amount": 49.95 }, "mrr": 49.95, "paymentInstrumentId": "inst_0YVB8KPKNXCBR9EDX7JHSED75N", "billingStatus": "draft", "websiteId": "web_0YV7DE4Z26DQSA1AC92FBJ7SEG", "currency": "USD", "initialInvoiceId": "in_0YVF9605RKC62BP14NE2R7V2XT", "recentInvoiceId": "in_0YVF9605RKC62BP14NE2R7V2XT", "items": [ { … } ], "deliveryAddress": { "firstName": "Benjamin", "lastName": "Franklin", "organization": "Rebilly", "address": "36 Craven St", "address2": "string", "city": "Austin", "region": "Texas", "country": "GB", "postalCode": "WC2N 5NF", "phoneNumbers": [ … ], "emails": [ … ], "dob": "1980-04-01", "jobTitle": "CEO", "hash": "056ae6d97c788b9e98b049ebafd7b229bf852221" }, "billingAddress": { "firstName": "Benjamin", "lastName": "Franklin", "organization": "Rebilly", "address": "36 Craven St", "address2": "string", "city": "Austin", "region": "Texas", "country": "GB", "postalCode": "WC2N 5NF", "phoneNumbers": [ … ], "emails": [ … ], "dob": "1980-04-01", "jobTitle": "CEO", "hash": "056ae6d97c788b9e98b049ebafd7b229bf852221" }, "activationTime": "2019-08-24T14:15:22Z", "voidTime": "2019-08-24T14:15:22Z", "abandonTime": "2019-08-24T14:15:22Z", "delinquencyPeriod": "P7D", "poNumber": "PO123456", "shipping": { "amount": 0.1, "calculator": "manual" }, "notes": "string", "canceledBy": "merchant", "cancelCategory": "billing-failure", "cancelDescription": "string", "revision": 0, "riskMetadata": { "ipAddress": "93.92.91.90", "fingerprint": "pIUt3xbgX3l9g3YDiLbx", "httpHeaders": { … }, "browserData": { … }, "extraData": { … }, "isProxy": true, "isVpn": true, "isTor": true, "isHosting": true, "hostingName": "string", "isp": "string", "country": "US", "region": "NY", "city": "New York", "latitude": 0.1, "longitude": 0, "postalCode": "string", "timeZone": "America/New_York", "accuracyRadius": 0, "distance": 0, "hasMismatchedBillingAddressCountry": true, "hasMismatchedBankCountry": true, "hasMismatchedTimeZone": true, "hasMismatchedHolderName": true, "hasFakeName": true, "isHighRiskCountry": true, "paymentInstrumentVelocity": 0, "declinedPaymentInstrumentVelocity": 0, "deviceVelocity": 0, "ipVelocity": 0, "emailVelocity": 0, "billingAddressVelocity": 0, "paymentInstrumentApprovedTransactionCount": 0, "score": 0 }, "billingPortalToken": "string", "customFields": { "foo": "bar" }, "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "_links": [ { … } ], "_embedded": { "recentInvoice": {}, "initialInvoice": {}, "customer": {}, "website": {}, "leadSource": {}, "shippingRate": {}, "paymentInstrument": {}, "upcomingInvoice": {} } }
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.
https://www.rebilly.com/_mock/docs/dev-docs/api/subscriptions/{id}
https://api-sandbox.rebilly.com/organizations/{organizationId}/subscriptions/{id}
https://api.rebilly.com/organizations/{organizationId}/subscriptions/{id}
curl -i -X GET \
'https://www.rebilly.com/_mock/docs/dev-docs/api/subscriptions/{id}?expand=string' \
-H 'REB-APIKEY: YOUR_API_KEY_HERE'
Order retrieved.
Specifies the type of order. An order may be a subscription or a one-time purchase.
Note: The order type cannot be changed after creation.
Date and time when the renewal reminder event triggers.
Date and time when the abandon order reminder event triggers.
Number of abandon order reminder events that are triggered.
Unique organization identifier. An organization is an entity that represents a company. For more information, see Obtain an organization ID.
Status of the subscription service. A subscription starts in the pending
status, and becomes active
when the service period begins.
Specifies if a subscription ends after a trial period. If this value is true
, recurring settings are ignored.
Date and time when the subscription had a trial conversion. Trial conversion occurs when the first successful payment is made after a trial period.
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.
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.
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.
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.
Subtotal of line items in this subscription (signed value). If credits exceed debits, this value is a negative number.
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.
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.
ID of the website. A website is where an organization obtains a customer. For more information, see Obtain an organization ID and website ID.
Note: The ID of the website cannot be changed after creation.
ID of the initial invoice.
ID of the most recently issued invoice. The invoice might not be paid
yet.
Details of items in the order.
Use an existing plan without changes for the current order.
To create a new plan, see Create a plan.
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.
Revision number that increments with each overriding change to this specific plan item.
Specifies if the plan information is modified for this subscription.
Specifies if the current plan revision number is greater than the plan item revision number.
Specifies if this item should be excluded from monthly recurring revenue calculations.
Delivery address of the order.
Delivery address of the order.
Billing address of the order.
Billing address of the order.
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.
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 this value is not passed during order creation, an order delinquency period setting is used to calculate the value.
Specifies who initiated the cancellation.
Category of the cancellation.
Description of the cancellation reason in free form.
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.
Risk metadata. If this value is null
, this field uses risk metadata that is captured when creating the payment token.
Risk metadata. If this value is null
, this field uses risk metadata that is captured when creating the payment token.
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.
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.
Date and time which is set automatically when the resource is created.
Date and time which updates automatically when the resource is updated.
{ "id": "sub_01HRF27SATGE4Z6PBJE6PD8328", "orderType": "subscription-order", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "renewalReminderTime": "2019-08-24T14:15:22Z", "renewalReminderNumber": 0, "abandonReminderTime": "2019-08-24T14:15:22Z", "abandonReminderNumber": 0, "organizationId": "org_0YVDM8RC7GDADADSBSMW124JA8", "status": "pending", "inTrial": true, "trial": { "enabled": true, "endTime": "2019-08-24T14:15:22Z" }, "isTrialOnly": false, "isTrialConverted": true, "trialConversionTime": "2019-08-24T14:15:22Z", "invoiceTimeShift": { "issueTimeShift": { … }, "dueTimeShift": { … } }, "recurringInterval": null, "autopay": true, "startTime": null, "churnTime": "2019-08-24T14:15:22Z", "renewalTime": "2019-08-24T14:15:22Z", "rebillNumber": 0, "lineItems": [ { … } ], "lineItemSubtotal": { "currency": "USD", "amount": 49.95 }, "mrr": 49.95, "paymentInstrumentId": "inst_0YVB8KPKNXCBR9EDX7JHSED75N", "billingStatus": "draft", "websiteId": "web_0YV7DE4Z26DQSA1AC92FBJ7SEG", "currency": "USD", "initialInvoiceId": "in_0YVF9605RKC62BP14NE2R7V2XT", "recentInvoiceId": "in_0YVF9605RKC62BP14NE2R7V2XT", "items": [ { … } ], "deliveryAddress": { "firstName": "Benjamin", "lastName": "Franklin", "organization": "Rebilly", "address": "36 Craven St", "address2": "string", "city": "Austin", "region": "Texas", "country": "GB", "postalCode": "WC2N 5NF", "phoneNumbers": [ … ], "emails": [ … ], "dob": "1980-04-01", "jobTitle": "CEO", "hash": "056ae6d97c788b9e98b049ebafd7b229bf852221" }, "billingAddress": { "firstName": "Benjamin", "lastName": "Franklin", "organization": "Rebilly", "address": "36 Craven St", "address2": "string", "city": "Austin", "region": "Texas", "country": "GB", "postalCode": "WC2N 5NF", "phoneNumbers": [ … ], "emails": [ … ], "dob": "1980-04-01", "jobTitle": "CEO", "hash": "056ae6d97c788b9e98b049ebafd7b229bf852221" }, "activationTime": "2019-08-24T14:15:22Z", "voidTime": "2019-08-24T14:15:22Z", "abandonTime": "2019-08-24T14:15:22Z", "delinquencyPeriod": "P7D", "poNumber": "PO123456", "shipping": { "amount": 0.1, "calculator": "manual" }, "notes": "string", "canceledBy": "merchant", "cancelCategory": "billing-failure", "cancelDescription": "string", "revision": 0, "riskMetadata": { "ipAddress": "93.92.91.90", "fingerprint": "pIUt3xbgX3l9g3YDiLbx", "httpHeaders": { … }, "browserData": { … }, "extraData": { … }, "isProxy": true, "isVpn": true, "isTor": true, "isHosting": true, "hostingName": "string", "isp": "string", "country": "US", "region": "NY", "city": "New York", "latitude": 0.1, "longitude": 0, "postalCode": "string", "timeZone": "America/New_York", "accuracyRadius": 0, "distance": 0, "hasMismatchedBillingAddressCountry": true, "hasMismatchedBankCountry": true, "hasMismatchedTimeZone": true, "hasMismatchedHolderName": true, "hasFakeName": true, "isHighRiskCountry": true, "paymentInstrumentVelocity": 0, "declinedPaymentInstrumentVelocity": 0, "deviceVelocity": 0, "ipVelocity": 0, "emailVelocity": 0, "billingAddressVelocity": 0, "paymentInstrumentApprovedTransactionCount": 0, "score": 0 }, "billingPortalToken": "string", "customFields": { "foo": "bar" }, "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "_links": [ { … } ], "_embedded": { "recentInvoice": {}, "initialInvoice": {}, "customer": {}, "website": {}, "leadSource": {}, "shippingRate": {}, "paymentInstrument": {}, "upcomingInvoice": {} } }
Use these operations to manage the product usage of a subscription item for metered billing purposes.
Use metered billing when product quantity is unknown to the customer at the moment of creating a subscription. Metered billing is based on reported usage records. Every reported usage updates the quantity of an upcoming invoice item for a specified subscription and a plan. To create a metered billing plan, see Plans.
Use credit memos to provide a customer with store credit. A common use case for using a credit memo is to provide a customer with store credit, rather than a refund, if the customer pays more than they owe or returns a product. For information on the credit memo resource, see Resources.
Use pricing plans to describe how the customer must pay for products.
Rebilly provides the following plan types:
For information on the plans resource, see Plans.
For information on plan pricing, see Pricing formulas.
Use coupons to reward customers, generate sales, or to test new pricing strategies. Coupons enable you to apply different types of discounts to invoices, subscriptions, and pricing plans.
Redeemed coupons are attached to a customer's account. Depending on the coupon restrictions, the redeemed coupons are then applied from the customer's account to subsequent invoices or subscriptions. Redeemed coupons can only be applied to invoices of the same currency.
Once a coupon is redeemed it cannot be modified. You may deactivate a coupon or create a new coupon, but you cannot reuse the same coupon code. If you have a use case where you must reuse the same code, contact Rebilly.
Use quote operations to create and manage quotations. Quotations describe the cost of goods or services to potential customers before they commit to a purchase. A quote contains an initial invoice preview that can be accepted to become an order.
A quote can contain subscription and one-time sale items. When a quote contains one or more subscription items, it is a subscription order quote.
Use blocklists to prevent fraud and criminal activity.
Blocklists are lists of customer attribute values that are blocked from buying from you. For example, if a customer attempts to make a purchase from you with a credit card that is in a blocklist, the transaction is blocked and is not processed.
Before a new transaction is processed in Rebilly, blocklists are examined to check for attributes related to the entity. If a match is detected, the operation is aborted. A blocklist that expires after a period of time is called a greylist.
Use allowlists to exclude specific customer attribute data from risk score checks.
Allowlists are lists of data that are excluded from risk score checks. Allowlists prevent specific data from being added to a blocklist record when a risk score threshold reached.
Use Know Your Customer (KYC) documents to verify your customers identity. The KYC document operations generate a signed link to the Rebilly KYC document gatherer.
Document types:
identity-proof
: Validates a customer's identity.address-proof
: Validates a customer's address.purchase-proof
: Validates a customer's purchase.funds-proof
: Validates that a customer has funds.credit-file-proof
: Verifies that there is an existing credit file with two sources that match the customer's name, DOB, and address.Rebilly parses and analyzes the documents and accepts or rejects them according to a configurable scoring algorithm. When all document types in a KYC request are accepted, the status is fulfilled, and the KYC request fulfilled webhook is sent.
Use Anti-Money Laundering (AML) operations to screen customers and help prevent your business from becoming directly or indirectly involved in criminal activity.
Use AML operations during customer creation, and some transaction processing, to help determine if a potential customer (lead), or customer, has political or economic sanctions against them.
AML operations search the following for screening purposes: Politically Exposed Persons (PEPs) lists, sanction lists, and adverse media lists.
Use custom fields to extend a resource scheme to include custom data that is not provided as a common field. Depending on the resource on which the custom field is added, it may be available in the Rebilly UI.
Example: A custom field called preferredCommunicationChannel
is added to the customer resource. It has two allowed values, which are 'email' and 'phone'.
{
"customFields": {
"preferredCommunicationChannel": "email"
}
}
For detailed information on Rebilly resources, see Resources.
Use the file entity to store files and related metadata. Files can be sorted by size, MIME-type, user-defined tags, and description.
The following methods are available to upload files: multipart/form-data encoded form, RAW POST — by sending the file contents as the POST body, and fetching from URL — by providing the file URL using the 'url' parameter.
Use the attachments entity to link a file to one or multiple objects, such as: customer, dispute, transaction, order, plan, product, invoice, or timeline comment. Attachments enable you to quickly find and use files related to specific entities.