Invoicing configurations

What are invoicing configurations?

Invoicing configurations refer to the setup of rules and parameters that determine how invoices are generated, delivered, and scheduled. These configurations address aspects such as the billing target (which payment service to use), invoice delivery (advance or arrears), and the schedule (e.g., monthly or annual) to accommodate different pricing strategies and operational requirements.

How does invoicing configuration relate to packaging?

Packaging can be a configuration medium for invoicing logic. This makes sense, since invoicing logic is often shared between products that are grouped together. A pricebook or price can have a plethora of attributes related to invoicing. When is an invoice created? Where should it be sent? Is it delivered in advance or in arrears? These are questions that can be answered in the packaging layer.

Why are invoicing configurations important?

Externally, specific customer segments expect different types of invoicing logic. For example, some customers would like to pay a fixed price up front for predictability in spend. While others will desire pay-as-you-go to ensure there is value before a larger commitment. Without offering this level of flexibility, it is difficult to serve a diverse set of customers.

Internally, administration workflows often require custom invoicing configurations. For example, billing often requires specific fields to determine where a customers invoice is sent.

How are invoicing configurations modeled?

bframe stores three different invoicing configurations on pricebooks and prices:

  1. billing_target

  2. invoice_delivery

  3. invoice_schedule

Their purpose and technical configuration are detailed below.

Billing target

Often, a business will require multiple different payment and billing services. This is usually due to services offering unique value propositions. Stripe might be a great fit for a self-service flow, while NetSuite might be a better fit for an enterprise sale. This need makes it important to store additional metadata within a business model’s configuration to understand where the billing actually occurs. The billing_target serves this purpose on the pricebook.

image0

To demonstrate the use case, let’s look at a need within our Wikipedia case study. Let’s say Wikipedia’s business primarily sells to the United States and uses Stripe as its primary billing vendor. Wikipedia wants to launch new pricing for German customers, but (as of writing this) Stripe doesn’t support invoicing in Germany. This introduces a requirement to change the billing target for these invoices.

By using the price segmentation concept, they could model this by creating separate pricebooks per region. Using the billing_target on the pricebook, they can then route German invoices to bill.com and US invoices to Stripe.

Pricebooks

id

durable_id

name

billing_target

invoice_delivery

invoice_schedule

created_at

1

a

Standard (United States)

STRIPE

ARREARS

1

2023-11-01

3

c

Standard (Germany)

BILL

ARREARS

1

2023-11-01

Invoice delivery

Invoices can be delivered in advance or in arrears. An invoice delivered in advance will occur at the beginning of the invoice schedule, while an invoice delivered in arrears is delivered at the end of the schedule.

Advanced

Only products with fixed pricing can be invoiced in advance. This delivery method is beneficial because cash is collected immediately, or even before provisioning the customer’s account. Advanced invoices can reduce fraud, provide operational liquidity and potentially limit short term churn. There are, however, several disadvantages to invoicing in advance. Refunds and chargebacks may increase, as customers cannot retroactively cancel the service. Some prospective customers may choose not to purchase since they can’t try before they buy. To mitigate this phenomenon vendors will often offer trials or discounts to reduce the barrier to entry. While these tactics are effective, each carries a step-up in overhead.

This is what quarterly invoicing in advanced could look like:

Pricebooks

id

durable_id

name

billing_target

invoice_delivery

invoice_schedule

created_at

4

d

Standard

ADVANCED

3

2023-11-01

image2

Arrears

Invoicing in arrears is easy to manage and provides significant pricing flexibility. An invoice typically will come a day or two after the billing period has ended. The customer will then proceed to pay the bill… or not. In the case where a customer doesn’t pay the bill, there is a chance of delinquency or fraud. This is one of the main issues with invoicing after the customer has already used the product.

This is what quarterly invoicing in arrears could look like:

Pricebooks

id

durable_id

name

billing_target

invoice_delivery

invoice_schedule

created_at

5

e

Standard

ARREARS

3

2023-11-01

image3

Invoice schedule

The recurring nature of billing is determined by the invoice schedule. Whether the invoice is delivered once or every month is based on the configuration. A top level schedule is detailed at the invoice level (e.g. on the pricebook). Invoices can be created on any schedule, but practically, most schedules are on a recurring or one time basis versus something irregular. There are numerous schedules employed: monthly, bi-monthly, quarterly, annual, etc. but the vast majority of cases are on a monthly basis.

While monthly is certainly the most common, that doesn’t mean other durations aren’t important. One conventional packaging strategy offers a package with a monthly invoice schedule alongside a cheaper package with an annual invoice schedule. This tactic attempts to lock customers into an annual plan upfront in exchange for a discount.

When applying this strategy to the Wikipedia case study the main update would be to the “Platform fee”. This would result in a pricebook with an annual invoice schedule and another with monthly. The annual plan would also be discounted by $200 to incentivize customers to select the plan.

List prices, Products, Pricebooks

products.id

products.name

pricebooks.durable_id

pricebooks.name

list_prices.id

list_prices.price

invoice_delivery

invoice_schedule

list_prices.created_at

3

Platform fee

f

Standard

12

100.00

ADVANCED

1

2023-11-01

3

Platform fee

g

Standard

13

1000.00

ADVANCED

12

2023-11-01

image1

Regardless of the sales strategy, a business model must be flexible enough to support multiple invoice schedules. Support for each schedule must also flow through the entire system. For example, reporting monthly recurring revenue requires amortizing annual revenue on a monthly basis. A simple and practical way to deal with multiple schedules is to pick an atomic unit. Since most invoices are delivered monthly, the best unit for determining an invoice schedule is a month. Therefore, a quarterly invoicing schedule would be on a 3-month basis, an annual invoicing schedule would be on a 12-month basis, and so on. This limits bframe from modeling invoice schedules on a shorter basis, like weekly, but the simplicity gained is well worth the shortcomings.