CODE
silver

silver

Silver is an automatic billing app for Django. Silver elegantly handles "telco" billing processes like multiple pricing plans management, automatic bill aggregation, and generation.

Silver has been developed from scratch to handle WordPress hosting billing at Presslabs, as external services were too costly and other existing modules proved too complex to adapt to basic telco needs.

Install silver Read the documentation

gears

Features

wallet

Automated billing

Adding a cron job will trigger invoice generation for your customers.

text

Consolidated billing

Silver generates a single invoice for all the subscriptions of a customers.

box

Multiple invoicing workflows

Are you using for example proforma invoices or just invoices? No problem. Silver can handle both.

layout

Administration panel

Use the intuitive Django admin panel to gain fine-grained control on the data stored in Silver.

image

PDF templates created using HTML and CSS

Use the ubiquitous HTML and CSS to create highly-customisable and beautiful templates for your invoices.

keyboard

RESTful API and REST hooks

Clean, fully tested and fully documented RESTful API for easy integration with other (micro)services.

disk_alt

On or off-premises document storage

Local, Amazon S3, Azure Storage, Rackspace CloudFiles, etc. Tell Silver your preferences in settings.py and it will comply.

python

Easy to integrate with other Django-based applications

Just install it by using pip, add it to the INSTALLED_APPS setting and you are ready to go.

Get started with Silver

  • 1 Create your profile as a service provider
  • 2 Add your pricing plans to the mix
  • 3 Import/add your customers
  • 4 Create subscriptions to the desired plans for your customers
  • 5 Create your custom templates using HTML/CSS or use the ones already provided
  • 6 Generate the invoices, manually for the first time.
  • 7 Lay back for the next billing cycle if you've added billing generation in a cron.
gears

Billing entities overview

The state transitions of the main billing entities.

Issue Cancel Pay DRAFT ISSUED CANCELED PAID START
bulb

Billing document state machine

The two types of documents: invoice and proforma invoice, with their possible states. A document, on creation is automatically in a draft state.

Activate End Activate Cancel INACTIVE ACTIVE CANCELED START END
bulb

Subscription state machine

The subscription represents the connection between a plan and a customer. When a subscription transitions to a new state, the corresponding billing documents are issued automatically.

gears

Glossary

Definition for terms used within the application

  • Plan contains the details for a billing plan.
  • MeteredFeature defines the features that are going to be a part of the plan. E.g.: pageviews, number of downloads, etc.
  • ProductCode the product codes will be associated to either a plan or a metered feature.
  • Provider defines the details of a provider (seller).
  • Customer defines the details of a customer.
  • Subscription is one of the main models of the application, as it allows to connect a customer to a plan and it also provides a way for doing the "bookkeeping" operations.
  • MeteredFeaturesUnitsLog allows storing the consumed units of a service provided by the provider that integrates the Silver app.
  • Invoice defines an invoice.
  • Proforma defines a proforma invoice.
  • DocumentEntry defines an invoice or proforma entry. It will contain details such as the description of the entry, consumed units, price per unit, etc.
  • BillingLog stores information about when a subscription was billed last time and the associated invoice or proforma.
download_alt

Install silver

Here are the required steps to install silver on your machine

1

Install

Install the dependencies and the package itself.

sudo apt-get build-dep python-imaging
pip install django-silver
2

Configure

Add the following to your project settings file

INSTALLED_APPS = (
    ...,
    'silver',
    ...
    )
3

Enjoy

Silver is now ready to be used in your application.

Feel free to use and contribute

Contributions in the form of issues, bug reports, feature proposals or good old pull requests in the project repo are all equally welcome!