Skip to main content

Create percentage-based invoice schedules for professional services during project milestone billing

Zuora

Create percentage-based invoice schedules for professional services during project milestone billing

The Billing Schedule feature allows you to create invoice schedules with percentage-based schedule items for professional service projects in milestone billing. When creating such an invoice schedule, you can select the specific charges to be billed and specify a percentage of the total amount for each invoice schedule item rather than a fixed amount.

If you are uncertain about milestone dates, you can leave run dates blank for invoice schedule items during invoice schedule creation. When specifying run dates for invoice schedule items, keep the following notes in mind:

  • An invoice schedule item with a blank run date will not be executed.
  • You can only update the run date for an invoice schedule item in Pending status.
  • If the run date of an invoice schedule item is left empty, the dates of all subsequent invoice schedule items must also be blank.
  • You must specify run dates in chronological order for invoice schedule items.

Context

In project milestone billing, you might want to deliver professional services to your customers with several major milestones, and bill your customers in several payments by achieving each of the following milestones:

  • Handover To Delivery (HTD)
    Upon the receipt of a purchase order from your customer, you can bill your customer for the first milestone with a specific date.
  • Ready for Use (RFU)
    When the user acceptance testing is approaching the end, you can bill your customer for the second milestone with a specific date. 
  • Go-Live Date (GLD)
    Upon the signing of a handover document, you can bill your customer for the third milestone with a specific date.

For example, a 10/20/70 milestone billing plan indicates that you want to collect 10% payment on receiving a purchase order, 20% payment after the user acceptance testing is complete, and the remaining 70% payment on the date to go live.

When their contracts contain both professional services and recurring charges, you can create custom invoice schedules to bill professional services while leaving the recurring charges to be billed in regular frequencies.

In this use case, you sell your customers different software, licenses, and professional services. Since the contracts contain both professional services and recurring charges, you want to create different invoice schedules to separately bill professional services while leaving the recurring charges to be billed annually.

To comply with the milestone billing plan, you create an order O-00000001 with one subscription S-00000001 containing four rate plan charges as shown in the following table.

Rate plan Rate plan charge name Rate plan charge number Charge type Price Billing period
Rate plan A Software Base Subscription C-00000001 Recurring  $14,000.00 per year Annual
Software User License C-00000002 Recurring $20,000.00 per year Annual
Software A Integration - Professional Service C-00000003 One-time $66,000.00

Custom

Milestone billing: 50/0/50

Software B Implementation - Professional Service C-00000004 One-time $27,000.00

Custom

Milestone billing: 20/30/50

Initially, you do not know any milestone date that depends on the project's progress, so you must specify blank run dates for each invoice schedule item during invoice schedule creation. To bill your customer for professional services in this project, you must create two invoice schedules containing multiple invoice schedule items, each corresponding to one project milestone in chronological order.

  • Invoice schedule IS-0000001 created for charge C-00000003 contains two invoice schedule items, each covering 50% of the total amount. A $0 schedule item is not allowed, so you can create only two schedule items for charge C-00000003.
  • Invoice schedule IS-0000002 created for charge C-00000004 contains three invoice schedule items, covering 20%, 30%, and 50% of the total amount, respectively.

Later, when you know the exact date for one milestone, you can update the run date of the corresponding invoice schedule item to a specific date from blank to collect payment from your customer. 

Create percentage-based invoice schedules during milestone billing through the Zuora UI

To create percentage-based invoice schedules for professional services during milestone billing through the Zuora UI, perform the following steps:

  1. In the upper right of the corresponding order details page, click Create Invoice Schedule.
    The Create Invoice Schedule page is displayed.
  2. In the Basic Information section, specify the charges you want to bill in the invoice schedule.
    1. Click the "Select Subscriptions or Charges" link next to the order number displayed in the Order Number field.
    2. In the Change Subscriptions dialog, expand the arrow next to subscription S-00000001, and then clear the checkbox next to the number of the charges you want to exclude from the invoice schedule.
      In this example, only select the checkbox next to the Software A Integration - Professional Service charge.
    3. Click Done to save the charge number changes.
      The number of the selected charge is displayed under the Specific Order Subscriptions field. In this example, charge C-00000003 is displayed.
  3. In the Schedule Items section, configure information about schedule items contained in the invoice schedule:
    1. Click Add Item With Percentage.
    2. In the Add New Schedule Item dialog, configure schedule item information.
      1. Optional: In the Name field, specify the name of the invoice schedule item, for example, HTD.
      2. In the Run Date field, leave the value blank since the HTD date is unclear. 
      3. In the Percentage field, specify the percentage of the total amount to be billed during the processing of the invoice schedule item.
        In this example, enter 50.
      4. In the Service Start Date field, specify the date when the service starts. 
      5. Click Save to save the invoice schedule item information.
    3. Click Add Schedule Item, and then repeat step 3.b to add one more invoice schedule item that also has 50 as the value of the Percentage field.
  4. In the upper right of the Create Invoice Schedule page, click Create Invoice Schedule.
  5. In the displayed Confirmation dialog, click Yes to confirm invoice schedule creation.

Invoice schedule IS-0000001 is created to bill charge C-00000003, containing two invoice schedule items, each covering 50% of the total charge amount.

You can follow the preceding procedure to create invoice schedule IS-0000002 for charge C-00000004, with the following major differences:

  • Charge selection: Select charge C-00000004 to bill in this invoice schedule.
  • Schedule item configuration: Specify three invoice schedule items, covering 20%, 30%, and 50% of the total amount.

The following table lists the information on the invoice schedules:

Invoice schedule Invoice schedule item Name Run date Percentage Actual amount, automatically calculated
IS-0000001

1

HTD

 

50%

$33,000.00

2

GLD

 

50%

$33,000.00

IS-0000002

1

HTD

 

20%

$54,000.00

2 RFU   30% $81,000.00
3 GLD   50% $135,000.00

Create percentage-based invoice schedules during milestone billing through the REST API

You can use the Create an invoice schedule operation to create percentage-based invoice schedules for professional services during milestone billing.

To create a percentage-based invoice schedule during milestone milling through the REST API, perform the following steps:

  1. Determine the number of each charge that you want to bill in the invoice schedule.
  2. Determine the information that you want to create for each invoice schedule item.
  3. Use the Create an invoice schedule operation to send a a creation request.

In this use case, specific milestone dates are unclear initially, so you do not need to specify the scheduleItemsrunDate field in the API request.

A $0 schedule item is not allowed, so you can create an invoice schedule containing only two schedule items for charge C-00000003, each covering 50% of the total amount.

The following table lists a sample API request that creates an invoice schedule for charge C-00000003, and the corresponding response that is returned. 

Request sample Response sample
{
  "accountKey": "A00000861",
  "orders": [
    "O-00000001"
  ],
  "specificSubscriptions": [
    {
      "orderKey": "O-00000001",
      "subscriptionKey": "S-00000001",
      "chargeNumbers": [
        "C-00000003"
      ]
    }
  ],
  "scheduleItems": [
    {
      "name": "HTD",
      "percentage": 50
    },
    {
      "name": "GLD",
      "percentage": 50
    }
  ],
  "notes": "Milestone Billing for Software A Integration - Professional Service"
}
{
   "id":"fd700c81eb85411cb156c23cd5880389",
   "accountId":"8a90f13b8bf9b15c018bfa08d0eb1587",
   "number":"IS-00000001",
   "notes":"Milestone Billing for Professional Service",
   "status":"Pending",
   "nextRunDate":null,
   "totalAmount":33000.000000000,
   "actualAmount":33000.000000000,
   "billedAmount":0.000000000,
   "unbilledAmount":33000.000000000,
   "scheduleItems":[
      {
         "id":"8a90a04d8c158740018c164f27fe0836",
         "amount":16500.000000000,
         "actualAmount":16500.000000000,
         "percentage":50.000000000,
         "status":"Pending",
         "invoiceId":null,
         "creditMemoId":null,
         "runDate":null,
         "name":"HTD",
         "targetDateForAdditionalSubscriptions":null
      },
      {
         "id":"8a90a04d8c158740018c164f28030837",
         "amount":16500.000000000,
         "actualAmount":16500.000000000,
         "percentage":50.000000000,
         "status":"Pending",
         "invoiceId":null,
         "creditMemoId":null,
         "runDate":null,
         "name":"GLD",
         "targetDateForAdditionalSubscriptions":null
      }
   ],
   "orders":[
      "O-00000001"
   ],
   "specificSubscriptions":[
      {
         "orderKey":"O-00000001",
         "subscriptionKey":"S00000001",
         "chargeNumbers":[
            "C-00000001"
         ]
      }
   ],
   "invoiceSeparately":true,
   "additionalSubscriptionsToBill":[
      
   ],
   "currency":"USD",
   "success":true
}

For charge C-00000004, you can create an invoice schedule containing three invoice schedule items, covering 20%, 30%, and 50% of the total amount, respectively.

The following table lists a sample API request that creates an invoice schedule for charge C-00000004, and the corresponding response that is returned. 

Request sample Response sample
{
  "accountKey": "A00000861",
  "orders": [
    "O-00000001"
  ],
  "specificSubscriptions": [
    {
      "orderKey": "O-00000001",
      "subscriptionKey": "S-00000001",
      "chargeNumbers": [
        "C-00000004"
      ]
    }
  ],
  "scheduleItems": [
    {
      "name": "HTD",
      "percentage": 20
    },
    {
      "name": "RFU",
      "percentage": 30
    },
    {
      "name": "GLD",
      "percentage": 50
    }
  ],
  "notes": "Milestone Billing for Software B Implementation - Professional Service"
}
{
   "id":"fd700c81eb85411cb156c23cd5880389",
   "accountId":"8a90f13b8bf9b15c018bfa08d0eb1587",
   "number":"IS-00000002",
   "notes":"Milestone Billing for Professional Service",
   "status":"Pending",
   "nextRunDate":null,
   "totalAmount":27000.000000000,
   "actualAmount":27000.000000000,
   "billedAmount":0.000000000,
   "unbilledAmount":27000.000000000,
   "scheduleItems":[
      {
         "id":"8a90a04d8c158740018c164f27fe0836",
         "amount":5400.000000000,
         "actualAmount":5400.000000000,
         "percentage":20.000000000,
         "status":"Pending",
         "invoiceId":null,
         "creditMemoId":null,
         "runDate":null,
         "name":"HTD",
         "targetDateForAdditionalSubscriptions":null
      },
      {
         "id":"8a90a04d8c158740018c164f28030837",
         "amount":8100.000000000,
         "actualAmount":8100.000000000,
         "percentage":30.000000000,
         "status":"Pending",
         "invoiceId":null,
         "creditMemoId":null,
         "runDate":null,
         "name":"RFU",
         "targetDateForAdditionalSubscriptions":null
      },
      {
         "id":"8a90a04d8c158740018c164f28030837",
         "amount":13500.000000000,
         "actualAmount":13500.000000000,
         "percentage":50.000000000,
         "status":"Pending",
         "invoiceId":null,
         "creditMemoId":null,
         "runDate":null,
         "name":"GLD",
         "targetDateForAdditionalSubscriptions":null
      }
   ],
   "orders":[
      "O-00000001"
   ],
   "specificSubscriptions":[
      {
         "orderKey":"O-00000001",
         "subscriptionKey":"S00000001",
         "chargeNumbers":[
            "C-00000001"
         ]
      }
   ],
   "invoiceSeparately":true,
   "additionalSubscriptionsToBill":[
      
   ],
   "currency":"USD",
   "success":true
}