Single-Tier single AMI with MariaDB

Perfect for prototyping and test environments

Launch
Multi-Tier CloudFormation with Amazon Aurora

Production ready setup in minutes (most popular)

Launch
Multi-Tier single AMI with external database

Fully customizable production environment (advanced users)

Launch

New! AWS deployments now come with free initial Slack support, register here.

Overview

The core development team publishes official images on the AWS Marketplace, which allow you to quickly get started with Kill Bill in the cloud. There are several strategies and AMIs to target different use cases:

  1. Single AMI Deployments: Both Kill Bill server and KAUI, the administrative UI, run in the same EC2 instance.

  2. Cloud Formation Deployments: The Cloud Formation Template will deploy auto-scaling groups of instances for Kill Bill server and KAUI, and create an RDS database instance. There is a separate AMI for Kill Bill server and for KAUI.

So, which one to chose?

Cloud Formation Deployments offer a better integration with the rest of the AWS ecosystem, by relying on auto-scaling groups to scale both Kill Bill and KAUI instances independently and also by relying on CloudWatch for metrics. They also offer a 1-click button deployment for the whole stack, incl. the required database. Cloud Formation Deployments are a good option to get a production ready deployment with minimum efforts. Please refer to the specifics of Cloud Formation Deployments.

Single AMI Deployments come in 2 flavors:

  • Single-Tier: In order to quickly get started, we provide an AMI that can be launched with a 1-click button. Both Kill Bill server, KAUI and the database run on one node, so while this is very convenient to get started, this is often a poor option for production deployments.

  • Multi-Tier: In this mode, there is also one single AMI for both Kill Bill server and KAUI, but the deployment will rely on an external database. Typically such deployments will also rely on at least 2 instances for running the Kill Bill stack to provide the right level of redundancy and zero downtime upgrade deployments.

The Single AMI Deployments are a great way to easily get started through the Single-Tier option, but they typically require a bit more setup for production deployments. Please refer to the specifics of the Single AMI Deployments.

The rest of this documentation focuses on configurations that apply to both types of deployments.

Default configuration

Either installation method comes with a default configuration to get you started.

A few plugins are also pre-configured, but not installed: all you need to do is head to the Kaui KPM page and select the plugin(s) of your choice to install.

Invoice templates

Kill Bill invoices can be rendered as HTML using our render HTML invoice API. This can be useful for instance to expose the invoices directly to your customer on the billing section of your website.

The default template looks as such:

invoice html

The text can be customized and translated. To do so, create file InvoiceTranslation_en_US.properties with the following content (adjust the values on the right side of the = sign as needed):

companyName=Acme Corporation
companyAddress=57 Academy Drive
companyCityProvincePostalCode=Oak Creek, WI 53154
companyCountry=US
invoiceTitle=Invoice
invoiceDate=Invoice Date:
invoiceAmount=Total:
invoiceAmountPaid=Amount Paid:
invoiceBalance=Balance:
invoiceItemServicePeriod=Service Period
invoiceItemDescription=Plan
invoiceItemAmount=Amount

and upload it to Kaui by going to your admin tenant page (InvoiceTranslation) tab:

invoice html config

Additional languages can be uploaded for each locale (e.g. specify fr_FR for French).

More details are available in our Internationalization userguide, including how to fully customize the template.

Email notifications

SMTP configuration

The plugin needs to be configured with an SMTP server to be able to send emails. The easiest to set it up on AWS is with SES.

Once you have obtained your credentials, update the plugin configuration:

email notifications config

Templates

The plugin comes with a preconfigured set of email templates.

For instance, this is the email which will be sent when an invoice is generated:

invoice email

This is what the user will receive when a subscription is cancelled:

cancellation email

The default set of translation strings are:

upcomingInvoiceAdditionalMessage=Here's a preview of your upcoming invoice
upcomingInvoiceSubject=Your upcoming invoice
invoiceCreationAdditionalMessage=Thank you for your prompt payment!
invoiceCreationSubject=Your recent invoice
successfulPaymentAdditionalMessage=Thank you for your recent payment!
successfulPaymentSubject=Your recent payment
failedPaymentAdditionalMessage=We were not able to process your payment!
failedPaymentSubject=Your recent payment
paymentRefundAdditionalMessage=Your refund has been processed!
paymentRefundSubject=Your recent payment
companyName=Acme Corporation
companyAddress=57 Academy Drive
companyCityProvincePostalCode=Oak Creek, WI 53154
companyCountry=US
invoicePrefix=INV#
invoiceTitle=Invoice
invoiceDate=Invoice Date:
invoiceAmount=Total:
invoiceAmountPaid=Amount Paid:
invoiceBalance=Balance:
invoiceItemServicePeriod=Service Period
invoiceItemDescription=Plan
invoiceItemAmount=Amount
paymentTitle=Payment
paymentDate=Payment Date:
paymentAmount=Total:
subscriptionCancellationRequestedAdditionalMessage=The following subscription will be cancelled
subscriptionCancellationRequestedSubject=Your subscription will be cancelled
subscriptionCancellationEffectiveAdditionalMessage=The following subscription has been cancelled
subscriptionCancellationEffectiveSubject=Your subscription has been cancelled
subscriptionTitle=Subscription
subscriptionEndDate=End Date:
susbscriptionPlan=Plan:

More details on how to update these and update the HTML templates are available in the plugin documentation.

Analytics plugin

The plugin comes with a few pre-configured reports:

  • Subscriptions creation: count the number of subscriptions being created per day (effective on that day, i.e. pending subscriptions are ignored). Refreshed every hour. The name of the report is report_new_subscriptions_daily.

  • Effective cancellations: count the number of subscriptions being canceled per day (only effective cancellations are taken into account: end of term cancellations are ignored for instance). Refreshed every hour. The name of the report is report_cancellations_daily.

  • Overdue accounts: count the number of overdue accounts per day (defined as having a negative balance, i.e. owing money). Refreshed once a day at 6am GMT. The name of the report is report_overdue_accounts_daily.

In order to make these reports active, they must be enabled on a per tenant level. Assuming a bob/lazar tenant, we can active the reports using the following command — e.g. report=report_cancellations_daily:

#
# Activate report report_cancellations_daily for tenant bob/lazar:
#
curl -v \
-X PUT \
-u admin:password \
-H "X-Killbill-ApiKey:bob" \
-H "X-Killbill-ApiSecret:lazar" \
-H 'Content-Type: application/json' \
-d '{}' \
'http://127.0.0.1:8080/plugins/killbill-analytics/reports/report_cancellations_daily?shouldRefresh=true'

Custom reports can be added by following our Analytics guide.

analytics reports