> ## Documentation Index
> Fetch the complete documentation index at: https://docs.m3ter.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Example 1: Cloud Storage and File Cleanup

> Follow a detailed example with step-by-step instructions on how to set up the pricing metrics, submit test data, generate bills, and verify billing amounts against usage.

<iframe src="https://www.youtube.com/embed/zG9f63hlPFI" title="m3ter Worked Example 1" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />

Suppose you run a SaaS company that provides cloud storage and file cleanup services for corrupted graphics files. You want to charge your customers in US dollars on a monthly basis using the following usage pricing metrics:

* By cumulative volume of corrupted files submitted for storage and cleanup in the month measured in gigabytes, irrespective of how long they remain stored in any given month and irrespective of whether they ever are retrieved. Charge rate is \$0.15 per GB for the first 500GB; \$0.10 per GB thereafter.
* By count of the number of corrupted files submitted for storage and cleanup in the month, charged at \$0.50 per file.
* By an add-on amount each month based on the maximum average clean up processing time required per submitted files in any given month: charged at \$12 for up to 4 seconds maximum average processing; \$25 for up to 6 seconds maximum average processing; \$50 for anything above 6 seconds maximum average processing.

In addition to any usage charges, you want to apply a monthly standing charge of \$20.

This topic provides a worked example and steps you through the setup required to implement this SaaS usage-based pricing (UBP) model. It goes on to show you how to submit some sample usage data against a test Account, generate a Bill for that Account, and check billing amounts against submitted usage.

<Tip>
  **Tip: New to m3ter?** If you are new to m3ter, this worked example step-through topic assumes no prior knowledge of working with the m3ter. The example is intended to give you a quick start experience of m3ter, demonstrating how easily you can set things up to implement UBP for your products and services. You can also see how to ingest some test usage data into the m3ter system and generate sample Bills to check your UBP implementation before deploying it to your live production environment.
</Tip>

## Step 1: Create Product

*Products* represent a product or service that you offer to your end customers. A Meter, Aggregation, Plan Template, Plan, or Pricing typically all belong to a Product.

**To create a Product:**

1. In the Console, select **Products**. The **Products** page opens.
2. Select **Create product**. We'll create a single Product called **Revive Graph Standard**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741704050-example1screen1a.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=b3fe8185128e68fe5d2597cfce9fadb9" style={{ maxWidth:"min(450px, 100%)" }} width="649" height="492" data-path="images/1741704050-example1screen1a.png" />

3. Select **Create product**.

The **Revive Graph Standard** Product can now serve as a container for any Meters, Aggregations, Pricing, Plans, and Plan Templates we'll need for the example.

> **More Details:** [Creating and Managing Products](/guides/creating-and-managing-products)

## Step 2: Set up Meter

*Meters* define the data fields that your system will use to submit usage date to the m3ter platform:

* As well as simple data fields, which collect raw usage data, you can define derived fields that reference and apply calculations to simple fields. For the example, we'll create three data fields and a single derived field to meet the pricing requirements.
* You can create Product-specific Meters or Global Meters. For the example, we'll create a single Meter for our example Product.

**To create a Meter:**

1. Select **Metering**. The **Meters** page opens.
2. In the **Product** drop-down, select **Revive Graph Standard**.
3. Select **Create meter**.

Here's the Meter set up to support the pricing model we want to use in the example:

* **Meter details**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741704513-example1screen6a.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=1e63e0f7868e32a79064048b3d85b1de" style={{ maxWidth:"min(450px, 100%)" }} width="645" height="431" data-path="images/1741704513-example1screen6a.png" />

* **Data fields**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741704638-example1screen6b.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=ab602d173719396d587de8426c891565" style={{ maxWidth:"min(850px, 100%)" }} width="1287" height="361" data-path="images/1741704638-example1screen6b.png" />

* **Derived fields**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741706126-example1screen6c.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=03041634f89ddaeedaed8504c308ff3c" style={{ maxWidth:"min(850px, 100%)" }} width="1286" height="335" data-path="images/1741706126-example1screen6c.png" />

For the example, we've created the **Store N Clean Meter** and added the following fields to capture usage data:

* Three Data Fields of type **Measure**:
  * **GigaByte Store** to collect quantitative data on the file storage volume in Gigabytes.
  * **Graphic File Submits** to collect quantitative data on the number of files submitted.
  * **Process Time** collect quantitative data on the total processing time required to clean files in seconds.
* One Derived Field of type **Measure**:
  * **Processing Average** to reference two of the Data Fields and apply a calculation to derive the average processing time required per set of submitted files.

4. Select **Create meter**.

We now have a single Meter for the example, which we can use to collect usage data on any Account that consumes the **Revive Graph Standard** Product. This metered usage data will serve as the basis for the pricing metrics we want to apply to rate Product consumption.

> **More Details:** [Reviewing Meter Options](/guides/usage-data-meters/reviewing-meter-options) and [Creating Meters](/guides/usage-data-meters/creating-meters)

## Step 3: Define Aggregations

*Aggregations* define how to transform into a single number the individual measurements submitted to a Meter Data Field as usage data. For example, you may choose to simply SUM the submitted usage data values. In this way, Aggregations define the usage-based pricing metrics you'll use to set up pricing for your products and services.

For the usage-based pricing model we want to implement in our example, we'll need to create three Aggregations based on the usage data collected by our **Store N Clean Meter**. Each Aggregation will target a different Meter field to define a pricing metric:

* For cumulative volume of graphic files submitted for storage and cleanup, we'll target the **GigaByte Store** Data Field.
* For number of files submitted for storage and cleanup, we'll target the **Graphic File Submits** Data Field.
* For maximum average clean up processing time, we'll target the **Processing Average** Derived Field.

**To create an Aggregation:**

1. Select **Metering**. The **Meters** page opens.
2. Select **Aggregations**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741708708-example1screen7a.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=e91129f2e0d15eaf3f4b64a22a36f312" style={{ maxWidth:"min(130px, 100%)" }} width="145" height="52" data-path="images/1741708708-example1screen7a.png" />

3. In the **Product** drop-down, select **Revive Graph Standard**.
4. Select **Create aggregation**.

Here's the setup for the first Aggregation:

* **Aggregation details**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741786635-example1screen7b.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=6d4917f97b1151c6970cd0131c7ef1c1" style={{ maxWidth:"min(450px, 100%)" }} width="647" height="427" data-path="images/1741786635-example1screen7b.png" />

* **Meter settings**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741786820-example1screen7c.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=dd5fe2c6de8fa72c6b9d87f0e0b88213" style={{ maxWidth:"min(450px, 100%)" }} width="646" height="264" data-path="images/1741786820-example1screen7c.png" />

* **Aggregation settings**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741787104-example1screen7d.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=92c0f52e9b14d355c24f0839d46533a5" style={{ maxWidth:"min(450px, 100%)" }} width="645" height="656" data-path="images/1741787104-example1screen7d.png" />

The **Gigabyte Store Aggregation** gives us our first pricing metric by:

* Targeting the **Gigabyte Store** field on the **Store N Clean Meter** and uses the **Sum** of the Gigabytes stored.
* We leave the **Quantity per unit** setting at **1**, since we'll configure a tiered pricing by the Gigabyte using this Aggregation.

5. Select **Create Aggregation**.
6. Repeat steps **4.** and **5.** to create another two Aggregations:

Here's the setup for the second Aggregation:

* **Aggregation details**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741787586-example1screen22a.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=9b06e9f00fd65ca41165f375eea0682a" style={{ maxWidth:"min(450px, 100%)" }} width="646" height="430" data-path="images/1741787586-example1screen22a.png" />

* **Meter settings**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741787683-example1screen22b.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=3f6d3d7bc89dcdd3a4ef5b0f6cd081f0" style={{ maxWidth:"min(450px, 100%)" }} width="646" height="264" data-path="images/1741787683-example1screen22b.png" />

* **Aggregation settings**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741787864-example1screen22c.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=274a145b1eaff42cf5d9ef8140aa99ec" style={{ maxWidth:"min(450px, 100%)" }} width="645" height="657" data-path="images/1741787864-example1screen22c.png" />

The **Graphic File Submits Aggregation** gives us our second pricing metric by:

* Targeting the **Graphic File Submits** field on the **Store N Clean Meter** and uses a **Sum** of file submissions.
* We leave the **Quantity per unit** setting at **1**, since we'll configure a flat rate pricing by file submissions using this Aggregation.

Here's the setup for the third Aggregation:

* **Aggregation details**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741789099-example1screen24a.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=38bec02c3c3c86c372af9b4362ecc3fe" style={{ maxWidth:"min(450px, 100%)" }} width="647" height="427" data-path="images/1741789099-example1screen24a.png" />

* **Meter settings**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741789208-example1screen24b.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=f5b75bc2b62888102e187a2c1608f49a" style={{ maxWidth:"min(450px, 100%)" }} width="647" height="263" data-path="images/1741789208-example1screen24b.png" />

* **Aggregation settings**:

<img src="https://mintcdn.com/m3ter/O1qlsc-MFjy-YtIW/images/1744012659-example1screen24d.png?fit=max&auto=format&n=O1qlsc-MFjy-YtIW&q=85&s=dfc70960eb7d1732fc3a31f312200420" style={{ maxWidth:"min(450px, 100%)" }} width="648" height="659" data-path="images/1744012659-example1screen24d.png" />

The **Processing Average Aggregation** gives us our third pricing metric by:

* Targeting the **Processing Average** derived field on the **Store N Clean Meter** and uses the **Maximum** value resulting from the calculation built into the field.
* We leave the **Quantity per unit** setting at **1**, since we'll configure a tiered pricing by number of seconds using this Aggregation.

> **More Details:** [Reviewing Aggregation Options](/guides/usage-data-aggregations/reviewing-aggregation-options) and [Creating Aggregations](/guides/usage-data-aggregations/creating-aggregations)

## Step 4: Create Product Plan

*Plans* represent a pricing plan for one of your products or services. A Plan is always derived from a Plan Template and inherits settings from the Plan Template which control billing operations, such as billing frequency and currency. You can override some of these settings when you create a Plan from a Plan Template. To meet the example requirements:

* First, we'll need a Plan Template for the **Revive Graph Standard** Product. We'll configure the Plan Template:
  * For monthly billing using a specific billing currency.
  * To include for a Standing charge to be applied for each billing period.
* Second, we can then create a Product Plan based on the Plan Template. The Plan will then inherit the monthly billing frequency and Standing charge billing amount from the Plan Template.

**To create a Product Plan Template:**

1. Select **Pricing**. The **Plans** page opens.
2. Select **Plan templates**:

<img src="https://mintcdn.com/m3ter/oeuaCNcFX2U2FQoq/images/1741789776-example1screen50.png?fit=max&auto=format&n=oeuaCNcFX2U2FQoq&q=85&s=27986d1d7a2ab218bc7a1ea2ab3decd1" style={{ maxWidth:"min(130px, 100%)" }} width="157" height="52" data-path="images/1741789776-example1screen50.png" />

The **Plan templates** page opens.

3. In the **Product** drop-down, select **Revive Graph Standard**.
4. Select **Create plan template**. The **Create** page opens.

Here's the setup for the **Plan template details**:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741790285-example1screen30a.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=98a6f8db6795dafe84b80aa99130d637" style={{ maxWidth:"min(450px, 100%)" }} width="647" height="623" data-path="images/1741790285-example1screen30a.png" />

For the **Revive Graph Standard Plan Template** we've:

* Chosen **US dollars** as the billing currency.
* Selected a monthly **Bill frequency** with a **Bill interval** of **1**, which means Accounts put on the Plan will receive a Bill each month for a month's period of usage.

5. Configure the settings for **Standing charge** and **Minimum spend** amounts:

* **Standing charge** settings:
  * Set a **Standing charge** of **\$20** per month as required for the example.
  * For **Standing charge billing**, leave **Use organization-wide configuration** checked for **(In arrears)**.
  * Set **Standing charge interval** at **1** to charge this amount on every monthly Bill.
  * Set **Standing charge offset** at **0** to apply this charge from the first Bill.
  * Enter a **Standing charge description** if you wish - this will show against the Standing charge line items on customer Bills.

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741790654-example1screen30b.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=a23b1460618ebf23198e147e7f85702d" style={{ maxWidth:"min(450px, 100%)" }} width="646" height="556" data-path="images/1741790654-example1screen30b.png" />

* **Minimum spend** settings:
  * Omit a **Product minimum spend** per billing period, since this is not required for the example.

6. Select **Create plan template**. You are returned to the **Plan template details** page for the new template.

We can now proceed to create a Product Plan for the example based on this template.

7. Select **Plans**:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741791046-example1screen50a.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=b0d8f4c2f5ab51c528907d24b124d4f6" style={{ maxWidth:"min(100px, 100%)" }} width="92" height="51" data-path="images/1741791046-example1screen50a.png" />

The **Plans** page opens.

8. In the **Product** drop-down, select **Revive Graph Standard**.
9. Select **Create plan**. The **Create** page opens.

Here's the **Plan details** setup:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741791446-example1screen33a.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=6c8bc47d06eb008abb5159583e36999a" style={{ maxWidth:"min(450px, 100%)" }} width="648" height="645" data-path="images/1741791446-example1screen33a.png" />

Note that we don't need to do any Plan template overrides for **Standing charge** or **Minimum spend** amounts we want to apply for the example - we configured the **Revive Graph Standard Template** for the required **Standing charge** amount of \$20 per month, and our new **Revive Graph Standard** **Plan** will inherit this setting from the template.

10. Select **Create plan**. You are returned to the **Plan details** page.

In the next step, we can price this Plan using our Aggregations.

> **More Details:** [Reviewing Options for Plan Templates and Plans](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates) and [Creating Plans](/guides/plans-and-pricing/working-with-plan-templates-and-plans/creating-plans)

## Step 5: Price Product Plan

*Pricing* allows you to configure the cost of usage data under a specific Plan you apply to an Account, and is used to calculate bills.

We can use the Pricing editor in the Console to quickly price up our Product Plan to meet the pricing requirements for the example.

**To price Product Plan:**

1. Select **Pricing**. The **Pricing** page opens.
2. Select **Pricing editor**:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741799875-example1screen50b.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=74bb418b6cf031cd7f32bf3890f7ca22" style={{ maxWidth:"min(130px, 100%)" }} width="148" height="55" data-path="images/1741799875-example1screen50b.png" />

The **Pricing editor** opens.

3. In the **Product** drop-down, select **Revive Graph Standard**.
4. Select **Add plans**. The **Select plans** dialog opens and lists all Plans created for the **Revive Graph Standard** Product.
5. Check **Revive Graph Standard Plan** and select **Confirm**:

* The dialog closes and the Plan is added to the **Pricing editor** page.
* A warning shows telling you: **No active pricing configured**.

We'll use the Aggregations we created at **Step 3** as usage-based metrics to price the Plan in accordance with the requirements set out in the example.

6. Click **Add aggregations**. A **Select aggregations** dialog appears and lists all Aggregations created for the **Revive Graph Standard** Product.

* Note that you might also see *global* Aggregations listed for selection. Global Aggregations are not tied to any specific Product and can be used to price Plans across all Products.

7. On the dialog check our three Aggregations:

* **GigaByte Store Aggregation**
* **Graphic File Submits Aggregation**
* **Processing Average Aggregation**

8. Click **Confirm**. The dialog closes and the selected Aggregations are added to the **Pricing editor** for the added Plan. You'll see **No** **active pricing configured** warnings for the Plan for each of the selected Aggregations.
9. In the pricing grid, select **Create plan pricing** for the **GigaByte Stored Aggregation**. The **Create** pricing page opens:

* You can read off details of the Aggregation being used to create the pricing at the top of the page.
* You can **Switch to wizard** if you want and follow an alternative streamlined pricing workflow by **Pricing type** selection. For the example workflow, we'll continue with the default **Advanced** pricing workflow format.

10. Work down the form to enter:

* **Pricing details**:
  * **Start** and **End** date/times for the period the pricing will be active for the Plan.
  * A **Description** that will appear for any usage charge line items on Bills, such as **Storage Charges**.
* **Minimum spend settings**:
  * Ignore these settings - there was no requirement for the example to impose minimum spend amounts for billing.
* **Pricing settings**:
  * Leave the **Usage accumulates over the entire plan contract period** switch in the default position of disabled.
  * Leave the **Apply as** setting as the default - **Debit**.
  * **Pricing type**: The pricing requirement was to charge by cumulative volume of corrupted files submitted for storage and cleanup in the month measured in gigabytes - charge rate is \$0.15 per GB for the first 500GB; \$0.10 per GB thereafter. We can implement this pricing, using a **Tiered** pricing structure with two pricing bands configured:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741801881-example1screen12a.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=5950289b19d3e51db15d728ca94ec20d" style={{ maxWidth:"min(700px, 100%)" }} width="968" height="369" data-path="images/1741801881-example1screen12a.png" />

11. Select **Create pricing**. The **Create** pricing page closes and the pricing using the Aggregation is shown as active in the pricing grid:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741802139-example1screen13a.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=ece0a5d927f8676499d604d3bfca8e1e" style={{ maxWidth:"min(500px, 100%)" }} width="689" height="469" data-path="images/1741802139-example1screen13a.png" />

12. Repeat steps **9.** to **11.**, using the other two Aggregations we created for pricing the Plan, and use a suitable pricing type and structure for each pricing:

* **Graphic File Submits Aggregation**. The pricing requirement was to charge by count of the number of corrupted files submitted for storage and cleanup in the month, charged at \$0.50 per file. We can use a **Tiered** structure with a single pricing band without limit to impose this flat rate pricing:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741802601-example1screen14a.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=6eea7a2736a2603db74823336a8188d1" style={{ maxWidth:"min(700px, 100%)" }} width="968" height="293" data-path="images/1741802601-example1screen14a.png" />

* **Processing Average**. The pricing requirement was to charge by an add-on amount each month based on maximum average clean up processing time required per submitted files: charged at \$12 for up to 4 seconds average processing; \$25 for up to 6 seconds average processing; \$50 for anything above 6 seconds average processing. We can use a **Stairstep** pricing type to impose this pricing:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741802951-example1screen15a.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=1c80ee7c1ac0f225330d27c94bc4685b" style={{ maxWidth:"min(700px, 100%)" }} width="966" height="438" data-path="images/1741802951-example1screen15a.png" />

13. When you have saved the further two pricings, each will also show as **Active Pricing** for the Plan in the grid:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741803857-example1screen28b.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=97e96c9fe8c6fb0da8739ce649364e30" style={{ maxWidth:"min(450px, 100%)" }} width="540" height="853" data-path="images/1741803857-example1screen28b.png" />

We now have a Product Plan priced according to the pricing requirements.

> **More Details:** [Reviewing Pricing Options for Plans and Plan Templates](/guides/plans-and-pricing/pricing-plans/reviewing-pricing-options-and-pricing-plans) and [Pricing Plans and Plan Templates](/guides/plans-and-pricing/pricing-plans/pricing-plans).

## Step 6: Create Test Account and Attach Priced Plan

*Accounts* represent one of your end-customers, and contain an end-customer's name and contact details:

* When you attach a priced Plan to an Account, this creates a link between them to create an *Account Plan*. An Account Plan determines the charges incurred by customers who consume the Product the Plan is priced for.

For this step, we'll create a test Account for the example and attach our priced Plan to it.

**To create a test Account and attach Plan:**

1. In the main Console navigation, select **Accounts**. The **Accounts** page opens.
2. Select **Create account**. The **Create** page opens.
3. Enter the **Account details**:

* **Name** and **Code**. Required fields.
  * Note that when you enter a **Name** and click in the **Code** field, a default code is entered based on the name you've entered, which you can then edit as required.
* **Email Address**. In addition to **Name** and **Code**, this is also a required field:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741872723-example1screen51.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=f62dd6a2779c60a48e9b2547a0ac8f79" style={{ maxWidth:"min(450px, 100%)" }} width="647" height="525" data-path="images/1741872723-example1screen51.png" />

* **Other settings?** For the current example, we can leave the other settings at their defaults:
  * **Address**
  * **Bill settings**
  * **Bill statements**

4. Select **Create account.** You are returned to the **Account details** page with the **Overview** tab selected.

For the worked example, we've created the **Revive Graph Customer 1** test Account.

5. Select the **Attached plans** tab.
6. On the **Active and pending attached plans** panel, select **Create plan** **attachment**. The **Create** page opens.

When you attach a Plan to an Account, you create an *Account Plan*, which lets you define the specific way in which you want the Plan to be applied to the individual Account. Note that the Account Plan you create when you attach the Plan to an Account *is distinct from* the Plan itself - you may want to attach the Plan to another Account but to configure the way the Plan is applied to that other Account differently.

7. On the **Create** page, leave the radio button for **Plan** as default setting and enter the **Plan attachment details**:

* Use the **Product** drop-down to select the Product, which is **Revive Graph Standard** for the example. (*Required*) The **Plan** drop-down is enabled.
* Use the **Plan** drop-down to select the Plan, which is **Revive Graph Standard Plan** for the example. (*Required*)
* Use the pop-up calendars to enter **Start date** (*Required*) and **End date** (*Optional*), which will define the period the Account Plan is active for the Account.

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741873801-example1screen20a.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=c4e74c7714d9ff7ba19cba91564f7ba7" style={{ maxWidth:"min(450px, 100%)" }} width="647" height="464" data-path="images/1741873801-example1screen20a.png" />

* **Plan attachment settings?** For the current example, we can leave the other settings at their defaults

8. Select **Create plan attachment**. On the **Attached plans** tab, the Account Plan is shown on the **Active and pending attached plans** panel:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741873918-example1screen20b.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=a521bb544be420ff6a70ea4849a71424" style={{ maxWidth:"min(750px, 100%)" }} width="1081" height="317" data-path="images/1741873918-example1screen20b.png" />

We now have a **Revive Graph Customer 1** test Account set up that will be billed according to the pricing schema we've configured for the **Revive Graph Standard Plan** for any metered usage of the Product by the Account.

> **More Details:** [Creating an Account](/guides/end-customer-accounts/creating-an-account) and [Attaching Plans to an Account](/guides/end-customer-accounts/attaching-plans-to-an-account)

## Step 7: Submit Data to Test Account and Check Bill

We'll now submit some test usage data to our test Account for the **Store N Clean Meter**, which will allow us to generate a Bill and check that the usage charges on the Bill for the submitted usage data are correct.

1. Select **Accounts**. On the **Accounts** page, select the **NAME** hotlink text of the **Revive Graph Customer 1** test Account we created at **Step 6**. The **Account details** page opens with the **Overview** tab selected.
2. Select **Submit usage**:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741874318-example1screen52.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=cc00b669c2bf4e26bf3ab3d59c54e310" style={{ maxWidth:"min(120px, 100%)" }} width="129" height="54" data-path="images/1741874318-example1screen52.png" />

A **Submit usage data** dialog appears.

To submit usage data measurements for an Account, you must complete two stages using the dialog.

3. Under stage **1: Select a meter**, use the **Meter** drop-down to select the **Store N Clean** Meter and then select **Next**. The dialog adjusts to show stage **2: Define measurements and send:**

* Note that you can complete stage 2 using either a **Simple** or **Advanced** format, where the default is **Simple**.
* For the example, we'll use the **Simple** format to submit our test usage data measurements:
  * **UID**. This field is automatically populated with a unique id for the measurement. For the example, we'll use this as our measurement id.
  * **Timestamp**. The timestamp field is also automatically populated using the date/time the dialog was opened, and again for the example we'll use this as the timestamp for the measurement.
  * **Meter**. The Meter **Code** is automatically entered.
  * **Account**. The **Code** of the Account we're submitting the data measurement for is automatically entered.
  * **Data fields**. The three Data Fields we set up for the Meter are shown with empty **Value** fields.

4. Enter some test data **Values** for each of the Data Fields:

* **GigaByte Store** = 350
* **Graphic File Submits** = 8
* **Process Time** = 29

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741874731-example1screen23a.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=95c4759ed1e65b02b73f52c306d70dfc" style={{ maxWidth:"min(750px, 100%)" }} width="1135" height="877" data-path="images/1741874731-example1screen23a.png" />

<Tip>
  **Tip: Record the Test Data Values!** Keep a record of the test **Values** you've submitted for each of the fields. You can then calculate manually what the respective charges should be when you generate a sample Bill for the Account.
</Tip>

5. Select **Submit usage**. If the measurement is ingested successfully, you'll see a `{"result" : "accepted"}` message under the **Log** section of the **Submit usage data** dialog.
6. For additional test data measurements, repeat steps **3.** to **5.** - for the example, we'll submit two more measurements:

* Second measurement **Values**:
  * **GigaByte Store** = 650
  * **Graphic File Submits** = 12
  * **Process Time** = 53
* Third measurement **Values**:
  * **GigaByte Store** = 550
  * **Graphic File Submits** = 10
  * **Process Time** = 42

7. On the **Account details** page, select the **Bills** tab.
8. On the **Bills** tab, select **Run billing**. The **Run billing** dialog appears.
9. In the example, we are using monthly billing and the test data was submitted in March 2025, so we select:

* April 1st 2025 for **Invoice date**.
* **Monthly** for **Bill Frequency**.

10. Select **Run billing**. The dialog closes and your Bill job is queued.

* You can select the **Running tasks** button at top-right in the Console. This opens the **Running tasks** panel and you can check the status of your Bill job:

<img src="https://mintcdn.com/m3ter/mLLI4d7fxI8XAEOB/images/1741875294-example1screen53.png?fit=max&auto=format&n=mLLI4d7fxI8XAEOB&q=85&s=f7a89a457b409aac3ac590ef45ce819b" style={{ maxWidth:"min(120px, 100%)" }} width="105" height="73" data-path="images/1741875294-example1screen53.png" />

11. When the Bill has generated, it will be listed on the **Bills** tab for the Account. Select the **Reference** hotlink text to open the Bill in **Bill management**.

Before checking a sample Bill we've generated for the Account, we can calculate manually what the cumulative usage charges should be for each part of the usage-based pricing we've implemented:

* **GigaBytes Stored**. The total amounts to 350 + 650 + 550 = 1,550 GiBy. The tiered pricing structure we've set up means the charge for the first 500 at \$0.15 per GiBy = \$75 plus the charge for the remaining 1,050 at \$0.10 per GiBy = \$105. Total = \$180.
* **File Submits**. The total number of files submitted is 30. At the flat rate of \$0.50 per file, the charge = \$15.
* **Processing Average**. The maximum average processing time for the three data submissions results from the second submission, where 12 files were submitted and which required a total of 53 seconds processing time. The average processing time in this case is 53/12 = 4.4167 seconds. Because this is more than 4, charge = \$25.

The Bill for the Account should be the total of these three usage charges = \$220 plus the standing charge of \$20 per billing period, which amounts to  an overall total = \$240.

For the example, we can see that the Bill based on test usage data we submitted has been calculated correctly in accordance with our usage-based pricing schema:

<img src="https://mintcdn.com/m3ter/O1qlsc-MFjy-YtIW/images/1744015055-example1screen29b.png?fit=max&auto=format&n=O1qlsc-MFjy-YtIW&q=85&s=c48cd8ca5d4b0df6960c273308540b0f" style={{ maxWidth:"min(900px, 100%)" }} width="1251" height="837" data-path="images/1744015055-example1screen29b.png" />

**Deploying to Production**: Having submitted some metered test data against a test Account, generated a Bill for the Account, and confirmed that charges are in accordance with our pricing requirements for consumption of our Product, we can be comfortable deploying our usage-based pricing implementation to live production.

> **More Details:** [Submitting Test Usage Data](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data) and [Running Bills Manually](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#running-bills-manually)
