Here are some of the key features of the Kill Bill platform and its ecosystem.
Core Platform
Modularized platform
Kill Bill is not an all-in-one solution: you have the ability to create customized deployments (e.g. disable the subscription system) and even replace functionality with your existing systems (e.g. delegate invoicing to SAP)
It can run as a standalone web service (HTTP REST APIs) or embedded as a library (Java APIs)
Drop-in WAR file, supports major Servlet containers (Jetty, Tomcat, etc.)
Cloud ready (successfully deployed on EC2, Heroku, OpenShift)
Scalability/Fault Tolerance
Stateless multi-nodes deployment configuration
Ability to use a hardware or software load-balancer to route requests to various nodes
Horizontal scaling: simply deploy more instances as your load grows
Event based system
Kill Bill exposes a message bus used by core components to react asynchronously to events: you can register your own webhooks for real-time notifications
Custom plugins can read and write from the bus to implement specific pieces of business logic
The bus provides strong atomicity semantics
Pluggable architecture
Ability to write custom Ruby and Java plugins on top of the platform
Strong isolation layer across plugins but also between plugins and the platform (OSGI)
Auditing
Built-in audit and history for all system changes
Plugs into LDAP / Active Directory if necessary
Multi-tenancy
Supports multiple logical instances on the same deployment
Useful to run multiple stores for example or testing in production
Security
HTTPs support
Role-based access control (RBAC) support
Internationalization
Time Zones and locales support
Templating engine built-in for invoices, email notifications, etc.
Tags/Custom fields
Most objects in Kill Bill can be tagged with arbitrary data
User tags are not interpreted by the system, they are only for administrative purposes
Kill Bill provides a few built-in system tags to change the business logic on a per-object basis (e.g. turn off payments for an account or a single subscription)
Custom fields (key/value pairs) can also be attached to Kill Bill objects to add additional logic by custom plugins or third party apps
Subscription and usage engine
Real time billing and payment
Unless configured otherwise, billing and payment happens immediately on action (creation, modification, deletion) tied to subscriptions
No batch processes
Powerful catalog to drive billing behavior
Product tiers
Multi-phase plans (trial, discount phases, etc.)
Alignments for start/change/cancellation of plans
Granularity for grouping subscriptions on invoices (one or multiple subscriptions per invoice)
Support for add-ons
Pro-ration logic calculation
Invoices are automatically pro-rated upon plan changes (e.g. upgrade)
Tax Support
Support for taxes on invoices
Custom plugins provide regional specific tax rules
Entitlement
Dunning can be configured to define the actions the system should take in case of failed payments
Loose coupling with billing state: a subscription can be paid but entitlement blocked (e.g. the account is still being setup) and entitlement can be granted even if the subscription is overdued (e.g. grace period for large accounts)
Payments
Generic payment API
Support for major flows (hosted pages, API integrations, 3D Secure, etc.)
Support for US and international payment gateways
Support for Card-Present and Card-Not-Present transactions
Support for e-currencies (e.g. Bitcoin)
Payment states
Idempotency for all payment calls
Internal state machine to verify transitions (auth, capture, refund, etc.). The default state machine can be overridden
Optimize gateway calls
Provides all details for tracing and logging
Provides all information for Analytics and reporting layer
Retry logic
Payment retry can be configured, or turned off
Retry logic can be customized through specific plugins
Payment plugins
Support for all major international payment methods: Credit and Debit cards (Visa, MasterCard, Amex, …), Pre-paid cards, PayPal, ACH, …
Support for all major payment gateways: Litle & Co., Adyen, Cybersource, Authorize.NET, Stripe, …
Support for alternative payment methods (cash, SMS, Boleto, …) and e-currencies (Bitcoin and Alt-Coins)
Ecosystem
Administrative user interface (mountable Rails engine)
Payment plugins, support for any ActiveMerchant gateway
Analytics and reporting plugin (provides ability to specify custom views that can be rendered through a web interface)
Any type of plugin can be implemented to interact with the system by receiving events and using rich APIs (CRM plugins, ERP, etc.)
Client libraries
Java
Ruby
PHP
Python, Objective-c, JS/NodeJS (in the works)
Tests
Large number of tests (1,100+):
Unit tests
System tests
Performance tests
Integration tests
Easy setup (to run and/or add tests) either locally (e.g. laptop) or in your private or public cloud