# Create Account Source: https://docs.m3ter.com/api/account/create-account https://api.m3ter.com/spec post /organizations/{orgId}/accounts Create a new Account within the Organization. # Delete Account Source: https://docs.m3ter.com/api/account/delete-account https://api.m3ter.com/spec delete /organizations/{orgId}/accounts/{id} Delete the Account with the given UUID. This may fail if there are any AccountPlans that reference the Account being deleted. # End-date Account billing entities Source: https://docs.m3ter.com/api/account/end-date-account-billing-entities https://api.m3ter.com/spec put /organizations/{orgId}/accounts/{id}/enddatebillingentities Apply the specified end-date to billing entities associated with an Account. **NOTE:** - When you successfully end-date billing entities, the version number of each entity is incremented. # Account Endpoints Source: https://docs.m3ter.com/api/account/introduction Endpoints for Account related operations such as creation, update, list and delete. An Account represents one of your end-customer accounts. Accounts do not belong to a Product to allow for cases where an end customer takes more than one of your Products, and the charges for these Products differ. You typically attach a priced Plan or Plan Template to an Account before you can generate bills for the Account: * If a customer consumes several of your Products, you can attach a priced Plan or Plan Template to the Account for charging against each Product. * If an Account is charged solely on the basis of an agreed Prepayment/Commitment amount but not all of the Prepayment is prepaid, you can use a customized billing schedule for outstanding fees without having to attach a Plan to the Account to generate Bills. You can create Child Accounts for end customers who hold multiple Accounts with you. You can then set up billing for the Parent/Child Account usage to have the end-customer billed once for the Parent Account, instead of having separate bills issued for usage against each of their multiple Accounts. **IMPORTANT! - use of PII:** The use of any of your end-customers' Personally Identifiable Information (PII) in m3ter is restricted to a few fields on the **Account** entity. Please ensure that only the `name`, `address`, or `emailAddress` fields contain any end-customer PII data on any Accounts you create. See the [Introduction section](/api) above for more details. # List Account Children Source: https://docs.m3ter.com/api/account/list-account-children https://api.m3ter.com/spec get /organizations/{orgId}/accounts/{id}/children Retrieve a list of Accounts that are children of the specified Account. # List Accounts Source: https://docs.m3ter.com/api/account/list-accounts https://api.m3ter.com/spec get /organizations/{orgId}/accounts Retrieve a list of Accounts that can be filtered by Account ID or Account Code. # Retrieve Account Source: https://docs.m3ter.com/api/account/retrieve-account https://api.m3ter.com/spec get /organizations/{orgId}/accounts/{id} Retrieve the Account with the given Account UUID. # Search Accounts Source: https://docs.m3ter.com/api/account/search-accounts https://api.m3ter.com/spec get /organizations/{orgId}/accounts/search Search for Account entities. This endpoint executes a search query for Accounts based on the user specified search criteria. The search query is customizable, allowing for complex nested conditions and sorting. The returned list of Accounts can be paginated for easier management. # Update Account Source: https://docs.m3ter.com/api/account/update-account https://api.m3ter.com/spec put /organizations/{orgId}/accounts/{id} Update the Account with the given Account UUID. **Note:** If you have created Custom Fields for an Account, when you use this endpoint to update the Account, use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost. # Create AccountPlan Source: https://docs.m3ter.com/api/accountplan/create-accountplan https://api.m3ter.com/spec post /organizations/{orgId}/accountplans Create a new AccountPlan or AccountPlanGroup. This endpoint creates a new AccountPlan or AccountPlanGroup for a specific Account in your Organization. The details of the new AccountPlan or AccountPlanGroup should be supplied in the request body. **Note:** You cannot use this call to create *both* an AccountPlan and AccountPlanGroup for an Account at the same time. If you want to create both for an Account, you must submit two separate calls. # Delete AccountPlan Source: https://docs.m3ter.com/api/accountplan/delete-accountplan https://api.m3ter.com/spec delete /organizations/{orgId}/accountplans/{id} Delete the AccountPlan or AccountPlanGroup with the given UUID. This endpoint deletes an AccountPlan or AccountPlanGroup that has been attached to a specific Account in your Organization. # Account Plan Endpoints Source: https://docs.m3ter.com/api/accountplan/introduction Endpoints for AccountPlan and AccountPlanGroup related operations such as creation, update, list and delete. ## AccountPlans An Account represents one of your end-customer accounts. To create an AccountPlan, you attach a Product Plan to an Account. The AccountPlan then determines the charges incurred at billing by your end customer for consuming the Product the Plan is for: * **AccountPlan Active/Inactive**. Set start and end dates to define the period the AccountPlan is active for the Account. * **AccountPlan per Product**. If an end customer consumes multiple Products, create separate AccountPlans to charge for each Product. ## AccountPlan - Notes and Constraints * **Multiple AccountPlans:** The default Organization setting imposes the constraint that only one AccountPlan per Product can be active at any one time for an Account. * **Overlapping Plans:** If your billing use case requires you to attach more than one Plan to an Account for the same Product at the same time, then you must first enable the **Allow overlapping attached plans** setting for your Organization. * If you create a Plan as a custom Plan for a specific Account, you can only use it to create an AccountPlan for that Account. ## AccountPlanGroups Plan Groups are used when you want to apply a minimum spend amount at billing across several of your Products each of which are priced separately - when you create the Plan Group, you define an overall minimum spend and then add any priced Plans you want to include in the Group. To create an AccounPlanGroup, you can attach a Plan Group to an Account that consumes the separate Products which are priced using the included Plans. At billing, the minimum spend you've defined for the Plan Group is applied: * **Active AccountPlanGroup**. Set the start and end dates to define the period for which the Plan Group will be active for the Account. ### Plan Group Notes * You can only add *one Plan for the same Product* to a Plan Group. See the [Plan Group](/api/plangroup/introduction) in this API Reference for more details on creating Plan Groups. * You can create a *custom Plan Group* for an Account, which means the Plan Group can only be attached to that Account to create an AccountPlanGroup. ### AcountPlanGroup - Notes and Constraints * **AccountPlanGroup is type of AccountPlan** When you attach a Plan Group to an Account, this creates an AccountPlanGroup. However, the m3ter data model *does not support a separate AccountPlanGroup entity*, and an AccountPlanGroup is a type of AccountPlan where a `planGroupId` is used instead of a `planId` when it's created. See the [Create AccountPlan](/api/accountplan/create-accountplan) call in this section and [Attaching Plan Groups to an Account](/guides/end-customer-accounts/attaching-plan-groups-to-an-account) in our main User Documentation. * **Multiple AccountPlan Groups:** You can attach more than one Plan Group to an Account to create multiple AccountPlanGroups, but the rule that *only one attached Plan per Product can be active at any one time for an Account* is preserved: * Multiple attached Plan Groups on an Account can have overlapping dates only if none of the Plan Groups contain a Plan belonging to the same Product. If you try to attach a Plan Group to an Account with Plan Groups already attached and: * The new Plan Group contains a Product Plan that also belongs to a Plan Group already attached to the Account. * The dates for these "matched Plan" Plan Groups being active for the Account would overlap. * Then you'll receive an error and the attachment will be blocked. * **Overlapping Plans in Plan Groups:** If your billing use case requires you to attach more than one Plan Group to an Account and containing Plans for the same Product at the same time, then you must first enable the **Allow overlapping attached plans** setting for your Organization. # List AccountPlans Source: https://docs.m3ter.com/api/accountplan/list-accountplans https://api.m3ter.com/spec get /organizations/{orgId}/accountplans Retrieves a list of AccountPlan and AccountPlanGroup entities for the specified Organization. The list can be paginated for easier management, and supports filtering with various query parameters. # Replace AccountPlan Source: https://docs.m3ter.com/api/accountplan/replace-accountplan https://api.m3ter.com/spec post /organizations/{orgId}/accountplans/{id}/replace End-dates the specified AccountPlan at the new startDate and creates the new AccountPlan. # Retrieve AccountPlan Source: https://docs.m3ter.com/api/accountplan/retrieve-accountplan https://api.m3ter.com/spec get /organizations/{orgId}/accountplans/{id} Retrieve the AccountPlan or AccountPlanGroup details corresponding to the given UUID. # Update AccountPlan Source: https://docs.m3ter.com/api/accountplan/update-accountplan https://api.m3ter.com/spec put /organizations/{orgId}/accountplans/{id} Update the AccountPlan or AccountPlanGroup with the given UUID. This endpoint updates a new AccountPlan or AccountPlanGroup for a specific Account in your Organization. The updated information should be provided in the request body. **Notes:** * You cannot use this call to update *both* an AccountPlan and AccountPlanGroup for an Account at the same time. If you want to update an AccounPlan and an AccountPlanGroup attached to an Account, you must submit two separate calls. * If you have created Custom Fields for an AccountPlan, when you use this endpoint to update the AccountPlan use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost. # Create Aggregation Source: https://docs.m3ter.com/api/aggregation/create-aggregation https://api.m3ter.com/spec post /organizations/{orgId}/aggregations Create a new Aggregation. # Delete Aggregation Source: https://docs.m3ter.com/api/aggregation/delete-aggregation https://api.m3ter.com/spec delete /organizations/{orgId}/aggregations/{id} Delete the Aggregation with the given UUID. # Aggregation Endpoints Source: https://docs.m3ter.com/api/aggregation/introduction Endpoints for listing, creating, updating, retrieving, or deleting Aggregations. An Aggregation links to a Meter and targets a Data Field or Derived Field on the Meter. You define the method of aggregation used to convert the usage data collected by the targeted Meter field into a numerical unit of measurement. You can then use the unit of measurement an Aggregation yields as a metric for pricing Product Plans and apply usage-based pricing to your products and services. You might also want to aggregate raw data measures for other purposes, such as to feed into analytical or business performance tools. ## Notes * **Contrast with Compound Aggregations**. Standard or simple Aggregations of this type, which apply an aggregation method directly to Meter usage data fields, are contrasted with [Compound Aggregations](/api/compoundaggregation/introduction). A Compound Aggregation typically references one or more simple Aggregations and applies a calculation to them to derive pricing metrics needed to serve more complex usage-based pricing scenarios. * **Segmented Aggregations**. Segmented Aggregations allow you to segment the usage data collected by a single Meter. This capability is very useful for implementing some pricing and billing use cases. See [Segmented Aggregations](/guides/usage-data-aggregations/segmented-aggregations) in our main documentation for more details. # List Aggregations Source: https://docs.m3ter.com/api/aggregation/list-aggregations https://api.m3ter.com/spec get /organizations/{orgId}/aggregations Retrieve a list of Aggregations that can be filtered by Product, Aggregation ID, or Code. # Retrieve Aggregation Source: https://docs.m3ter.com/api/aggregation/retrieve-aggregation https://api.m3ter.com/spec get /organizations/{orgId}/aggregations/{id} Retrieve the Aggregation with the given UUID. # Update Aggregation Source: https://docs.m3ter.com/api/aggregation/update-aggregation https://api.m3ter.com/spec put /organizations/{orgId}/aggregations/{id} Update the Aggregation with the given UUID. **Note:** If you have created Custom Fields for an Aggregation, when you use this endpoint to update the Aggregation use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost. # Get Token Source: https://docs.m3ter.com/api/auth/get-token https://api.m3ter.com/spec post /oauth/token Get authentication token # Auth Endpoints Source: https://docs.m3ter.com/api/auth/introduction Endpoint for retrieving a JSON Web Token (JWT) bearer token for a Service User using the Client Credentials Grant flow. A Service User represents the automated process you want to grant access to your Organization - that is, as an API user. # Authentication and Authorization Source: https://docs.m3ter.com/api/authentication Our APIs use an industry-standard authorization protocol known as the OAuth 2.0 specification. OAuth2 supports several grant types, each designed for a specific use case. m3ter uses the following two grant types: * **Authorization Code**: Used for human login access via the m3ter Console. * **Client Credentials**: Used for machine-to-machine communication and API access. Complete the following flow for API access: Log in to the m3ter Console, go to **Settings**, **Access** then **Service Users** tab, and create a Service User. To enable API calls, grant the user **Administrator** permissions. In the Console, open the *Overview* page for the Service User by clicking on the name. Generate an **Access Key id** and **Api Secret**. Make sure you copy the **Api Secret** because it is only visible at the time of creation. See [Service Authentication](/guides/authenticating-with-the-platform/service-authentication) for detailed instructions and an example. We implement the OAuth 2.0 Client Credentials Grant authentication flow for Service User Authentication. Submit a request to the m3ter OAuth Client Credentials authentication flow, using your concatenated **Access Key id** and **Api Secret** to obtain a Bearer Token for your Service User. *See examples below.* Use the HTTP 'Authorization' header with the bearer token to authorise all subsequent API requests. The Bearer Token is valid for 18,000 seconds or 5 hours. When the token has expired, you must obtain a new one. Below are two examples for obtaining a Bearer Token using Basic Auth: the first in cURL and the second as a Python script. ## cURL Example 1. Open your terminal or command prompt. 2. Use the following `cURL` command to obtain a Bearer Token: ```bash theme={null} curl -X POST https://api.m3ter.com/oauth/token \ -H 'Content-Type: application/x-www-form-urlencoded' \ -u your_access_key_id:your_api_secret \ -d 'grant_type=client_credentials' ``` Replace `your_access_key_id` and `your_api_secret` with your actual **Access Key id** and **Api Secret**. 3. Run the command, and if successful, it will return a JSON response containing the Bearer Token. The response will look like this: ```json theme={null} { "access_token": "your_bearer_token", "token_type": "Bearer", "expires_in": 18000 } ``` You can then use the Bearer Token *(the value of `"access_token"`)* for subsequent API calls to m3ter. ### Python Example 1. Install the `requests` library if you haven't already: ```bash theme={null} pip install requests ``` 2. Use the following Python script to obtain a Bearer Token: ```python theme={null} import requests import base64 # Replace these with your Access Key id and Api Secret access_key_id = 'your_access_key_id' api_secret = 'your_api_secret' # Encode the Access Key id and Api Secret in base64 format credentials = base64.b64encode(f'{access_key_id}:{api_secret}'.encode('utf-8')).decode('utf-8') # Set the m3ter token endpoint URL token_url = 'https://api.m3ter.com/oauth/token' # Set the headers for the request headers = { 'Authorization': f'Basic {credentials}', 'Content-Type': 'application/x-www-form-urlencoded' } # Set the payload for the request payload = { 'grant_type': 'client_credentials' } # Send the request to obtain the Bearer Token response = requests.post(token_url, headers=headers, data=payload) # Check if the request was successful if response.status_code == 200: # Extract the Bearer Token from the response bearer_token = response.json()['access_token'] print(f'Bearer Token: {bearer_token}') else: print(f'Error: {response.status_code} - {response.text}') ``` Replace `your_access_key_id` and `your_api_secret` with your actual **Access Key id** and **Api Secret**. 3. Run the script, and if successful, it will print the Bearer Token. You can then use this Bearer Token for subsequent API calls to m3ter. # Create BalanceChargeSchedule Source: https://docs.m3ter.com/api/balancechargeschedule/create-balancechargeschedule https://api.m3ter.com/spec post /organizations/{orgId}/balances/{balanceId}/balancechargeschedules Create a new BalanceChargeSchedule. # Delete BalanceChargeSchedule Source: https://docs.m3ter.com/api/balancechargeschedule/delete-balancechargeschedule https://api.m3ter.com/spec delete /organizations/{orgId}/balances/{balanceId}/balancechargeschedules/{id} Delete the BalanceChargeSchedule for the given UUID. # Balance Charge Schedule Endpoints Source: https://docs.m3ter.com/api/balancechargeschedule/introduction Endpoints for creating/updating/deleting BalanceChargeSchedules. The BalanceChargeSchedule feature is available in Beta release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Beta release definition. # List BalanceChargeSchedule Source: https://docs.m3ter.com/api/balancechargeschedule/list-balancechargeschedule https://api.m3ter.com/spec get /organizations/{orgId}/balances/{balanceId}/balancechargeschedules Retrieve a list of BalanceChargeSchedule entities # Preview ScheduledBalanceCharges Source: https://docs.m3ter.com/api/balancechargeschedule/preview-scheduledbalancecharges https://api.m3ter.com/spec post /organizations/{orgId}/balances/{balanceId}/balancechargeschedules/preview Previews the Charges this Schedule would create, without persisting them. You can use this call to obtain a preview of the Charges a Schedule you plan to create for a Balance would generate. # Retrieve BalanceChargeSchedule Source: https://docs.m3ter.com/api/balancechargeschedule/retrieve-balancechargeschedule https://api.m3ter.com/spec get /organizations/{orgId}/balances/{balanceId}/balancechargeschedules/{id} Retrieve a BalanceChargeSchedule for the given UUID. # Update BalanceChargeSchedule Source: https://docs.m3ter.com/api/balancechargeschedule/update-balancechargeschedule https://api.m3ter.com/spec put /organizations/{orgId}/balances/{balanceId}/balancechargeschedules/{id} Update a BalanceChargeSchedule for the given UUID. # Create Balance Source: https://docs.m3ter.com/api/balances/create-balance https://api.m3ter.com/spec post /organizations/{orgId}/balances Create a new Balance for the given end customer Account. This endpoint allows you to create a new Balance for a specific end customer Account. The Balance details should be provided in the request body. # Create Balance Transaction Source: https://docs.m3ter.com/api/balances/create-balance-transaction https://api.m3ter.com/spec post /organizations/{orgId}/balances/{balanceId}/transactions Add a Transaction to a Balance. This endpoint allows you to create a new Transaction amount for a Balance. This amount then becomes available at billing for draw-down to cover charges due. The Transaction details should be provided in the request body. Before you can add a Transaction amount, you must first set up Transaction Types at the Organization Level - see the [Transaction Type](https://docs.m3ter.com/api/transactiontype/introduction) section in this API Reference for more details. You can then use this call to add an instance of a Transaction Type to a Balance. **Note:** If you have a customer whose payment is in a different currency to the Balance currency, you can use the `paid` and `paidCurrency` request parameters to record the amount paid and alternative currency respectively. For example, you might add a Transaction amount of 200 USD to a Balance on a customer Account where the customer actually paid you 50 units in virtual currency X. # Delete Balance Source: https://docs.m3ter.com/api/balances/delete-balance https://api.m3ter.com/spec delete /organizations/{orgId}/balances/{id} Delete a specific Balance. This endpoint allows you to delete a specific Balance with the given UUID. # Get Balance Transactions Summary Source: https://docs.m3ter.com/api/balances/get-balance-transactions-summary https://api.m3ter.com/spec get /organizations/{orgId}/balances/{balanceId}/transactions/summary Retrieves the Balance Transactions Summary for a given Balance. The response contains useful recorded and calculated Transaction amounts created for a Balance during the time it is active for the Account, including amounts relevant to any rollover amount configured for a Balance: * `totalCreditAmount`. The sum of all credits amounts created for the Balance. * `totalDebitAmount`. The sum of all debit amounts created for the Balance. * `initialCreditAmount`. The initial credit amount created for the Balance. * `expiredBalanceAmount`. The amount of the Balance remaining at the time the Balance expires and which is not included in any configured Rollover amount. For example,suppose a Balance reaches its end date and 1000 credit remains unused. If the Balance is configured to rollover 800, then the `expiredBalanceAmount` is calculated as 1000 - 800 = 200. * `rolloverConsumed`. The sum of debits made against the configured rollover amount. Note that this amount is dynamic relative to when the API call is made until either the rollover end date is reached or the cap configured for the rollover amount is reached, after which it will be unchanged. If no rollover is configured for a Balance, then this is ignored. * `balanceConsumed`. The sum of debits made against the Balance. Note that this amount is dynamic relative to when the API call is made until either the Balance end date is reached or the available Balance amount reaches zero, after which it will be unchanged. # Balance Endpoints Source: https://docs.m3ter.com/api/balances/introduction Endpoints for creating/retrieving/updating/deleting Balances on Accounts. When you have created a Balance for an Account, you can create a positive or negative Transaction amounts for the Balance. To do this, you must first define Transaction Types for your Organization, and then use one of these Transaction Types when you add a specific Transaction to a Balance - see the [Create TransactionType](/api/transactiontype/create-transactiontype) call in the Transaction Type section in this API Reference for more details. Balances are typically used when a customer prepays an amount to add a credit to their Account, which can then be draw-down against charges due for product or service consumption. You can include options to top-up the original Balance. Examples of how Balances for end customer Accounts can be used: * Onboarding Balance/Free Trials. Offering an onboarding incentive to new customers as an initial free credit Balance on their Account. * Balance as initial commitment. Add a Balance amount to a new customer Account. This acts as an initial commitment, which allows them to use the service and gain an accurate insight into their usage level. * Managing Customer Satisfaction. Use Balance as credits that will be applied to subsequent Bills as compensation for acknowledged service delivery issues. * Facilitating Balance Adjustments: * Apply negative amounts to immediately write-off outstanding Balances. ## What is the difference between Balances and Commitments/Prepayments? To manage credit amounts for your end-customer Accounts, you can use Balances or Commitments/Prepayments. However, these two kinds of credits for Accounts serve different purposes. Commitments - also referred to as Prepayments - are used for amounts end-customers have agreed to pay for consuming your product or services across a full contract term. A customer might pay the entire or only part of the agreed amount upfront, but ***the commitment or prepayment amount is payable regardless of the actual usage by the customer of your service or product.*** In contrast, a Balance - often referred to as a Top-Up or Prepaid draw-down - is used when a customer wants to add a credit amount to their Account at any time during the service period or when you as service provider want to add a credit to a customer Account. This Balance credit can then be drawn-down against for billing the Account for usage, minimum spend, standing charges, or recurring charges due. Balances therefore serve payment use cases in a more flexible way, for example to be used for a "Free Credit" sign-up scheme you offer to encourage sales or to enhance customer satisfaction by adding credit to an Account to compensate for service delivery issues. You can use Commitments/Prepayments and Balances together on Account, and define at Organization or individual Account level the order in which any Balance/Commitment credit on an Account is drawn-down - Balance amounts first or Commitment/Prepayment amounts first. ## Grants Balances can also be enabled as *Grants*. This means you can credit an Account with an amount of pre-rated usage, which can be drawn-down to reduce the amount of usage that is rated and would result in charges against the Account: * For more details, see [Grants](https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/balance-grants) in our main user documentation. * Note the Grants feature is currently only available in Preview release version - see [Feature Release Stages](/guides/getting-started/feature-release-stages). # List Balances Source: https://docs.m3ter.com/api/balances/list-balances https://api.m3ter.com/spec get /organizations/{orgId}/balances Retrieve a list of all Balances for your Organization. This endpoint returns a list of all Balances associated with your organization. You can filter the Balances by the end customer's Account UUID and end dates, and paginate through them using the `pageSize` and `nextToken` parameters. **NOTE:** If a Balance has a rollover amount configured and you want to use the `endDateStart` or `endDateEnd` query parameters, the `rolloverEndDate` is used as the end date/time for the Balance. # List Transactions Source: https://docs.m3ter.com/api/balances/list-transactions https://api.m3ter.com/spec get /organizations/{orgId}/balances/{balanceId}/transactions Retrieve all Transactions for a specific Balance. This endpoint returns a list of all Transactions associated with a specific Balance. You can paginate through the Transactions by using the `pageSize` and `nextToken` parameters. # Retrieve Balance Source: https://docs.m3ter.com/api/balances/retrieve-balance https://api.m3ter.com/spec get /organizations/{orgId}/balances/{id} Retrieve a specific Balance. This endpoint returns the details of the specified Balance. # Update Balance Source: https://docs.m3ter.com/api/balances/update-balance https://api.m3ter.com/spec put /organizations/{orgId}/balances/{id} Update a specific Balance. This endpoint allows you to update the details of a specific Balance. The updated Balance details should be provided in the request body. # Create BalanceTransactionSchedule Source: https://docs.m3ter.com/api/balancetransactionschedule/create-balancetransactionschedule https://api.m3ter.com/spec post /organizations/{orgId}/balances/{balanceId}/balancetransactionschedules Create a new BalanceTransactionSchedule. # Delete BalanceTransactionSchedule Source: https://docs.m3ter.com/api/balancetransactionschedule/delete-balancetransactionschedule https://api.m3ter.com/spec delete /organizations/{orgId}/balances/{balanceId}/balancetransactionschedules/{id} Delete the BalanceTransactionSchedule for the given UUID. # Balance Transaction Schedules Endpoints Source: https://docs.m3ter.com/api/balancetransactionschedule/introduction Endpoints for creating/updating/deleting BalanceTransactionSchedules. The BalanceTransactionSchedule feature is available in Beta release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Beta release definition. # List BalanceTransactionSchedule Source: https://docs.m3ter.com/api/balancetransactionschedule/list-balancetransactionschedule https://api.m3ter.com/spec get /organizations/{orgId}/balances/{balanceId}/balancetransactionschedules Retrieve a list of BalanceTransactionSchedule entities. # Preview ScheduledBalanceTransactions Source: https://docs.m3ter.com/api/balancetransactionschedule/preview-scheduledbalancetransactions https://api.m3ter.com/spec post /organizations/{orgId}/balances/{balanceId}/balancetransactionschedules/preview Previews the BalanceTransactions this Schedule would create, without persisting them. You can use this call to obtain a preview of the Transactions a Schedule you plan to create for a Balance would generate. # Retrieve BalanceTransactionSchedule Source: https://docs.m3ter.com/api/balancetransactionschedule/retrieve-balancetransactionschedule https://api.m3ter.com/spec get /organizations/{orgId}/balances/{balanceId}/balancetransactionschedules/{id} Retrieve a BalanceTransactionSchedule for the given UUID. # Update BalanceTransactionSchedule Source: https://docs.m3ter.com/api/balancetransactionschedule/update-balancetransactionschedule https://api.m3ter.com/spec put /organizations/{orgId}/balances/{balanceId}/balancetransactionschedules/{id} Update a BalanceTransactionSchedule for the given UUID. # Approve Bills Source: https://docs.m3ter.com/api/bill/approve-bills https://api.m3ter.com/spec post /organizations/{orgId}/bills/approve Approve multiple Bills for the specified Organization based on the given criteria. This endpoint allows you to change currently *Pending* Bills to *Approved* status for further processing. Query Parameters: - Use `accountIds` to approve Bills for specifed Accounts. Request Body Schema Parameter: - Use `billIds` to specify a collection of Bills for batch approval. **Important!** If you use the `billIds` Request Body Schema parameter, any Query parameters you might have also used are ignored when the call is processed. # Approve Bills in Billing Period Source: https://docs.m3ter.com/api/bill/approve-bills-in-billing-period https://api.m3ter.com/spec post /organizations/{orgId}/bills/billingperiod/{lastDateInBillingPeriod}/{billingFrequency}/approve Approve all Bills within a specified billing period. This endpoint allows you to approve Bills on various frequencies, such as daily, weekly, monthly, or annually. Specify the last day of the period to define the range. For example, to approve all Bills on monthly billing up to September with due date of 1st of month, use the last day of September, which is September 30th. # Create Bill Statement in CSV Format Source: https://docs.m3ter.com/api/bill/create-bill-statement-in-csv-format https://api.m3ter.com/spec post /organizations/{orgId}/bills/{id}/statement/csv Generate a specific Bill Statement for the provided Bill UUID in CSV format. Bill Statements are backing sheets to the invoices sent to your customers. Bill Statements provide a breakdown of the usage responsible for the usage charge line items shown on invoices. The response to this call returns a pre-signed `downloadUrl`, which you then use with a `GET` call to obtain the Bill statement in CSV format. # Delete Bill Source: https://docs.m3ter.com/api/bill/delete-bill https://api.m3ter.com/spec delete /organizations/{orgId}/bills/{id} Delete the Bill with the given UUID. This endpoint deletes the specified Bill with the given unique identifier. Use with caution since deleted Bills cannot be recovered. Suitable for removing incorrect or obsolete Bills, and for Bills that have not been sent to customers. Where end-customer invoices for Bills have been sent to customers, Bills should not be deleted to ensure you have an audit trail of how the invoice was created. # Download Bills Source: https://docs.m3ter.com/api/bill/download-bills https://api.m3ter.com/spec post /organizations/{orgId}/bills/download/csv Retrieve Bills data in CSV format. Use this endpoint for retrieving Bills data in CSV format for your Organization for a specified period. The response contains the line items for Bills in the defined time period in a comma-separated string format. To define a time period you can use exactly one of the `startDate/endDate` or `externalInvoiceDateStart/externalInvoiceDateEnd` request parameter pairings. If you try to mix them when defining a time period - such as `startDate/externalInvoiceDateEnd` - then you'll receive an error. You can use the `externalSystem` request parameter to control the format of the Bills data given in the comma-separated response: - **STANDARD** A wider range of data columns is given. - **XERO** A more limited range of data columns is given and compatible with loading into your 3rd-party Xero system. **NOTES:** - **Download Limits**. You can only retrieve Bills data for a period of up to 31 days or up to a maximum of 5000 Bills. If you attempt a call that exceeds either of these two limits, you'll receive an error message - **Empty Bills**. The CSV formatted response string is compiled by taking each of the line items found in Bills that exist in your Organization for the specified period. The Bill for each line item record is given, along with Bill Total and other billing attributes. However, if you have an *empty Bill* that exists for the specified period - one for which *no line items currently exist* - then no line item records will be shown for this Bill in the CSV formatted response. - **Downloading a CSV File**. If you want to download a CSV file for Bills data for a specified period, use the [Download Bills URL](https://docs.m3ter.com/api/bill/download-bills-url) endpoint. # Download Bills URL Source: https://docs.m3ter.com/api/bill/download-bills-url https://api.m3ter.com/spec post /organizations/{orgId}/bills/download/csv/url Generate a URL for downloading a CSV file containing a comprehensive list of Bills data for the specified organization for a specified period. This endpoint facilitates easy exporting of billing data for external analysis and reporting. The response to this call returns a pre-signed `downloadUrl`, which you then enter into your browser to download the CSV file of the Bill entities. You can use the `externalSystem` request parameter to control the format of the Bills data in the CSV file: - **STANDARD** A wider range of Bills data columns is given. - **XERO** A more limited range of data columns is given and compatible with loading into your 3rd-party Xero system. **NOTES:** - **Download Limits**. You can only download Bills for a period of up to 31 days or up to a maximum of 5000 Bills. If you attempt a download that exceeds either of these two limits, you'll receive an error message - **Empty Bills**. The CSV formatted file is compiled for download by taking each of the line items found in Bills that exist in your Organization for the specified period. The Bill for each line item record is given, along with Bill Total and other billing attributes. However, this means that if you have an *empty Bill* that exists for the specified period - one for which *no line items currently exist* - then no line item records will be shown for this Bill in the CSV file you download. # Bill Endpoints Source: https://docs.m3ter.com/api/bill/introduction Endpoints for billing operations such as creating, updating, listing, downloading, and deleting Bills. Bills are generated for an Account, and are calculated in accordance with the usage-based or unit-based pricing Plans applied for the Products the Account consumes, together with any charges set up for the Account. These endpoints enable interaction with the billing system, allowing you to obtain billing details and insights into the consumption patterns and charges of your end-customer Accounts. # List Bills Source: https://docs.m3ter.com/api/bill/list-bills https://api.m3ter.com/spec get /organizations/{orgId}/bills Retrieve a list of Bills. This endpoint retrieves a list of all Bills for the given Account within the specified Organization. Optional filters can be applied such as by date range, lock status, or other attributes. The list can also be paginated for easier management. # List Line Items Source: https://docs.m3ter.com/api/bill/list-line-items https://api.m3ter.com/spec get /organizations/{orgId}/bills/{billId}/lineitems Lists all the line items for a specific Bill. This endpoint retrieves a list of line items for the given Bill within the specified Organization. The list can also be paginated for easier management. The line items returned in the list include individual charges, discounts, or adjustments within a Bill. # Lock Bill Source: https://docs.m3ter.com/api/bill/lock-bill https://api.m3ter.com/spec put /organizations/{orgId}/bills/{id}/lock Lock the specific Bill identified by the given UUID. Once a Bill is locked, no further changes can be made to it. **NOTE:** You cannot lock a Bill whose current status is `PENDING`. You will receive an error message if you try to do this. You must first use the [Approve Bills](https://docs.m3ter.com/api/bill/approve-bills) call to approve a Bill before you can lock it. # Preview Bill Source: https://docs.m3ter.com/api/bill/preview-bill https://api.m3ter.com/spec post /organizations/{orgId}/bills/preview Preview the current Bill for a specific account. This endpoint is designed to provide a preview of the Bill for exactly one account, allowing you to review charges, frequencies, and other details before finalization. Required parameters include: * `accountIds` - exactly 1 account must be specified for previewing a Bill. * `billingFrequency` * `billFrequencyInterval` Other request parameters are optional. If `version` is not specified, the latest version of the Bill is previewed. # Retrieve Bill Source: https://docs.m3ter.com/api/bill/retrieve-bill https://api.m3ter.com/spec get /organizations/{orgId}/bills/{id} Retrieve the Bill with the given UUID. This endpoint retrieves the Bill with the given unique identifier (UUID) and specific Organization. # Retrieve Bill Statement in CSV Format Source: https://docs.m3ter.com/api/bill/retrieve-bill-statement-in-csv-format https://api.m3ter.com/spec get /organizations/{orgId}/bills/{id}/statement/csv Retrieve a specific Bill Statement for the given Bill UUID in CSV format. Bill Statements are backing sheets to the invoices sent to your customers. Bill Statements provide a breakdown of the usage responsible for the usage charge line items shown on invoices. The response includes a pre-signed `downloadUrl`, which must be used with a separate `GET` call to download the actual Bill Statement. This ensures secure access to the requested information. # Retrieve Bill Statement in JSON Format Source: https://docs.m3ter.com/api/bill/retrieve-bill-statement-in-json-format https://api.m3ter.com/spec get /organizations/{orgId}/bills/{id}/statement/json Retrieve a Bill Statement in JSON format for a given Bill ID. Bill Statements are backing sheets to the invoices sent to your customers. Bill Statements provide a breakdown of the usage responsible for the usage charge line items shown on invoices. The response to this call returns a pre-signed `downloadUrl`, which you use with a `GET` call to obtain the Bill Statement. # Retrieve Bills for an Account ID Source: https://docs.m3ter.com/api/bill/retrieve-bills-for-an-account-id https://api.m3ter.com/spec get /organizations/{orgId}/bills/accountid/{accountId} Retrieve all Bills for the given Account. This endpoint retrieves all Bills associated with a specific Account ID in a specified organization. The list can also be paginated for easier management. This is useful for obtaining an overview of all billing activities for an Account. # Retrieve Bills in Billing Period Source: https://docs.m3ter.com/api/bill/retrieve-bills-in-billing-period https://api.m3ter.com/spec get /organizations/{orgId}/bills/billingperiod/{lastDateInBillingPeriod}/{billingFrequency} Retrieve all Bills within a specified billing period. This endpoint allows you to retrieve Bills on various frequencies, such as daily, weekly, monthly, or annually. Specify the last day of the period to define the range. For example, to retrieve all Bills on monthly billing up to September with due date of 1st of month, use the last day of September, which is September 30th. The list can also be paginated for easier management. # Retrieve latest Bill Source: https://docs.m3ter.com/api/bill/retrieve-latest-bill https://api.m3ter.com/spec get /organizations/{orgId}/bills/latest/{accountId} Retrieve the latest Bill for the given Account. This endpoint retrieves the latest Bill for the given Account in the specified Organization. It facilitates tracking of the most recent charges and consumption details. # Retrieve Line Item Source: https://docs.m3ter.com/api/bill/retrieve-line-item https://api.m3ter.com/spec get /organizations/{orgId}/bills/{billId}/lineitems/{id} Retrieves a specific line item within a Bill. This endpoint retrieves the line item given by its unique identifier (UUID) from a specific Bill. # Retrieve Line Item Usage in JSON Format Source: https://docs.m3ter.com/api/bill/retrieve-line-item-usage-in-json-format https://api.m3ter.com/spec get /organizations/{orgId}/bills/{billId}/lineitems/{id}/usage/json Retrieve the line item with the given UUID in JSON format. This endpoint retrieves detailed usage information for a specific billing line item in JSON format. It is designed to provide granular insights into the consumption pattern for the given line item. The response includes a pre-signed `downloadUrl`, which must be used with a separate `GET` call to download the Bill line item. This ensures secure access to the requested information. # Search Bills Source: https://docs.m3ter.com/api/bill/search-bills https://api.m3ter.com/spec get /organizations/{orgId}/bills/search Search for Bill entities. This endpoint executes a search query for Bills based on the user specified search criteria. The search query is customizable, allowing for complex nested conditions and sorting. The returned list of Bills can be paginated for easier management. # Update Bill Status Source: https://docs.m3ter.com/api/bill/update-bill-status https://api.m3ter.com/spec put /organizations/{orgId}/bills/{id}/status Updates the status of a specified Bill with the given Bill ID. This endpoint allows you to transition a Bill's status through various stages, such as from "Pending" to "Approved". # Bill Config Endpoints Source: https://docs.m3ter.com/api/billconfig/introduction Endpoints for updating and retreiving the Bill Configuration for an Organization. You can use the **Update BillConfig** endpoint to set a global lock date for **all** Bills - any Bill with a service period end date on or before the set date will be locked and cannot be updated. **Ensure all Bills are Approved!** If you try to set a global lock date when there remains Bills in a *Pending* state whose service period end date is on or before the specified lock date, then you'll receive an error. # Retrieve BillConfig Source: https://docs.m3ter.com/api/billconfig/retrieve-billconfig https://api.m3ter.com/spec get /organizations/{orgId}/billconfig Retrieve the Organization-wide BillConfig. # Update BillConfig Source: https://docs.m3ter.com/api/billconfig/update-billconfig https://api.m3ter.com/spec put /organizations/{orgId}/billconfig Update the Organization-wide BillConfig. You can use this endpoint to set a global lock date for **all** Bills - any Bill with a service period end date on or before the set date will be locked and cannot be updated or recalculated. # Create BillGroupingKey Source: https://docs.m3ter.com/api/billgroupingkey/create-billgroupingkey https://api.m3ter.com/spec post /organizations/{orgId}/picklists/billgroupingkeys Create a new Bill Grouping Key. # Delete BillGroupingKey Source: https://docs.m3ter.com/api/billgroupingkey/delete-billgroupingkey https://api.m3ter.com/spec delete /organizations/{orgId}/picklists/billgroupingkeys/{id} Delete a Bill Grouping Key for the given UUID. # Bill Grouping Key Endpoints Source: https://docs.m3ter.com/api/billgroupingkey/introduction Endpoints for Bill Grouping Key operations such as creation, update, list, and delete. Bill Grouping Keys are stored for your Organization, and you can use them to control billing operations. For example, use Bill Grouping Keys to control how Bills for Contracts linked to an Account are generated: * Have charges linked to an Account Contract billed exclusively on a separate Bill. * Have charges linked to multiple Account Contracts billed collectively on a single Bill. # List Bill Grouping Keys Source: https://docs.m3ter.com/api/billgroupingkey/list-bill-grouping-keys https://api.m3ter.com/spec get /organizations/{orgId}/picklists/billgroupingkeys Retrieve a list of Bill Grouping Keys created for your Organization. # Retrieve BillGroupingKey Source: https://docs.m3ter.com/api/billgroupingkey/retrieve-billgroupingkey https://api.m3ter.com/spec get /organizations/{orgId}/picklists/billgroupingkeys/{id} Retrieve a Bill Grouping Key for the given UUID. # Update BillGroupingKey Source: https://docs.m3ter.com/api/billgroupingkey/update-billgroupingkey https://api.m3ter.com/spec put /organizations/{orgId}/picklists/billgroupingkeys/{id} Update a Bill Grouping Key for the given UUID. # Cancel BillJob Source: https://docs.m3ter.com/api/billjob/cancel-billjob https://api.m3ter.com/spec post /organizations/{orgId}/billjobs/{id}/cancel Cancel an ongoing BillJob for the given Organization and BillJob UUID. This endpoint allows you to halt the processing of a specific BillJob, which might be necessary if there are changes in billing requirements or other operational considerations. # Create BillJob Source: https://docs.m3ter.com/api/billjob/create-billjob https://api.m3ter.com/spec post /organizations/{orgId}/billjobs Create a new BillJob to handle asynchronous bill calculations for a specific Organization. This operation allows you to initiate the processing of bills according to specified parameters. For example, create a BillJob to run only those bills where `billingFrequency` is `MONTHLY`. Note that if you want to run a BillJob for all billing frequencies, simply omit the `billingFrequency` request parameter. Once created, the BillJob's progress can be monitored: - In the Running Tasks panel in the m3ter Console - for more details, see [Running Bills Manually](https://www.m3ter.com/docs/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#running-bills-manually) - Queried using the [List BillJobs](https://docs.m3ter.com/api/billjob/list-billjobs) endpoint. **NOTES:** - **Consolidated bills**. If you've already run billing with the Consolidate bills option disabled for your Organization but you then enable it, subsequent Bills for specific bill dates will now start afresh and not update earlier non-consolidated Bills for the same bill date. To avoid any billing conflicts, you might want to archive these earlier versions or delete them entirely. - **Maximum concurrent BillJobs**. If you already have 10 BillJobs currently running, and try to create another one, you'll get an HTTP 429 response (Too many requests). When one of the existing BillJobs has completed, you'll be able to submit another job # Create Recalculation BillJob Source: https://docs.m3ter.com/api/billjob/create-recalculation-billjob https://api.m3ter.com/spec post /organizations/{orgId}/billjobs/recalculate Create a new BillJob specifically to recalculate existing bills for a given Organization. This operation is essential when adjustments or corrections are required in previously calculated bills. The recalculated bills when the BillJob is complete can be checked in the m3ter Console Bill Management page or queried by using the [List Bills](https://docs.m3ter.com/api/bill/list-bills) operation. **NOTE:** - **Response Schema**. The response schema for this call is dynamic. This means that the response might not contain all of the parameters listed. If set to null,the parameter is hidden to help simplify the output as well as to reduce its size and improve performance. # Bill Job Endpoints Source: https://docs.m3ter.com/api/billjob/introduction Endpoints for creating, retrieving, listing, and cancelling Bill Jobs. Bill Jobs are critical components in billing management, providing asynchronous mechanisms to calculate and handle bills. Bill Jobs give you the flexibiity to run Bills manually for Accounts to suit different billing management purposes. For example, some historical usage data has come in for an Account and you want to run a Bill for a specific date on that Account to check that the Bill is showing correctly for the charges due on the new usage data. # List BillJobs Source: https://docs.m3ter.com/api/billjob/list-billjobs https://api.m3ter.com/spec get /organizations/{orgId}/billjobs Retrieve a list of BillJobs. This endpoint retrieves a list of BillJobs for the specified Organization. The list can be paginated for easier management, and allows you to query and filter based on various parameters, such as BillJob `status` and whether or not BillJob remains `active`. # Retrieve BillJob Source: https://docs.m3ter.com/api/billjob/retrieve-billjob https://api.m3ter.com/spec get /organizations/{orgId}/billjobs/{id} Retrieve a Bill Job for the given UUID. # Create Charge Source: https://docs.m3ter.com/api/charge/create-charge https://api.m3ter.com/spec post /organizations/{orgId}/charges Create a new Charge. **NOTES:** * To create an ad-hoc Charge on an Account, use the `accountId` request parameter. * To create a balance fee Charge for a Balance, use the `entityId` request parameter to specify which Balance on an Account the Charge is for. * To define the value of the Charge amount that is billed, you can simply specify an `amount` or use a number of `units` together with a `unitPrice` for a calculated value = units x unit price. But you cannot specify *both an amount and units/unit price*. # Delete Charge Source: https://docs.m3ter.com/api/charge/delete-charge https://api.m3ter.com/spec delete /organizations/{orgId}/charges/{id} Delete the Charge for the given UUID. # Charge Endpoints Source: https://docs.m3ter.com/api/charge/introduction Endpoints for creating/updating/deleting Charges. Create Charges for your end-customer Accounts to create ad-hoc line items for Account billing. Charges are: * Created for either debit or credit amounts. * Linked to a Product for accounting purposes. * Optionally linked to a Contract. * Given a specific date for billing. When a bill job has run for the specified Charge bill date, a Charge appears as an Ad-hoc line item on the Bill. * Assigned a service period. * Available in any currency defined for your Organization. See [Creating Charges for Accounts](/guides/end-customer-accounts/creating-charges-for-accounts) in our main user documentation for more details. Alternatively, you can create a Charge for a Balance on an end-customer Account to create balance fee line items for Account billing. See [Creating Charges for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances) in our main user documentation for more details. # List Charges Source: https://docs.m3ter.com/api/charge/list-charges https://api.m3ter.com/spec get /organizations/{orgId}/charges Retrieve a list of Charge entities # Retrieve Charge Source: https://docs.m3ter.com/api/charge/retrieve-charge https://api.m3ter.com/spec get /organizations/{orgId}/charges/{id} Retrieve a Charge for the given UUID. # Update Charge Source: https://docs.m3ter.com/api/charge/update-charge https://api.m3ter.com/spec put /organizations/{orgId}/charges/{id} Update a Charge for the given UUID. **NOTE:** When you update a Charge on an Account, you can provide either a Charge `amount` or Charge `units` together with a `unitPrice`, but *not both*. # Create Commitment Source: https://docs.m3ter.com/api/commitments/create-commitment https://api.m3ter.com/spec post /organizations/{orgId}/commitments Create a new Commitment. Creates a new Commitment for an Organization. The request body must include all the necessary details such as the agreed amount, overage surcharge percentage, and the associated account and product details. **Note:** If some of the agreed Commitment amount remains unpaid at the start of an end-customer contract period, when you create a Commitment for an Account you can set up billing for the outstanding amount in one of two ways: - Select a Product *Plan to bill with*. Use the `billingPlanId` request parameter to select the Plan used for billing. - Define a *schedule of billing dates*. Omit a `billingPlanId` and use the `feeDates` request parameter to define a precise schedule of bill dates and amounts. # Delete Commitment Source: https://docs.m3ter.com/api/commitments/delete-commitment https://api.m3ter.com/spec delete /organizations/{orgId}/commitments/{id} Remove a specific Commitment. Deletes the Commitment with the given UUID. Use this endpoint when a Commitment is no longer valid or needs to be removed from the system. # Commitment Endpoints Source: https://docs.m3ter.com/api/commitments/introduction Endpoints that manage Commitments (also known as Prepayments) in the context of usage-based pricing and billing. A Commitment represents an agreement where the end-customer has agreed to pay a fixed minimum amount throughout the contract period. **The commitment amount is payable regardless of the actual usage by the customer of your service or product.** These endpoints enable the creation, updating, retrieval, and deletion of Commitments. Use them to manage your customer's Commitments and ensure optimal revenue recognition: * Specify which type of charges can draw-down against a Commitment amount on an Account at billing: usage, minimum spend, standing charges, or recurring charges. * Define overage surcharge percentages, which are applied when the usage charges exceed the agreed Commitment amount within the contract duration. ## What is the difference between Balances and Commitments/Prepayments? To manage credit amounts for your end-customer Accounts, you can use Balances or Commitments/Prepayments. However, these two kinds of credits for Accounts serve different purposes. Commitments/Prepayments are used for amounts end-customers have agreed to pay for consuming your product or services across a full contract term. A customer might pay the entire or only part of the agreed amount upfront, but ***the prepayment amount is payable regardless of the actual usage by the customer of your service or product.*** In contrast, a Balance - often referred to as a Top-Up or Prepaid draw-down - is used when a customer wants to add a credit amount to their Account at any time during the service period or when you as service provider want to add a credit to a customer Account. This Balance credit can then be drawn-down against for billing the Account for usage, minimum spend, standing charges, or recurring charges due. Balances therefore serve payment use cases in a more flexible way, for example to be used for a "Free Credit" sign-up scheme you offer to encourage sales or to enhance customer satisfaction by adding credit to an Account to compensate for service delivery issues. You can use Prepayments/Commitments and Balances together on Account, and define at Organization or individual Account level the order in which any Balance/Prepayment credit on an Account is drawn-down - Balance amounts first or Prepayment amounts first. ## Billing for Commitments If not all of an agreed Commitment amount is paid at the start of an end-customer contract period, you can choose one of two options for billing the outstanding fees due on the customer Account: * Select a Product *Plan to bill with*. * Define a *schedule of billing dates*. # List Commitments Source: https://docs.m3ter.com/api/commitments/list-commitments https://api.m3ter.com/spec get /organizations/{orgId}/commitments Retrieve a list of Commitments. Retrieves a list of all Commitments associated with an Organization. This endpoint supports pagination and includes various query parameters to filter the Commitments based on Account, Product, date, and end dates. # Retrieve Commitment Source: https://docs.m3ter.com/api/commitments/retrieve-commitment https://api.m3ter.com/spec get /organizations/{orgId}/commitments/{id} Retrieve a specific Commitment. Retrieve the details of the Commitment with the given UUID. It provides comprehensive information about the Commitment, such as the agreed amount, overage surcharge percentage, and other related details. # Search Commitments Source: https://docs.m3ter.com/api/commitments/search-commitments https://api.m3ter.com/spec get /organizations/{orgId}/commitments/search Search for commitment entities. This endpoint executes a search query for Commitments based on the user specified search criteria. The search query is customizable, allowing for complex nested conditions and sorting. The returned list of Commitments can be paginated for easier management. # Update Commitment Source: https://docs.m3ter.com/api/commitments/update-commitment https://api.m3ter.com/spec put /organizations/{orgId}/commitments/{id} Modify a specific Commitment. Update the details of the Commitment with the given UUID. Use this endpoint to adjust Commitment parameters such as the fixed amount, overage surcharge percentage, or associated contract details. # Create Compound Aggregation Source: https://docs.m3ter.com/api/compoundaggregation/create-compound-aggregation https://api.m3ter.com/spec post /organizations/{orgId}/compoundaggregations Create a new Compound Aggregation. This endpoint allows you to create a new Compound Aggregation for a specific Organization. The request body must include all the necessary details such as the Calculation formula. # Delete Compound Aggregation Source: https://docs.m3ter.com/api/compoundaggregation/delete-compound-aggregation https://api.m3ter.com/spec delete /organizations/{orgId}/compoundaggregations/{id} Delete a Compound Aggregation with the given UUID. This endpoint enables deletion of a specific Compound Aggregation associated with a specific Organization. Useful when you need to remove an existing Compound Aggregation that is no longer required, such as when changing pricing or planning models. # Compound Aggregation Endpoints Source: https://docs.m3ter.com/api/compoundaggregation/introduction Endpoints for Compound Aggregation related operations such as creation, update, list and delete. Use Compound Aggregations to create numerical measures from usage data by applying a calculation to one or more simple Aggregations or Custom Fields. These numerical measures can then be used as pricing metrics to price your Product Plans, enabling you to implement a wide range of usage-based pricing use cases. ## Types of Compound Aggregation You can create two types of Compound Aggregation: ### Global * Pricing: Not tied to any specific product and can be used to price Plans belonging to any Product. * Calculation: can reference all simple Aggregations - both Global simple Aggregations and any product-specific simple Aggregations. ### Product-specific * Pricing: belong to a specific Product and can only be used to price Plans belonging to the same Product. * Calculation: can reference any simple Aggregations belonging to the same Product and any Global simple Aggregations. **Notes and Warnings:** * **Compound Aggregations based on Segmented Aggregations?** You can use Compound Aggregations that reference Segmented Aggregations to price Plans. However, the segments made available to the Compound Aggregation for pricing a Plan will depend on whether a single or multiple Segmented Aggregations are referenced. See [Pricing with Compound Aggregations Based on Segmented Aggregations](https://docs.m3ter.com/guides/plans-and-pricing/pricing-plans/pricing-plans-using-segmented-aggregations#pricing-with-compound-aggregations-based-on-segmented-aggregations) for details. Any segments made available to a Compound Aggregation will be listed for the `segments` response parameter. * **Warning!** If a simple Aggregation referenced by a Compound Aggregation has a **Quantity per unit** defined or a **Rounding** defined, these will not be factored into the value used by the calculation. For example, if the simple Aggregation referenced has a base value of 100 and has **Quantity per unit** set at 10, the Compound Aggregation calculation *will use the base value of 100 not 10*. To better understand and use Compound Aggregations, refer to the example [Compound Aggregation Use Case](https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations#example-use-case). # List Compound Aggregations Source: https://docs.m3ter.com/api/compoundaggregation/list-compound-aggregations https://api.m3ter.com/spec get /organizations/{orgId}/compoundaggregations Retrieve a list of all Compound Aggregations. This endpoint retrieves a list of Compound Aggregations associated with a specific organization. Compound Aggregations enable you to define numerical measures based on simple Aggregations of usage data. It supports pagination, and includes various query parameters to filter the Compound Aggregations based on Product, Compound Aggregation IDs or short codes. # Retrieve Compound Aggregation Source: https://docs.m3ter.com/api/compoundaggregation/retrieve-compound-aggregation https://api.m3ter.com/spec get /organizations/{orgId}/compoundaggregations/{id} Retrieve a Compound Aggregation using the given UUID. This endpoint returns a specific Compound Aggregation associated with an Organization. It provides detailed information about the Compound Aggregation. # Update Compound Aggregation Source: https://docs.m3ter.com/api/compoundaggregation/update-compound-aggregation https://api.m3ter.com/spec put /organizations/{orgId}/compoundaggregations/{id} Update the Compound Aggregation with the given UUID. This endpoint allows you to update the details of a specific Compound Aggregation associated with an Organization. Use it to modify details of an existing Compound Aggregation such as the Calculation formula. **Note:** If you have created Custom Fields for a Compound Aggregation, when you use this endpoint to update the Compound Aggregation use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost. # Create Contract Source: https://docs.m3ter.com/api/contract/create-contract https://api.m3ter.com/spec post /organizations/{orgId}/contracts Creates a new Contract for the specified Account. The Contract includes information such as the associated Account along with start and end dates. If you intend to bill an Account on a Contract basis, you can use the `billGroupingKeyId`, `applyContractPeriodLimits`, and `usageFilters` request parameters to control Contract billing. # Delete Contract Source: https://docs.m3ter.com/api/contract/delete-contract https://api.m3ter.com/spec delete /organizations/{orgId}/contracts/{id} Deletes the Contract with the specified UUID. Used to remove an existing Contract from an Account. **Note:** This call will fail if there are any other billing entities associated with the Account and that have been added to the Contract, such as AccountPlans, Balance, or Commitments. # End-date Contract Account billing entities Source: https://docs.m3ter.com/api/contract/end-date-contract-account-billing-entities https://api.m3ter.com/spec put /organizations/{orgId}/contracts/{id}/enddatebillingentities Apply the specified end-date to billing entities associated with Accounts the Contract has been added to, and apply the end-date to the Contract itself. **NOTES:** - If you want to apply the end-date to the Contract *itself* - the Contract `id` you use as the required PATH PARAMETER - you must also specify `CONTRACT` as a `billingEntities` option in the request body schema. - Only the Contract whose id you specify for the PATH PARAMETER will be end-dated. If there are other Contracts associated with the Account, these will not be end-dated. - When you successfully end-date billing entities, the version number of each entity is incremented. # Contract Endpoints Source: https://docs.m3ter.com/api/contract/introduction Endpoints for Contract related operations such as creation, update, list and delete. Contracts are created for Accounts, which are your end-user customers. Contracts can be used for: * **Accounts Reporting**. To serve your general accounting operations and processes, you can report on total Contract values for an Account. * **Contract Billing**. Various billing entities associated with an Account can be linked to Contracts on the Account to meet your specific Contract billing use cases. # List Contracts Source: https://docs.m3ter.com/api/contract/list-contracts https://api.m3ter.com/spec get /organizations/{orgId}/contracts Retrieves a list of Contracts by Organization ID. Supports pagination and includes various query parameters to filter the Contracts returned based on Contract IDs or short codes. # Retrieve Contract Source: https://docs.m3ter.com/api/contract/retrieve-contract https://api.m3ter.com/spec get /organizations/{orgId}/contracts/{id} Retrieves the Contract with the given UUID. Used to obtain the details of a Contract. # Update Contract Source: https://docs.m3ter.com/api/contract/update-contract https://api.m3ter.com/spec put /organizations/{orgId}/contracts/{id} Update the Contract with the given UUID. This endpoint updates the details of the Contract with the specified ID. Used to modify details of an existing Contract such as the start or end dates. **Note:** If you have created Custom Fields for a Contract, when you use this endpoint to update the Contract use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost. # Create Counter Source: https://docs.m3ter.com/api/counter/create-counter https://api.m3ter.com/spec post /organizations/{orgId}/counters Create a new Counter. # Delete Counter Source: https://docs.m3ter.com/api/counter/delete-counter https://api.m3ter.com/spec delete /organizations/{orgId}/counters/{id} Delete a Counter for the given UUID. # Counter Endpoints Source: https://docs.m3ter.com/api/counter/introduction Endpoints for listing, creating, retrieving, updating, or deleting Counters. You can create Counters for your m3ter Organization, which can then be used as pricing metrics to apply a unit-based [CounterPricing](/api/counterpricing/introduction) to Product Plans or Plan Templates for recurring subscription charges on Accounts. Counters can then be used to post [CounterAdjustments](/api/counteradjustments/introduction) on your end-customer Accounts. Accounts are then billed in accordance with the CounterPricing on Plans attached to the Accounts and for the actual Counter quantities Accounts subscribe to. See [Recurring Charges: Counters](/guides/recurring-charges-counters) in our main user documentation for more details. # List Counters Source: https://docs.m3ter.com/api/counter/list-counters https://api.m3ter.com/spec get /organizations/{orgId}/counters Retrieve a list of Counter entities that can be filtered by Product, Counter ID, or Codes. # Retrieve Counter Source: https://docs.m3ter.com/api/counter/retrieve-counter https://api.m3ter.com/spec get /organizations/{orgId}/counters/{id} Retrieve a Counter for the given UUID. # Update Counter Source: https://docs.m3ter.com/api/counter/update-counter https://api.m3ter.com/spec put /organizations/{orgId}/counters/{id} Update Counter for the given UUID. # Create CounterAdjustment Source: https://docs.m3ter.com/api/counteradjustments/create-counteradjustment https://api.m3ter.com/spec post /organizations/{orgId}/counteradjustments Create a new CounterAdjustment for an Account using a Counter. **Notes:** * Use the new absolute value for the Counter for the selected date - if it was 15 and has increased to 20, enter 20; if it was 15 and has decreased to 10, enter 10. *Do not enter* the plus or minus value relative to the previous Counter value on the Account. * CounterAdjustments on Accounts are supported down to a *specific day* of granularity - you cannot create more than one CounterAdjustment for any given day using the same Counter and you'll receive an error if you try to do this. # Delete CounterAdjustment Source: https://docs.m3ter.com/api/counteradjustments/delete-counteradjustment https://api.m3ter.com/spec delete /organizations/{orgId}/counteradjustments/{id} Delete a CounterAdjustment for the given UUID. # Counter Adjustment Endpoints Source: https://docs.m3ter.com/api/counteradjustments/introduction Endpoints for listing, creating, updating, retrieving, or deleting CounterAdjustments. If you attach a Plan to an Account which is priced using a Counter to apply unit-based pricing, you can then create CounterAdjustments for the Account using that Counter to ensure the Account is billed according to the number of Counter units the Account subscribes to in a given billing period. See [Understanding and Creating Counter Adjustments for Accounts](/guides/recurring-charges-counters/creating-counter-adjustments-for-accounts) for more information. # List CounterAdjustments Source: https://docs.m3ter.com/api/counteradjustments/list-counteradjustments https://api.m3ter.com/spec get /organizations/{orgId}/counteradjustments Retrieve a list of CounterAdjustments created for Accounts in your Organization. You can filter the list returned by date, Account ID, or Counter ID. **CONSTRAINTS:** * The `counterId` query parameter is always required when calling this endpoint, used either as a single query parameter or in combination with any of the other query parameters. * If you want to use the `date`, `dateStart`, or `dateEnd` query parameters, you must also use the `accountId` query parameter. # Retrieve CounterAdjustment Source: https://docs.m3ter.com/api/counteradjustments/retrieve-counteradjustment https://api.m3ter.com/spec get /organizations/{orgId}/counteradjustments/{id} Retrieve a CounterAdjustment for the given UUID. # Update CounterAdjustment Source: https://docs.m3ter.com/api/counteradjustments/update-counteradjustment https://api.m3ter.com/spec put /organizations/{orgId}/counteradjustments/{id} Update a CounterAdjustment for an Account. # Create CounterPricing Source: https://docs.m3ter.com/api/counterpricing/create-counterpricing https://api.m3ter.com/spec post /organizations/{orgId}/counterpricings Create a new CounterPricing. **Note:** Either `planId` or `planTemplateId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error. # Delete CounterPricing Source: https://docs.m3ter.com/api/counterpricing/delete-counterpricing https://api.m3ter.com/spec delete /organizations/{orgId}/counterpricings/{id} Delete a CounterPricing for the given UUID. # Counter Pricing Endpoints Source: https://docs.m3ter.com/api/counterpricing/introduction Endpoints for listing, creating, updating, retrieving, or deleting CounterPricing. Create the CounterPricing for a Plan/PlanTemplate using a Counter, and define a unit-based pricing structure for charging end customer Accounts put on the Plan. See [Creating Counters and Pricing Plans](/guides/recurring-charges-counters/creating-counters) for more information. # List CounterPricings Source: https://docs.m3ter.com/api/counterpricing/list-counterpricings https://api.m3ter.com/spec get /organizations/{orgId}/counterpricings Retrieve a list of CounterPricing entities filtered by date, Plan ID, Plan Template ID, or CounterPricing ID. # Retrieve CounterPricing Source: https://docs.m3ter.com/api/counterpricing/retrieve-counterpricing https://api.m3ter.com/spec get /organizations/{orgId}/counterpricings/{id} Retrieve a CounterPricing for the given UUID. # Update CounterPricing Source: https://docs.m3ter.com/api/counterpricing/update-counterpricing https://api.m3ter.com/spec put /organizations/{orgId}/counterpricings/{id} Update CounterPricing for the given UUID. **Note:** Either `planId` or `planTemplateId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error. # Create Credit Reason Source: https://docs.m3ter.com/api/creditreason/create-credit-reason https://api.m3ter.com/spec post /organizations/{orgId}/picklists/creditreasons Create a new Credit Reason for your Organization. When you've created a Credit Reason, it becomes available as a credit type for adding Credit line items to Bills. See [Credits](https://www.m3ter.com/docs/api#tag/Credits). # Delete Credit Reason Source: https://docs.m3ter.com/api/creditreason/delete-credit-reason https://api.m3ter.com/spec delete /organizations/{orgId}/picklists/creditreasons/{id} Delete the Credit Reason with the given UUID. # Credit Reason Endpoints Source: https://docs.m3ter.com/api/creditreason/introduction Endpoints for CreditReason operations such as creation, update, list, and delete. You can create CreditReasons for your Organization, and then use them when creating a credit line item on a bill, or applying a product credit to a bill. CreditReasons provide contextual information as to why a credit was applied. # List Credit Reasons Source: https://docs.m3ter.com/api/creditreason/list-credit-reasons https://api.m3ter.com/spec get /organizations/{orgId}/picklists/creditreasons Retrieve a list of the Credit Reason entities created for your Organization. You can filter the list returned for the call by Credit Reason ID, Credit Reason short code, or by Archive status. # Retrieve Credit Reason Source: https://docs.m3ter.com/api/creditreason/retrieve-credit-reason https://api.m3ter.com/spec get /organizations/{orgId}/picklists/creditreasons/{id} Retrieve the Credit Reason with the given UUID. # Update Credit Reason Source: https://docs.m3ter.com/api/creditreason/update-credit-reason https://api.m3ter.com/spec put /organizations/{orgId}/picklists/creditreasons/{id} Update the Credit Reason with the given UUID. # Create Credit Line Item Source: https://docs.m3ter.com/api/credits/create-credit-line-item https://api.m3ter.com/spec post /organizations/{orgId}/bills/{billId}/creditlineitems Create a new Credit line item for the given Bill. When creating Credit line items for Bills, use the Credit Reasons created for your Organization. See [CreditReason](https://www.m3ter.com/docs/api#tag/CreditReason). # Delete Credit Line Item Source: https://docs.m3ter.com/api/credits/delete-credit-line-item https://api.m3ter.com/spec delete /organizations/{orgId}/bills/{billId}/creditlineitems/{id} Delete the Credit line item with the given UUID. # Credit Endpoints Source: https://docs.m3ter.com/api/credits/introduction Endpoints for Credit line item related operations such as creation, update, list and delete. These are line items on Bills that are specifically related to Credits. You use the Credit Reasons created for your Organization when you create Credit line items for Bills. See [CreditReason](/api/creditreason/introduction). # List Credit Line Items Source: https://docs.m3ter.com/api/credits/list-credit-line-items https://api.m3ter.com/spec get /organizations/{orgId}/bills/{billId}/creditlineitems List the Credit line items for the given Bill. # Retrieve Credit Line Item Source: https://docs.m3ter.com/api/credits/retrieve-credit-line-item https://api.m3ter.com/spec get /organizations/{orgId}/bills/{billId}/creditlineitems/{id} Retrieve the Credit line item with the given UUID. # Update Credit Line Item Source: https://docs.m3ter.com/api/credits/update-credit-line-item https://api.m3ter.com/spec put /organizations/{orgId}/bills/{billId}/creditlineitems/{id} Update the Credit line item with the given UUID. # Create Currency Source: https://docs.m3ter.com/api/currency/create-currency https://api.m3ter.com/spec post /organizations/{orgId}/picklists/currency Creates a new Currency for the specified Organization. Used to create a Currency that your Organization will start to use. # Delete Currency Source: https://docs.m3ter.com/api/currency/delete-currency https://api.m3ter.com/spec delete /organizations/{orgId}/picklists/currency/{id} Delete the Currency with the given UUID. Used to remove an existing Currency from your Organization that is no longer required. # Currency Endpoints Source: https://docs.m3ter.com/api/currency/introduction Endpoints for Currency operations such as creation, update, list, and delete. Currencies are stored for your Organization, and can then be used to specify currencies on various entities such as plan groups and plan templates. The Currencies you want to use in your Organization must be created first. The currency you select for your Organization determines the billing currency and overrides any currency settings in your pricing Plans. For example, if the Organization currency is set to USD and a pricing Plan used for an Account is set to GBP, the bill for an Account using that Plan is calculated in GBP, and then each bill line item converted to USD amounts. Currency conversion rates are setup in the *OrganizationConfig*. For more details, see [Creating and Managing Currencies](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies) in the m3ter Documentation. # List Currencies Source: https://docs.m3ter.com/api/currency/list-currencies https://api.m3ter.com/spec get /organizations/{orgId}/picklists/currency Retrieve a list of Currencies. Retrieves a list of Currencies for the specified Organization. This endpoint supports pagination and includes various query parameters to filter the Currencies based on Currency ID, and short codes. # Retrieve Currency Source: https://docs.m3ter.com/api/currency/retrieve-currency https://api.m3ter.com/spec get /organizations/{orgId}/picklists/currency/{id} Retrieve the specified Currency with the given UUID. Used to obtain the details of a specified existing Currency in your Organization. # Update Currency Source: https://docs.m3ter.com/api/currency/update-currency https://api.m3ter.com/spec put /organizations/{orgId}/picklists/currency/{id} Update a Currency with the given UUID. Used to update the attributes of the specified Currency for the specified Organization. # Custom Fields Endpoints Source: https://docs.m3ter.com/api/customfield/introduction Endpoints for retrieving and updating Custom Fields at the Organization level for all entities that support them. Custom Fields in m3ter allow you to store custom data in the form of number or string values against m3ter entities in a way that does not directly affect the normal working operation of the m3ter platform. Having this capability to store data in a free-hand fashion can prove very useful in helping you to meet specific usage-based pricing and other operational business use cases. However, you can exploit the values stored on Custom Fields in a more direct way by referencing them in Derived Field and Compound Aggregation calculations. Given the key role these calculations can play when implementing usage-based pricing schema, any Custom Fields you reference will then affect how the platform behaves. Referencing Custom Field values in your calculations offers a much wider scope of options when it comes to resolving complex usage-based pricing use cases. Custom Fields can be added to the following entities at Organizational level: * Organization * Account * AccountPlan * Aggregation * Compound Aggregation * Meter * Product * Plan * PlanTemplate * Contract These all follow the same pattern - a new *(optional)* field is available on the entity request and response bodies called "customFields" which is a object in this format: ``` "customFields": { "exampleCustomField1": 7.1, "exampleCustomField2": "stringValue" } ``` The value for a Custom Field can be a string or a number. ## Using Custom Field values in calculations * You can add Custom Fields at two levels - the Organization level and the individual entity level. * The Organizational level field provides a default value and *must be added* if you want to also add a Custom Field of the same name at the corresponding individual entity level. If you reference the Custom Field in a calculation, the value for the individual entity level field is used. If no field is defined at individual entity level, then the Organization level field value is used. ## Important: Constraints and Exceptions ### Custom Fields at Organization Level Currently, you cannot create Custom Fields at the Organization-level for the following enitites: * Plan Group * Balance * Balance Transaction Schedule * Balance Charge Schedule Therefore you cannot reference the Custom Fields values created at the individual entity level for these entities in your Derived Field or Compound Aggregation calculations. ### Derived Field Calculations You can *only reference Custom Fields* for the following entities: * Organization * Meter * Account However, if you are using Meters belonging to *a specific Product*, that is, not *Global Meters*, you can also reference Custom Fields added to a Product in Derived Field calculations. ### Compound Aggregation Calculations - Meter Custom Fields The value of the *Organization level Meter Custom Field will always be used*, even if you have defined a corresponding field at the individual Meter level. See [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) in the m3ter documentation for more information. # Retrieve CustomField Source: https://docs.m3ter.com/api/customfield/retrieve-customfield https://api.m3ter.com/spec get /organizations/{orgId}/customfields Retrieve all Custom Fields added at Organizational level for the entities that support them. # Update CustomFields Source: https://docs.m3ter.com/api/customfield/update-customfields https://api.m3ter.com/spec put /organizations/{orgId}/customfields Update Custom Fields added at Organization level to entities that support them. # Download aggregated usage data as a CSV. Source: https://docs.m3ter.com/api/dataexplorer/download-aggregated-usage-data-as-a-csv https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/usagedata/download/csv Download aggregated usage data as a CSV. # Download aggregated usage data as JSON. Source: https://docs.m3ter.com/api/dataexplorer/download-aggregated-usage-data-as-json https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/usagedata/download/json Download aggregated usage data as JSON. # Download Bill data as a CSV. Source: https://docs.m3ter.com/api/dataexplorer/download-bill-data-as-a-csv https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/bills/download/csv Download Bill data as a CSV. # Download Bill data as JSON. Source: https://docs.m3ter.com/api/dataexplorer/download-bill-data-as-json https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/bills/download/json Download Bill data as JSON. # Download Commitments data as a CSV. Source: https://docs.m3ter.com/api/dataexplorer/download-commitments-data-as-a-csv https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/commitments/download/csv Download Commitments data as a CSV. # Download Commitments data as JSON. Source: https://docs.m3ter.com/api/dataexplorer/download-commitments-data-as-json https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/commitments/download/json Download Commitments data as JSON. # Download Commitments Obligations data as JSON. Source: https://docs.m3ter.com/api/dataexplorer/download-commitments-obligations-data-as-json https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/commitments/obligations/download/json Download Commitments Obligations data as JSON. # Download Commitments Obligations data in CSV format Source: https://docs.m3ter.com/api/dataexplorer/download-commitments-obligations-data-in-csv-format https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/commitments/obligations/download/csv Download Commitments Obligations data in CSV format. # Get account values for querying bill line items. Source: https://docs.m3ter.com/api/dataexplorer/get-account-values-for-querying-bill-line-items https://api.m3ter.com/spec get /organizations/{orgId}/dataexplorer/bills/accounts Get account values for querying bill line items. # Get account values for querying commitments. Source: https://docs.m3ter.com/api/dataexplorer/get-account-values-for-querying-commitments https://api.m3ter.com/spec get /organizations/{orgId}/dataexplorer/commitments/accounts Get account values for querying commitments. # Get product values for querying bill line items. Source: https://docs.m3ter.com/api/dataexplorer/get-product-values-for-querying-bill-line-items https://api.m3ter.com/spec get /organizations/{orgId}/dataexplorer/bills/products Get product values for querying bill line items. # Data Explorer Endpoints Source: https://docs.m3ter.com/api/dataexplorer/introduction Endpoints for querying the Data Explorer and saving query selections. The Data Explorer is a m3ter analytics tool, enabling you to query the Usage, Billing, and Prepayments data collected for your Organization in m3ter. **IMPORTANT: Request Rate Limits for Data Explorer!** As part of the Config API, requests made to the Data Explorer are subject to tighter request rate limits: * **Generally** 1 request per second. * **Burst** 10 requests per second. If you exceed either of these rate limits, requests are throttled and an HTTP 429 (Too Many Requests) error response is returned. See the [Rate and Payload Limts section](/api/rate-and-payload-limits) above for more details. # Query and filter aggregated usage data. Source: https://docs.m3ter.com/api/dataexplorer/query-and-filter-aggregated-usage-data https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/usagedata Query and filter aggregated usage data. # Query and filter for bill line items. Source: https://docs.m3ter.com/api/dataexplorer/query-and-filter-for-bill-line-items https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/bills Query and filter for bill line items. # Query and filter for commitment line items. Source: https://docs.m3ter.com/api/dataexplorer/query-and-filter-for-commitment-line-items https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/commitments/v2/lineitems Query and filter for commitment line items. # Query and filter for commitments. Source: https://docs.m3ter.com/api/dataexplorer/query-and-filter-for-commitments https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/commitments/v2 Query and filter for commitments. # Query and filter for obligations. Source: https://docs.m3ter.com/api/dataexplorer/query-and-filter-for-obligations https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/commitments/obligations Query and filter for obligations. # Query and filter for Remaining Commitments. Source: https://docs.m3ter.com/api/dataexplorer/query-and-filter-for-remaining-commitments https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/commitments/remaining Query and filter for remaining commitments. # Retrieve Meters stored in the Data Warehouse over a period of time. Source: https://docs.m3ter.com/api/dataexplorer/retrieve-meters-stored-in-the-data-warehouse-over-a-period-of-time https://api.m3ter.com/spec get /organizations/{orgId}/dataexplorer/meters Retrieve the Meters and their dimension and measure names that are stored in the Data Warehouse over a period of time. # Retrieve the values of a Meter Dimension. Source: https://docs.m3ter.com/api/dataexplorer/retrieve-the-values-of-a-meter-dimension https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/meterdimensions Retrieve the Dimensions of a Meter stored in the Data Warehouse over a period of time. # Retrieve the values of a single Dimension for one or more Meters. Source: https://docs.m3ter.com/api/dataexplorer/retrieve-the-values-of-a-single-dimension-for-one-or-more-meters https://api.m3ter.com/spec post /organizations/{orgId}/dataexplorer/mergedmeterdimensions Retrieve the values of a single Dimension for one or more Meters stored in the Data Warehouse over a period of time. # Create UsageSavedQuery Source: https://docs.m3ter.com/api/dataexplorerv2/create-usagesavedquery https://api.m3ter.com/spec post /organizations/{orgId}/usage/savedqueries Create a new UsageSavedQuery. # Delete UsageSavedQuery Source: https://docs.m3ter.com/api/dataexplorerv2/delete-usagesavedquery https://api.m3ter.com/spec delete /organizations/{orgId}/usage/savedqueries/{id} Delete the UsageSavedQuery for the given UUID. # Data Explorer V2 Endpoints Source: https://docs.m3ter.com/api/dataexplorerv2/introduction Endpoints for querying and filtering Usage data collected for your Organization. **IMPORTANT: Request Rate Limits for Data Explorer v2!** As part of the Config API, requests made to the Data Explorer v2 are subject to tighter request rate limits: * **Generally** 2 requests per second. * **Burst** 20 requests per second. If you exceed either of these rate limits, requests are throttled and an HTTP 429 (Too Many Requests) error response is returned. # List UsageSavedQueries Source: https://docs.m3ter.com/api/dataexplorerv2/list-usagesavedqueries https://api.m3ter.com/spec get /organizations/{orgId}/usage/savedqueries Retrieve a list of UsageSavedQuery entities # Query and filter usage data Source: https://docs.m3ter.com/api/dataexplorerv2/query-and-filter-usage-data https://api.m3ter.com/spec post /organizations/{orgId}/usage/query Query and filter usage data collected for your Organization. You can use several parameters to filter the range of usage data returned: * **Time period.** Use `startDate` and `endDate` to define a period. The query references the `timestamp` values of usage data submissions for applying the defined time period, and not the time submissions were `receivedAt` by the platform. Only usage data with a `timestamp` that falls in the defined time period are returned.(Required) * **Meters.** Specify the Meters you want the query to return data for. * **Accounts.** Specify the Accounts you want the query to return data for. * **Dimension Filters.** Specify values for Dimension data fields on included Meters. Only data that match the specified Dimension field values will be returned for the query. You can apply Aggregations functions to the usage data returned for the query. If you apply Aggregations, you can select to group the data by: * **Account** * **Time** * **Dimension** # Retrieve UsageSavedQuery Source: https://docs.m3ter.com/api/dataexplorerv2/retrieve-usagesavedquery https://api.m3ter.com/spec get /organizations/{orgId}/usage/savedqueries/{id} Retrieve a UsageSavedQuery for the given UUID. # Update UsageSavedQuery Source: https://docs.m3ter.com/api/dataexplorerv2/update-usagesavedquery https://api.m3ter.com/spec put /organizations/{orgId}/usage/savedqueries/{id} Update a UsageSavedQuery for the given UUID. # Create Debit Reason Source: https://docs.m3ter.com/api/debitreason/create-debit-reason https://api.m3ter.com/spec post /organizations/{orgId}/picklists/debitreasons Create a new Debit Reason for your Organization. When you've created a Debit Reason, it becomes available as a debit type for adding Debit line items to Bills. See [Debits](https://www.m3ter.com/docs/api#tag/Debits). # Delete Debit Reason Source: https://docs.m3ter.com/api/debitreason/delete-debit-reason https://api.m3ter.com/spec delete /organizations/{orgId}/picklists/debitreasons/{id} Delete the Debit Reason with the given UUID. # Debit Reason Endpoints Source: https://docs.m3ter.com/api/debitreason/introduction Endpoints for DebitReason operations such as creation, update, list, and delete. You can create DebitReasons for your Organization, and then use them when creating a debit line item on a bill, or applying a product debit to a bill. DebitReasons provide contextual information as to why a debit was applied. # List Debit Reasons Source: https://docs.m3ter.com/api/debitreason/list-debit-reasons https://api.m3ter.com/spec get /organizations/{orgId}/picklists/debitreasons Retrieve a list of the Debit Reason entities created for your Organization. You can filter the list returned for the call by Debit Reason ID, Debit Reason short code, or by Archive status. # Retrieve Debit Reason Source: https://docs.m3ter.com/api/debitreason/retrieve-debit-reason https://api.m3ter.com/spec get /organizations/{orgId}/picklists/debitreasons/{id} Retrieve the Debit Reason with the given UUID. # Update Debit Reason Source: https://docs.m3ter.com/api/debitreason/update-debit-reason https://api.m3ter.com/spec put /organizations/{orgId}/picklists/debitreasons/{id} Update the Debit Reason with the given UUID. # Create Debit Line Item Source: https://docs.m3ter.com/api/debits/create-debit-line-item https://api.m3ter.com/spec post /organizations/{orgId}/bills/{billId}/debitlineitems Create a new Debit line item for the given bill. When creating Debit line items for Bills, use the Debit Reasons created for your Organization. See [DebitReason](https://www.m3ter.com/docs/api#tag/DebitReason). # Delete Debit Line Item Source: https://docs.m3ter.com/api/debits/delete-debit-line-item https://api.m3ter.com/spec delete /organizations/{orgId}/bills/{billId}/debitlineitems/{id} Delete the Debit line item with the given UUID. # Debit Line Item Endpoints Source: https://docs.m3ter.com/api/debits/introduction Endpoints for Debit line item related operations such as creation, update, list and delete. These are line items on Bills that are specifically related to Debits. You use the Debit Reasons created for your Organization when you create Debit line items for Bills. See the [DebitReason](/api/debitreason/introduction) section for calls you can use to create and manage Debit Reasons for your Organization. # List Debit Line Items Source: https://docs.m3ter.com/api/debits/list-debit-line-items https://api.m3ter.com/spec get /organizations/{orgId}/bills/{billId}/debitlineitems List the Debit line items for the given bill. # Retrieve Debit Line Item Source: https://docs.m3ter.com/api/debits/retrieve-debit-line-item https://api.m3ter.com/spec get /organizations/{orgId}/bills/{billId}/debitlineitems/{id} Retrieve the Debit line item with the given UUID. # Update Debit Line Item Source: https://docs.m3ter.com/api/debits/update-debit-line-item https://api.m3ter.com/spec put /organizations/{orgId}/bills/{billId}/debitlineitems/{id} Update the Debit line item with the given UUID. # Events Endpoints Source: https://docs.m3ter.com/api/events/introduction This section provides Endpoints for operations that allow you to retrieve detailed information about individual Events, list all Events or specific Event Types, and explore dynamic fields available for each Event Type. Events encompass specific instances of state changes within the system, such as the creation of a new Prepayment/Commitment for an Account. Each Event is classified under an Event Type framework, providing context about what kind of change occurred to generate the Event. ## Events for Configuration and Billing Entities Many Event Types cover common configuration and billing objects, where the Event is generated for a state change of one of these objects - for when the configuration or billing object is **created**, **deleted**, or **updated**. For example: * `configuration.commitment.created` * `configuration.commitment.deleted` * `configuration.commitment.updated` * `configuration.account.created` * `configuration.account.deleted` * `configuration.account.updated` * `billing.bill.created` * `billing.bill.deleted` * `billing.bill.created` ## Events for Errors or Failures There are also Event Types for certain kinds of error that can occur: * For an Integration: * validation * authentication * perform * missing account mapping * disabled * For a Usage Data Ingest Submission: * validation failure * For Data Export Jobs: * data export job failure ## Scheduled Events In addition to system-generated Events that occur when a configuration entity undergoes a state change at creation, update, or deletion of the entity, you can use API calls to create and configure *Scheduled Event Configurations*. Scheduled Events are custom Event types, which you can set up by referencing Date/Time fields on configuration and billing entities. See the [ScheduledEventConfigurations](/api/scheduledeventconfigurations/introduction) section of this API Reference for more details. ## Notifications for Events You can create Notification rules based on Events and these rules can reference and apply calculations to the Event's fields. This allows you to set up customized alerts to be sent out via webhooks when the Event occurs and any conditions you've built into the Notification rule's calculation are satisfied. See the [Notifications](/api/notifications/introduction) section for more details. ## Other Events When Events occur, they can cause other Events, such as when a Notification is triggered by the Event it is based on. For these Events there are currently two categories: * Notification * IntegrationEvent Also see [Utilizing Events and Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications) and [Object Definitions and API Calls](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls) in the m3ter documentation for more guidance. # List Event Fields Source: https://docs.m3ter.com/api/events/list-event-fields https://api.m3ter.com/spec get /organizations/{orgId}/events/fields List Event Fields. Retrieves a list of Fields for a specific Event Type. These Fields are dynamic and forward compatibile, enabling calculation operations on the Event schema. **Notes:** - In many of the Response schema for this call, such as when you retrieve the Fields for a `configuration.commitment.created` Event Type, `new` represents the attributes the newly created object has. The Response to a call to retrieve the Fields for a `configuration.commitment.updated` Event Type will contain Field values for both the `old` and `new` objects. The Response to a call to retrieve the Fields for a `configuration.commitment.deleted` Event Type will only contain `old` Fields, for values at point of deletion. Having access to reference both `new` and `old` Field values for an object can be very useful if you want to base a Notification rule on an Event and include a calculation in the rule that, for example, compares `new` values with `old` - for example, trigger a Notification only when a Commitment has been updated and the `new` value for the `amount` is at least $1,000 greater than the `old` value. - Some Event types will show `customFields` even though the specific billing or configuration object the Event is for does not yet have the custom fields functionality implemented. For these Events, their `customFields` values will not be populated until such time as the custom fields functionality is implemented for them # List EventResponse Source: https://docs.m3ter.com/api/events/list-eventresponse https://api.m3ter.com/spec get /organizations/{orgId}/events List all Events. Retrieve a list of all Events, with options to filter the returned list based on various criteria. Each Event represents a unique instance of a state change within the system, classified under a specific kind of Event. **NOTES:** You can: * Use `eventName` as a valid Query parameter to filter the list of Events returned. For example: `.../organizations/{orgId}/events?eventName=configuration.commitment.created` * Use the [List Notification Events](https://www.m3ter.com/docs/api#tag/Events/operation/ListEventTypes) endpoint in this section. The response lists the valid Query parameters. # List Notification Events Source: https://docs.m3ter.com/api/events/list-notification-events https://api.m3ter.com/spec get /organizations/{orgId}/events/types Retrieve a list of Notification Event Types. This endpoint retrieves a list of Event Types that can have Notification rules configured. # Retrieve EventResponse Source: https://docs.m3ter.com/api/events/retrieve-eventresponse https://api.m3ter.com/spec get /organizations/{orgId}/events/{id} Retrieve a specific Event. Retrieves detailed information about the specific Event with the given UUID. An Event corresponds to a unique instance of a state change within the system, classified under a specific Event Type. # Ad Hoc Data Export Endpoints Source: https://docs.m3ter.com/api/exportadhoc/introduction Endpoints for triggering one-off, ad-hoc Data Exports. You can set up and run ad-hoc Exports to export two kinds of data from your m3ter Organization: * Usage data. * Operational data for entities. ## Ad-Hoc Export Destinations When setting up and running an ad-hoc Export: * You can define one or more Export Destinations - see the [ExportDestination](/api/exportdestination/introduction) section of this API Reference. When the export runs, the data is sent through to the sepecified Destination. However, the export file is also made available for you to download it locally. * You can set up and run Data Exports without defining a Destination. The data is not exported but the compiled export file is made available for downloading locally. * For details on downloading an export file, see the [Get Data Export File Download URL](/api/exportdestination/get-data-export-file-download-url) endpoint in this API Reference. **Preview Version!** The Data Export feature is currently available only in Preview release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Preview release definition. ExportAdHoc endpoints will only be available if Data Export has been enabled for your Organization. For more details see [Data Export(Preview)](/guides/data-exports) in our main User documentation. If you're interested in previewing the Data Export feature, please get in touch with m3ter Support or your m3ter contact. # Trigger data export. Source: https://docs.m3ter.com/api/exportadhoc/trigger-data-export https://api.m3ter.com/spec post /organizations/{orgId}/dataexports/adhoc Trigger an ad-hoc Data Export. Each ad-hoc Export can be configured for exporting *only one of* either Usage or Operational data: **Operational Data Exports**. * **Entity Types**. Use the `operationalDataTypes` parameter to specify the entities whose operational data you want to include in the ad-hoc export. * **Export Files**. For each of the entity types you select, when the ad-hoc export runs a separate file is compiled containing the operational data for all entities of that type that exist in your Organization **Usage Data Exports**. * Select the Meters and Accounts whose usage data you want to include in the ad-hoc export. * You can use the `dimensionFilters` parameter to filter the usage data returned for export by adding specific values of non-numeric Dimension data fields on included Meters. Only the data collected for the values you've added for the selected Dimension fields will be included in the export. * You can use the `aggregations` to apply aggregation methods the usage data returned for export. This restricts the range of usage data returned for export to only the data collected by aggregated fields on selected Meters. Nothing is returned for any non-aggregated fields on Meters. The usage data for Meter fields is returned as the values resulting from applying the selected aggregation method. See the [Aggregations for Queries - Options and Consequences](https://www.m3ter.com/docs/guides/data-explorer/usage-data-explorer-v2#aggregations-for-queries---understanding-options-and-consequences) for more details. * If you've applied `aggregations` to the usage returned for export, you can then use the `groups` parameter to group the data by *Account*, *Dimension*, or *Time*. **Date Range for Operational Data Exports**. To restrict the operational data included in the ad-hoc export by a date/time range, use the `startDate` date/time request parameter to specify the start of the time period. The export will include all operational data from the specified `startDate` up until the date/time the export job runs. **Date Range for Usage Data Exports**. To restrict the usage data included in the ad-hoc export by date/time range, use the `startDate` and `endDate` date/time parameters: * Both `startDate` and `endDate` are required. * `endDate` must be after `startDate`. * `endDate` cannot be after tomorrow at midnight UTC. For example if today is May 20th 2025, you can only choose `endDate` to be equal or before 2025-05-21T00:00:00.000Z. **NOTE:** You can use the ExportJob `id` returned to check the status of the triggered ad-hoc export. See the [ExportJob](https://www.m3ter.com/docs/api#tag/ExportJob) section of this API Reference. # Create ExportDestination Source: https://docs.m3ter.com/api/exportdestination/create-exportdestination https://api.m3ter.com/spec post /organizations/{orgId}/dataexports/destinations Create a new Export Destination to use for your Data Export Schedules or Ad-Hoc Data Exports. Currently, two options for setting up Data Export Destinations are available: * S3 buckets on your AWS account. * Buckets in your Google Cloud Storage account. Request and Response schema: * Use the selector under the `destinationType` parameter to expose the relevant request and response schema for the type of Destination. Request and Response samples: * Use the **Example** selector to show the relevant request and response samples for the type of Destination. # Delete ExportDestination Source: https://docs.m3ter.com/api/exportdestination/delete-exportdestination https://api.m3ter.com/spec delete /organizations/{orgId}/dataexports/destinations/{id} Delete an Export Destination for the given UUID. **NOTE:** If you attempt to delete an Export Destination that is currently linked to a Data Export Schedule, an error message is returned and you won't be able to delete the Destination. # Get Data Export File Download URL Source: https://docs.m3ter.com/api/exportdestination/get-data-export-file-download-url https://api.m3ter.com/spec get /organizations/{orgId}/dataexports/jobs/{jobId}/getdownloadurl Returns a presigned download URL for data export file download based on the `jobId` provided. If you omit `destinationIds` when setting up your [Ad-Hoc data exports](https://www.m3ter.com/docs/api#tag/ExportAdHoc) or [Scheduled data exports](https://www.m3ter.com/docs/api#tag/ExportSchedule), then the data is not copied to a destination but is available for you to download using the returned download URL. **Constraints:** * Only valid for Export jobs ran in the past 24 hours. * The download URL is time-bound and is only valid for 15 minutes. **NOTE!** This ExportDestination endpoint is available in Beta release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Beta release definition. # Export Destination Endpoints Source: https://docs.m3ter.com/api/exportdestination/introduction Endpoints for creating, updating, retrieving, or deleting Data Export Destinations. Before you can configure and run either [Export Schedules](/api/exportschedule/introduction) or [Ad-Hoc Exports](/api/exportadhoc/introduction), you can set up Export Destinations. Currently, two options for setting up Data Export Destinations are available: * S3 buckets on your AWS account. * Buckets in your Google Cloud Storage account. **Exporting without a Destination?** When a Data Export runs, the data is sent through to the specified Destination. However, the export file is also made available for you to download it locally. You can set up and run Data Exports without defining a Destination. The data is not exported but the compiled export file is made available for downloading locally. **Preview Version!** The Data Export feature is currently available only in Preview release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Preview release definition. ExportDestination endpoints will only be available if Data Export has been enabled for your Organization. For more details see [Data Export(Preview)](/guides/data-exports) in our main User documentation. If you're interested in previewing the Data Export feature, please get in touch with m3ter Support or your m3ter contact. # List ExportDestinations Source: https://docs.m3ter.com/api/exportdestination/list-exportdestinations https://api.m3ter.com/spec get /organizations/{orgId}/dataexports/destinations Retrieve a list of Export Destination entities. You can filter the list of Destinations returned by UUID. # Retrieve ExportDestination Source: https://docs.m3ter.com/api/exportdestination/retrieve-exportdestination https://api.m3ter.com/spec get /organizations/{orgId}/dataexports/destinations/{id} Retrieve an Export Destination for the given UUID. # Update ExportDestination Source: https://docs.m3ter.com/api/exportdestination/update-exportdestination https://api.m3ter.com/spec put /organizations/{orgId}/dataexports/destinations/{id} Update an Export Destination for the given UUID. Currently, two options for setting up Data Export Destinations are available: * S3 buckets on your AWS account. * Buckets in your Google Cloud Storage account. Request and Response schema: * Use the selector under the `destinationType` parameter to expose the relevant request and response schema for the type of Destination. Request and Response samples: * Use the **Example** selector to show the relevant request and response samples for the type of Destination. # Data Export Job Endpoints Source: https://docs.m3ter.com/api/exportjob/introduction Endpoints for retrieving/querying Data Export jobs. **Preview Version!** The Data Export feature is currently available only in Preview release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Preview release definition. ExportJob endpoints will only be available if Data Export has been enabled for your Organization. For more details see [Data Export(Preview)](/guides/data-exports) in our main User documentation. If you're interested in previewing the Data Export feature, please get in touch with m3ter Support or your m3ter contact. # List Jobs Source: https://docs.m3ter.com/api/exportjob/list-jobs https://api.m3ter.com/spec get /organizations/{orgId}/dataexports/jobs Retrieve a list of Export Job entities. # Retrieve Job Source: https://docs.m3ter.com/api/exportjob/retrieve-job https://api.m3ter.com/spec get /organizations/{orgId}/dataexports/jobs/{id} Retrieve an Export Job for the given UUID. The response returns: * The source type for the data exported by the Export Job: one of USAGE or OPERATIONAL. * The status of the Export Job. # Create Schedule Source: https://docs.m3ter.com/api/exportschedule/create-schedule https://api.m3ter.com/spec post /organizations/{orgId}/dataexports/schedules Create a new Data Export Schedule. Each Schedule can be configured for exporting *only one* of either Usage or Operational data: **Operational Data Exports**. * Use the `operationalDataTypes` parameter to specify the entities whose operational data you want to include in the export each time the Export Schedule runs. * For each of the entity types you select, each time the Export Schedule runs a separate file is compiled containing the operational data for all entities of that type that exist in your Organization **Usage Data Exports**. * Select the Meters and Accounts whose usage data you want to include in the export each time the Export Schedule runs. * You can use the `dimensionFilters` parameter to filter the usage data returned for export by adding specific values of non-numeric Dimension data fields on included Meters. Only the data collected for the values you've added for the selected Dimension fields will be included in the export. * You can use the `aggregations` to apply aggregation methods the usage data returned for export. This restricts the range of usage data returned for export to only the data collected by aggregated fields on selected Meters. Nothing is returned for any non-aggregated fields on Meters. The usage data for Meter fields is returned as the values resulting from applying the selected aggregation method. See the [Aggregations for Queries - Options and Consequences](https://www.m3ter.com/docs/guides/data-explorer/usage-data-explorer-v2#aggregations-for-queries---understanding-options-and-consequences) for more details. * If you've applied `aggregations` to the usage returned for export, you can then use the `groups` parameter to group the data by *Account*, *Dimension*, or *Time*. Request and Response schema: * Use the selector under the `sourceType` parameter to expose the relevant request and response schema for the source data type. Request and Response samples: * Use the **Example** selector to show the relevant request and response samples for source data type. # Delete Schedule Source: https://docs.m3ter.com/api/exportschedule/delete-schedule https://api.m3ter.com/spec delete /organizations/{orgId}/dataexports/schedules/{id} Delete the Data Export Schedule for the given UUID. Each Schedule can be configured for exporting *only one* of either Usage or Operational data. # Data Export Schedule Endpoints Source: https://docs.m3ter.com/api/exportschedule/introduction Endpoints for creating, updating, retrieving, or deleting Data Export schedules. You can set up an Export Schedule to export one of two types of data from your m3ter Organization - either *Usage data* or *Operational data* for entities. You cannot create a single Export Schedule for exporting *both types of data under a single Schedule*. ## Export Destinations When creating an Export Schedule: * You can define one or more Export Destinations - see the [ExportDestination](/api/exportdestination/introduction) section of this API Reference. When the export runs, the data is sent through to the sepecified Destination. However, the export file is also made available for you to download it locally. * You can set up and run Data Exports without defining a Destination. The data is not exported but the compiled export file is made available for downloading locally. * For details on downloading an export file, see the [Get Data Export File Download URL](/api/exportdestination/get-data-export-file-download-url) endpoint in this API Reference. **Preview Version!** The Data Export feature is currently available only in Preview release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Preview release definition. ExportSchedule endpoints will only be available if Data Export has been enabled for your Organization. For more details see [Data Export(Preview)](/guides/data-exports) in our main User documentation. If you're interested in previewing the Data Export feature, please get in touch with m3ter Support or your m3ter contact. # List Schedules Source: https://docs.m3ter.com/api/exportschedule/list-schedules https://api.m3ter.com/spec get /organizations/{orgId}/dataexports/schedules Retrieve a list of Data Export Schedules created for your Organization. You can filter the response by Schedules `ids`. The response will contain an array for both the operational and usage Data Export Schedules in your Organization. # Retrieve Schedule Source: https://docs.m3ter.com/api/exportschedule/retrieve-schedule https://api.m3ter.com/spec get /organizations/{orgId}/dataexports/schedules/{id} Retrieve a Data Export Schedule for the given UUID. Each Schedule can be configured for exporting *only one* of either Usage or Operational data. # Update Schedule Source: https://docs.m3ter.com/api/exportschedule/update-schedule https://api.m3ter.com/spec put /organizations/{orgId}/dataexports/schedules/{id} Update a Data Export Schedule for the given UUID. Each Schedule can be configured for exporting *only one* of either Usage or Operational data: **Operational Data Exports**. * Use the `operationalDataTypes` parameter to specify the entities whose operational data you want to include in the export each time the Export Schedule runs. * For each of the entity types you select, each time the Export Schedule runs a separate file is compiled containing the operational data for all entities of that type that exist in your Organization **Usage Data Exports**. * Select the Meters and Accounts whose usage data you want to include in the export each time the Export Schedule runs. * You can use the `dimensionFilters` parameter to filter the usage data returned for export by adding specific values of non-numeric Dimension data fields on included Meters. Only the data collected for the values you've added for the selected Dimension fields will be included in the export. * You can use the `aggregations` to apply aggregation methods the usage data returned for export. This restricts the range of usage data returned for export to only the data collected by aggregated fields on selected Meters. Nothing is returned for any non-aggregated fields on Meters. The usage data for Meter fields is returned as the values resulting from applying the selected aggregation method. See the [Aggregations for Queries - Options and Consequences](https://www.m3ter.com/docs/guides/data-explorer/usage-data-explorer-v2#aggregations-for-queries---understanding-options-and-consequences) for more details. * If you've applied `aggregations` to the usage returned for export, you can then use the `groups` parameter to group the data by *Account*, *Dimension*, or *Time*. # Create an External Mapping Source: https://docs.m3ter.com/api/external-mapping/create-an-external-mapping https://api.m3ter.com/spec post /organizations/{orgId}/externalmappings Creates a new External Mapping. This endpoint enables you to create a new External Mapping for the specified Organization. You need to supply a request body with the details of the new External Mapping. # Delete an External Mapping Source: https://docs.m3ter.com/api/external-mapping/delete-an-external-mapping https://api.m3ter.com/spec delete /organizations/{orgId}/externalmappings/{id} Delete an External Mapping with the given UUID. # External Mapping Endpoints Source: https://docs.m3ter.com/api/external-mapping/introduction Endpoints for managing External Mapping related operations such as creation, update, list and delete. When you integrate your 3rd-party systems with the m3ter platform, a mapping between entities in the local system *(m3ter)* and external systems is constructed. This *External Mapping* is crucial in scenarios where data from external systems is consumed or where data from the local system is to be synchronized with external systems. When you are working to set up your Integrations and want to test or troubleshoot your implementation before going live, you might need to create External Mappings manually and, at a later date, edit or delete them. # List External Mappings Source: https://docs.m3ter.com/api/external-mapping/list-external-mappings https://api.m3ter.com/spec get /organizations/{orgId}/externalmappings Retrieve a list of all External Mapping entities. This endpoint retrieves a list of all External Mapping entities for a specific Organization. The list can be paginated for better management, and supports filtering using the external system. # List External Mappings for a m3ter Entity Source: https://docs.m3ter.com/api/external-mapping/list-external-mappings-for-a-m3ter-entity https://api.m3ter.com/spec get /organizations/{orgId}/externalmappings/external/{entity}/{m3terId} Retrieve a list of External Mapping entities for a specified m3ter entity. Use this endpoint to retrieve a list of External Mapping entities associated with a specific m3ter entity. The list can be paginated for easier management. # List External Mappings for External Entity Source: https://docs.m3ter.com/api/external-mapping/list-external-mappings-for-external-entity https://api.m3ter.com/spec get /organizations/{orgId}/externalmappings/externalid/{system}/{externalTable}/{externalId} Retrieve a list of External Mapping entities for a specified external system entity. Use this endpoint to retrieve a list of External Mapping entities associated with a specific external system entity. The list can be paginated for easier management. # Retrieve External Entities from Destination Source: https://docs.m3ter.com/api/external-mapping/retrieve-external-entities-from-destination https://api.m3ter.com/spec get /organizations/{orgId}/externalmappingconfiguration/values/{destination}/{entityType} Retrieve a list of external entities from the specified destination system. This endpoint enables you to retrieve a list of potential values for creating an External Mapping from a specified destination system. The list is only returned if the destination system has been authenticated successfully and it supports such functionality, otherwise, you will receive an empty response. # Retrieve External Mapping Source: https://docs.m3ter.com/api/external-mapping/retrieve-external-mapping https://api.m3ter.com/spec get /organizations/{orgId}/externalmappings/{id} Retrieve an External Mapping with the given UUID. This endpoint enables you to retrieve the External Mapping with the specified UUID for a specific Organization. # Update External Mapping Source: https://docs.m3ter.com/api/external-mapping/update-external-mapping https://api.m3ter.com/spec put /organizations/{orgId}/externalmappings/{id} Updates an External Mapping with the given UUID. This endpoint enables you to update an existing External Mapping entity, identified by its UUID. You must supply a request body with the new details for the External Mapping. # Retrieve a list of external entities from the destination system for a particular credential Source: https://docs.m3ter.com/api/externalmappings/retrieve-a-list-of-external-entities-from-the-destination-system-for-a-particular-credential https://api.m3ter.com/spec get /organizations/{orgId}/externalmappingconfiguration/values/{destination}/{entityType}/{integrationCredentialsId} Retrieve a list of possible values to create an external mapping using a particular credential. These options are retrieved from the destination system if the system has been successfully authenticated and provides the mechanism to do so. Otherwise an empty response is returned. # Retrieve External Mapping Configuration Source: https://docs.m3ter.com/api/externalmappings/retrieve-external-mapping-configuration https://api.m3ter.com/spec get /organizations/{orgId}/externalmappingconfiguration Retrieve the global External Mapping configuration. This endpoint retrieves the global External Mapping configuration for the specified Organization. # Create IntegrationConfig Source: https://docs.m3ter.com/api/integrationconfigs/create-integrationconfig https://api.m3ter.com/spec post /organizations/{orgId}/integrationconfigs Set the integration configuration for the entity. # Delete IntegrationConfig Source: https://docs.m3ter.com/api/integrationconfigs/delete-integrationconfig https://api.m3ter.com/spec delete /organizations/{orgId}/integrationconfigs/{id} Delete the integration configuration for the given UUID. Use this endpoint to delete the configuration of a specific integration within your organization. It is intended for removing integration settings that are no longer needed. # Enable IntegrationConfig Source: https://docs.m3ter.com/api/integrationconfigs/enable-integrationconfig https://api.m3ter.com/spec post /organizations/{orgId}/integrationconfigs/{id}/enable Enables a previously disabled integration configuration, allowing it to be operational again. # Get ConfigOption Values Source: https://docs.m3ter.com/api/integrationconfigs/get-configoption-values https://api.m3ter.com/spec get /organizations/{orgId}/integrationconfigs/values/{systemName}/{configOption} Get possible values for specific configuration setting. # List All IntegrationConfigs Source: https://docs.m3ter.com/api/integrationconfigs/list-all-integrationconfigs https://api.m3ter.com/spec get /organizations/{orgId}/integrationconfigs List all integration configurations. This endpoint retrieves a list of all integration configurations for the specified Organization. The list can be paginated for easier management. # Retrieve Available Auth Config for System and Entity Type Source: https://docs.m3ter.com/api/integrationconfigs/retrieve-available-auth-config-for-system-and-entity-type https://api.m3ter.com/spec get /organizations/{orgId}/integrationconfigs/available/{systemName}/auth/{entityType} Retrieve the valid auth config for provided system and entity type. # Retrieve Available Configurations Source: https://docs.m3ter.com/api/integrationconfigs/retrieve-available-configurations https://api.m3ter.com/spec get /organizations/{orgId}/integrationconfigs/available This endpoint gets the available configuration options for integrations. # Retrieve Available Entity Types for System Source: https://docs.m3ter.com/api/integrationconfigs/retrieve-available-entity-types-for-system https://api.m3ter.com/spec get /organizations/{orgId}/integrationconfigs/available/{systemName}/entities Retrieve the valid entity types for provided system. # Retrieve Available Integration Systems Source: https://docs.m3ter.com/api/integrationconfigs/retrieve-available-integration-systems https://api.m3ter.com/spec get /organizations/{orgId}/integrationconfigs/available/systems Retrieve the valid integration systems. Can be filtered by entityType. # Retrieve IntegrationConfig Source: https://docs.m3ter.com/api/integrationconfigs/retrieve-integrationconfig https://api.m3ter.com/spec get /organizations/{orgId}/integrationconfigs/entity/{entityType} Retrieve the integration configuration for the entity # Retrieve IntegrationConfig for UUID Source: https://docs.m3ter.com/api/integrationconfigs/retrieve-integrationconfig-for-uuid https://api.m3ter.com/spec get /organizations/{orgId}/integrationconfigs/{id} Retrieve the integration configuration for the given UUID. This endpoint retrieves the configuration details of a specific integration within an organization. It is useful for obtaining the settings and parameters of an integration. # Update IntegrationConfig Source: https://docs.m3ter.com/api/integrationconfigs/update-integrationconfig https://api.m3ter.com/spec put /organizations/{orgId}/integrationconfigs/{id} Update the integration configuration for the given UUID. This endpoint allows you to update the configuration of a specific integration within your organization. It is used to modify settings or parameters of an existing integration. # Create IntegrationCredential Source: https://docs.m3ter.com/api/integrationcredentials/create-integrationcredential https://api.m3ter.com/spec post /organizations/{orgId}/integrationcredentials Create an integration credentials # Delete IntegrationCredentials Source: https://docs.m3ter.com/api/integrationcredentials/delete-integrationcredentials https://api.m3ter.com/spec delete /organizations/{orgId}/integrationcredentials/{id} Delete the integration credentials for the UUID # List integration credentials Source: https://docs.m3ter.com/api/integrationcredentials/list-integration-credentials https://api.m3ter.com/spec get /organizations/{orgId}/integrationcredentials Retrieve a list of the integration authorization items for the organization # Retrieve IntegrationCredentials Source: https://docs.m3ter.com/api/integrationcredentials/retrieve-integrationcredentials https://api.m3ter.com/spec get /organizations/{orgId}/integrationcredentials/{id} Retrieve the integration credentials for the UUID # Update IntegrationCredentials Source: https://docs.m3ter.com/api/integrationcredentials/update-integrationcredentials https://api.m3ter.com/spec put /organizations/{orgId}/integrationcredentials/{id} Updated the integration credentials for the UUID # Activate Webhook Destination Source: https://docs.m3ter.com/api/integrationdestinations/activate-webhook-destination https://api.m3ter.com/spec put /organizations/{orgId}/integrationdestinations/webhooks/{id}/active Set the `active` status on a webhook integration destination. Use this endpoint to activate or deactivate a webhook integration destination. It toggles the `active` status of the specific wehbook destination with the given ID. # Create Webhook Destination Source: https://docs.m3ter.com/api/integrationdestinations/create-webhook-destination https://api.m3ter.com/spec post /organizations/{orgId}/integrationdestinations/webhooks This endpoint creates a new webhook destination. A webhook destination is a URL where webhook payloads will be sent. # Create Workflow Source: https://docs.m3ter.com/api/integrationdestinations/create-workflow https://api.m3ter.com/spec post /organizations/{orgId}/integrationdestinations/workflows Create a new workflow # Delete Webhook Destination Source: https://docs.m3ter.com/api/integrationdestinations/delete-webhook-destination https://api.m3ter.com/spec delete /organizations/{orgId}/integrationdestinations/webhooks/{id} This endpoint deletes a specific webhook destination identified by its UUID. # Delete Workflow Source: https://docs.m3ter.com/api/integrationdestinations/delete-workflow https://api.m3ter.com/spec delete /organizations/{orgId}/integrationdestinations/workflows/{id} Delete an existing workflow # Discard Workflow Draft Source: https://docs.m3ter.com/api/integrationdestinations/discard-workflow-draft https://api.m3ter.com/spec delete /organizations/{orgId}/integrationdestinations/workflows/{id}/draft Discard the current workflow draft # Enable Workflow Source: https://docs.m3ter.com/api/integrationdestinations/enable-workflow https://api.m3ter.com/spec put /organizations/{orgId}/integrationdestinations/workflows/{id}/enable Enable a workflow. Requires that the workflow contains no errors # Export Workflow Version Source: https://docs.m3ter.com/api/integrationdestinations/export-workflow-version https://api.m3ter.com/spec get /organizations/{orgId}/integrationdestinations/workflows/{id}/export Export the specified version of the workflow for the UUID. # Get Triggerse Source: https://docs.m3ter.com/api/integrationdestinations/get-triggerse https://api.m3ter.com/spec get /organizations/{orgId}/integrationdestinations/workflows/triggers Retrieve the triggers for workflows # Get Workflow Source: https://docs.m3ter.com/api/integrationdestinations/get-workflow https://api.m3ter.com/spec get /organizations/{orgId}/integrationdestinations/workflows/{id} Retrieve the workflow for the specified ID # Get Workflow Access Rights Source: https://docs.m3ter.com/api/integrationdestinations/get-workflow-access-rights https://api.m3ter.com/spec get /organizations/{orgId}/integrationdestinations/workflows/accessrights Retrieve the access rights of the workflow service # List Destinations Source: https://docs.m3ter.com/api/integrationdestinations/list-destinations https://api.m3ter.com/spec get /organizations/{orgId}/integrationdestinations/webhooks Retrieve a list of all Destinations created in the Organization. # List Functions Source: https://docs.m3ter.com/api/integrationdestinations/list-functions https://api.m3ter.com/spec get /organizations/{orgId}/integrationdestinations/workflows/functions Retrieve the available workflow functions, optionally filtered by destination type # List WorkflowIntegrations Source: https://docs.m3ter.com/api/integrationdestinations/list-workflowintegrations https://api.m3ter.com/spec get /organizations/{orgId}/integrationdestinations/workflows Retrieve a list of WorkflowIntegration entities # Publish Workflow Draft Source: https://docs.m3ter.com/api/integrationdestinations/publish-workflow-draft https://api.m3ter.com/spec post /organizations/{orgId}/integrationdestinations/workflows/{id}/publish Publish the current draft as a new workflow version # Retrieve Destination Source: https://docs.m3ter.com/api/integrationdestinations/retrieve-destination https://api.m3ter.com/spec get /organizations/{orgId}/integrationdestinations/webhooks/{id} Retrieve the webhook Destination for the UUID. # Save Workflow Draft Source: https://docs.m3ter.com/api/integrationdestinations/save-workflow-draft https://api.m3ter.com/spec put /organizations/{orgId}/integrationdestinations/workflows/{id}/draft Save a draft of the workflow without publishing it as a new version # Set Workflow Use Draft Source: https://docs.m3ter.com/api/integrationdestinations/set-workflow-use-draft https://api.m3ter.com/spec put /organizations/{orgId}/integrationdestinations/workflows/{id}/useDraft Toggle whether workflow execution uses the latest draft version or the latest live version # Update Destination Source: https://docs.m3ter.com/api/integrationdestinations/update-destination https://api.m3ter.com/spec put /organizations/{orgId}/integrationdestinations/webhooks/{id} Update a destination to be used for a webhook. # Update Workflow Source: https://docs.m3ter.com/api/integrationdestinations/update-workflow https://api.m3ter.com/spec put /organizations/{orgId}/integrationdestinations/workflows/{id} Update an existing workflow # Validate Workflow Source: https://docs.m3ter.com/api/integrationdestinations/validate-workflow https://api.m3ter.com/spec post /organizations/{orgId}/integrationdestinations/workflows/validate Validate workflow # Get IntegrationRun for the UUID Source: https://docs.m3ter.com/api/integrationruns/get-integrationrun-for-the-uuid https://api.m3ter.com/spec get /organizations/{orgId}/integrationruns/{id} Retrieve the integration run for the id # Get IntegrationRun Log Source: https://docs.m3ter.com/api/integrationruns/get-integrationrun-log https://api.m3ter.com/spec get /organizations/{orgId}/integrationruns/logs/{id} Retrieve the integrationrun log for the given UUID. This endpoint is for retrieving logs of a specific integrationrun. It is useful for debugging and monitoring the performance of integrations within your organization. # List IntegrationRuns Source: https://docs.m3ter.com/api/integrationruns/list-integrationruns https://api.m3ter.com/spec get /organizations/{orgId}/integrationruns/{entityType}/{entityId} Retrieve a list of the integration runs for the specified entity. You can filter the list using the `startDate` and `endDate` query parameters to specify date/times to define the time period you want to return integration runs for. # List IntegrationRuns By DestinationId Source: https://docs.m3ter.com/api/integrationruns/list-integrationruns-by-destinationid https://api.m3ter.com/spec get /organizations/{orgId}/integrationruns/destinations/{destinationId} Retrieve a list of the integration runs for the destination # Replay an IntegrationRun Source: https://docs.m3ter.com/api/integrationruns/replay-an-integrationrun https://api.m3ter.com/spec post /organizations/{orgId}/integrationruns/{id}/replay Re-submits the original request from a previous integration run # Retrieve IntegrationRuns Source: https://docs.m3ter.com/api/integrationruns/retrieve-integrationruns https://api.m3ter.com/spec get /organizations/{orgId}/integrationruns/{entityType}/latest Retrieve the latest integration runs for entity and ids # Retrieve Latest IntegrationRun Source: https://docs.m3ter.com/api/integrationruns/retrieve-latest-integrationrun https://api.m3ter.com/spec get /organizations/{orgId}/integrationruns/{entityType}/latest/{id} Retrieve the latest integration run for the entity. # Integrations Endpoints Source: https://docs.m3ter.com/api/integrations/introduction A suite of endpoints for configuring and managing third party integrations within the m3ter platform. The integration endpoints in this section facilitate various operations such as creating, updating, listing, and deletion of integrations. m3ter integrations enable seamless data synchronization and mapping with external systems required in core business processes. These processes often include sales, pricing, billing and invoicing, and general finance. With m3ter integrations, you can establish robust connections with popular business platforms, enhancing your operational capabilities. For example: * Chargebee * Salesforce * Stripe * Netsuite * Paddle * Xero * QuickBooks # Create a new transformation Source: https://docs.m3ter.com/api/integrationtransformations/create-a-new-transformation https://api.m3ter.com/spec post /organizations/{orgId}/integrationtransformations Create a new transformation # Delete IntegrationTransformation for the UUID Source: https://docs.m3ter.com/api/integrationtransformations/delete-integrationtransformation-for-the-uuid https://api.m3ter.com/spec delete /organizations/{orgId}/integrationtransformations/{id} Deletes the integration transformation for the id # Get IntegrationTransformation for the UUID Source: https://docs.m3ter.com/api/integrationtransformations/get-integrationtransformation-for-the-uuid https://api.m3ter.com/spec get /organizations/{orgId}/integrationtransformations/{id} Retrieve the integration transformation for the id # Preview a transformation against an existing entity Source: https://docs.m3ter.com/api/integrationtransformations/preview-a-transformation-against-an-existing-entity https://api.m3ter.com/spec get /organizations/{orgId}/integrationtransformations/systems Create a new transformation # Retrieve IntegrationTransformations Source: https://docs.m3ter.com/api/integrationtransformations/retrieve-integrationtransformations https://api.m3ter.com/spec get /organizations/{orgId}/integrationtransformations Retrieve the integration transformations # Update the IntegrationTransformation for the UUID Source: https://docs.m3ter.com/api/integrationtransformations/update-the-integrationtransformation-for-the-uuid https://api.m3ter.com/spec put /organizations/{orgId}/integrationtransformations/{id} Update the integration transformation for the id # API Reference Source: https://docs.m3ter.com/api/introduction The m3ter platform supports two HTTP-based REST APIs returning JSON encoded responses: * The **Ingest API**, which you can use for submitting raw data measurements. *(See the [Submit Measurements](/api/measurements/submit-measurements) endpoint in this API Reference.)* * The **Config API**, which you can use for configuration and management. *(All other endpoints in this API Reference.)* # Invitation Endpoints Source: https://docs.m3ter.com/api/invitations/introduction Endpoints for creating and retrieving user invitations. Use invitations to invite other people to join your m3ter Organization. An invitation sends an email inviting someone to join your Organization. When you set up an invitation, you can: * Assign the required permission policies to control what the invitee can do when they accept the invite and join your Organization. * Set a date for when the invitation will expire. * Set a date for when the invited user's access will expire. When the invitee receives the invitation email: * If the invitee is already a m3ter user and has a m3ter account, they can click a link and use their credentials to log into your Organization. * If the invitee is not a m3ter user and does not have a m3ter account, they'll be invited to create a m3ter account before logging into your Organization. See [Inviting Users to your Organization](/guides/organization-and-access-management/managing-users#inviting-users-to-your-organization) in our user documentation for more details. # Invite User to Organization Source: https://docs.m3ter.com/api/invitations/invite-user-to-organization https://api.m3ter.com/spec post /organizations/{orgId}/invitations Invite a new user to your Organization. This sends an email to someone inviting them to join your m3ter Organization. # Retrieve Invitation Source: https://docs.m3ter.com/api/invitations/retrieve-invitation https://api.m3ter.com/spec get /organizations/{orgId}/invitations/{id} Retrieve the specified invitation with the given UUID. # Retrieve Invitations Source: https://docs.m3ter.com/api/invitations/retrieve-invitations https://api.m3ter.com/spec get /organizations/{orgId}/invitations Retrieve a list of all invitations in the Organization. # Line Item Endpoints Source: https://docs.m3ter.com/api/line-item/introduction Endpoint for retrieving a list of line items for Bills in an Organization. # List Line Items Source: https://docs.m3ter.com/api/line-item/list-line-items https://api.m3ter.com/spec get /organizations/{orgId}/lineitems List the billing line items for the given Organization, which can be filtered by the type of line item, Bill ID, or Commitment *(prepayment)* ID. # Create LookupTable Source: https://docs.m3ter.com/api/lookuptable/create-lookuptable https://api.m3ter.com/spec post /organizations/{orgId}/lookuptables Create a new Lookup Table. # Delete LookupTable Source: https://docs.m3ter.com/api/lookuptable/delete-lookuptable https://api.m3ter.com/spec delete /organizations/{orgId}/lookuptables/{id} Delete the Lookup Table with the given UUID. # Get LookupTable Source: https://docs.m3ter.com/api/lookuptable/get-lookuptable https://api.m3ter.com/spec get /organizations/{orgId}/lookuptables/{id} Retrieve a Lookup Table by UUID. # Lookup Table Endpoints Source: https://docs.m3ter.com/api/lookuptable/introduction Endpoints for creating/updating/deleting Lookup Tables. Lookup Tables enable you to manage dynamic data mappings that your calculations reference. Use them for currency conversion, pricing tiers, discount rates, and similar scenarios where you require values to change operationally but for calculation logic to remain constant. **Beta Version!** The Lookup Table feature is currently available in Beta release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Beta release definition. Lookup Table endpoints will only be available if Lookup Tables have been enabled for your Organization. For more details see [Lookup Tables (Beta)](/guides/lookup-tables) in our main User documentation. # List LookupTable Source: https://docs.m3ter.com/api/lookuptable/list-lookuptable https://api.m3ter.com/spec get /organizations/{orgId}/lookuptables Retrieve a list Lookup Tables created for the Organization: * Returned list can be filtered by Lookup Table `code` query parameter. * If you want to include any non-default fields for the returned Lookup Tables, use the additional query parameter to specify which you want to include in the response. # Update LookupTable Source: https://docs.m3ter.com/api/lookuptable/update-lookuptable https://api.m3ter.com/spec put /organizations/{orgId}/lookuptables/{id} Update the Lookup Table with the given UUID. # Create LookupTableRevision Source: https://docs.m3ter.com/api/lookuptablerevision/create-lookuptablerevision https://api.m3ter.com/spec post /organizations/{orgId}/lookuptables/{lookupTableId}/revisions Create a new Revision for a Lookup Table. Fields and Keys for Revision schema: Use the `fields` parameter to define a Revision schema containing up to 10 number or string fields. Use the `keys` parameter to specify which are the key fields: * At least one field must be a non-key field and at least one a key field. * Up to 5 key fields can be defined. * Using multiple key fields: ensure that the order in which they are defined matches the order in which you want to use them in any Lookup functions that reference the Revision's Lookup Table, because this is the order in which they will be passed into the function. The order of non-key fields is not constrained in this way. Revision status: when you first create a Lookup Table Revision it has DRAFT status. Use the [Update LookupTableRevision Status](https://docs.m3ter.com/api/lookuptablerevision/update-lookuptablerevision-status) call to change a Revision's status. # Delete LookupTableRevision Source: https://docs.m3ter.com/api/lookuptablerevision/delete-lookuptablerevision https://api.m3ter.com/spec delete /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{id} Delete the Lookup Table Revision for the given UUID. # Lookup Table Revision Endpoints Source: https://docs.m3ter.com/api/lookuptablerevision/introduction Endpoints for creating/updating/deleting Lookup Table Revisions. Lookup Tables utilize a "Table and Revision" model, which lets you update data cleanly, and extend the schema without modifying existing calculations: * Create Revisions for a Lookup Table, which you can use to define data schema and lookup keys. * Populate draft Revisions with data values. You can create and edit multiple draft Revisions, but only one can be published at any given time. * Publish a Revision to activate it. When you use Lookup functions in your calculations that reference the Lookup Table, the data values defined for the published Revision are used. * When you want different, updated data values to be used, publish the draft Revision containing the required new values. The currently published Revision is archived automatically. **Beta Version!** The Lookup Table feature is currently available in Beta release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Beta release definition. Lookup Table Revision endpoints will only be available if Lookup Tables have been enabled for your Organization. For more details see [Lookup Tables (Beta)](/guides/lookup-tables) in our main User documentation. # List LookupTableRevision Source: https://docs.m3ter.com/api/lookuptablerevision/list-lookuptablerevision https://api.m3ter.com/spec get /organizations/{orgId}/lookuptables/{lookupTableId}/revisions List LookupTableRevision entities # Retrieve LookupTableRevision Source: https://docs.m3ter.com/api/lookuptablerevision/retrieve-lookuptablerevision https://api.m3ter.com/spec get /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{id} Retrieve a Lookup Table Revision for the given UUID. # Update LookupTableRevision Source: https://docs.m3ter.com/api/lookuptablerevision/update-lookuptablerevision https://api.m3ter.com/spec put /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{id} Update a Lookup Table Revision for the given UUID. **NOTE:** If you've already added data to a Lookup Table Revision - see the following [Lookup Table Revision Data](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData) section - then you won't be able to change the Revision's field schema and you'll receive an error if you try do this. Create a new Revision instead, or delete the data items first. # Update LookupTableRevision Status Source: https://docs.m3ter.com/api/lookuptablerevision/update-lookuptablerevision-status https://api.m3ter.com/spec put /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{id}/status Update the status of a Lookup Table Revision for the given UUID. # Copy LookupTableRevisionData Source: https://docs.m3ter.com/api/lookuptablerevisiondata/copy-lookuptablerevisiondata https://api.m3ter.com/spec post /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/copy Copy the Lookup Table Revision Data from a source Revision to an optional target Revision: * If you omit a target `revisionId`, then the source Revision and its Data is duplicated. The new Revision is given the source Revision's name appended with "Copy" but is assigned a new unique id. * If you specify a target `revisionId` to copy the source Revision and its Data to, you must ensure that the target Revision has a Data schema that matches the source Revision's Data schema otherwise you'll receive an error # Delete LookupTableRevisionData Source: https://docs.m3ter.com/api/lookuptablerevisiondata/delete-lookuptablerevisiondata https://api.m3ter.com/spec delete /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data Delete the Lookup Table Revision Data for the given UUID. # Delete LookupTableRevisionData entry Source: https://docs.m3ter.com/api/lookuptablerevisiondata/delete-lookuptablerevisiondata-entry https://api.m3ter.com/spec delete /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/{lookupKey} Delete a Lookup Table Revision Data entry by lookup key. **NOTES:** * To obtain the lookup key for a Revision's data items, use the [Get LookupTableRevisionData](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionData) endpoint in this section and use the `additional=lookupKey` query parameter. * If the Revision's Data schema uses multiple key fields, enter these as a comma-separated list for the `lookupKey` path parameter: .../key1,key2,key3 and so on. Importantly, multiple keys must be *entered in the same order* as they are configured in the Revision's Data schema. # Delete LookupTableRevisionData Job Response Source: https://docs.m3ter.com/api/lookuptablerevisiondata/delete-lookuptablerevisiondata-job-response https://api.m3ter.com/spec delete /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/jobs/{id} Delete the LookupTableRevisionData Job Response for given job id. **NOTE:** Use the [List LookupTableRevisionData Jobs](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/ListLookupTableRevisionDataJobs) endpoint to list the Data job Responses for a specific Revision. # Generate LookupTableRevisionData Upload URL Source: https://docs.m3ter.com/api/lookuptablerevisiondata/generate-lookuptablerevisiondata-upload-url https://api.m3ter.com/spec post /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/generateuploadurl Generate a URL which can be used to upload a data file for creating or updating the Lookup Table Revision's data: * An upload URL is returned together with an UPLOAD `jobId`. * You can then upload your data file using a PUT request using the returned upload URL as the endpoint. For the PUT request, map the headers returned and their values and in the request body select the specified CSV or JSONL file containing the Revision Data to upload. * You can use the returned UPLOAD `jobId` with the [List LookupTableRevisionData Jobs](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/ListLookupTableRevisionDataJobs) or the [Get LookupTableRevisionData Job Response](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionDataJobResponse) endpoints for any follow-up or troubleshooting. **Important:** * The `contentLength` request parameter is required. * The upload URL is time limited - it is valid for ***one minute***. # Get LookupTableRevisionArchivedData URL Source: https://docs.m3ter.com/api/lookuptablerevisiondata/get-lookuptablerevisionarchiveddata-url https://api.m3ter.com/spec post /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/archived Get a URL which you can use to download the data for the specified archived Lookup Table Revision: * The `contentType` request parameter is required. * The returned URL is presigned - you can copy it into a browser and the data file is downloaded locally. * The upload URL is time limited - the `expiry` time is given in the response and the URL is valid for ***one hour***. # Get LookupTableRevisionData Source: https://docs.m3ter.com/api/lookuptablerevisiondata/get-lookuptablerevisiondata https://api.m3ter.com/spec get /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data List Lookup Table Revision Data items for the given UUID. # Get LookupTableRevisionData entry Source: https://docs.m3ter.com/api/lookuptablerevisiondata/get-lookuptablerevisiondata-entry https://api.m3ter.com/spec get /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/{lookupKey} Retrieve a Lookup Table Revision Data item for the given lookup key. **NOTES:** * To obtain the lookup key for a Revision's data items, use the [Get LookupTableRevisionData](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionData) endpoint in this section and use the `additional=lookupKey` query parameter. * If the Revision's Data schema uses multiple key fields, enter these as a comma-separated list for the `lookupKey` path parameter: .../key1,key2,key3 and so on. Importantly, multiple keys must be *entered in the same order* as they are configured in the Revision's Data schema. # Get LookupTableRevisionData Job Response. Source: https://docs.m3ter.com/api/lookuptablerevisiondata/get-lookuptablerevisiondata-job-response https://api.m3ter.com/spec get /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/jobs/{id} Get the Lookup Table Revision Data job Response for given job id. **NOTE:** Use the [List LookupTableRevisionData Jobs](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/ListLookupTableRevisionDataJobs) endpoint to list the Data job Responses for a specific Revision. # Lookup Table Revision Data Endpoints Source: https://docs.m3ter.com/api/lookuptablerevisiondata/introduction Endpoints for creating/updating/deleting Data for specific Lookup Table Revisions. When you've added fields to create a data schema for a Lookup Table Revision, you can use upsert operations to create or update the data values for those fields: * Use [Upsert LookupTableRevisionData](/api/lookuptablerevisiondata/upsert-lookuptablerevisiondata) to upsert some or all of a Revision's field data values. * Use [Upsert LookupTableRevisionData Entry](/api/lookuptablerevisiondata/upsert-lookuptablerevisiondata-entry) to upsert an individual Revision field's data value. ## Notes * You can only create or update field data values for DRAFT Revisions. * You cannot change the field data values for PUBLISHED Revisions. **Beta Version!** The Lookup Table feature is currently available in Beta release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Beta release definition. Lookup Table Revision Data endpoints will only be available if Lookup Tables have been enabled for your Organization. For more details see [Lookup Tables (Beta)](/guides/lookup-tables) in our main User documentation. # List LookupTableRevisionData Jobs Source: https://docs.m3ter.com/api/lookuptablerevisiondata/list-lookuptablerevisiondata-jobs https://api.m3ter.com/spec get /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/jobs List the Lookup Table Revision Data job Responses for the given Lookup Table Revision. There are four types of Revision Data jobs: * **COPY**. Job runs when you use the [Copy LookupTableRevisionData](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/CopyLookupTableRevisionData) endpoint which returns the `jobId`. * **UPLOAD**. Job runs when you use the [Generate LookupTableRevisionData Upload URL](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GenerateLookupTableDataUploadUrl) endpoint which returns the `jobId`. * **DOWNLOAD**. Job runs when you use the [](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/TriggerLookupTableRevisionDataDownloadJob) endpoint which returns the `jobId`. * **ARCHIVE**. Job runs when you either manually change a DRAFT Revision to PUBLISHED using the [Update LookupTableRevision Status](https://www.m3ter.com/docs/api#tag/LookupTableRevision/operation/UpdateLookupTableRevisionStatus) endpoint or you publish a DRAFT Revision and the existing PUBLISHED Revision is archived. **NOTE:** This endpoint returns the id of each Data job. You then use: * The [Get LookupTableRevisionData Job Response](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionDataJobResponse) endpoint to retrieve a specific Data job Response. * The [Delete LookupTableRevisionData Job Response](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/DeleteLookupTableRevisionDataJobResponse) to delete a specific Data job Response. # Trigger Download LookupTableRevisionData URL Job Source: https://docs.m3ter.com/api/lookuptablerevisiondata/trigger-download-lookuptablerevisiondata-url-job https://api.m3ter.com/spec post /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/jobs/download Trigger an URL job to download the Lookup Table Revision Data. The URL download Data `jobId` is returned and you can then use the [List LookupTableRevisionData Jobs](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/ListLookupTableRevisionDataJobs) endpoint or the [Get LookupTableRevisionData Job Response](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionDataJobResponse) endpoint to retrieve the URL and perform the Revision data Download. # Upsert LookupTableRevisionData Source: https://docs.m3ter.com/api/lookuptablerevisiondata/upsert-lookuptablerevisiondata https://api.m3ter.com/spec put /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data Create/update the Lookup Table Revision Data for the given UUID. # Upsert LookupTableRevisionData entry Source: https://docs.m3ter.com/api/lookuptablerevisiondata/upsert-lookuptablerevisiondata-entry https://api.m3ter.com/spec put /organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/{lookupKey} Create/update a Lookup Table Revision Data item by lookup key. **NOTES:** * To obtain the lookup key for a Revision's data items, use the [Get LookupTableRevisionData](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionData) endpoint in this section and use the `additional=lookupKey` query parameter. * If the Revision's Data schema uses multiple key fields, enter these as a comma-separated list for the `lookupKey` path parameter: .../key1,key2,key3 and so on. Importantly, multiple keys must be *entered in the same order* as they are configured in the Revision's Data schema. # Marketplace Integrations Endpoints Source: https://docs.m3ter.com/api/marketplace-integrations/introduction Endpoints for retrieving reporting data on Marketplace Integration runs # Retrieve reported usage Source: https://docs.m3ter.com/api/marketplace-integrations/retrieve-reported-usage https://api.m3ter.com/spec get /organizations/{orgId}/integrationdestinations/marketplace/usageReport Retrieve a list of reported usage records that match the provided filters. When Bill integration runs are performed, all interactions between m3ter and a Marketplace system are persisted as logs. Use this endpoint to retrieve these logs, which you can use to track all amounts sent over to the Marketplace system together with the date and time the Bill data was sent. This provides a report on usage data sent to the Marketplace for each Bill integration run # Generate Upload URL Source: https://docs.m3ter.com/api/measurements/generate-upload-url https://api.m3ter.com/spec post /organizations/{orgId}/fileuploads/measurements/generateUploadUrl Generate a URL for uploading a file containing measurements to the platform in preparation for the measurements it contains to be ingested: - An upload URL is returned together with an upload job id: - You can then upload your data measurements file using a `PUT` request using the returned upload URL as the endpoint. - You can use the returned upload job id with other calls to the File Upload Service for any follow-up or troubleshooting. **Important:** * The `contentLength` request parameter is required. * The upload URL is time limited - it is valid for ***one*** minute. Part of the file upload service for submitting measurements data files. # Get Failed Ingest File Download URL Source: https://docs.m3ter.com/api/measurements/get-failed-ingest-file-download-url https://api.m3ter.com/spec get /organizations/{orgId}/measurements/failedIngest/getDownloadUrl Returns a presigned download URL for failed ingest file download based on the file path provided. If a usage data ingest measurement you submit to the m3ter platform fails, an `ingest.validation.failure` Event is generated. Use this call to obtain a download URL which you can then use to download a file containing details of what went wrong with the attempted usage data measurement ingest, and allowing you to follow-up and resolve the issue. To obtain the `file` query parameter: - Use the [List Events](https://www.m3ter.com/docs/api#tag/Events/operation/ListEventFields) call with the `ingest.validation.failure` for the `eventName` query parameter. - The response contains a `getDownloadUrl` response parameter and this contains the file path you can use to obtain the failed ingest file download URL. **Notes:** - The presigned Url returned to use for failed ingest file download is time-bound and expires after 5 minutes. - If you make a List Events call for `ingest.validation.failure` Events in your Organization, then you can perform this **GET** call using the full URL returned for any ingest failure Event to obtain a failed ingest file download URL for the Event. # Get File Upload Job Response Source: https://docs.m3ter.com/api/measurements/get-file-upload-job-response https://api.m3ter.com/spec get /organizations/{orgId}/fileuploads/measurements/jobs/{id} Get the file upload job response using the UUID of the file upload job. Part of the file upload service for measurements ingest. # Get Original File Download URL Source: https://docs.m3ter.com/api/measurements/get-original-file-download-url https://api.m3ter.com/spec get /organizations/{orgId}/fileuploads/measurements/jobs/{id}/original Use the original file upload job id to obtain a download URL, which you can then use to retrieve the file you originally uploaded to the file upload service: - A download URL is returned together with a download job id. - You can then use a `GET` using the returned download URL as the endpoint to retrieve the file you originally uploaded. Part of the file upload service for submitting measurements data files. # Measurement Endpoints Source: https://docs.m3ter.com/api/measurements/introduction Endpoints for submitting usage data measurements to the m3ter platform. * **Directly:** You can use the **Submit Measurements** call to submit raw data measurements directly using the **Ingest API**. * **Indirectly:** You can use the platform's file upload service calls to prepare for and submit a file for data ingest using the **Config API**. To use the file upload service: * First, make a **Generate an upload URL** call to obtain a temporary upload URL and an upload job ID. * You can then upload your data measurements file using a `PUT` request using the upload URL as the endpoint. * Any errors are reported via the normal [Alerts](/guides/alerts-events-and-notifications/viewing-and-managing-alerts) service in the Console UI. * If any issues occur with a file upload, you can use the upload job ID with other file upload service calls we provide to troubleshoot and resolve issues. You can also perform a File Upload via a Meter's Details page in the m3ter Console using a `CSV` formatted file you've prepared for usage data measurements ingest for the Meter. See also: * [Optimizing Measurement Submissions](/guides/m3ter-apis/ingest-api-limits). * [File Upload Service API](https://docs.m3ter.com/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api) * [File Uploads for Usage Data by Meter](https://docs.m3ter.com/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter) # List File Upload Jobs Source: https://docs.m3ter.com/api/measurements/list-file-upload-jobs https://api.m3ter.com/spec get /organizations/{orgId}/fileuploads/measurements/jobs Lists the File Upload jobs. Part of the File Upload service for measurements ingest: * You can use the `dateCreatedStart` and `dateCreatedEnd` optional Query parameters to define a date range to filter the File Uploads jobs returned for this call. * If `dateCreatedStart` and `dateCreatedEnd` Query parameters are not used, then all File Upload jobs are returned. # Submit Measurements Source: https://docs.m3ter.com/api/measurements/submit-measurements https://api.m3ter.com/spec post /organizations/{orgId}/measurements Submit a measurement or multiple measurements to the m3ter platform. The maximum size of the payload needs to be less than 512,000 bytes. **NOTES:** * **Non-existent Accounts.** The `account` request parameter is required. However, if you want to submit a usage data measurement for an Account which does not yet exist in your Organization, you can use an `account` code for a non-existent Account. A new skeleton Account will be automatically created. The usage data measurement is accepted and ingested as data belonging to the new auto-created Account. At a later date, you can edit the Account and update the Code,??Name, and email address. For more details, see [Submitting Usage Data for Non-Existent Accounts](https://www.m3ter.com/docs/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-for-non-existent-accounts) in our main documentation. * **Usage Data Adjustments.** If you need to make corrections for billing retrospectively against an Account, you can use date/time values in the past for the `ts` (timestamp) request parameter to submit positive or negative usage data amounts to correct and reconcile earlier billing anomalies. For more details, see [Submitting Usage Data Adjustments Using Timestamp](https://www.m3ter.com/docs/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp) in our main documentation. * **Ingest Validation Failure Events.** After the intial submission of a usage data measurement to the Ingest API, a data enrichment stage is performed to check for any errors in the usage data measurement, such as a missing field. If an error is identified, this might result in the submission being rejected. In these cases, an *ingest validation failure* Event is generated, which you can review on the [Ingest Events](https://www.m3ter.com/docs/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events) page in the Console. See also the [Events](https://www.m3ter.com/docs/api#tag/Events) section in this API Reference. **IMPORTANT! - Use of PII:** The use of any of your end-customers' Personally Identifiable Information (PII) in m3ter is restricted to a few fields on the **Account** entity. Please ensure that any measurements you submit do not contain any end-customer PII data. See the [Introduction section](https://www.m3ter.com/docs/api#section/Introduction) above for more details. # Create Meter Source: https://docs.m3ter.com/api/meter/create-meter https://api.m3ter.com/spec post /organizations/{orgId}/meters Create a new Meter. When you create a Meter, you can define two types of field for usage data collection and ingest into the platform: - `dataFields` to collect raw usage data measures - numeric quantitative data values or non-numeric point data values. - `derivedFields` to derive usage data measures that are the result of applying a calculation to `dataFields`, `customFields`, or system `Timestamp` fields. You can also: - Create `customFields` for a Meter, which allows you to attach custom data to the Meter as name/value pairs. - Create Global Meters, which are not tied to a specific Product and allow you collect to usage data that will form the basis of usage-based pricing across more than one of your Products. **IMPORTANT! - use of PII:** The use of any of your end-customers' Personally Identifiable Information (PII) in m3ter is restricted to a few fields on the **Account** entity. Please ensure that any fields you configure for Meters, such as Data Fields or Derived Fields, do not contain any end-customer PII data. See the [Introduction section](https://www.m3ter.com/docs/api#section/Introduction) above for more details. See also: - [Reviewing Meter Options](https://www.m3ter.com/docs/guides/setting-up-usage-data-meters-and-aggregations/reviewing-meter-options). # Delete Meter Source: https://docs.m3ter.com/api/meter/delete-meter https://api.m3ter.com/spec delete /organizations/{orgId}/meters/{id} Delete the Meter with the given UUID. # Meter Endpoints Source: https://docs.m3ter.com/api/meter/introduction Endpoints for listing, creating, updating, retrieving, or deleting Meters. Use Meters to submit usage data for the consumption of your products and services by end customers. This usage data then becomes the basis for setting up usage-based pricing for your products and services. Examples of usage data collected in Meters: * Number of logins. * Duration of session. * Amount of data downloaded. To collect usage data and ingest it into the platform, you can define two types of fields for Meters: * `dataFields` Used to collect raw usage data measures - numeric quantitative data values or non-numeric point data values. * `derivedFields` Used to derive usage data measures that are the result of applying a calculation to `dataFields`, `customFields`, or system `Timestamp` fields. You can also: * Create `customFields` for a Meter, which allows you to attach custom data to the Meter as name/value pairs. * Create Global Meters, which are not tied to a specific Product and allow you to collect usage data that will form the basis of usage-based pricing across multiple Products. **Use of PII:** The use of any of your end-customers' Personally Identifiable Information (PII) in m3ter is restricted to a few fields on the **Account** entity. Please ensure that any fields you configure for Meters, such as Data Fields or Derived Fields, do not contain any end-customer PII data. See the [Introduction section](/api) above for more details. See also: * [Reviewing Meter Options](/guides/usage-data-meters/reviewing-meter-options). # List Meters Source: https://docs.m3ter.com/api/meter/list-meters https://api.m3ter.com/spec get /organizations/{orgId}/meters Retrieve a list of Meters that can be filtered by Product, Meter ID, or Meter short code. # Retrieve Meter Source: https://docs.m3ter.com/api/meter/retrieve-meter https://api.m3ter.com/spec get /organizations/{orgId}/meters/{id} Retrieve the Meter with the given UUID. # Update Meter Source: https://docs.m3ter.com/api/meter/update-meter https://api.m3ter.com/spec put /organizations/{orgId}/meters/{id} Update the Meter with the given UUID. **Note:** If you have created Custom Fields for a Meter, when you use this endpoint to update the Meter use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost. # Create MeterGroup Source: https://docs.m3ter.com/api/metergroup/create-metergroup https://api.m3ter.com/spec post /organizations/{orgId}/metergroups Create a new MeterGroup. # Delete MeterGroup Source: https://docs.m3ter.com/api/metergroup/delete-metergroup https://api.m3ter.com/spec delete /organizations/{orgId}/metergroups/{id} Delete a MeterGroup for the given UUID. # Meter Group Endpoints Source: https://docs.m3ter.com/api/metergroup/introduction Endpoints for creating/updating/deleting MeterGroups. MeterGroups represent a logical grouping of Meters. They are not required for billing, but mainly for Analytics purposes. For example: "show me the total income for all Meters in the 'Events' group". # List MeterGroups Source: https://docs.m3ter.com/api/metergroup/list-metergroups https://api.m3ter.com/spec get /organizations/{orgId}/metergroups Retrieve a list of MeterGroup entities # Retrieve MeterGroup Source: https://docs.m3ter.com/api/metergroup/retrieve-metergroup https://api.m3ter.com/spec get /organizations/{orgId}/metergroups/{id} Retrieve a MeterGroup for the given UUID. # Update MeterGroup Source: https://docs.m3ter.com/api/metergroup/update-metergroup https://api.m3ter.com/spec put /organizations/{orgId}/metergroups/{id} Update MeterGroup for the given UUID. # Create Notification Source: https://docs.m3ter.com/api/notifications/create-notification https://api.m3ter.com/spec post /organizations/{orgId}/notifications/configurations Create a new Notification for an Event. This endpoint enables you to create a new Event Notification for the specified Organization. You need to supply a request body with the details of the new Notification. # Delete Notification Source: https://docs.m3ter.com/api/notifications/delete-notification https://api.m3ter.com/spec delete /organizations/{orgId}/notifications/configurations/{id} Delete the Notification with the given UUID. This endpoint permanently removes a specified Notification and its configuration. This action cannot be undone. # Evaluate Calculation Source: https://docs.m3ter.com/api/notifications/evaluate-calculation https://api.m3ter.com/spec post /organizations/{orgId}/notifications/evaluate Evaluates a calculation against a specific Event or an Event type without triggering a Notification. This is useful for validating your calculation logic before adding it to a Notification. You can use either the `eventId` or `eventName` to test your calculation against: - `eventId` Tests the calculation for validity against a *specific Event* that has been generated for your Organization. - `eventName` Tests the calculation for validity against the *Event type*. Possible outcomes: - If in either case the calculation is valid, then `"success" : true` is returned. - If in either case the calculation is invalid, then `"success" : false` is returned, together with an `"error message"` giving the reason why the calculation is invaild for use against the specific Event or Event type. **Note:** If you use both the `eventId` and the `eventName` as request body parameters in a single call, then the `eventName` takes precedence and the calculation is evaluated for validity against the *Event type*. # Notification Endpoints Source: https://docs.m3ter.com/api/notifications/introduction This section provides endpoints for managing Event Notifications. You can create Notifications based on system Events generated by the platform. When you base a Notification on a specific Event type, you can include a calculation that references the fields available on that Event type to define precise conditions that must be met for the Notification to be triggered when an Event of that type occurs. In this way, you can set up highly customized Notifications that act as timely alerts to inform you about significant occurrences within your Organization. For instance, if you provide a sign-up bonus to new end-customer Accounts, you can set up a Notification to alert you when an end-customer Account has used up a certain percentage of their bonus credit. You can also set up Notifications based on Scheduled Event types you've created for your Organization. See the [ScheduledEventConfigurations](/api/scheduledeventconfigurations/introduction) section of this API Reference and [Working with Scheduled Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events) in our user documentation. For more details on Event types and their fields, see the [Events](/api/events/introduction) section. For detailed guidance on working with Events and Notifications, refer to the [Utilizing Events and Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications) section of the m3ter user documentation. # List Notifications Source: https://docs.m3ter.com/api/notifications/list-notifications https://api.m3ter.com/spec get /organizations/{orgId}/notifications/configurations Retrieve a list of Event Notifications for the specified Organization. This endpoint retrieves a list of all Event Notifications for the Organization identified by its UUID. The list can be paginated for easier management. The list also supports filtering by parameters such as Notification UUID. # Retrieve Notification Source: https://docs.m3ter.com/api/notifications/retrieve-notification https://api.m3ter.com/spec get /organizations/{orgId}/notifications/configurations/{id} Retrieve the details of a specific Notification using its UUID. Includes the Event the Notification is based on, and any calculation referencing the Event's field and which defines further conditions that must be met to trigger the Notification when the Event occurs. # Update Notification Source: https://docs.m3ter.com/api/notifications/update-notification https://api.m3ter.com/spec put /organizations/{orgId}/notifications/configurations/{id} Update a Notification with the given UUID. This endpoint modifies the configuration details of an existing Notification. You can change the Event that triggers the Notification and/or update the conditions for sending the Notification. # Organization Config Endpoints Source: https://docs.m3ter.com/api/organizationconfig/introduction Endpoints for retrieving or updating the Organization Config. Organization represents your company as a direct customer of m3ter. Use Organization configuration to define *Organization-wide* settings. For example: * Timezone. * Currencies and currency conversions. * Billing operations settings, such as: * Epoch dates to control first billing dates. * Whether to bill customer accounts in advance/in arrears for standing charge amounts, minimum spend amounts, and commitment fees. For other aspects of your Organization setup and configuration, see the following sections in this API Reference: * [Custom Fields](/api/customfield/introduction) * [Currencies](/api/currency/introduction) * [Credit Reasons](/api/creditreason/introduction) * [Debit Reason](/api/debitreason/introduction) * [Transaction Types](/api/transactiontype/introduction) See also: * [Managing your Organization](https://docs.m3ter.com/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). # Retrieve OrganizationConfig Source: https://docs.m3ter.com/api/organizationconfig/retrieve-organizationconfig https://api.m3ter.com/spec get /organizations/{orgId}/organizationconfig Retrieve the Organization-wide configuration details. # Update OrganizationConfig Source: https://docs.m3ter.com/api/organizationconfig/update-organizationconfig https://api.m3ter.com/spec put /organizations/{orgId}/organizationconfig Update the Organization-wide configuration details. # Organization User Endpoints Source: https://docs.m3ter.com/api/orgusers/introduction This section contains the endpoints for managing users within an Organization (OrgUser) These endpoints allow you to retrieve, update, and analyze user data, as well as their associated permissions and user groups. See the following topics in the m3ter documentation for further information: * [Understanding, Creating, and Managing Permission Policies](/guides/organization-and-access-management/creating-and-managing-permissions) * [Managing Access and Users](/guides/organization-and-access-management/managing-users) # List OrgUsers Source: https://docs.m3ter.com/api/orgusers/list-orgusers https://api.m3ter.com/spec get /organizations/{orgId}/users Retrieve a list of OrgUsers. Retrieves a list of all users within a specified Organization. Use this endpoint to get an overview of all users and their basic details. The list can be paginated for easier management. # Resend temporary password for user Source: https://docs.m3ter.com/api/orgusers/resend-temporary-password-for-user https://api.m3ter.com/spec put /organizations/{orgId}/users/{id}/password/resend Resend temporary password for user # Retrieve OrgUser Source: https://docs.m3ter.com/api/orgusers/retrieve-orguser https://api.m3ter.com/spec get /organizations/{orgId}/users/{id} Retrieve the OrgUser with the given UUID. Retrieves detailed information for a specific user within an Organization, using their unique identifier (UUID). # Retrieve OrgUser Groups Source: https://docs.m3ter.com/api/orgusers/retrieve-orguser-groups https://api.m3ter.com/spec get /organizations/{orgId}/users/{id}/usergroups Retrieve a list of User Groups for an OrgUser. Retrieves a list of all User Groups that a specific user belongs to within an Organization. The list can be paginated for easier management. **Notes:** - **User Groups as Resource Groups**. A User Group is a Resource Group - one used to group resources of type `user`. You can use the *Create ResourceGroup* call detailed in the [ResourceGroup](https://www.m3ter.com/docs/api#tag/ResourceGroup) section to create a User Resource Group, and then use the *Add Item* and *Remove Item* calls to manage which Users belong to the User Resource Group. - **Using the `inherited` parameter for the Retrieve OrgUser Groups call**. Resource Groups can be nested, which means a User Resource Group can contain another User Resource Group as a member. You can use the `inherited` parameter with this *Retrieve OrgUser Groups* call as a *QUERY PARAMETER* to control which User Resource Groups are returned: * If the user specified belongs to a User Resource Group that is nested as part of another User Resource Group: * If `inherited = TRUE`, then any Groups the user belongs to AND any parent Groups those Groups belong to as nested Groups are returned. * If `inherited = FALSE`, then only those User Resource Groups to which the user belongs are returned. # Retrieve OrgUser Permissions Source: https://docs.m3ter.com/api/orgusers/retrieve-orguser-permissions https://api.m3ter.com/spec get /organizations/{orgId}/users/{id}/permissions Retrieve the permissions for the OrgUser with the given UUID. Retrieves a list of all permissions associated with a specific user in an Organization using their UUID. The list can be paginated for easier management. # Update OrgUser Source: https://docs.m3ter.com/api/orgusers/update-orguser https://api.m3ter.com/spec put /organizations/{orgId}/users/{id} Update the OrgUser with the given UUID. Updates the details for a specific user within an Organization using their unique identifier (UUID). Use this endpoint when you need to modify user information such as their permission policy. # Pagination Source: https://docs.m3ter.com/api/pagination ## List Endpoints API endpoints that have a List resources request support cursor-based pagination - for example, the 'List Accounts' request. These List calls support pagination by taking the two parameters `pageSize` and `nextToken`. The response of a List API call is a single page list. If the `nextToken` parameter is not supplied, the first page returned contains the newest objects chronologically. Specify a `nextToken` to retrieve the page of older objects that occur immediately after the last object on the previous page. Use `pageSize` to limit the list results per page, typically this allows up to a maximum of 100 or 200 per page. ## Search Endpoints API endpoints that have a Search resources request support cursor-based pagination - for example, the 'Search Accounts' request. These Search calls support pagination by taking the two parameters `pageSize` and `fromDocument`. The response of a Search API call is a single page list. If the `fromDocument` parameter is not supplied, the first page returned contains the newest objects chronologically. Specify a `fromDocument` to retrieve the page of older objects that occur immediately after the last object on the previous page. Use `pageSize` to limit the list results per page, typically this allows up to a maximum of 100 or 200 per page. Default is 10. # Add a PermissionPolicy to a service user Source: https://docs.m3ter.com/api/permissionpolicy/add-a-permissionpolicy-to-a-service-user https://api.m3ter.com/spec post /organizations/{orgId}/permissionpolicies/{permissionPolicyId}/addtoserviceuser Add a permission policy to a service user. # Add a PermissionPolicy to a user Source: https://docs.m3ter.com/api/permissionpolicy/add-a-permissionpolicy-to-a-user https://api.m3ter.com/spec post /organizations/{orgId}/permissionpolicies/{permissionPolicyId}/addtouser Add a permission policy to a user. # Add a PermissionPolicy to a user group Source: https://docs.m3ter.com/api/permissionpolicy/add-a-permissionpolicy-to-a-user-group https://api.m3ter.com/spec post /organizations/{orgId}/permissionpolicies/{permissionPolicyId}/addtousergroup Add a permission Policy to a user group # Add a PermissionPolicy to support users for an organization Source: https://docs.m3ter.com/api/permissionpolicy/add-a-permissionpolicy-to-support-users-for-an-organization https://api.m3ter.com/spec post /organizations/{orgId}/permissionpolicies/{permissionPolicyId}/addtosupportusers Add a permission policy to support users for an organization. # Create Permission Policy Source: https://docs.m3ter.com/api/permissionpolicy/create-permission-policy https://api.m3ter.com/spec post /organizations/{orgId}/permissionpolicies Create a new Permission Policy **NOTE:** When you set up a policy statement for this call using the `permissionPolicy` request parameter to specify the `effect`, `action`, and `resource`, you must use all lower case and the format as shown in this example for a Permission Policy statement that grants full CRUD access to all meters: ``` "permissionPolicy" : [ { "effect" : "allow", "action" : [ "config:create", "config:delete", "config:retrieve", "config:update" ] "resource" : [ "config:meter/*" ] } ] ``` For more details and further examples, see [Understanding, Creating, and Managing Permission Policies](https://www.m3ter.com/docs/guides/organization-and-access-management/creating-and-managing-permissions#permission-policy-statements---available-actions-and-resources) in our main Documentation. # Delete Permission Policy Source: https://docs.m3ter.com/api/permissionpolicy/delete-permission-policy https://api.m3ter.com/spec delete /organizations/{orgId}/permissionpolicies/{id} Delete the PermissionPolicy for the UUID # Permission Policy Endpoints Source: https://docs.m3ter.com/api/permissionpolicy/introduction Endpoints for Permission Policy related operations such as creation, update, add and retrieve. Permission Policies can restrict or grant access to specific resources for both Users *(people)* and Service Users *(automated processes with direct API access)*. This enables you to control precisely what a User can do in your m3ter Organization. For more details, see [Understanding, Creating, and Managing Permission Policies](/guides/organization-and-access-management/creating-and-managing-permissions#permission-policy-statements-available-actions-and-resources) in our main Documentation. # List PermissionPolicies Source: https://docs.m3ter.com/api/permissionpolicy/list-permissionpolicies https://api.m3ter.com/spec get /organizations/{orgId}/permissionpolicies Retrieve a list of PermissionPolicy entities # Remove a PermissionPolicy from a service user Source: https://docs.m3ter.com/api/permissionpolicy/remove-a-permissionpolicy-from-a-service-user https://api.m3ter.com/spec post /organizations/{orgId}/permissionpolicies/{permissionPolicyId}/removefromserviceuser Remove a permission policy from a service user. # Remove a PermissionPolicy from a user Source: https://docs.m3ter.com/api/permissionpolicy/remove-a-permissionpolicy-from-a-user https://api.m3ter.com/spec post /organizations/{orgId}/permissionpolicies/{permissionPolicyId}/removefromuser Remove a permission policy from a user. # Remove a PermissionPolicy from a user group Source: https://docs.m3ter.com/api/permissionpolicy/remove-a-permissionpolicy-from-a-user-group https://api.m3ter.com/spec post /organizations/{orgId}/permissionpolicies/{permissionPolicyId}/removefromusergroup Remove a permission policy from a user group. # Remove a PermissionPolicy from support users for an organization Source: https://docs.m3ter.com/api/permissionpolicy/remove-a-permissionpolicy-from-support-users-for-an-organization https://api.m3ter.com/spec post /organizations/{orgId}/permissionpolicies/{permissionPolicyId}/removefromsupportusers Remove a permission policy from support users for an organization. # Retrieve Permission Policy Source: https://docs.m3ter.com/api/permissionpolicy/retrieve-permission-policy https://api.m3ter.com/spec get /organizations/{orgId}/permissionpolicies/{id} Retrieve the permission policy for the UUID # Update Permission Policy Source: https://docs.m3ter.com/api/permissionpolicy/update-permission-policy https://api.m3ter.com/spec put /organizations/{orgId}/permissionpolicies/{id} Update a Permission Policy for the UUID **NOTE:** When you set up a policy statement for this call to specify the `effect`, `action`, and `resource`, you must use all lower case and the format as shown in this example - a Permission Policy statement that grants full CRUD access to all meters: ``` "permissionPolicy" : [ { "effect" : "allow", "action" : [ "config:create", "config:delete", "config:retrieve", "config:update" ] "resource" : [ "config:meter/*" ] } ] ``` For more details and further examples, see [Understanding, Creating, and Managing Permission Policies](https://www.m3ter.com/docs/guides/organization-and-access-management/creating-and-managing-permissions#permission-policy-statements---available-actions-and-resources) in our main Documentation. # Create Plan Source: https://docs.m3ter.com/api/plan/create-plan https://api.m3ter.com/spec post /organizations/{orgId}/plans Create a new Plan. # Delete Plan Source: https://docs.m3ter.com/api/plan/delete-plan https://api.m3ter.com/spec delete /organizations/{orgId}/plans/{id} Delete the Plan with the given UUID. # Plan Endpoints Source: https://docs.m3ter.com/api/plan/introduction Endpoints for listing, creating, updating, retrieving, or deleting Plans. A Plan is based on a PlanTemplate and represents a specific pricing plan for one of your products or services. Each Plan inherits general billing attributes or pricing structure from its parent Plan Template. Some attributes can be overriden for the specific Plan. When you've created the Plan Templates and Plans you need for your Products, you can configure the exact pricing structures for Plans to charge customers that consume one or more of your Products. You can then attach the appropriately priced Plans to customer Accounts to create [Account Plans](/api/accountplan/introduction) and enable charges to be calculated correctly for billing against those Accounts. See also: * [Reviewing Options for Plans and Plan Templates](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates). # List Plans Source: https://docs.m3ter.com/api/plan/list-plans https://api.m3ter.com/spec get /organizations/{orgId}/plans Retrieve a list of Plans that can be filtered by Product, Account, or Plan ID. # Retrieve Plan Source: https://docs.m3ter.com/api/plan/retrieve-plan https://api.m3ter.com/spec get /organizations/{orgId}/plans/{id} Retrieve the Plan with the given UUID. # Update Plan Source: https://docs.m3ter.com/api/plan/update-plan https://api.m3ter.com/spec put /organizations/{orgId}/plans/{id} Update the Plan with the given UUID. **Note:** If you have created Custom Fields for a Plan, when you use this endpoint to update the Plan use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost. # Create PlanGroup Source: https://docs.m3ter.com/api/plangroup/create-plangroup https://api.m3ter.com/spec post /organizations/{orgId}/plangroups Create a new PlanGroup. This endpoint creates a new PlanGroup within the specified organization. # Delete PlanGroup Source: https://docs.m3ter.com/api/plangroup/delete-plangroup https://api.m3ter.com/spec delete /organizations/{orgId}/plangroups/{id} Delete a PlanGroup with the given UUID. This endpoint deletes the PlanGroup identified by the given UUID within a specific organization. This operation is irreversible and removes the PlanGroup along with any associated settings. # Plan Group Endpoints Source: https://docs.m3ter.com/api/plangroup/introduction Endpoints for PlanGroup related operations such as creation, update, retrieve, list and delete. PlanGroups are constructs that group multiple plans together. This enables a unified approach to efficiently handle various uses cases across different plans. For example applying a minimum spend amount at billing, across several of your products or features that are each priced separately. # List PlanGroups Source: https://docs.m3ter.com/api/plangroup/list-plangroups https://api.m3ter.com/spec get /organizations/{orgId}/plangroups Retrieve a list of PlanGroups. Retrieves a list of PlanGroups within the specified organization. You can optionally filter by Account IDs or PlanGroup IDs, and also paginate the results for easier management. # Retrieve PlanGroup Source: https://docs.m3ter.com/api/plangroup/retrieve-plangroup https://api.m3ter.com/spec get /organizations/{orgId}/plangroups/{id} Retrieve a specific PlanGroup with the given UUID. This endpoint retrieves detailed information about a specific PlanGroup identified by the given UUID within a specific organization. # Update PlanGroup Source: https://docs.m3ter.com/api/plangroup/update-plangroup https://api.m3ter.com/spec put /organizations/{orgId}/plangroups/{id} Update the PlanGroup with the given UUID. This endpoint updates the details of a specific PlanGroup identified by the given UUID within a specific organization. This allows modifications to existing PlanGroup attributes. **Note:** If you have created Custom Fields for a PlanGroup, when you use this endpoint to update the PlanGroup use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost. # Create PlanGroupLink Source: https://docs.m3ter.com/api/plangrouplink/create-plangrouplink https://api.m3ter.com/spec post /organizations/{orgId}/plangrouplinks Create a new PlanGroupLink. # Delete PlanGroupLink Source: https://docs.m3ter.com/api/plangrouplink/delete-plangrouplink https://api.m3ter.com/spec delete /organizations/{orgId}/plangrouplinks/{id} Delete a PlanGroupLink for the given UUID. # Plan Group Link Endpoints Source: https://docs.m3ter.com/api/plangrouplink/introduction Endpoints for PlanGroupLink related operations such as creation, update, list and delete. PlanGroupLinks are the intersection table between a PlanGroup and its associated Plans. A PlanGroupLink is only created when at least 1 Plan is linked to a PlanGroup. # List PlanGroupLinks Source: https://docs.m3ter.com/api/plangrouplink/list-plangrouplinks https://api.m3ter.com/spec get /organizations/{orgId}/plangrouplinks Retrieve a list of PlanGroupLink entities # Retrieve PlanGroupLink Source: https://docs.m3ter.com/api/plangrouplink/retrieve-plangrouplink https://api.m3ter.com/spec get /organizations/{orgId}/plangrouplinks/{id} Retrieve a PlanGroupLink for the given UUID. # Update PlanGroupLink Source: https://docs.m3ter.com/api/plangrouplink/update-plangrouplink https://api.m3ter.com/spec put /organizations/{orgId}/plangrouplinks/{id} Update PlanGroupLink for the given UUID. # Create PlanTemplate Source: https://docs.m3ter.com/api/plantemplate/create-plantemplate https://api.m3ter.com/spec post /organizations/{orgId}/plantemplates Create a new PlanTemplate. This endpoint creates a new PlanTemplate within a specific Organization, identified by its unique UUID. The request body should contain the necessary information for the new PlanTemplate. # Delete PlanTemplate Source: https://docs.m3ter.com/api/plantemplate/delete-plantemplate https://api.m3ter.com/spec delete /organizations/{orgId}/plantemplates/{id} Delete a specific PlanTemplate. This endpoint enables you to delete a specific PlanTemplate within a specific Organization, both identified by their unique identifiers (UUIDs). # Plan Template Endpoints Source: https://docs.m3ter.com/api/plantemplate/introduction Endpoints for listing, creating, updating, retrieving, or deleting PlanTemplates. Use PlanTemplates to define default values for Plans. These default values control the billing operations you want applied to your products. PlanTemplates avoid repetition in configuration work - many Plans will share settings for billing operations and differ only in the details of their pricing structures. A PlanTemplate is linked to a Product, and each Plan is a child of a PlanTemplate. # List PlanTemplates Source: https://docs.m3ter.com/api/plantemplate/list-plantemplates https://api.m3ter.com/spec get /organizations/{orgId}/plantemplates Retrieve a list of PlanTemplates. This endpoint enables you to retrieve a paginated list of PlanTemplates belonging to a specific Organization, identified by its UUID. You can filter the list by PlanTemplate IDs or Product IDs for more focused retrieval. # Retrieve PlanTemplate Source: https://docs.m3ter.com/api/plantemplate/retrieve-plantemplate https://api.m3ter.com/spec get /organizations/{orgId}/plantemplates/{id} Retrieve a specific PlanTemplate. This endpoint allows you to retrieve a specific PlanTemplate within a specific Organization, both identified by their unique identifiers (UUIDs). # Update PlanTemplate Source: https://docs.m3ter.com/api/plantemplate/update-plantemplate https://api.m3ter.com/spec put /organizations/{orgId}/plantemplates/{id} Update a specific PlanTemplate. This endpoint enables you to update a specific PlanTemplate within a specific Organization, both identified by their unique identifiers (UUIDs). The request body should contain the updated information for the PlanTemplate. **Note:** If you have created Custom Fields for a Plan Template, when you use this endpoint to update the Plan Template use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost. # Postman Source: https://docs.m3ter.com/api/postman If you are using Postman, you can: * Download the [m3ter Open API spec JSON file](https://api.m3ter.com/spec) and then import this file as the **m3ter API Collection** into your Workspace. See [Importing the m3ter Open API](https://www.m3ter.com/docs/guides/m3ter-apis/getting-started-with-api-calls#importing-the-m3ter-open-api) in our main user Documentation for details. * Copy this link: [m3ter-Template API Collection](/downloads/m3ter-postman-collection.json) and use it to import the **m3ter-Template API Collection** into your Workspace. See [Importing the m3ter Template API Collection](https://www.m3ter.com/docs/guides/m3ter-apis/getting-started-with-api-calls#importing-the-m3ter-template-api-collection) in our main user Documentation for details. # Create Pricing Source: https://docs.m3ter.com/api/pricing/create-pricing https://api.m3ter.com/spec post /organizations/{orgId}/pricings Create a new Pricing. **Notes:** * **Pricing Plan or Plan Template?** Exactly one of `planId` or `planTemplateId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error. * **Using Aggregation or Compound Aggregation for Pricing?** Exactly one of `aggregationId` or `compoundAggregationId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error. * **Using Negative Values for Pricing?** If you use the `type` request parameter with the `DEBIT` option, *you cannot use negative values* for `fixedPrice` or `unitPrice` in `pricingBands` or `overagePricingBands`, and you'll receive a validation error. If you omit a `type` request parameter a `DEBIT` pricing is created by default and the same constraint on the use of negative values applies. # Delete Pricing Source: https://docs.m3ter.com/api/pricing/delete-pricing https://api.m3ter.com/spec delete /organizations/{orgId}/pricings/{id} Delete the Pricing with the given UUID. # Pricing Endpoints Source: https://docs.m3ter.com/api/pricing/introduction Endpoints for listing, creating, updating, retrieving, or deleting Pricing. Create the Pricing for a Plan/PlanTemplate with usage data Aggregations, and define a usage-based pricing structure for charging end customer Accounts put on the Plan. See [Reviewing Pricing Options for Plans and Plan Templates](/guides/plans-and-pricing/pricing-plans/reviewing-pricing-options-and-pricing-plans) for more information. # List Pricings Source: https://docs.m3ter.com/api/pricing/list-pricings https://api.m3ter.com/spec get /organizations/{orgId}/pricings Retrieve a list of Pricings filtered by date/time, Plan ID, PlanTemplate ID, or Pricing ID. # Retrieve Pricing Source: https://docs.m3ter.com/api/pricing/retrieve-pricing https://api.m3ter.com/spec get /organizations/{orgId}/pricings/{id} Retrieve the Pricing with the given UUID. # Update Pricing Source: https://docs.m3ter.com/api/pricing/update-pricing https://api.m3ter.com/spec put /organizations/{orgId}/pricings/{id} Update Pricing for the given UUID. **Notes:** * **Pricing Plan or Plan Template?** Exactly one of `planId` or `planTemplateId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error. * **Using Aggregation or Compound Aggregation for Pricing?** Exactly one of `aggregationId` or `compoundAggregationId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error. * **Using Negative Values for Pricing?** If you use the `type` request parameter with the `DEBIT` option, *you cannot use negative values* for `fixedPrice` or `unitPrice` in `pricingBands` or `overagePricingBands`, and you'll receive a validation error. If you omit a `type` request parameter a `DEBIT` pricing is created by default and the same constraint on the use of negative values applies. # Create Product Source: https://docs.m3ter.com/api/product/create-product https://api.m3ter.com/spec post /organizations/{orgId}/products Create a new Product. This endpoint creates a new Product within the specified Organization. The details of the Product are provided in the request body. # Delete Product Source: https://docs.m3ter.com/api/product/delete-product https://api.m3ter.com/spec delete /organizations/{orgId}/products/{id} Delete a Product with the given UUID. This endpoint deletes a specific Product within a specified Organization, using the Product UUID. # Product Endpoints Source: https://docs.m3ter.com/api/product/introduction Endpoints for listing, creating, updating, retrieving, or deleting Products. A Product represents the products and services you offer to your end customers. Products act as a container for the Meters, Aggregations, Pricing, and Plans required to implement usage-based and other pricing models for your Organization. # List Products Source: https://docs.m3ter.com/api/product/list-products https://api.m3ter.com/spec get /organizations/{orgId}/products Retrieve a list of Products. This endpoint retrieves a list of all the Products within a specified Organization. The list can be paginated, and supports filtering by specific Product IDs. # Retrieve Product Source: https://docs.m3ter.com/api/product/retrieve-product https://api.m3ter.com/spec get /organizations/{orgId}/products/{id} Retrieve a Product with the given UUID. This endpoint retrieves the details of a specific Product within a specified Organization, using the Product UUID. # Update Product Source: https://docs.m3ter.com/api/product/update-product https://api.m3ter.com/spec put /organizations/{orgId}/products/{id} Update a Product with the given UUID. This endpoint updates the details of a specific Product within a specified Organization, using the Product UUID. The updated details are provided in the request body. **Note:** If you have created Custom Fields for a Product, when you use this endpoint to update the Product use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost. # Rate and Payload Limits Source: https://docs.m3ter.com/api/rate-and-payload-limits ## Config API Request Rate Limits See [Config API Limits](/guides/m3ter-apis/config-api-limits). ## Data Explorer API Request Rate Limits See [Data Explorer Request Rate Limits](/guides/m3ter-apis/config-api-limits#date-explorer-request-rate-limits). ## Ingest API Request Rate and Payload Limits See [Ingest API Limits](https://www.m3ter.com/docs/guides/m3ter-apis/ingest-api-limits) for more information. # Add item Source: https://docs.m3ter.com/api/resourcegroup/add-item https://api.m3ter.com/spec post /organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/addresource Add an item to a ResourceGroup. # Create ResourceGroup Source: https://docs.m3ter.com/api/resourcegroup/create-resourcegroup https://api.m3ter.com/spec post /organizations/{orgId}/resourcegroups/{type} Create a ResourceGroup for the UUID # Delete ResourceGroup Source: https://docs.m3ter.com/api/resourcegroup/delete-resourcegroup https://api.m3ter.com/spec delete /organizations/{orgId}/resourcegroups/{type}/{id} Delete a ResourceGroup for the UUID # Resource Group Endpoints Source: https://docs.m3ter.com/api/resourcegroup/introduction Endpoints for ResourceGroup related operations such as creation, update, list and delete. ResourceGroups are used in the context of Permission Policies, which controls what a User who has been given access to your Organization can and cannot do. For example, you might want to create a Permissions Policy that denies Users the ability to retrieve Meters. Resources are defined as m3ter Resource Identifiers *(MRIs)* in the format: ```text theme={null} service:resource-type/item-type/id ``` Where: * `service` is a distinct part of the overall m3ter system, and which forms a natural functional grouping, such as "config" or "billing". * `resource-type` is the resource type item accessed - for example: "Plan", "Meter", "Bill" * `item-type` is one of: * `item` - to specify an individual item. * `group` - to specify a resource group. * `id` is the resource group id or the resource item id Resources can be assigned to one or more ResourceGroups. For example, a Plan can be assigned to Plan ResourceGroups, a Meter can be assigned to Meter ResourceGroups, and so on. This is useful for cases where you want to create Permission Policies which allow or deny access to a specific subset of resources. For example, grant a user access to only some of the Plans in your Organization. This concept of grouping resources applies to every resource in m3ter, including ResourceGroups themselves. This allows you to nest ResourceGroups to support hierarchies of groups. See [Understanding, Creating, and Managing Permission Policies](/guides/organization-and-access-management/creating-and-managing-permissions) in the m3ter documentation for more information. **User Resource Groups** You can create a User Resource Group to group resources of type = `user`. You can then retrieve a list of the User Resource Groups a user belongs to. For more details, see the [Retrieve OrgUser Groups](/api/orgusers/retrieve-orguser-groups) call in the OrgUsers section. # List ResourceGroup items Source: https://docs.m3ter.com/api/resourcegroup/list-resourcegroup-items https://api.m3ter.com/spec post /organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/contents Retrieve a list of items for a ResourceGroup # List ResourceGroup permission policies Source: https://docs.m3ter.com/api/resourcegroup/list-resourcegroup-permission-policies https://api.m3ter.com/spec get /organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/permissions Retrieve a list of permission policies for a ResourceGroup # List ResourceGroups Source: https://docs.m3ter.com/api/resourcegroup/list-resourcegroups https://api.m3ter.com/spec get /organizations/{orgId}/resourcegroups/{type} Retrieve a list of ResourceGroup entities # Remove item Source: https://docs.m3ter.com/api/resourcegroup/remove-item https://api.m3ter.com/spec post /organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/removeresource Remove an item from a ResourceGroup. # Retrieve ResourceGroup Source: https://docs.m3ter.com/api/resourcegroup/retrieve-resourcegroup https://api.m3ter.com/spec get /organizations/{orgId}/resourcegroups/{type}/{id} Retrieve the ResourceGroup for the UUID # Update ResourceGroup Source: https://docs.m3ter.com/api/resourcegroup/update-resourcegroup https://api.m3ter.com/spec put /organizations/{orgId}/resourcegroups/{type}/{id} Update the ResourceGroup for the UUID # Create ScheduledEventConfiguration Source: https://docs.m3ter.com/api/scheduledeventconfigurations/create-scheduledeventconfiguration https://api.m3ter.com/spec post /organizations/{orgId}/scheduledevents/configurations Create a new ScheduledEventConfiguration. # Delete ScheduledEventConfiguration Source: https://docs.m3ter.com/api/scheduledeventconfigurations/delete-scheduledeventconfiguration https://api.m3ter.com/spec delete /organizations/{orgId}/scheduledevents/configurations/{id} Delete the ScheduledEventConfiguration for the given UUID. # Scheduled Event Configuration Endpoints Source: https://docs.m3ter.com/api/scheduledeventconfigurations/introduction Endpoints for retrieving and managing scheduled Events' configurations. Scheduled Event Configurations define custom Event types that reference Date/Time fields belonging to configuration and billing entities. They therefore provide you with an extra degree of flexibility over and above system-generated Events for setting up Notifications based on Events. For more details, see the [Working with Scheduled Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events) in our Documenation. # List ScheduledEventConfigurations Source: https://docs.m3ter.com/api/scheduledeventconfigurations/list-scheduledeventconfigurations https://api.m3ter.com/spec get /organizations/{orgId}/scheduledevents/configurations Retrieve a list of ScheduledEventConfiguration entities # Retrieve ScheduledEventConfiguration Source: https://docs.m3ter.com/api/scheduledeventconfigurations/retrieve-scheduledeventconfiguration https://api.m3ter.com/spec get /organizations/{orgId}/scheduledevents/configurations/{id} Retrieve a ScheduledEventConfiguration for the given UUID. # Update ScheduledEventConfiguration Source: https://docs.m3ter.com/api/scheduledeventconfigurations/update-scheduledeventconfiguration https://api.m3ter.com/spec put /organizations/{orgId}/scheduledevents/configurations/{id} Update a ScheduledEventConfiguration for the given UUID. # Create ServiceUser Source: https://docs.m3ter.com/api/serviceuser/create-serviceuser https://api.m3ter.com/spec post /organizations/{orgId}/serviceusers Create a new service user. # Delete ServiceUser Source: https://docs.m3ter.com/api/serviceuser/delete-serviceuser https://api.m3ter.com/spec delete /organizations/{orgId}/serviceusers/{id} Delete the service user for the UUID. # Service User Endpoints Source: https://docs.m3ter.com/api/serviceuser/introduction Endpoints for creating/updating/deleting service users and credentials. # List ServiceUsers Source: https://docs.m3ter.com/api/serviceuser/list-serviceusers https://api.m3ter.com/spec get /organizations/{orgId}/serviceusers Retrieve a list of service users. # Retrieve ServiceUser Source: https://docs.m3ter.com/api/serviceuser/retrieve-serviceuser https://api.m3ter.com/spec get /organizations/{orgId}/serviceusers/{id} Retrieve the service user for the UUID. # Retrieve ServiceUser Permissions Source: https://docs.m3ter.com/api/serviceuser/retrieve-serviceuser-permissions https://api.m3ter.com/spec get /organizations/{orgId}/serviceusers/{id}/permissions Retrieve permission policies attached to a service user. # Update ServiceUser Source: https://docs.m3ter.com/api/serviceuser/update-serviceuser https://api.m3ter.com/spec put /organizations/{orgId}/serviceusers/{id} Update the service user for the UUID. # Activate ServiceUser Credentials Source: https://docs.m3ter.com/api/serviceusercredentials/activate-serviceuser-credentials https://api.m3ter.com/spec put /organizations/{orgId}/serviceusers/{id}/credentials/{apiKey}/activate Activate a credentials key pair for a service user. # Create ServiceUser Credentials Source: https://docs.m3ter.com/api/serviceusercredentials/create-serviceuser-credentials https://api.m3ter.com/spec post /organizations/{orgId}/serviceusers/{id}/credentials Create a new credentials key pair for a service user. # Deactivate ServiceUser Credentials Source: https://docs.m3ter.com/api/serviceusercredentials/deactivate-serviceuser-credentials https://api.m3ter.com/spec put /organizations/{orgId}/serviceusers/{id}/credentials/{apiKey}/inactivate Deactivate a credentials key pair for a service user. # Delete ServiceUser Credentials Source: https://docs.m3ter.com/api/serviceusercredentials/delete-serviceuser-credentials https://api.m3ter.com/spec delete /organizations/{orgId}/serviceusers/{id}/credentials/{apiKey} Delete a deactivated credentials key pair for a service user. # List ServiceUser Credentials Source: https://docs.m3ter.com/api/serviceusercredentials/list-serviceuser-credentials https://api.m3ter.com/spec get /organizations/{orgId}/serviceusers/{id}/credentials Retrieve the credentials key pairs for a service user. # Retrieve ServiceUser Credentials Source: https://docs.m3ter.com/api/serviceusercredentials/retrieve-serviceuser-credentials https://api.m3ter.com/spec get /organizations/{orgId}/serviceusers/{id}/credentials/{apiKey} Retrieve a credentials key pair for a service user. # Create StatementDefinition Source: https://docs.m3ter.com/api/statementdefinition/create-statementdefinition https://api.m3ter.com/spec post /organizations/{orgId}/statementdefinitions Create a new StatementDefinition. This endpoint creates a new StatementDefinition within the specified Organization. The details of the StatementDefinition are provided in the request body. # Delete StatementDefinition Source: https://docs.m3ter.com/api/statementdefinition/delete-statementdefinition https://api.m3ter.com/spec delete /organizations/{orgId}/statementdefinitions/{id} Delete a StatementDefinition with the given UUID. This endpoint deletes a specific StatementDefinition within a specified Organization, using the StatementDefinition UUID. # Statement Definition Endpoints Source: https://docs.m3ter.com/api/statementdefinition/introduction Endpoints for listing, creating, updating, retrieving, or deleting Statement Definitions. Bill statements are informative backing sheets to invoices. They provide a breakdown of the usage charges that appear on the bill, helping your end customers better understand those charges, and gain a clearer picture of their usage over the billing period. Statement Definitions specify the way billed usage will be aggregated and compiled in the Statement. For example, if you are billing customers monthly, you might want to breakdown the usage responsible for the monthly charge on a Bill into weekly portions in Bill statements. # List StatementDefinitions Source: https://docs.m3ter.com/api/statementdefinition/list-statementdefinitions https://api.m3ter.com/spec get /organizations/{orgId}/statementdefinitions Retrieve a list of StatementDefinitions. This endpoint retrieves a list of all the StatementDefinitions within a specified Organization. The list can be paginated for easier management. # Retrieve StatementDefinition Source: https://docs.m3ter.com/api/statementdefinition/retrieve-statementdefinition https://api.m3ter.com/spec get /organizations/{orgId}/statementdefinitions/{id} Retrieve a StatementDefinition with the given UUID. Retrieves the details of a specific StatementDefinition for the specified Organization, using its unique identifier (UUID). This endpoint is useful when you want to retrieve the complete details of a single StatementDefinition. # Update StatementDefinition Source: https://docs.m3ter.com/api/statementdefinition/update-statementdefinition https://api.m3ter.com/spec put /organizations/{orgId}/statementdefinitions/{id} Update StatementDefinition for the given UUID. Update the details of a specific StatementDefinition for the specified Organization, using its unique identifier (UUID). The updated details for the StatementDefinition should be sent in the request body. # Cancel StatementJob Source: https://docs.m3ter.com/api/statementjob/cancel-statementjob https://api.m3ter.com/spec post /organizations/{orgId}/statementjobs/{id}/cancel Cancel the StatementJob with the given UUID. Use this endpoint to halt the execution of a specific StatementJob identified by its UUID. This operation may be useful if you need to stop a StatementJob due to unforeseen issues or changes. # Create Batch StatementJobs Source: https://docs.m3ter.com/api/statementjob/create-batch-statementjobs https://api.m3ter.com/spec post /organizations/{orgId}/statementjobs/batch Create a batch of StatementJobs for multiple bills. Initiate the creation of multiple StatementJobs asynchronously for the list of bills with the given UUIDs: * The default format for generating Bill Statements is in JSON format and according to the Bill Statement Definition you've specified at either Organization level or Account level. * If you also want to generate the Statements in CSV format, use the `includeCsvFormat` request body parameter. * The response body provides a time-bound pre-signed URL, which you can use to download the JSON format Statement. * When you have generated a Statement for a Bill, you can also obtain a time-bound pre-signed download URL using either the [Retrieve Bill Statement in JSON Format](https://www.m3ter.com/docs/api#tag/Bill/operation/GetBillJsonStatement) and [Retrieve Bill Statement in CSV Format](https://www.m3ter.com/docs/api#tag/Bill/operation/GetBillCsvStatement) calls found in the [Bill](https://www.m3ter.com/docs/api#tag/Bill) section of this API Reference. **Notes:** * If the response to the Create StatementJob call shows the `statementJobStatus` as `PENDING` or `RUNNING`, you will not receive the pre-signed URL in the response. Wait a few minutes to allow the StatementJob to complete and then use the [Get StatmentJob](https://www.m3ter.com/docs/api#tag/StatementJob/operation/GetStatementJob) call in this section to obtain the pre-signed download URL for the generated Bill Statement. * When you have submitted a StatementJob and a Bill Statement has been generated, you can also download the Statement directly from a Bill Details page in the Console. See [Working with Bill Statements](https://www.m3ter.com/docs/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) in our user Documentation. # Create StatementJob Source: https://docs.m3ter.com/api/statementjob/create-statementjob https://api.m3ter.com/spec post /organizations/{orgId}/statementjobs This endpoint creates a StatementJob for a single bill within an Organization using the Bill UUID. The Bill Statement is generated asynchronously: * The default format for generating the Statement is in JSON format and according to the Bill Statement Definition you've specified at either Organization level or Account level. * If you also want to generate the Statement in CSV format, use the `includeCsvFormat` request body parameter. * The response body provides a time-bound pre-signed URL, which you can use to download the JSON format Statement. * When you have generated a Statement for a Bill, you can also obtain a time-bound pre-signed download URL using either the [Retrieve Bill Statement in JSON Format](https://www.m3ter.com/docs/api#tag/Bill/operation/GetBillJsonStatement) and [Retrieve Bill Statement in CSV Format](https://www.m3ter.com/docs/api#tag/Bill/operation/GetBillCsvStatement) calls found in the [Bill](https://www.m3ter.com/docs/api#tag/Bill) section of this API Reference. **Notes:** * If the response to the Create StatementJob call shows the `statementJobStatus` as `PENDING` or `RUNNING`, you will not receive the pre-signed URL in the response. Wait a few minutes to allow the StatementJob to complete and then use the [Get StatmentJob](https://www.m3ter.com/docs/api#tag/StatementJob/operation/GetStatementJob) call in this section to obtain the pre-signed download URL for the generated Bill Statement. * When you have submitted a StatementJob and a Bill Statement has been generated, you can also download the Statement directly from a Bill Details page in the Console. See [Working with Bill Statements](https://www.m3ter.com/docs/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) in our user Documentation. # Get StatementJob Source: https://docs.m3ter.com/api/statementjob/get-statementjob https://api.m3ter.com/spec get /organizations/{orgId}/statementjobs/{id} Retrieves the details of a specific StatementJob using its UUID. Use this call to obtain the time-bound pre-signed download URL for the generated Bill Statement if the initial [Create StatementJob](https://www.m3ter.com/docs/api#tag/StatementJob/operation/CreateStatementJob) returned a response showing the `statementJobStatus` not yet complete and as `PENDING` or `RUNNING`. **Note:** When you have submitted a StatementJob and a Bill Statement has been generated, you can also download the Statement directly from a Bill Details page in the Console. See [Working with Bill Statements](https://www.m3ter.com/docs/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) in our user Documentation. # Statement Job Endpoints Source: https://docs.m3ter.com/api/statementjob/introduction Endpoints for creating, retrieving, listing, and cancelling statement jobs. StatementJobs are tasks to asynchronously calculate and generate a bill statement. Bill statements are informative backing sheets to invoices. They provide a breakdown of the usage charges that appear on the bill, helping your end customers better understand those charges, and gain a clearer picture of their usage over the billing period. # List Statement Jobs Source: https://docs.m3ter.com/api/statementjob/list-statement-jobs https://api.m3ter.com/spec get /organizations/{orgId}/statementjobs Retrieve a list of StatementJobs. Retrieves a list of all StatementJobs for a specific Organization. You can filter the results based on: * StatementJob status. * Whether StatementJob is neither completed nor cancelled but remains active. * The ID of the Bill the StatementJob is associated with. You can also paginate the results for easier management. **WARNING!** * You can use only one of the valid Query parameters: `active`, `status`, or `billId` in any call. If you use more than one of these Query parameters in the same call, then a 400 Bad Request is returned with an error message. # Submitting Personally Identifiable Information (PII) Source: https://docs.m3ter.com/api/submitting-pii **IMPORTANT!** Under the [Data Processing Agreement](https://www.m3ter.com/docs/legal/dpa), the only fields permissible for use in submitting any of your end-customer PII data in m3ter are the `name`, `address`, and `emailAddress` fields on the **Account** entity - see the details for [Create Account](/api/account/create-account). See also section 4.2 of the [Terms of Service](https://www.m3ter.com/docs/legal/terms-of-service). # Support Endpoints Source: https://docs.m3ter.com/api/support/introduction Endpoints for requesting support and managing m3ter Support users. For troubleshooting purposes, you can grant m3ter Support access to your Organization. m3ter Support only has access for a limited time that you specify. # Request Support Source: https://docs.m3ter.com/api/support/request-support https://api.m3ter.com/spec put /organizations/{orgId}/support Use this call to make a request and grant m3ter Support access to your Organization for a specified timeframe and with specific permissions assigned to Support users. You might want to grant Support access when you've submitted a request for help in resolving an issue you've encountered in your Organization # Retrieve Support Details Source: https://docs.m3ter.com/api/support/retrieve-support-details https://api.m3ter.com/spec get /organizations/{orgId}/support Get support user details on the specific permissions applied and the date and time support access ends. # Retrieve Support Permissions Source: https://docs.m3ter.com/api/support/retrieve-support-permissions https://api.m3ter.com/spec get /organizations/{orgId}/support-permissions Get permission policies assigned to support users when they access your Organization. # Create TransactionType Source: https://docs.m3ter.com/api/transactiontype/create-transactiontype https://api.m3ter.com/spec post /organizations/{orgId}/picklists/transactiontypes Create a new TransactionType for the specified Organization. Details of the new TransactionType should be included in the request body. # Delete TransactionType Source: https://docs.m3ter.com/api/transactiontype/delete-transactiontype https://api.m3ter.com/spec delete /organizations/{orgId}/picklists/transactiontypes/{id} Deletes the TransactionType with the given UUID from the specified Organization. # Transaction Type Endpoints Source: https://docs.m3ter.com/api/transactiontype/introduction Endpoints for TransactionType operations such as creation, update, list, retrieve, and delete. You can create TransactionTypes for your Organization, which can then be used when creating and updating Balances. Example TransactionTypes: "Balance Amount" or "Add Funds". For details on creating a Transaction amount for a Balance using a TransactionType you've created for your Organization, see the [Create Balance Transaction](/api/balances/create-balance-transaction) call in the [Balances](/api/balances/introduction) section of this API Reference. # List TransactionTypes Source: https://docs.m3ter.com/api/transactiontype/list-transactiontypes https://api.m3ter.com/spec get /organizations/{orgId}/picklists/transactiontypes Retrieves a list of TransactionType entities for the specified Organization. The list can be paginated for easier management, and supports filtering by various parameters. # Retrieve TransactionType Source: https://docs.m3ter.com/api/transactiontype/retrieve-transactiontype https://api.m3ter.com/spec get /organizations/{orgId}/picklists/transactiontypes/{id} Retrieves the TransactionType with the given UUID from the specified Organization. # Update TransactionType Source: https://docs.m3ter.com/api/transactiontype/update-transactiontype https://api.m3ter.com/spec put /organizations/{orgId}/picklists/transactiontypes/{id} Updates the TransactionType with the specified UUID for the specified Organization. Update details for the TransactionType should be included in the request body. # User Endpoints Source: https://docs.m3ter.com/api/user/introduction Endpoints for creating/updating Users # Retrieve current user information Source: https://docs.m3ter.com/api/user/retrieve-current-user-information https://api.m3ter.com/spec get /organizations/{orgId}/users/me Retrieve information about the current user # Changelog Source: https://docs.m3ter.com/changelog Stay updated with m3ter's changelog. Track new features, improvements & bug fixes in each version release for better user experience. This Changelog lists the new features, functionality, and updates added in each month for 2026 and 2025. **More on New Features?** Please see the [**Product News**](https://www.m3ter.com/blog/category/product-updates) blog for more detailed information on the value you can get from the new features in each release. ### New Features * **m3sh Workflows Usage Ingest** * A m3sh Workflow managed template is now available which allows you to create a Workflow that exploits the AWS Simple Notification Service (SNS) and is triggered when a file is uploaded to the designated Amazon S3 bucket. * Further managed Workflow templates for common automation use cases will continue to be rolled out over time. * See [Utilizing Workflow Managed Templates](https://docs.m3ter.com/guides/m3sh-workflows/utilizing-workflow-managed-templates) for more information. ### Console Improvements * **Statement Definitions** * When creating Statement definitions, the Meter selection drop-down list is now searchable. * **m3sh promoted to Console navigation top-level** * As announced in the July 2026 Changelog, the Console's main navigation has been redesigned with m3sh now at top-level, bringing together all related automation features offered in the platform, such as m3sh Workflows, Integrations, and Notifications. * **Account Balances** * The Account Balances page has been improved for usability to accommodate Accounts with many Balances. The Timeline and List panels now adjust for scrolling when five or more Balances are added to an Account. ### Changes and Bug Fixes * **Geo-blocking added to** [api.m3ter.com](http://api.m3ter.com) * As announced in the July 2026 Changelog, work to strengthen the security of the m3ter platform has continued and we have now applied a geo-blocking policy to the WAF ruleset protecting the [api.m3ter.com](http://api.m3ter.com) endpoint. Traffic originating from high-risk regions (currently defined as Cuba, Iran, North Korea, Syria, and Ukraine) is blocked.
We are actively monitoring the change and do not expect any impact on legitimate traffic. * **Retirement of SDKs and Terraform Provider** * As announced in the July Changelog, the SDKs and Terraform provider were retired on Monday August 17th. These will no longer be updated and the GitHub repositories have been made private. Current version packages will remain on package repositories such as PyPi and Maven Central for the time being, but won't receive further updates and will be removed later. * The principles that lead us to develop these tools remain important to us, and we'll share more on future plans in due course. In the meantime, all capabilities in the m3ter service remain accessible via our REST API. * If you have any questions, please reach out to your m3ter contact. * **Data Explorer v2 fixes** * As announced in the July Changelog, two fixes were deployed in August: * Query responses are now filtered on meter id to prevent issues where meters having the same data field codes could result in the response returning data for all meters. * The LATEST aggregation method for queries now aligns with billing LATEST aggregation method: measurements are ordered by `ts` first, `receivedAt` second.
### New Releases * The m3ter Connector for Salesforce managed package is now generally available. See [m3ter Connector for Salesforce](/guides/m3ter-connector-for-salesforce). ### Console Improvements * **Authentication** * When you open the Console log in page, the log in method you last used (email/password or SSO) is now remembered and the page presents accordingly. * **Mixed currency billing** * For Bills where the pricing currency is different to the billing currency, the Subtotal column on Bills now shows the pricing currency amount as well as the billed amount. This is particularly useful when reviewing Bills where custom currencies such as credits are used as the pricing currency. ### Changes and Bug Fixes * **Geo-blocking added to [ingest.m3ter.com](http://ingest.m3ter.com)** * As part of our ongoing work to strengthen the security of the m3ter platform, we have applied a geo-blocking policy to the WAF ruleset protecting the [ingest.m3ter.com](http://ingest.m3ter.com) endpoint. Traffic originating from high-risk regions (currently defined as Cuba, Iran, North Korea, Syria, and Ukraine) is blocked.
We are actively monitoring the change and do not expect any impact on legitimate traffic. The same policy will be rolled out to the [api.m3ter.com](http://api.m3ter.com) endpoint in late August. * An issue preventing creation of a Plan Template pricing in the Pricing Editor has been resolved. * Endpoints for creating and managing Service Users and Service User Credentials which had previously remained hidden are now published in the API Reference. * For Balances with a Rollover amount defined, the Balance transactions summary card now correctly tracks the Rollover remaining amount as it is consumed. ### Upcoming Changes * **Retirement of SDKs and Terraform Provider** * Last year we launched SDKs for four popular languages, along with a Terraform provider. Due to low uptake, and complexities introduced by the acquisition of the vendor whose product was used to generate them, maintaining the SDKs is not practical, and we are retiring them. * From Monday August 17th the SDKs and Terraform provider will no longer be updated, and the GitHub repositories will be made private. Current version packages will remain on package repositories such as PyPi and Maven Central for the time being, but won't receive further updates and will be removed later. * The principles that lead us to develop these tools remain important to us, and we'll share more on future plans in due course. In the meantime, all capabilities in the m3ter service remain accessible via our REST API. * If you have any questions, please reach out to your m3ter contact. * **Data Explorer v2** * An issue with Data Explorer v2 query responses has been resolved where meters having the same data field codes could result in the response returning data for all meters. To avoid this, the fix ensures query responses are now filtered on meter id. * Additionally, the LATEST aggregation method was incorrectly implemented for queries and ordered the ingest data measurements based on when we received them. The LATEST aggregation method for queries now aligns with billing LATEST aggregation method: measurements are ordered by `ts` first, `receivedAt` second. * Both fixes will be release during the first week of August. * **Coming soon - m3sh promoted to Console navigation top-level** * Following last month's announcement that m3sh Workflows are soon to be made available in write access preview release version, the Console main navigation is being redesigned making m3sh a top-level section containing Workflows together with other related automation features such as Notifications.
### New Features * **Understanding zero-total Bills at a glance** * In Bill management, you can now add *total debits* and *total credits* columns. * This lets you quickly see whether a zero total Bill means there was no product consumption, or whether debits and credits simply cancelled each other out, so you can move on with confidence instead of investigating each Bill manually. * **New Improved Balance Drawdown algorithm** * A new and enhanced Unified Drawdowns model is now available in preview release. * Designed to maximize credit use and when enabled, the billing engine considers *all* eligible Balances on an Account together as a group rather than one at a time. * A max-flow algorithm with iterative optimizations is then applied to achieve the best coverage for drawdown against the Account’s available grouped Balance credit. * See [Unified Balance Drawdown](https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#new-unified-balance-drawdown) for more details. * **Inline Usage Insights on Account Overview** * On Account Overview, users can now open a Usage chart which tracks usage against the Account for a selected Aggregation giving a quick inline summary of usage. * Quickly read off specific usage data point values. * Links directly to the full Usage Data Explorer interface for further exploration to review details of the usage data ingested for the selected time period. ### Console Improvements * **Meter Activity Chart** * On Meter details pages, the Activity panel now includes a *Measurement counts* chart showing a running count of submissions made for the Meter over the previous 24 hours. * Users can hover their cursor over the chart’s hourly data points to read off actual measurement counts. * **Duplicating Plans/Plan Templates** * From details pages, Plans and Plan Templates can now be quickly duplicated. * **Grants** * When setting up a Grant, users can now open a list of Aggregation units and check which unit they need to select as the Grant currency. * **Segmented Aggregations** * The workflow for adding segments has been improved and is now more intuitive with an updated help text offering guidance for when wildcard segments are required. * **Console Help Center.** * An upgraded Help Center is now available in the Console: * Search User and API Reference documentation. * Submit questions to the AI Assistant. * Open the login page for our web ticketing Support portal. * Check the operational status of the m3ter platform’s Config and Ingest API services. * Open a Product Portal page and review the roadmap for planned features and capabilities. ### Changes and Bug Fixes * The `allowNegativeBalances` request parameter on the Update OrganizationConfig endpoint is now deprecated. ### Upcoming Changes * **Coming soon m3sh Workflows**: * Write access to a preview release version of m3sh Workflows will soon be made available on request and subject to agreed commercial terms. * By extending the m3ter platform's core functionality for data integration supporting interoperability across external systems, this powerful feature allows you to build automated routines serving a wide variety of operational uses cases. ### Console Improvements * **Account Balances Summary**. * A new Balance Summary page provides a breakdown and timeline chart of the Balances on an Account, and allows remaining totals for active, future, and past Balances to be quickly read off. See [Reviewing Account Balances Summary](https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/reviewing-account-balances-summary). * **Documentation Search and AI Assistant**. * The Console Help section now includes links to search the m3ter Documentation directly or open an AI Assistant and enter questions for help and resources on current workflows and tasks or to obtain coding examples. * **Bill Details**. * The Bill details has undergone significant redesign to improve Bill layout, line item presentation, and overall usability. * Individual line items can be expanded for a detailed review with links to associated billing entities provided. * When expanded, usage line items show a chart tracking usage submission over the billing period. ### Changes and Bug Fixes * As announced in the April 2026 Changelog, Bill Jobs will now be updated less frequently, and at most once a second. For large Bill Jobs, this reduces the number of events generated and safeguards against excessive processing where notifications are enabled for the Bill Job Updated event. * As announced in the April 2026 Changelog, when creating or updating a Balance Transaction Schedule a Transaction Description is no longer a required field. * As announced in the March 2026 Changelog, the ability to set a negative value on debit pricing is now disallowed. ### Upcoming Changes * **Coming soon**: The Bills listing page in Bill management will soon be updated to show additional fields for debit and credit totals. This will allow users to quickly assess whether zero total Bills are due to zero consumption over the billing period or because a Bill's debit and credit totals equate to zero. ### Console Improvements * **Viewing Bills**. * Bill viewing preferences, such as preferred display options for line item grouping, are now persisted across reloads, browser tab changes, and separate browser sessions. * **Plan Details**. * When reviewing Plan details, if you are creating a usage-based or unit-based pricing for a Plan a new modal selection for Aggregations or Counters is now available and provides a more intuitive workflow. * **Search List Pages**. * Search results for list pages are now persisted when moving between pages. For example, if you search the Aggregations list page, go to the Compound Aggregations list page then come back, you'll see the same search results listed on the Aggregations page. Search results are stored per tab / session so survive reloads but not opening new tabs. ### Changes and Bug Fixes * As announced in the March 2026 Changelog, the `billTotal` value has been added to `billing.bill.updated` Events. * As announced in the October 2025 Changelog, as of 1st March 2026: [Usage Data Explorer v1](https://docs.m3ter.com/guides/data-explorer/performing-usage-queries-and-reviewing-results) entered maintenance mode and will no longer receive new features or enhancements, but will continue to receive security updates: * If you signed up with m3ter after 21st April 2026, you will not have access to the legacy Data Explorer v1 service. * As a reminder: on 1st March 2027 Usage Data Explorer v1 endpoints will be removed. * As announced in the February 2026 Changelog for Statement Definitions, only the measures and dimensions within the filtered Meters defined for the Statement Definition are now included. * As announced in the February 2026 Changelog, a code will be required when creating or editing a Plan Group, Contract, or Plan Template. Any entities without a code defined at that time will have a default value set matching the entity's ID field. ### Upcoming Changes * In May a preview version of a new Unified Balance Drawdown mode will be made available on customer request. This new mode is designed to maximize credit use for Accounts with multiple Balances - where proportional distribution of credit is necessary, the system will use best-efforts to proportionally distribute credit between line items. * In May we’ll be introducing a change whereby a Transaction Description will no longer be a mandatory field when creating or updating a Balance Transaction Schedule. * A new Balance Summary view is due for release in May showing a detailed breakdown and timeline chart for Balances on an Account, and allows totals for active, future, and past Balances to be quickly read-off. * In May we'll be introducing a change whereby Bill Jobs will be updated less frequently, and at most once a second. For large Bill Jobs, this will reduce the number of events generated and safeguard against excessive processing where notifications are enabled for the Bill Job Updated event. ### New Features * **Filtered Bill Statements.** * When generating Bill Statements, users can now generate statements for a subset of the bill data by filtering the Statement by Meter ID(s). * See [Working with Bill Statements](https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements). * **Filtering Account Charges**. * When viewing an Account's Charges, you can now filter the list to show only Ad-hoc or Balance Charges. * **Scheduled Billing Offset**. * Customers using daily scheduled billing can now set a scheduled billing offset to allow late-arriving usage to be included in the daily bill. The offset can be specified in hours after midnight (UTC). ### Console Improvements * **Product details**. * When viewing the entities belong to a Product, you can now create a new entity for the Product directly from Product details. * **Lookup Table Revisions**. * Published Lookup Table Revisions can now be archived in the Console. Previously this was an API-only operation. ### Changes and Bug Fixes * The maximum length for measurement UIDs has been increased from 50 to 128 characters. * Bill line items for Balance overages now have the consumptions account product assigned to them when configured for the Balance. * As announced in the February Changelog, prorating of standing charge and minimum spend amounts for billing will be done to millisecond precision instead of whole days. ### Upcoming Changes * In April we’ll be adding the billTotal value to `billing.bill.updated` Events. This enhancement has required us to change how the billTotal value is calculated, and we’re also activating that change in April. You should not notice any difference when this rolls out, but if you do notice any issues with the billTotal value reach out to your m3ter contact and let them know. * In November 2027 we'll be removing the ability to set a negative value on debit pricing, because the equivalent and more correct behavior is now available by using positive values on credit pricing. If customers want to retain the capability beyond that date, they should reach out to their m3ter contact. ### New Features * **Grants** * Grants are now available for adding to end-customer Accounts. This means the Account is credited with an amount of pre-rated usage, which can be drawn-down to reduce the amount of usage that is rated and would result in charges against the Account. See [Grants](https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/balance-grants#grants). * The Grants feature is now available in Preview to all customers. * **Replace Attached Plan.** * You can now replace an existing attached Plan on an Account with a single API call or a single operation in the Console. When you do this, the start date you define for the replacement attached Plan is used to automatically end date the existing attached Plan. * **Documentation**. Our User and API Reference documentation has been migrated to a new platform: * Improved look and feel and navigation structure. * Improved search capability. * API Reference has intuitive built in *Try it* feature for quickly testing endpoints. * AI agent integration allows users to ask a question in natural language and quickly obtain an answer without having to manually search through the documentation. ### Console Improvements * **Plan/Plan Template Details**. This key area of the Console has been significantly redesigned to enhance overall usability: * Provides an at-a-glance review of the active Pricing configured for a Plan. * All aspects of Pricing details are laid out to facilitate reviewing and checking. * Bill line item descriptions are used as Pricing headings, closely matching what's seen in Bills for Accounts that use a Plan. * The Pricing Schedule shows active vs. historical and future pricing, allowing users to smoothly navigate Plan Pricing across different periods in a complete sequence. * **Currency Rounding Mode**. * When creating and configuring Currencies for your Organization, you can select the rounding mode you want to apply to currency amounts. * This was an [API feature](https://docs.m3ter.com/api/currency/create-currency#body-rounding-mode) previously, and has now been made available through the Console. * **Prepayments Consumption Chart**. A new improved version of this helpful chart is now available: * Facilitates tracking and managing a Prepayment's consumption over its service period. * Immediate visibility of overages is now built-in, removing the need to open and analyze Account Bills for this information and reducing the risk of billing surprises for end-customers. * Smoother overall Prepayment management workflow. ### Changes and Bug Fixes * As announced in the October 2025 Changelog, where the billing mode is set to bill the Parent Account and Account Plans are attached only to Child Accounts, any *credit charge amounts* are now recognized for Parent Account billing. ### Upcoming Changes * In March, a change will be made whereby prorating of standing charge and minimum spend amounts for billing will be done to millisecond precision instead of whole days. * In April, we'll be introducing a change for Statement Definitions whereby only the measures and dimensions within the filtered Meters defined for the Statement Definition will be included. * In April, a code will be required when creating or editing a Plan Group, Contract, or Plan Template. Any entities without a code defined at that time will have a default value set matching the entity's ID field. ### New Features * **m3sh** * m3sh is the framework that underpins and drives m3ter's interoperability and automation capabilities, encompassing Events and Notifications, Integrations, Workflows, and Apps, such as the Salesforce Managed Package and soon the NetSuite SuiteApp. * As part of m3sh, m3sh Workflows allow customers to view and edit built-in and custom automation flows, and this month we're releasing it in read-only mode; read-write mode allowing customers to define their own custom Workflows will be coming soon! Read more about m3sh [here](https://www.m3ter.com/docs/guides/m3sh-automation). * **Custom SQL Aggregations** * You can now reference Counter values using the syntax: `counters ['counterCode']` * This is particularly useful for billing use cases where you need to calculate things like Reserved Instances (RIs) with Overages. * The system will automatically split Custom SQL aggregations across the billing period when the Counter value changes, so the returned Counter will always represent the value as it was at the timestamp of the measurements being queried. * In addition, the `COALESCE` function is now supported for Custom SQL Aggregations, which is useful if you need to evaluate multiple values when some values might be null. * **Bill Statements** * When creating Statement Jobs, you can now filter by `meterIds` to reduce the size of the Statement generated and exclude unwanted line items. * **Charges**. Charges on Accounts and Balances are now Generally Available. ### New Features * **Custom SQL Aggregations** * Powerful new feature that offers you more flexibility than traditional simple Aggregations such as SUM, MAX, and COUNT when defining your billing metrics. * As an additional option in the existing Aggregation layer, Custom SQL Aggregations can be used in combination with Segmentation and any existing pricing model. * The [Custom SQL Aggregations](/guides/usage-data-aggregations/custom-sql-aggregations) feature is is now available in Preview to all customers - reach out to your m3ter contact to have it enabled in your Organizations. * **Lookup Tables** * Lookup Tables enable you to manage dynamic data mappings that your calculations reference. * Use them for currency conversion, pricing tiers, discount rates, and similar scenarios where you require values to change operationally but for calculation logic to remain constant. * Designed for very high throughput and millisecond latency, and can be used at any rate supported by the services that query them. For example, multiple lookups can be made for each usage data measurement being ingested and enriched by the platform, thousands of times a second. * [Lookup Tables](/guides/lookup-tables) are now available in Beta to customers on request - reach out to your m3ter contact to have it enabled in your Organizations. * **Overlapping Account Plans** * A switch is now available under Organization Configuration settings to allow multiple plans for the same Product to be active on an Account at the same time. * For some billing use cases, you'll need to enable this option. For example, if you intend to bill end-customer Accounts on a Contract basis and your billing use case requires some charges for a Product to be billed under one Contract and other charges for the same Product to be billed under a different Contract. ### Console Improvements * **Charges** * When creating or editing Account or Balance Charges, you can now enter a number of Units and Unit Price, resulting in a calculated Charge amount. * **Bill management** * An **Integration status** column has been added to the Bills list in Bill management. Users can quickly check the status of the latest integration run for individual Bills without having to open a Bill's details page. * **Integrations - External Mappings** * When creating External Mappings, all drop-down fields on the **External mapping settings** form are now searchable - users can input text into a field to filter for and quickly find the required selection. ### New Features * **Contract Billing** * Enables billing customers under specific contractual agreements for bundled product consumption, supporting flexible product packaging aligned with enterprise contracts. * Provides control over bill grouping using exclusive/non-exclusive keys, allowing separate invoicing per contract or consolidated billing across multiple contracts as needed. * Supports billing to include only for usage matching specific Meter dimension values (for example: contract id, service type, geographic location), enabling precise charge calculation per contract terms without modifying underlying product configurations. * [Contract Billing](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing) is now available in Preview to all customers - reach out to your m3ter contact to have it enabled in your Organizations. * **Stripe Native Integrations** * Stripe Integrations will now use Accounting Products where these have been assigned to Bill Line items. * If you configure an Integration to create Stripe invoices, you can now specify the id and version of the Invoice Rendering template you want the integration to use. ### Console Improvements * **Contracts** * In the Accounts section, a new *Contracts* page is available listing the Contracts created for your Organization. You can search for a Contract or for those belonging to a specific Account, and then review a Contract's period together with a read-off scale showing Contract percentage completion. * On Contract details pages you can now add Balances on an Account to a Contract. * **Bill management** * The workflow for creating and running Bill jobs has been upgraded to help and support users perform this key operation. When you open Run billing, the core Organization billing settings - such as epoch dates for billing periods and External invoice date for revenue recognition - are shown for checking. At Bill job completion, a new *Run billing* page opens giving you the Bill job details and listing any Bills created or updated by the job. * **Billed Charges** * Bill line items for Ad-hoc Charges and Balance Fee Charges now show Units and Unit price values. ### Changes and Bug Fixes * As notified in the September Changelog, the Count Notifications endpoint has now been removed. * Following the September Changelog notifying deprecation of the ‘Retrieve Line Item Usage in JSON Format’ endpoint and the associated `jsonUsageGenerated` line item response parameter, we now can confirm that generation of line-item JSON usage statements has been disabled. The deprecated retrieval endpoint/fields will be removed in December * **Fix**: An issue where submitting the currency conversions form didn't redirect or indicate it had updated has now been resolved. * **Fix**: When users try to redeem an invitation to an Organization and the invitation has already been redeemed, we now redirect them to an error screen. * **Fix**: When creating or editing Prepayments or Balances on Accounts in the Console, users can now select Ad-Hoc charges on Accounts to be made available for draw-down against them. ### Upcoming Changes * **Debit/Credit Bill Line Items** * In December, we'll be adding validation to ensure a service period is defined when you add Debit or Credit line items to Bills. * **New API infrastructure** * As stated in the October Changelog, we've been preparing to migrate the m3ter APIs to new infrastructure. This migration will take place in December 2025. ### New Features * **Usage Data Explorer** The new [Usage Data Explorer ](/guides/data-explorer/usage-data-explorer-v2)(v2) is now Generally Available. The old Usage Data Explorer will continue to be available until March 2027 (see "Upcoming Changes" below). * **Bill Statements.** Line Items now include the relevant `contractId` for any corresponding source Bill line items that are linked to a Contract. * **Data Exports**. Data Export jobs now emit a `dataexport.job.success` Event after completing successfully. * **Meter Derived Fields**. Derived Field calculations can now reference the account code directly as `m3ter.account.code`. ### Console Improvements * **Product details**. You can now quickly review and manage the entities created for a Product on the Product details page. Separate tabs are provided for each entity type and you can open the details page for a specific Product entity directly, as well as edit or delete entities. * **Bill management**. Usability enhancements: * Your invoice date range selection on Bill Management is now saved in the query string so reloading or going back retains your selection. * Filtering Bills is now more intuitive with radio button options to filter quickly for Approved or Pending status or by switching to show only Locked Bills. * **Account pages**: * If an Account Plan has had a Billing cycle date defined or has been added to a Contract on the Account, then the Attached Plans tab now clearly shows this. * Account details are now only shown on an Account's Overview tab leaving more room when working in other tabs. * **Entity metadata**. The metadata cards on details pages now list the latest integration runs for relevant entity types and users can use a link to view all runs. * **Create and Edit Forms**. When users have made editing changes to Create or Edit forms and then attempt to navigate away, a helpful dialog now appears to remind them that there are unsaved changes and asking them to confirm they want to leave the form without saving. ### Changes and Bug Fixes * **Fix**: An issue where the Balance details page attempted to load too many Bills has been resolved. * **Fix**: Some character sets were not rendered correctly on Console screens. This issue has now been resolved. ### Upcoming Changes * **Usage Data Explorer (v1).** With the release of the new [Usage Data Explorer](/guides/data-explorer/usage-data-explorer-v2), we're starting the process of retiring the legacy version. Your m3ter contact will reach out with more details and assistance on migrating. The following key dates should be noted: * 1st March 2026: [Usage Data Explorer v1](/guides/data-explorer/performing-usage-queries-and-reviewing-results) will enter maintenance mode. After this date, it won't receive new features or enhancements, but will continue to receive security updates. New customers onboarded after this date will only have access to the new version. * 1st March 2027: Usage Data Explorer v1 endpoints will be removed. * **New API infrastructure.** We’re preparing to migrate the m3ter APIs to new infrastructure. This change will be transparent to RFC-compliant clients, but the new infrastructure is less tolerant of non-RFC compliant requests. We’re reaching out to customers we can know will be affected, and will confirm a timeline for the change in due course, but in the meantime customers should check they are adhering to the following: * All requests with a body need to include the appropriate Content-Type header, typically content-type: `application/json`. * Requests using HTTP methods that do not expect a body, such as `GET`, `HEAD`, and `OPTIONS`, must not contain one. * **HTTP status codes for oversized payload.** In December, we'll be making a change to give a different and more informative 413 error code when the payload in a PUT request to our APIs is too large. * **Bill Statements.** In December, we'll be making a change to what Statement line items are generated for Bills in some specific configurations. After the change, a Statement line item will be produced for each Meter referenced by a Compound Aggregation, rather than a single Statement line item per Compound Aggregation. This will ensure any usage filters applied for the Statement don't risk usage being omitted at Statement generation. You will only be affected by this change if: * The pricing uses a Compound Aggregation, and the Compound Aggregation references multiple Meters. * The Statement Definition uses a field as a dimension that exists in some, but not all, of the Meters used. * **Bill Statements**. In December, we'll be changing the way Statements are generated for Bills resulting from segmented pricing. If a segment pricing is updated, any Statements generated after the update will not include the pricing bands for the earlier legacy segment pricing. * **Credit Charge Amounts with Parent/Child Accounts.** Where the billing mode is set to bill the Parent Account, and Account Plans are attached only to Child Accounts, in December a change will be made to allow *credit charge amounts* to be recognized for Parent Account billing. Previously in these scenarios only debit charge amounts were recognized for Parent Account billing. * We reported last month that the [Retrieve Line Item Usage in JSON Format](/api/bill/retrieve-line-item-usage-in-json-format) endpoint had been deprecated and will be removed in November 2025. The associated `jsonUsageGenerated` response parameter for the [List Line Items](/api/line-item/list-line-items) endpoint has been deprecated and will also be removed. ### Product Updates #### Azure Marketplace Integration A new *Azure Marketplace* native integration is now available in Beta release version, which you can use to send your end customer Account Bills generated in m3ter into Azure Marketplace. Included with this release is a reconciliation feature designed to support your Azure Marketplace integrations: * **Billing usage data reporting**. Performed for each integration run and allows you to track all amounts sent over to Azure Marketplace for each Bill, together with the date and time the Bill data was sent. This is particularly useful for Bill recalculation scenarios where several updates might have taken place during the billing period. #### Data Exports * **Scheduling**. When setting up a Schedule, you can now use a simple or advanced mode for defining when exports will run: * **Simple Scheduling**. Define a frequency in days, hours, or minutes. For daily and hourly scheduling an offset is now also available. For daily jobs, you can offset in hours from midnight. For hourly jobs, you can offset in minutes from the start of the hour. * **Advanced Scheduling**. Define when exports run using the *cron* format. * **Operational Data Exports**. Charges are now available in operational Data Exports. * See [Data Exports](/guides/data-exports). #### Usability Improvements * **Calculation Editors**. Several usability enhancements: * **Referencing Custom Fields in Derived Field editor**. Includes autocomplete/tooltips for defined Custom Fields. As you start to enter a field in the editor: * A list of any matching defined fields shows with prefix allowing you to read-off whether field is defined at Organization or individual entity level. * Context-sensitive filtering is applied - if a Meter is Product linked, then only Product Custom Fields are shown. * **All Calculation Contexts:** * Context-sensitive tooltips for functions showing syntax and examples. * Support for `IF..THEN..ELSE` syntax, so you can use that instead of ternary expressions for more readable calculations. * Clickable link to open calculation engine reference documentation. * **Organization Selector**. Organization type is now more clearly and readily indicated for users both when changing Organization and when working in the Console: * Production Organizations are labeled in red. * Sandbox Organizations are labeled in teal. * **Page Not Found**. User experience has been significantly improved for when a Page Not Found error occurs. The m3ter branding and page header is now always shown together with a more helpful message and link to the Dashboard. If you're logged in, you also get your user actions and the main navigation to help you quickly get back on track. ### Coming soon * In December 2025, we’ll be introducing validation that the `ets` timestamp optionally present in usage data measurements must be equal to or after the `ts` timestamp. Measurements that fail this validation will be rejected using the standard method for the method of ingest being used. * Bill Statement line items will soon have the relevant `contractId` added to them for any corresponding source Bill line items that are linked to a Contract. * The previously deprecated `configData` request parameter for the [Create Account](/api/account/create-account) endpoint will be removed in November 2025. * The [Retrieve Line Item Usage in JSON Format](/api/bill/retrieve-line-item-usage-in-json-format) endpoint has been deprecated and will be removed in November 2025. * The Count Notifications endpoint has been deprecated and will be removed in November 2025. ### Product Updates * **Meters**. Product-linked Meters can now be made into Global Meters. * **Calculation Functions**. A new `IN()` function is available which takes multiple arguments. Can be used with the ternary operator to return `TRUE` if any of the arguments are satisfied, otherwise return `FALSE`: * For example, `IN("completed", "succeeded") ? "true" : "false` * **Permission Policies**. New `export:config` resources and an `export:download` action are now available for creating a custom Permission Policy granting Users full working access to create, manage, and run data exports. * **Balances**. Custom Fields can now be added to Balances at the individual entity level. * **Data Exports**. Accounting Product fields for Bill line items are now included in Data Exports. * **m3ter SDKs and Terraform Provider**. New versions of the m3ter SDKs and Terraform provider have been released with various fixes and enhancements. See [Developer Tools](/guides/developer-tools) for details. * **AWS Marketplace Integration**. The m3ter platform integration is now listed on [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-xdjbyfvlsd36s). You can review our [blog posting](https://www.m3ter.com/blog/extending-complex-pricing-to-aws-marketplace-with-m3ter) for more details. ### API Updates * **User**: * A new [Retrieve current user information](/api/user/retrieve-current-user-information) endpoint was added to the API and SDKs. This allows you to identify and check the current session's user. ### Console Updates **Usability Improvements**: * **Integrations**. On the main *Integrations* page, the badges for external systems now show the number of Credentials and Configurations set up for a system. If either a Credential is disconnected or a Configuration is disabled, then a warning will show. * **Plan Templates**. You can now price a Plan Template directly from the Plan Template details page. ### Resolved Issues * Fix: Previously a Balance could be created for an Account without specifying a Name or Code. This is no longer possible and any Balances created without Name or Code will now be required to add a Code when updated. * Fix: If a Create or Edit form was opened in a new browser tab, the Cancel button was inactive. This has now been resolved. ### Product Updates * **Events and Notifications**. New system Events are generated for Balance amounts - when a Balance amount is created, updated, or deleted. Notifications based on these Balance amount Events can be set up to meet common use cases, such as an alert when a Balance amount reaches zero, is consumed down a preset threshold, or is consumed down to a defined percentage of the initial amount. * **Accounting Products for Bill line items**: * **Reviewing Bills**. If you've defined Accounting products for line item types to meet your revenue recognition and accounting purposes, when reviewing and managing Bills in Bill management you can now group line items by Accounting product. * **Integrations**. If you've set up a billing integration with your external accounts receivable and invoicing system, the integration will now use the Accounting product ids assigned to line items. * **Terraform Provider**. The m3ter Terraform provider joins our SDKs in developer tools and is available for early access use, allowing you to manage m3ter resources using the popular infrastructure as code tool from Hashicorp. See [Developer Tools](/guides/developer-tools) for details. * **Integrations**. When configuring billing integrations with your external systems, you can now filter the line items included in the integration using line item Product IDs or Aggregation IDs. ### API Updates * **Marketplace Integrations**: * A new [Retrieve reported usage](/api/marketplace-integrations/retrieve-reported-usage) endpoint is available, which allows you to return a list of reported usage records for integration runs with external marketplace systems. Query parameters are available to filter what is returned in this usage report by `billStartDate`, `billId`, `externalSystem`, or `accountId`. ### Console Updates **Usability Improvements**: * **Account Plan and Plan Group attachment**: * **Plan details**. When reviewing an Account's Plan attachment details, a new hotlink text allows you to open the Plan attached to the Account directly. * **Attached Plan pricing**. The pricing for an attached Plan is now shown in the same panel as the attached Plan's details, make it quite clear the pricing is associated with the Plan. Similarly for when a specific Plan in an attached Plan Group is selected - the associated pricing is shown with the Plan details. * **Plan Group attachment**. When a Plan Group containing many Plans is attached to an Account, the attachment page loading is much faster. * **Accounts section**. The Accounts section of the Console now provides a faster loading experience and when opening the details pages for entities attached to an Account a full breadcrumb trail is given. ### Resolved Issues * Fix: Previously, the Console usage data ingest form could be submitted when invalid JSON was shown, and the last valid JSON entered was submitted without any indication to users. This issue is now resolved. * Fix: The usage chart for latest bills on the Account Overview tab now correctly includes for any billed usage with a service period of one day or less. * Fix: An issue that allowed invalid Custom Fields to be attached to a Contract has now been resolved. * Fix: The *Hide zero quantity line items* display option available when viewing Bills containing zero line items is now working correctly to hide any and only the zero quantity items. * Fix: An issue has now been resolved that prevented an Aggregation being used to price a Plan in a Plan Group if the Aggregation had been used to price another Plan in the same Plan Group. ### Product Updates * **Account Balances linked to Contracts**. Account Balances can now be optionally linked to a Contract on the Account. If you've linked an Account Plan to a Contract, link a Balance to the same Contract to ensure the Balance is available for draw-down. See [Linking Balances to Contracts](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances#linking-balances-to-contracts) for more details. * **Integrations** A new *AWS Marketplace* native integration is now available in Beta release version, which you can use to send your end customer Account Bills generated in m3ter into AWS Marketplace. Included with this release are two reconciliation features specifically designed to support AWS Marketplace integrations: * **Billing usage data reporting**. Performed for each integration run and allows you to track all amounts sent over to AWS Marketplace for each Bill, together with the date and time the Bill data was sent. This is particularly useful for Bill recalculation scenarios where several updates might have taken place during the billing period. * **AWS CloudTrail reconciliation**. Provides visibility between the data *received by* AWS Marketplace and the log data *sent by* m3ter when integrations run. This data comparison is then used to maintain data parity between systems by identifying differences and automatically making adjustments to reported metering data, and removes the need to carry out manual troubleshooting and reconciliation for clean billing operations. * See [Configuring AWS Marketplace Integrations](/guides/integrations/setting-up-integrations/configuring-aws-integrations) for more details. * **Custom Fields**: * **Balances**. You can now add Custom Fields to Balances at the individual entity level. See [Creating a Balance on an Account](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances#creating-a-balance-on-an-account) for more details. * **Balance Schedules**. When setting up Transaction or Charge Schedules for Balances, you can now add Custom Fields to them. See [Creating Transaction Schedules for Balances ](/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances#creating-transaction-schedules-for-balances)and [Creating Balances Charge Schedules](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances#creating-balance-charge-schedules) for more details. * **Data Exports**. Transaction Types are now available for operational Data Exports. * **Calculation Functions**: * **Date Time Functions**. The new `DateTime.secondsOverlap` function allows you to calculate the total number of seconds of overlap between a given overall time range and a time period. This function is useful in cases where discount rates are offered for service consumption during "off-peak" hours - for example any consumption on any given day that is outside the peak rate hours of 06:00:00 until 22:00:00. See [Date Time Functions](/guides/m3ter-calculation-engine#date-time-functions) for more details. * **Math Functions**. For the `Math.ceil()`, `Math.floor()`, and `Math.round()` functions, a second optional parameter is now available to control the scale of the result. See [Functions](/guides/m3ter-calculation-engine#functions) for more details. ### Console Updates **Usability Improvements**: * **Code Editor**. Several usability enhancements: consistent highlighting; auto-adjustment in size to full width in read and edit mode and to accommodate multi-line calculations; clickable suggestions to expand for fuller descriptions. * **Ad-hoc Operational Data Exports**. Help texts for the *Time period* options have been updated to make clear that the export will include operational data from a defined start date/time up until when the export runs, and not a defined end date/time. * **Entity Metadata for Custom Fields**. When reviewing the Metadata panel for an entity, any Custom Fields configured at Organization level for that entity type are shown together with their values, which can be copied. If a corresponding Custom Field has been created for the individual entity, then the value defined at Organization level is struck through to clearly indicate that the individual entity level value will be used. * **Balance Transactions**. The Balance Transaction table on the Balance details page can now be sorted ASC/DESC by column. * **Meter Details**. Data fields for Meters are now clearly grouped on the Meter details page: Measure data fields, Dimension data fields, and Derived fields. **Usage Submissions**: * **End Timestamp**. When submitting usage data measurements into the Ingest API from either the Meter details or Account details pages in the Console, you can now enter an optional *End timestamp* date/time for the submitted measurement. * **Submission Activity**. The *Activity* panel on the Meter details page which tracks usage data submissions for the previous hour has been optimized for faster response times and refresh rate as you submit measurements. **Balance Details**. The Balance details page now contains three additional summary fields tracking key amounts in a Balance's lifecycle: *Balance consumed*, *Rollover consumed*, and *Expired Balance amount*. ### API Updates * **Integrations - Retrieve Available endpoints updates**: * [Retrieve Available Configurations](/api/integrationconfigs/retrieve-available-configurations). This endpoint now supports two optional query parameters for `systemName` and `entityType`. When these are used, the response contains a new `selectedConfigurations` section. * [Retrieve Available Integration Systems](/api/integrationconfigs/retrieve-available-integration-systems). New endpoint and supports an optional `entityType` query parameter. * [Retrieve Available Entity Types for System](/api/integrationconfigs/retrieve-available-entity-types-for-system). New endpoint and returns the available `entityTypes` for the given system. * [Retrieve Available Auth Config for System and Entity Type](/api/integrationconfigs/retrieve-available-auth-config-for-system-and-entity-type). New endpoint and returns the auth configuration for the given `system` and `entityType`. ### Resolved Issues * Fix: The *Timestamp* column in the Result rows table of Usage Data Explorer (v2) now correctly displays a UTC date/time. * Fix: An issue where the Balance Transactions ledger was not correctly tracking Transactions has been resolved. * Fix: When editing a Google Cloud Platform Destination for Data Exports, an issue where the incorrect edit form showed is now resolved. * Fix: Some searchable drop-down selection lists showed incorrect filtering on text entry. This has now been resolved. * Fix: The Custom Fields section on the Bill details Metadata panel has now been removed since not applicable. * Fix: When editing External mappings an issue where the linked integration was not showing on the Edit form has been resolved. ### Product Updates * **Billing Operations - Line Item Usage Insights**. When reviewing a Bill's details, you can now drill into usage line items and quickly gather key information about the usage directly and without having to move to other areas of the Console to obtain a fuller picture the billed usage: * The Meter and pricing components - Aggregation, Plan, and Pricing - are identified with hotlinks to open their details pages. * A bar chart displays the distribution of usage across the relevant bill period and spikes in usage can be readily identified. * A download button is provided to obtain a CSV formatted file of the line item's usage. * If any further investigation is required, open the Usage Data Explorer directly with a query to return the line item's usage preloaded and performed. * **Date Time Functions**. New date time functions have been added to the m3ter Calculation Engine and are now available for use in Derived Field, Compound Aggregation, and Notification Rule calculations. Please see [Date Time Functions](/guides/m3ter-calculation-engine#date-time-functions) for details. * **Data Exports**: * Usage Data Exports now use Data Explorer v2 queries to return usage data for export. You can open Data Explorer v2, build a query, and check the usage data returned. If satisfied, you can then quickly load the query into the Data Export page and complete setting up a usage data Export Schedule or Ad-Hoc Export. * The frequency for Export schedules can now be set at minute intervals as well as at hourly or daily intervals, with a highest frequency limit of every 15 minutes. * Setting the time period for Ad-Hoc Operational Exports has been simplified and requires users to specify only a start date/time. The Export will include only the operational data created or modified from the specified start date/time up until when the Export runs. * **Account Contracts**. Custom Fields can now be created for Contracts at the Organizational level as well as individual Contract level. This means Contract Custom Field values are available for calculations. ### Console Updates **Usability Improvements**: * **Notification/Webhook Links**. The links between Notification Rules and Outgoing Webhooks which support Notification Webhook integrations can now be much more easily managed through a new link details modal. This intuitive screen can be quickly accessed from either the Notification Rule or Outgoing Webhook details page, allowing the active/inactive status of the Notification Webhook integration to be checked and managed or Organization users to be added for receiving email notices when the integration has been auto-disabled. See [Linking Notifications to Outgoing Webhooks](/guides/integrations/setting-up-integrations/creating-and-managing-destinations#linking-notifications-to-outgoing-webhooks) for details. * **Meter Derived Field Calculations - Editor**. When creating and editing Derived Field calculations, the Derived Field ordering can be quickly changed to facilitate referencing Derived Fields earlier in the list, and the calculation editor now provides completion suggestions and syntax highlighting. * **Currencies**. A new separate **Currency settings** page is now available, making creation and management of currencies and currency conversion rates in your Organization easier and more accessible. See [Creating and Managing Currencies](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies) for details. * **Balances**: * The Balance summary listing page for an Account now has a Currency column. * The Transaction ledger for a Balance now shows "Billed" not "Paid" against Transaction amounts to avoid any suggestion that m3ter provides a collections or payments function for end-customer Account Balances. * When creating or editing a Transaction for a Balance in the Console, users can now define the Transaction date and Applied date. * **Data Exports**. Console pages and forms for configuring and managing Data Exports now all consistently use UTC for date/times, with clear labeling to avoid any user uncertainty. * **Integrations**: * The Credential being used to connect an integration with an external system is now clearly shown on the **Integration details** panel. * The **Integration runs** page listing can now be filtered by run status and sorted by run start time. ### API Updates * The Get Balance Transaction Summary endpoint in the Config API now provides three extra response parameters giving amounts for `expiredBalanceAmount`, `rolloverConsumed`, and `balanceConsumed`. ### Resolved Issues * Fix: Issues where several configuration forms were missing *Accounting product* settings have now been resolved. * Fix: When creating Charges for Accounts, it was possible to set an end date for a Charge that was before the start date. Extra validation is now in place to prevent this. * Fix: An issue has been resolved where Events associated with Custom Fields and segmented Aggregations were being stored in an inconsistent way making the data inaccessible when transferred into Notification payloads. For example: ```text theme={null} … "segments": "[{country=PT}, {country=ES}, {country=UK}, {country=EE}, {country=IE}, {}]", … ``` * The content for the affected Events is now structured in an accessible format and consistent with the standard API response formatting: ```text theme={null} … "segments" : [ { "country" : "PT" }, { "country" : "ES" }, … ], … ``` * If you suspect this issue has affected you, please get in touch with your m3ter contact or contact [m3ter Support](https://m3ter.myfreshworks.com/login/auth/1662629775049?client_id=451980218021503405\&redirect_uri=https%3A%2F%2Fm3ter.freshdesk.com%2Ffreshid%2Fcustomer_authorize_callback%3Fhd%3Dm3ter.freshdesk.com). ### Product Updates * **Charges on Accounts**. You can now create *Charges* for your end-customer Accounts to serve use cases that require ad-hoc or one-off line items for Account billing. Charges are: * Created for either debit or credit amounts and are available in any currency defined for your Organization. * Assigned a service period and given a specific date for billing the Account. When a bill job has run for the specified bill date, the Charge appears as an *Ad-hoc* line item on the Bill. * Linked to a Product for accounting purposes and can be optionally linked to a Contract. * See [Creating Charges for Accounts](/guides/end-customer-accounts/creating-charges-for-accounts) for more details. * **Integrations**. A new *NetSuite Notification* native integration is now available in Preview release version, which offers wide flexibility for controlling *when* the integration runs and for controlling *what* range of m3ter entity data is sent through to your NetSuite system. The integration: * Exploits m3ter's Notification framework driven by system Events, which means you can specify one or more Notifications that will trigger the integration. The integration runs when the relevant system Event occurs and triggers the Notification rule. * Links to a Transformation you've set up in m3ter. By defining a one-way data mapping from one specific data type to another, Transformations allow you to customize the conversion of data as it flows into or out of the m3ter system via integrations. * See Configuring NetSuite Notification Integrations for details. * **m3ter SDKs**. SDKs are now available in Alpha for Python, Golang, and TypeScript/Javascript. See [m3ter SDKs](/guides/developer-tools) for details. * **Data Exports**: * **Destinations**. You can now export your m3ter usage and operational data to Google Cloud Storage bucket destinations. * **Usage Data Export**. The capabilities of the new Usage Data Explorer (v2) for querying usage data are now fully available to the Data Export service, offering you significantly more power and flexibility to control precisely the range of exported usage data. ### Console Updates **Usability Improvements**: * **Advanced Account Browsing**. The Accounts page now offers a range of new features: * Sorting added, with intuitive default sort order when the page is first opened. * Additional columns can be added to the listing and the ordering of columns changed to suit user requirements. * Advanced search and filtering, with shareable URLs when search filters applied. * General usability enhancements: * Anchored pagination controls avoiding the need to scroll to use. * Improved empty/no results state. * Loading spinner not present when returning from an Account details page. * **Select modal listings**. Modal selection views have been recast to improve usability, including: * Anchoring the pagination controls at the bottom. * The number of selections made is dynamically tracked. * **Delete confirmations**. When deleting entities, the confirmation dialog now states explicitly the entity selected for deletion. * **Integration Details**. The integration details page has been updated to make adding and managing Credentials for an integration easier with added Credentials clearly listed. ### Product Updates **Usage Data Explorer V2**. A new version of Usage Data Explorer is now available in Preview release, which you can use to query the metered usage data collected for your Organization in m3ter. The Console user experience is highly intuitive and facilitates setting up a query that returns the precise usage data set needed to serve your current analytical purposes. Features include: * **Dimensions filtering**. Filter the usage data returned by specific Dimension data field values. * **Aggregate data**. Apply Aggregation functions to the usage data returned for the query. * **Grouped by**. For queries that apply Aggregations, select to group the data returned for the query by: * **Account** * **Time** * **Dimension** * **Reviewing query results**. Review the data returned for your query in a Results row table. * **Query saving and re-loading**. Quickly save a query and re-use it. * **Downloading query results**. From the results table, promptly download the returned data set in a CSV or JSONL formatted file. **Data Exports Service**: * **Downloads to Local Device**. Now available through the Console. If you omit a Destination for either an Export schedule or an ad-hoc Export, when the Export job runs and has succeeded a file download button is provided on the Export jobs page. ### Console Updates **Usability Improvements**: * **Calculation Editor**. The display and editing experience for creating calculations in the Console has been greatly enhanced. This includes full syntax highlighting support for the m3ter calculation language and other editing features: * **Auto-indentation** * **Auto closing of brackets / quotes** * **Undo / redo** * **Find & replace** * **Re-size text editor** * **Integrations and Notifications**. The Console area covering these key functions have undergone significant consolidation and rework to give a better overall user experience in terms of core workflows for creating and configuring, and for ease of management: * **Integrations**. The main page shows a grid layout for the external systems available for integration and can be filtered for either Accounts Receivable or CRM systems. Each external system now has its own page for configuring and managing Native Integrations with the system, and incorporates a Credentials section. * **Notifications**. Similarly, once a Notification Webhook Integration has been set up, management is done from a single page for the Notification rule details, including linking to Outgoing Webhooks and reviewing Events for the Notification. * **Segmented Aggregations**. When setting up a segmented Aggregation, the Segments panel now extends the full width of the page to accommodate longer text entries for segment values. * **Accounting Product IDs**. These are now clearly shown on the details pages in the Console for relevant billing-related entities and for linking to Bill line items: Prepayment/Commitments for fees and usage; Plans for minimum spends and standing charges; Pricings for usage and minimum spends; Counter Pricings for recurring charges; Balances for consumption draw-downs. **Balance Transactions**. When creating Transactions for Balances in the Console, users can now define a Transaction date and an Applied date, and these are now clearly shown on the Balance Transactions ledger. There is no restriction on back-dating Transactions, which is useful for certain use cases such as when contract renewal negotiations for an end-customer Account are protracted. ### Resolved Issues * Fix: The to-date options for date range setting for operational data exports now set the range to end at the minute a selection is made, and instead of setting the date range to end at the start of the following day. * Fix: An issue where dimension fields on Usage Explorer V1 did not reset correctly has been resolved. * Fix: If `productId` was missing for line items, then duplicate line items could appear on Bills. This has now been resolved. * Fix: When a Prepayment/Commitment on an Account is configured to be billed on a schedule, an issue where the service period end date appeared on Bills as the day prior has been resolved. ### Product Updates **Accounting Products for Billing Elements**. The range and granularity of billing elements in m3ter that can be assigned an accounting product has been extended to include: * **Prepayments/Commitments**: * **Fees** * **Usage draw-downs** * **Pricings and Counter Pricings**. Allows pricing metric accounting (Aggregation and Counter-level). * **Plans**: * **Standing Charges** * **Minimum Spends** * **Balances:** * **Fees** * **Consumption draw-downs** By allowing assignment of accounting products at these various levels, m3ter ensures that each bill line item can be correctly categorized for accounting purposes **Data Exports Service**: * **Ad-hoc Operational Exports**. Some additional options are now available when running these data exports: * Define a date/time range to include only the data created or modified within that time period. * Include Balance Transactions data in the export. * **Downloads to Local Device**. Available through the API - if a Destination is omitted, a Data Export file download URL can be obtained for the export job and then used to download the file to your local device. **Recurring Charges**. You can now enter a value of 0 for a Counter Adjustment on an Account, which is useful if an end-customer wants to terminate a contract mid-billing period. **Integrations**: * **External Mappings**. When setting up External Mappings for integrations, *custom External Table* *names* can now be used for the mapping. This is especially useful when integrating with systems that support custom objects, such as Salesforce. * **Bill Integration Runs**. From the Bill details card you can now open and review *all integration runs* for a Bill. This serves several common use cases: where a single Bill is subject to multiple integration runs, Bills are synced to multiple external Accounts Receivable (AR) systems, or Bills are synced to multiple instances of the same external AR system. * **Balances**. The Balance details card in the Console now provides a comprehensive set of fields that allow users to closely review and track key Balance amounts, including any rollover amount originally defined for the Balance and the remaining rollover amount. ### Console Updates **Usability Improvements**: * **Table Style**. A new style has been implemented for tables across Console pages, which provides bolded text header rows and sharper contrast for content rows when viewing. * **Search Accounts**. Users can now use the Account ID to search the Accounts list page. ### Resolved Issues * Fix: When attaching Plans to an Account, the start date and end date selectors on the Create Plan attachment page now allow users to select a time as well as a date. * Fix: If the Organization timezone was set at other than UTC, an issue is now resolved which allowed the start and end dates of a Prepayment/Commitment or Contract to be set incorrectly. * Fix: If the Meters list has been filtered by Product, the Product selection is now retained for starting the create Meter workflow, and relieves the user from having to re-select the Product to start the workflow. * Fix: When a Single Sign-On (SSO) failure occurs, users are now shown an error message for the failure in the Console. * Fix: If a unit is not defined for a Bill line item type, then the unit is now shown as having no value where previously a zero value was shown, which could be misleading. ### Product Updates * **Data Export Service**. A *Data Export service* is now available in m3ter in Preview release version. You can use this new service to export usage data and operational data from your m3ter Organization directly into your AWS S3 buckets. Configure data export schedules to run at hourly or daily intervals or run ad-hoc data exports: * **Usage Data**. Specify a precise range of usage data measurements ingested for your Organization that you want to export - by Meter, Account, and time period. You can select to aggregate the specified usage data for exporting, if required. * **Operational Data**. Export the configuration and operational data for a range entities from your production environment - such as Bills, Prepayments/Commitments, Accounts, and Balances. * See [Data Exports (Preview)](/guides/data-exports) for more details. * **Salesforce Native Integrations**. When setting up Salesforce native integrations for either billing or entity data, you can now select a *Namespace* to specify where in your Salesforce Org you want to sync data to. See [External System Configuration](/guides/integrations/setting-up-integrations/configuring-sf-entity-data-integrations#external-system-configuration) for more details. ### Console Updates * **Outgoing Webhooks for Notifications**. When configuring integrations for Notifications based on system or scheduled events, the webhooks you create for where a Notification's payload will be delivered are now called *Outgoing Webhooks*. This makes the configuration workflow for implementing Notifications in m3ter simpler and more intuitive. See [Creating and Managing Outgoing Webhooks](/guides/integrations/setting-up-integrations/creating-and-managing-destinations) for more details. * **Usability Improvements**: * **Segmented Aggregations**. When users select the target Meter fields they want to segment aggregated usage by, a default row is now added automatically allowing them to promptly add required segments. * **Date/Time Selection Fields**. For start and end dates that include a time component, Date/Time selectors in the Console now offer time selections to 15 minutes of granularity, and the selected Date/Time is clearly displayed in the form fields. ### Resolved Issues * Fix: When deploying Counter pricing for recurring charges against end-customer Accounts, Counter values can now be set at zero to accommodate cases where an end-customer terminates their contract in the middle of the billing cycle. * Fix: An issue has been resolved for an error showing when attempting to enter decimal place amounts for setting up Prepayment billing on a schedule. * Fix: Rows on UI forms when one has a Help text associated now align correctly. # Changelog 2022 Source: https://docs.m3ter.com/changelog/changelog-2022 New features, functionality and updates for 2022. **More on New Features?** Please see the [**Product News**](https://www.m3ter.com/blog/category/product-updates) blog for more detailed information on the value you can get from the new features in each release. ### Console Updates * New Prepayment/Commitment details page accessed directly from Account>Prepayments tab. Includes Prepayment Fee details and Fee billing dates. * Added links to Plan, Plan Template, Meter, and Aggregation from the Pricing Edit form. * Added Custom Fields for Aggregations and Compound Aggregations. * Account Custom Fields sorted by key now displayed on Account Overview>Details card. * New switch in the Organization Configuration form to suppress generating bills when they are empty. * Added Code field in the Balances tab. * Added Currency Code to Account Details card. * Implemented inline Learning Center panel with direct links to documentation and context-sensitive Help call outs. * Added gift-box button for direct access to latest What's New blog. * New String manipulation functions available for calculations. ### Resolved Issues * Fix: Billing spinners showing after job is complete. * Fix: Timezone related issues with bill dates when running billing, approving all bills or setting the lock date. * Fix: Long balances layout issue. * Fix: Destinations list data in External Mappings. * Fix: Restored account name to Account Details page. * Fix: Prevent long account names breaking layout. * Fix: Exclude archived currencies from the currency drop-down. ### Product Updates * New Events and Notifications feature available in the API. Define and implement notifications that are triggered by system events in your m3ter Organization. * Automatically send outbound Bills from m3ter to Paddle with updated native Paddle integration. #### Billing * **Bill Management enhancements** * Can now run bill jobs within an Account. * New Bill Job modal enabling billing of one or all bill frequencies based on bill date. * Can now view all bills within a period - m3ter will show you all the Bills from the 1st of the month to the current day. * Added ability to delete one or more pending bills. * Can now view running bill jobs in the Console. * **Bills** * New field **invoiceRef** added to Bills. * **Accounts** * Added account currency setting, which enables setting a different billing currency against an account. Optional field. * Allows Bill Jobs to be run from UI and use the account currency setting. * If left blank, the organization billing currency is used. * **Organization** * *External Invoice date* can now be set in the Console and via API *(new field externalInvoiceDate)*. Use case is when recognizing usage revenue in the same period that it is consumed, rather than in the following month. * *Days before bill due* setting now available to enter the number of days after bill generation date that you want to show on bills as the due date. #### Miscellaneous * New Currency pick list for use when defining the currency for an Organization, Account, Plan Template, Plan Group, Balance, or Prepayment/Commitment. Required currencies must first be defined at Organization level, which helps prevent billing errors due to mixed and undefined currencies being used. * Allows both standard world currencies to be used or user-defined custom currencies, such as "\[Company Name] credits". * Bill Jobs now use the account currency as a default. If not set at the account level, the default Organization currency is used by the Bill Job. * Twelve new bill period variables now available for use in compound aggregation calculations giving tight control over the number of hours, days, or dates in a billing period. ``` ts.hoursInPlanArrearsPeriod ts.datesInPlanArrearsPeriod ts.daysInPlanArrearsPeriod ts.hoursInPlanAdvancePeriod ts.datesInPlanAdvancePeriod ts.daysInPlanAdvancePeriod ts.hoursInBillArrearsPeriod ts.datesInBillArrearsPeriod ts.daysInBillArrearsPeriod ts.hoursInBillAdvancePeriod ts.datesInBillAdvancePeriod ts.daysInBillAdvancePeriod ``` ### Console Updates * Show option to select currencies on any screen that require a currency. * Added approve all bills modal - new pop-up that enables you to set the bill approval date for the selected bills. * New remove / unlink to child accounts list - easy access to remove child accounts from a billing hierarchy. * Bill line item rows now always show service periods. * Can now test notification rule calculations. ### Resolved Issues * Fix: Consuming Balances for Bills fails at first attempt. * Fix: Incorrect units on parent breakdown line items. * Fix: Commitments / Prepayments error when trying to save prepayment after switching between billing options. * Fix: Bill item service period not reflecting account plan effective dates in some cases. ### Product Updates * New Balances functionality that enables crediting accounts with positive or negative amounts. * New "native" integrations for NetSuite and Stripe, which allow the set up and configuration for controlling outbound Bills flow for these integrations to be performed directly in the Console. * New user defined custom billing schedule option for Prepayments/Commitments. * New math functions supported for use in Derived Field and Compound Aggregation calculations: * `Math.floor()` * `Math.ceil()` * `Math.round()` * `Math.pow()` * `Math.abs()` * Data Explorer: new "Overage Usage" and "Credit Memo" as line item types. * Ability to set up tiered overage pricing on Plans for when a Prepayment/Commitment has been consumed. * If Scheduled Billing is enabled for Organization, allow a 24 hour grace period beyond active Plan end date to include charges due for late-arriving usage data in Bills. * Added navigation links to access m3ter Support web ticketing system. * New Ad Hoc Bill line item type for ad hoc charges, such as for charges on Prepayments/Commitments that have a manual (custom) bill schedule. ### Console Updates * Alerts modal size is reduced. * Improved UX for adding a default segment. * Pricing: * Added overage pricing bands to the Pricing form. * Added time controls for start and end date entries to the Pricing form. * Duplicate pricing is now possible when overriding from a Pricing template. * Pricing wizard now allows negative pricing. * For clarity and to remove doubt, the text "inclusive" (start date) and "exclusive" (end date) has been added to the configuration form Date field labels. * The Remove User button in User Settings now removes the Organization user. * The Scheduled Bill Interval options now include 15 minute and 30 minute interval options in addition to hourly interval options. * Added a Contract field to Prepayments and Account Plans. * New Balances tab on Account details page. * The Code field in the Plan creation form now has a user editable default Code value auto-generated. ### Resolved Issues * Fix: Bill webhook not firing on approved bills. * Fix: Commitment form fee dates validation. * Fix: Prepayment bug when switching from old Prepayments to scheduled billing. * Fix: Resolved potential XSS problem in `returnPath `query parameter. ### Product Updates * Initial Pay-As-You-Go (PAYG) release: * Top-up balances for an account as many times as required. * Ability to draw down account balances via billing or manual adjustments. * Time-bound balances with the option of a grace period. * Improved billing hierarchies for parent/child account billing: * Bill a child account with pricing at the parent level. * Rollup child billing to the parent on a single bill item. * Create a Bill item per child account with price averaging. * Negative pricing and the ability to generate negative Bills: * Enables you to refund your customers for unused services. * Can now add Bill line item descriptions for Standing charges and Minimum spends. * Auto-approve Bills. Can now schedule automated Bill approval from 15 minutes to 10 days after Bill generation. ### Console Updates * Pricing band range now visible on Bill items. * When creating a new entity and you enter a Name, a Code is auto-generated based on the Name. * Number field formatting now shows a thousands separator. * A last updated date was add to the to Alerts list modal. * Improved Data Explorer Query Builder form for easier filter selection. * Pricing Schedule can now be opened directly from pricing grid. * Historic/future pricing can now be shown in the pricing grid. * Better Pricing Schedule layout to suit smaller screens. * Ability to add start/end dates to all pricing. * Added Account Plan details to custom Plan details page, with a links to edit Plan. Same for Account Plan Group/custom Plan Group. * Accounts page 'Plans' tab renamed to 'Attached plans' to make clear the separation between Plan and Account Plan. * Added **Duplicate** button to Prepayments/Commitments list. * Added scheduled Bill interval setting to Org Config page for regular updating of Bills. * Added link from Bill details to Account. * Replaced Bill Period with Bill Date in several places. * Added search to popup entity selectors *(for example, when picking an Aggregation from pricing grid).* * When adding child accounts to a parent, a searchable Select Accounts modal is now shown. * Data Explorer usage data Query Builder now shows both Account name and code in selection list. ### Resolved Issues * Fix: Update Org config form validation *(issue with using 0 as the bill schedule).* * Fix: Prepayments Data Explorer calculation bug. * Fix: Include global Aggregations in missing data check. * Fix: Re-open date pickers on the selected month. * Fix: Stop date pickers causing double scrollbars. * Fix: Correctly show active/inactive for plan template pricing on pricing schedule. * Fix: Pricing edit when using negative values for fixedPrice/unitPrice. * Fix: Account tabs not fitting on smaller screen widths. * Fix: Speed up Data Explorer by loading data batches in parallel. * Fix: Lists create button enabling/disabling *(for example, when creating Compound Aggregations and you only have global Aggregations).* # Changelog 2023 Source: https://docs.m3ter.com/changelog/changelog-2023 New features, functionality and updates for 2023. **More on New Features?** Please see the [**Product News**](https://www.m3ter.com/blog/category/product-updates) blog for more detailed information on the value you can get from the new features in each release. ### Product Updates * The Xero native integration is now available as a beta release version. See [Configuring Xero Integrations](/guides/integrations/setting-up-integrations/configuring-xero-integrations) for more details. ### Console Updates * When you price a Custom Plan for an Account, the Plan is now clearly labelled as Custom in the Pricing Grid. * The Plan Template create/edit forms in the Console now shows an optional Code field. ### Resolved Issues * Fix: A bottom border misalignment issue that could occur in some browsers for the Bill table page in the Console has now been resolved. * Fix: On some browsers, a validation error was shown when attempting to enter a decimal value in the Console usage data measurement submission form. This is now resolved. * Fix: The Recent Accounts panel on the Console Dashboard page now correctly loads only the five most recently visited Accounts. * Fix: On create and edit forms in the Console, pressing the Enter key after entering a search term in a searchable select drop-down field resulted in the form being submitted prematurely. This no longer occurs. * Fix: Resolved issues for search API calls: Search Accounts, Search Bills, or Search Commitments: * If `sortOrder` is specified in a `searchQuery`, the sort now works correctly. * The way in which the tilde "\~" comparator works when used in a `searchQuery` string is now explained in the API Reference topic for these calls. ### Product Updates * The *Ingest Failure Events* feature is now generally available for all customers. This allows you to review and troubleshoot validation failure Events generated when usage data measurements you submit to the platform fail to ingest properly. For more details, see [Reviewing and Resolving Ingest Events](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events). * External Mappings for 3rd-party integrations can now be created in bulk for a given mapping type. See [Creating Bulk External Mappings](/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings#creating-bulk-external-mappings) for more details. ### Console Updates * When reviewing Bills in the Bill Management page, you can now filter the Bills listed: * By *Status* to show only the **Approved/Pending** or **Locked**. * By *Bill frequency* to show only the **Daily**, **Weekly**, **Monthly**, or **Annually**. * See [Filtering Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#filtering-bills) for more details. * A breakdown of Overage Usage line item is now shown on Bills. * Usability improvements: * Drop-down selection lists for entities across the Console now show entity *Codes* as well as *Names*. * Reordering columns for the Bill Management listing and the Data Explorer loaded query Data Tables is now made easier with drag-and-drop functionality. * On the Alerts and Users pages, a non-intuitive row click selection is replaced with either an Alert Details button or single User name selection. ### Resolved Issues * Fix: The Compound Aggregation create form now shows a default value of None for the Rounding attribute. * Fix: The Bill Details page Approve button now properly shows as disabled when the Bill has been Approved. * Fix: The Global Lock Date modal now correctly locks all Approved Bills whose service period end date falls on or before the specified date. * Fix: The `billId` query parameter now shows for the [List Statement Job](/api/statementjob/list-statement-jobs) API call in the API Reference. ### Product Updates * Organization Admin users can now promptly resend a temporary password to users who failed to log into the platform before their original temporary password expired. * In the Console, you can now select a Meter set up to collect usage data and perform a File Upload using a `CSV` formatted file you've prepared for usage data measurements ingest into the platform. Prior to ingest, the uploaded file is parsed and loaded into a table for review and validation, with any errors in formatting requirements, required code, or required Meter data fields values clearly shown to ensure data measurements ingest failure is avoided. ### Console Updates * A User's profile can now be quickly edited for name changes. * Entity IDs are now shown on entity Details cards. IDs can be copied directly to a user's clipboard, providing quick access to entity IDs for those working with API calls to the platform. * When reviewing and investigating Integration Error and Ingest Failure Events, Events are now clearly labelled as either actioned or not actioned, and users can now toggle to show or hide actioned Events. * Warnings are now clearly shown to alert users to the risk of duplicate billing when switching between consolidated billing and non-consolidated billing across their end-customers Accounts, and after billing has already been run in one of these modes. ### API Updates * New API endpoints are available for [Search Accounts](/api/account/search-accounts), [Search Bills](/api/bill/search-bills), and [Search Commitments](/api/commitments/search-commitments) calls. The `searchQuery` parameter for each call allows you to build a complex query using a variety of fields available on the queried entity. * API endpoints are now available for setting up [Scheduled Event Configurations](/api/scheduledeventconfigurations/introduction). These API calls allow you to create, configure, and manage Scheduled Events as custom Events for your Organization that reference Date/Time fields belonging to configuration and billing entities. Scheduled Events therefore provide you with an extra degree of flexibility over and above system-generated Events when setting up Notifications based on Events. ### Resolved Issues * Fix: The Timestamp field on the Console Submit Usage form is no longer updated automatically for successive usage data ingest measurement submissions. * Fix: Access to the Account Actions menu from Account pages has been updated to avoid styling overlap issues and to conform to the Console menu access paradigm. * Fix: The Organization selection screen at Console login now scrolls elegantly without losing the search field for users belonging to many Organizations when they scroll their list. * Fix: The end date for Contracts associated with an Account can now be set at the Account level as well as at the Contract level. ### Console Updates * When logging in to the Console, users with access to more than one Organization now see a **Select Organization** screen. This helps users to quickly open the Organization they want to work in and avoids having to first open a default Organization. The last accessed Organization is clearly shown for selection and a search is available. ### API Updates * The [Approve Bills](/api/bill/approve-bills) API call now offers a `billIds` request parameter, which can be used to perform batch approval of Bills. ### Resolved Issues * Fix: The presentation of the time taken for Integration run tasks has been simplified. ### Product Updates * End-dating of the Billing entities associated with an Account - Contracts, Account Plans, Pricings, or Prepayments - can now be done directly from an Account page in the Console. This capability proves very useful for cases where you need to create new agreements with end-customers - such as for renewals or mid-service term amendments - and for service cancellations. ### Console Updates * The **Dashboard** page has been re-modeled to now show a **Recent Accounts** listing, allowing you to quickly return to those Accounts you have worked on recently. * Days before Bills are due after the initial Bill generation date can now be defined at the individual Account level and to override the setting defined at Organizational level. This allows Bill due dates to be set differently across different end-customer Accounts. * Where an integration with an external system has been set up for sending Bills outbound, the **Bill Details** cards now include a status for the **Last Completed Integration Run Date**. * Inviting users to join your Organization and managing your invitations can now be done more easily using a separate tab on the **Access** page. * The **Meter Details** card now lists the Data Fields and Derived Fields set up for a Meter. * When setting up External Mappings, if the possible values for the **External entity ID** field can be fetched for the **External system** and **m3ter entity** selections, then you can use a drop-down list to select the value for this field from the list of possible values returned. * The layout for Bills has been restyled to improve readability and help differentiate main running totals from individual line item breakdown amounts when reviewing Bills. ### API Updates * A [Search Account](/api/account/search-accounts) API call is now available, which you can use to build a query to return a selection of Accounts using a wide variety of search criteria. We expect the Accounts search functionality to be available in the Console soon. ### Resolved Issues * Fix: The option to select a Parent Account when editing an Account that is itself a Parent Account is now disabled on the edit Account form. * Fix: The edit linked Plans button is now appropriately disabled on the Plan Group Attachment Details page when the Plan Group is empty. * Fix: long-text entity Name and Code fields are now accommodated elegantly within UI details cards and forms. * Fix: Error handling has been improved for Notification Rule calculation testing. * Fix: Breadcrumb links have been removed where no destination page exists. * Fix: Notification Rule can now be saved without testing calculation. * Fix: When duplicating Plans or Plan Templates, the Name and Code field are no longer pre-populated with the existing Plan's or Plan Template's Name and Code values. ### Console Updates * Bill details page improved for ease of use and Bill review. When a Bill is opened the Bill entity details are now shown on a separate card from the breakdown of charges that make up the Bill total. * General usability improvements: * Details cards now clearly indicate Custom Plans/Plan Groups and identify the Accounts they are Custom Plans/Plan Groups for. * Create/Edit/Add buttons labeled specifically for the entities being created or edited or added. * The selection click area for radio button and checkbox options now tightly restricted to area of text label footprint to prevent unintended selections by stray clicks. * The Pricing Schedule page now shows audit data for the Product Plan and Aggregation used to price it. * A specific expiry date can now be set when inviting other Users to join your Organization and to override the default expiry date of 30 days from when the invite was sent out. * The Pricing Editor now shows a pricing readiness guide when opened for a Product where not all of the required configuration for starting to price Product Plans has been completed. As the required pricing readiness configuration work is carried out, the guide show a percentage progression to completion. ### API Updates * API calls are now available which allow you to end-date the Billing entities - Contracts, Account Plans, or Prepayments - associated with an end-customer Account or with an Account a Contract has been attached to. ### Resolved Issues * Fix: Bill breakdown - usage per price band unit price didn't align with line item subtotals. * Fix: Add missing account external mappings table translations. * Fix: Data Explorer dimensions for usage data queries now loaded sequentially to ensure smooth loading. ### Product Updates * Audit data is now automatically generated for all main m3ter entity details pages. This logs which users created and which last modified the entity and when. * Billing: * The order or selection for billing draw-down against Prepayment or Billing credit amounts on Accounts can now be defined. Options are: *Prepayments first*, *Balances first*, *Prepayment only*, or *Balances only*. This gives much greater flexibility for meeting specific use cases for handling the consumption of credits on end-customer Accounts. * You no longer need to attach a Product Plan or Plan Group to an Account in order to add a Prepayment to the Account and set up billing for fees on outstanding Prepayment amount. * Check if a Bill Statement needs refreshing by comparing the Bill calculation timestamp against the Statement last modified date, which is available in the response to a get Statement API call. * Integrations: * Five new system Events are now generated for integration errors and are available for Notifications. When any of these Events occur, they are surfaced on a Console page with an explanatory message. Operational support for managing these integrations error Events is provided with a button linking you out directly to start the appropriate follow up workflow to troubleshoot and resolve. When resolved, error Events can be marked as actioned and removed from the Events page. * New options added for setting up a Chargebee Integration: * Multi-decimal values. If multi-decimal support is enabled in your Chargebee site, you can now set precise decimal places for sending price and unit values out from m3ter to match your Chargebee settings and achieve greater precision when integrating data. * Synchronize credits. For an outbound billing flow, negative bill line items can now be synchronized with credits in Chargebee ### Console Updates * Permission Policy Statements can now be quickly compiled using an advanced editor to choose *Effect*, *Actions*, and *Resources*. * The Pricing Editor grid labeling has been improved making clear where a Plan has been priced directly instead of inheriting it's pricing from a Plan Template . * General usability improvements: * Details pages standardized across main configuration entities and now show audit data and custom fields. * Radio button sets used where few available options for ease of option selection. * Simple on/off toggle for bill in advance/in arrears selections to avoid possible confusion. * The submit test usage data measurements modal is improved to regenerate submit measurement UIDs for successive submissions. A submissions log is also now built as you make submissions, which is helpful when querying for ingested data at a later time. * Billing: * Purchase Order Number now shows on Bill details. * Bill line items now ordered by Aggregation or Compound Aggregation. * An AI-powered Help Assistant is now available directly in the Console through the Help Center. The Assistant is fully-trained on our entire documentation knowledge base and can quickly provide answers to your questions as you work on the platform, giving direct links into relevant documentation topics. ### Resolved Issues * Fix: Prepayment fee billing setting on Organization Configuration card. * Fix: Advanced usage data submission UID reset. ### Product Updates * You can now invite new Users to your Organization: * Assign Permission Policies to control their access level when they accept the invite. * Deactivate and reactivate invited User's access. * Set an expiry date for accepting the invite. * When creating a Notification Rule, you can configure the Notification to always be triggered when an Event occurs, and without any further conditions for sending the Notification being defined. * System Events available for Integration errors. Review and troubleshoot to resolve errors from the *Integrations > Events* page in the Console. * Events on Statement Jobs - receive notifications when a statement job changes status so you can take action. For example: * Send statements to customers * Refresh your customer billing dashboard * Integration run details can be reviewed in the Console for Bill and Notification integrations. ### Console Updates * Billing: * Add enable checkbox for bill numbering. * Update approve Bills modal to allow approval by date range. * Add Bill export button. * Listing Bills from Bill Management can now be filtered by date range and Locked or Approved/Pending status. * Extended line item details shown on Bills. * Target Currency selection available on Run Billing modal. * Billing data query results in Data Explorer show line item descriptions. * Pre-defined "Current Month" and "Last Month" ranges added to date range picker for Bills listing. * Codes for Meter Data Fields and Derived Fields auto-generated from entered name string. * Product details page added. * Native Integration 3rd-party authentication set up separated from main integration configuration workflow. * Plan creation workflow now requires existing Plan Template selection. * Bulk delete available on External Mappings page. * Account Actions menu added to Account details page. * Accounting Product selection required when creating a Prepayment/Commitment. * Line Item charge types for draw-down against a Prepayment/Commitment can now be selected. * Details pages for main configuration entities show audit data on User activity for "Created by" and "Last modified by". ### Resolved Issues * Fix: Filtering of plans on custom plan group page. * Fix: Order pricing grid columns and rows by name. * Fix: Incorrect Bill prefix and sequence number on account overview. * Fix: Bill line item reference numbers displaying undefined. * Fix: Remove hard-coded page size from Bills lists. * Fix: Allow adding custom plan to custom plan group. * Fix: Duplicating prepayments that use a Bill schedule. * Fix: Missing translations for External Mappings. * Fix: Date picker pop-up positioning bug. * Fix: Save issue when creating Pricing using wizard. * Fix: Date selection for Epoch dates. * Fix: Prepayment Consumption chart only shows trending data up to the Prepayment's end date. ### Product Updates * Chargebee and Quickbooks now available as native integrations. * Billing: * Bill Statements can now be defined and generated as backing sheets for end customer Bills. Once generated, you can then download Statements in either JSON or CSV format to transpose and compile them into the required format. * Download Bills in CSV format. * Approve Bills for selected date range. * Using the List Bills API call, you can now filter Bills returned by Locked status or Start/End dates. * Switch available on Bill details to hide zero quantity line items and reduce Bill clutter. * Set Global lock date for Bills. * Bill currency conversion summary added to Bill details. * Notification Rules can now be created and configured in the Console for system Events. You can then link Notification Rules to integration Destination webhooks to complete alerting and notification set up and have your Notifications sent through to your external systems. * You can now use an option to show Prepayment fee overage usage charges as separate line items on Bills. ### Console Updates * Prepayment/Commitment details page now contains a consumption chart showing minimum expected consumption, actual consumption, and consumption trend for the service period. * Balance Create form now has options to select the products consumed and charge types that can drawn-down against the Balance amount. * Overage Percentage setting now available for Balances. * Bill line item groupings now show clear labels for Product/Prepayment charges. * Bill details page now shows total at top of page. * Custom Bill reference prefix and numbering sequence start can now be set at Organization level. * Service User creation now supported with wizard. ### Resolved Issues * Fix: Handle error when cancelling bill jobs. * Fix: Fix default for last day month changes. * Fix: Prevent usage explorer error if we can't load dimensions. * Fix: Disable close on overlay click for run billing modal. * Fix: Increase Bill list page size to 50. ### Product Updates * Added Balance amount events. Users can now trigger notifications when a Balance amount is updated and reaches a certain threshold. * New overage pricing and overage surcharge settings for Balances. When a Balance is fully consumed, merchants can configure 3 different actions: * Specify a rollover amount and expiry date. This is the existing behavior. * Specify an overage percentage, either positive or negative, which will increase or decrease the standard billed rate at which any further usage is charged against an Account once any Balance on the Account is fully consumed. This can be used to incentivize end customers to top up their Balance, or to move onto a different billing arrangement with you. * Specify overage pricing. When creating pricing using a tiered pricing structure for Plans, overage pricing can also be defined. Overage pricing cuts in when the Balance is fully consumed. This is another way to increase or decrease the standard billed rate charged against an Account once a Balance on the Account has been consumed. * Service Period dates. * Balance consumption shown on m3ter Bills now includes the service period that the Balance covered. * Bill Statements. * Bill Statements can be used as informative backing sheets to invoices. They provide a breakdown of the usage charges that appear on the Bill, and help your end customers understand better those charges and gain a better picture of their usage over the billing period. * Bill Statements can be defined for Meter usage data measures that form the basis of pricing rates used to calculate billing charges together with other Meter usage data dimensions. These other usage data dimensions are used as the basis for a breakdown of the billed usage to produce backing sheets for invoices. Usage data can be de-aggregated and grouped for use on the end customer Statement. It is downloadable in *.csv* or JSON format for rendering via 3rd party tools. The Bill Statements features is available on request. * Access * **m3ter Support.** Console users can now submit a request to grant m3ter Support access to their m3ter Organization for troubleshooting purposes, and when they have submitted a Support ticket. * **Permission Policies.** * In the Console, Administrator users can create custom Permission Policies to assign to other users and service users, and then apply these Policies to control precisely users' access to Organization resources. Permission Policies can be defined to assist with the separation of duties for users within the Console, in addition to restricting access to specific areas. For example, an ingest only user will not have access to any other m3ter functions. * User groups are now available in the m3ter Console. Permission Policies can be applied to User Groups. Users can then be added to a User Group and any Permission Policies applied to the Group are applied to the member Users. User Groups: * Allow logical grouping of resources for different roles within your Organization. For example, a Billing Operations User Group can have a Permission Policy applied to the Group to restrict access to only those resources needed to perform their routine billing tasks - such as Bills, Accounts, and so on. All Billing Operations team members can then be assigned to the Group. * Help solve common issues when trying to apply very fine-grained permissions. ### Console Updates * Added capability to create and manage Permission Policies. * Line item currency now used for Bill unit prices. * New search field in External Mappings list. * Added maximum decimal places column to currencies list. * Improved labels for Product and Bill hotlinks in External Mappings list. * Added Bill in Advance / Arrears to Plan and Plan Template details. * Obligations panel in the Data Explorer > Prepayments tab. ### Resolved Issues * Fix: Date range picker bug. * Fix: Handles single zero-priced band on Pricing edit. * Fix: Pick list currencies now use the number of decimal places specified. * Fix: Page titles now always show and update correctly. * Fix: Global lock date setting now works as expected. ### Product Updates * Draw downs across Account hierarchies enabled for Prepayments fee billing. New *drawdown mode* enables control of whether to draw down Prepayments against the child or parent account. * Add debit memos to bills that can be used to correct undercharges for example. * New Consolidate Bills option in the Organization Configuration. Bills are currently created by bill date and billing frequency. When enabled, charges that are billed on a given bill date are automatically added to the bill regardless of charge billing frequency. All charges due on the date are put into one bill instead of separate bills for each of the different billing frequencies. ### Console Updates * "Commitment Details" now known as "Prepayment Details". * Timezone field is now a pick-list. As well as UTC and GMT-relative tz database formats being listed, a complete set of tz database regional timezones is also available for selection. * Custom field editor columns now have labels. * Bills list filter now uses date range picker. * Organization Settings now uses a Debit Reason pick-list. * Added full currency symbols to distinguish for example, between Canadian and US Dollars. * "Aggregated Usage" has been added as an external mappings m3ter entity type. * Added pagination to Users list. * Settings > Access page now has a Support Access tab. Enables granting m3ter Support temporary access to your Organization for investigation and troubleshooting. * Added Product label to Account Plans list. ### Resolved Issues * Fix: Bill list date resetting. * Fix: Error in Pricing Grid Pricing Navigator. # Changelog 2024 Source: https://docs.m3ter.com/changelog/changelog-2024 New features, functionality and updates for 2024. **More on New Features?** Please see the [**Product News**](https://www.m3ter.com/blog/category/product-updates) blog for more detailed information on the value you can get from the new features in each release. ### Product Updates * **Integration-specific External Mappings**. If you want to create multiple separate integrations for an external system, you can create external mappings for each separate integration and these external mappings are then *linked to* the specific integration they were created for. See [Creating Linked External Mappings](/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings#creating-linked-external-mappings). * **m3ter Connector for Salesforce**. Version **0.5** of the Connector is now available - see the [m3ter Connector Changelog](/guides/m3ter-connector-for-salesforce/m3ter-connector-for-salesforce-changelog) page for details of the enhancements in this version. ### Console Updates * **Adding Account Plans to Contracts**. Child Account Plans or Account Plan Groups can now be added to the Parent Account Contract. See [Adding Child Account Plans to Parent Account Contract](/guides/end-customer-accounts/creating-contracts-for-accounts#adding-child-account-plans-or-account-plan-groups-to-parent-account-contract). * **Salesforce Native Integrations - support for Custom Fields**. When setting up a Salesforce native integration configuration for an entity data sync for Accounts or Contracts in your m3ter Organization, you can now select to sync custom fields for these two entity types with fields in your Salesforce Org. * **Usability Improvements**: * **Plan Group Attachment**. The Plan Group Attachment page allows users to view details of an Account Plan created when a Plan Group is attached to an Account. For user convenience, the page also allows users to go through the Plans in an attached Plan Group and inspect the details and pricing of those Plans. Previously, Plan selection was rendered outside of any cards on the page, which didn’t help users understand they were looking at details and pricing of the individual Plans in the Plan Group and as distinct from the Account Plan itself. The page has been restyled to make it more intuitive for users and consistent with other areas of the Console. * **Updating Prepayment/Commitment Fee Schedule**. If a Prepayment fee schedule is updated after Bills have been generated according to the original schedule, recalculating Bills will not update them for the new schedule. A warning is now shown on the Billing Configuration form to alerts users and to remind them to delete and rerun billing to update for the new schedule. ### Resolved Issues * Fix: If an invalid CSV file is selected for usage data measurements ingest, an informative error message is now properly displayed to users on the Meter ingest form in the Console. * Fix: An issue where the loading of Bill lists for an Account might timeout has been resolved. * Fix: In the Console Organization switcher list, an issue has been resolved where an Organization with both normal user access and Support user access would appear twice in the select list. ### Product Updates * **Data Export in Preview Release.** Data Exports allow you to export data from m3ter into your own systems, giving you the flexibility to create your own reports, user dashboards, and more. Exports can be scheduled as frequently as every hour, and run on-demand as required. If you're interested in previewing the Data Export feature, please get in touch with m3ter Support or your m3ter contact. See [Data Exports (Preview)](/guides/data-exports) for more details. * **Salesforce Integration**. The Salesforce native integration in m3ter now supports sending **Balances** data outbound into your Salesforce Org. This data can then be used for reporting purposes or to support your other business intelligence tools. ### Console Updates * **Integration Credentials**. When creating and managing your Integration Credentials, you can use a new *Grid* layout page, which has external system logos embedded in the page allowing you to quickly identify which system a Credential can be used with when configuring your m3ter Integrations. * **Usability Improvements**: * **Integrations**. Pages that display the external system destinations for integrations, such as the Integration Details and External Mappings pages, now show external system logos for prompt identification of the external system the integration is for. * **Searching Plans and Plan Templates**. The Product selector field on Plan and Plan Templates pages is now searchable. * **Plan/Plan Group Attachment**. Plan and Plan Group attachment pages for Accounts have been reorganized and the metadata card relabeled to clearly associate it with the Plan/Plan Group attachment. * **List Pages**. For list pages, options to show only 5 or 10 items per page are now available. These new options can be used where single page items might be large, such as the Bills list page, and to prevent any delays due to slow loading of multiple items of 20 (the default) and above per page. * **Statements for Bills**. Users attempting to generate Bill Statements when a Statement Definition does not yet exist at either Organization or Account level are now shown information alerts advising them that they first need to create at least one Statement Definition and assign it at either Organization or Account level. * **Pricing details for non-custom Plans**. Pricing details can now be viewed for non-custom Plans when reviewing Plan attachments on Accounts. * **Custom Fields**. When creating Custom Fields for entities, full validation with appropriate warnings given is now implemented to ensure the required Name and Value are entered to allow successful creation. * **Viewing Meter details**. Meter details no longer incorrectly shows a Create aggregation button for Meter Data Field types that don't support aggregation. ### Resolved Issues * Fix: The information alert text that appears on the Select counters modal when adding Counters to the Pricing Editor now reads correctly. * Fix: A slow loading issue has been resolved when opening an Account Plan Group for an Account where the Plan Group contains a large number of Plans. * Fix: An issue has been resolved for priced Plan Templates that have a Code field configured which meant a Plan based on the template could not override the template pricing. * Fix: Page scroll now properly resets when users move to a different page in the Console. * Fix: An unhelpful validation error has been removed that was shown if users entered an email address containing a space when attempting to log into the Console. * Fix: When a Plan Group was attached to an Account and Standing Charge and Minimum Spend amounts were configured for the Plan Group, at billing these amounts were correctly factored into the Bill total but not shown as individual line items. This issue has now been resolved and separate line items are correctly shown and labeled. ### Product Updates * **End-dating Billing Entities includes Counter Pricings**. When applying an end date to billing entities on an Account directly from the Account or via a Contract you've created for the Account, you can now select *Counter Pricings* to be included in the end-dating. * **Draw-Down types for Prepayments and Balances**. The billing charge types that can be selected for draw-down against Prepayments and Balances on an Account now includes charges due to unit-based pricing for *Counter running total charges* and *Counter adjustment debit*s. ### Console Updates * **Integrations**. The Integrations section now shows a *Grid* layout page, which greatly enhances user experience when reviewing and managing integrations with external systems. External system logos are embedded in the page, allowing you to quickly identify which systems are integrated with your m3ter Organization. In addition, the workflows when creating, editing, or deleting integrations become more direct and accessible. Links out to relevant Docs topics for guidance on setting up integrations with external systems are provided. * **Entity Metadata**. Details pages for main configuration entities now carry an *Entity Metadata* card showing any Custom Fields and External Mappings created for the entity. This makes finding and reviewing the Custom Fields and External Mappings associated with an m3ter entity straightforward. For added convenience, Custom Field values or the IDs of external entities mapped to a m3ter entity can be copied directly. * **Usability Improvements**. * **Counter Adjustments**. If you open an *Account >Counter adjustments* tab but no Counters have yet been created for your Organization, a warning is shown with a link provided to go directly to the \*Create Counter \*page. * **Organization Sections**. Organization configuration and management sections - such as *Settings* and *Integration*s - are now grouped and made accessible from a drop-down menu on the Console top bar. * **Pricing Editor**. If pricing prerequisite configuration is not complete, a help text shows in the *Pricing Editor* to remind users of the configuration required before Plans can be priced, with links out to relevant create pages. * **Integration Credentials**. The workflow to create Integration Credentials is improved and a Credential's ID is displayed and can be copied directly from the *Credentials* list page. ### Resolved Issues * Fix: When logging into the Console with dark mode enabled, the toggle password icon was difficult to see. This issue has now been resolved. * Fix: Icons flagging errors with entity audit data on Details panels now correctly show as red not green. * Fix: An issue where an actioned call for Integration Events was incorrectly returning an error has been resolved. * Fix: A minor UI issue where drop-down list could be hidden behind other screen content has been resolved. ### Product Updates * **Integrations.** * **Salesforce Integration.** You can now use the m3ter Salesforce Native Integration to send raw data outbound into your Salesforce Org for Accounts, Contracts, and Prepayments/Commitments in your m3ter Organization. You can then use this raw data for other purposes in your Salesforce Org, such as for building reports or reconciliation. * **Reviewing Integration Runs**. The Integration Runs workflow has been redesigned for ease of use, with an intuitive **Run Log** panel now shown and listing tasks performed during the run. The success or failure for each task performed under the integration run is clearly flagged and you can quickly drill into tasks to examine the requests and responses for the task when troubleshooting errors. ### Console Updates * **New Console!** When you log into m3ter and select an Organization you'll be taken to the new Console offering an improved layout, navigation, and more intuitive look and feel: * Improved top-level navigation gets you to main sections quickly with collapsible side bars for working on specific configuration and operational tasks. * Data Explorers for querying Usage, Billing, and Prepayments data in your Organization are now conveniently located within their relevant areas. * Improved Organization switcher with search facility. * For a limited overlap period, you'll be able to switch back to the old Console as you familiarize yourself with the new Console. You can continue to submit feedback and we'd very much welcome your views on the new layout and navigation. * **Bill Management Invoice Date Range**. The **Invoice date** range picker for displaying Bills in **Bill Management** now allows a single day to be set as the date range. * **User Groups**. The **User Group Details** page now contains a **Users** panel listing the users assigned to the User Group. You can then select a user's name to open the **Details** page for that user directly. ### Resolved Issues * Fix: Plan pricing grid action buttons now wrap neatly to fit on small screens. * Fix: An issue where the Organization switcher duplicated Organizations listed has been resolved. * Fix: When you try to select an Organization which you don't have access to, the Organization switcher now correctly shows allowing you to select a different Organization. * Fix: The Terms and Conditions acceptance check modal popup now presents correctly to users at first time login. * Fix: Standing Charge and Minimum Spend descriptions are now persisted in Plan edit forms. * Fix: If a download task fails to complete, an error is shows to inform the user. * Fix: The Integration Credential create form no longer shows webhook as an option. * Fix: An issue with the selection of searchable entities in the Console not having the selected value reloaded has been resolved. * Fix: The Accounts page in the Console now uses a list call returning a boolean when checking for the presence of child Accounts, which avoids multiple requests when an Organization contains many Accounts. * Fix: The Recent Account list in the Console Accounts section side bar is now restricted to a maximum of 5 items. * Fix: An issue where the Recent Accounts listing in the Dashboard could remain empty is now resolved. ### Product Updates * **Recurring Charges with Counters**. The new Recurring Charges feature in m3ter allows you to create Counters and quickly implement unit-based pricing for your Product Plans to define recurring subscription charge rates on end-customer Accounts. Common pricing use cases the feature fulfills are seat-based or user license pricing. For these sorts of cases, unit quantities can fluctuate from one billing period to the next and you'll want to offer end-customers a flexible pricing model. Importantly, hybrid-pricing for Products is enabled and you can apply both usage-based and unit-based pricing for a single Product. For more details see [Recurring Charges: Counters](/guides/recurring-charges-counters). * **Trust Center**. The m3ter [Trust Center](https://trust.m3ter.com/overview) is now available where you can review details of the data protection and security measures we maintain for the platform. * **Integrations**. * **Salesforce Integration**. The native integration for Salesforce now supports *Account*, *Contract*, or *Prepayments/Commitments* when creating an integration. * **Manage Multiple Integrations**. If you need to set up multiple integrations with the same 3rd-party system, you can now easily manage which m3ter objects and fields are mapped into which of the different integrations you've set up for that system. When creating External Mappings for integrations, you can define the *Parent Integration* the mapping is to be used for. For each integration, you can then enable a setting to enforce only those external mappings specifying the integration as the parent are the mappings used for the integration. See [Creating and Managing External Mappings](/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings). ### Console Updates * **Product for Plans**. For ease of reference, the Product to which a Plan or Plan Template belongs is now shown on the **Plan/Plan Templates Details** page, and you can open the **Product Details** page directly from there. * **Billed Recurring Charges Chart**. In the **Account Overview** tab, if the Account has been charged for recurring subscription charges, you can select a Counter used to apply unit-based pricing to the Account Plan and open a *Billed Recurring Charges* chart. * **Default Values Shown**. When configuring an object that can inherit a default setting from another object - for example whether a Plan will use the setting set at Plan Template level for minimum spend amounts to be billed in advance/in arrears or override it - the actual default values are now clearly shown on the create/edit forms. ### Resolved Issues * Fix: If more than 100 Bills are selected for a recalculate Bill Job in the Console Bill Management page, then the Bill Job will fail. A clear error now shows for users if this occurs. * Fix: When updating a User profile, any errors are now properly displayed to users. * Fix: If you select to open a Bill in the Bill Management page for an Account that no longer exists, then an error is now clearly shown informing you of this. ### Product Updates * **Integration Configurations**. You can now give specific names to your Integration Configurations, which is useful if you require multiple Integrations for the same destination and need to clearly differentiate them. * **Coming Soon - Recurring Charges!** The capability to charge for your products using subscription or recurring charge pricing will soon be available out-of-the-box in the m3ter platform. This new unit-based pricing feature will allow you to charge customers in flexible way - based on the numbers of product units, seats, or user licenses subscribed to within a given billing period. This new feature will support and facilitate applying hybrid pricing models for your products in m3ter - where recurring charge pricing is combined with usage-based pricing for a product. ### Console Updates * **Working with Meters**. * **Listed by Product**. The Meters page has been updated to list Meters by Product or as Global. This makes finding Meters easier and removes the need to select a Product first. The create Meter workflow is then streamlined since Product is pre-selected. * **Ingest API Code Samples**. Code Samples for making usage data measurement submissions for a Meter are now provided on the Submit Measurements panel of Meter Details pages - JSON, cURL, JavaScript, Python, and Java. These samples can be conveniently copied directly to your clipboard. * **Activity Panel**. Meter Details pages now provide an Activity Panel, which allows you to quickly check that usage data measurement submissions for a Meter have been successfully ingested into the platform. Up to a maximum of the five most recent submissions made in the last hour are listed. See [Submitting and Checking Test Usage Data](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data) for more details. * **Usability Issues**. * When users are submitting usage data measurements from an Account page, a warning text now advises that any changes made in Advanced view are persisted for Simple view on the Submit usage data form. This helps to avoid usage data submissions being made for incorrect Meters or Accounts. * Forms that allow users selection for Billing in advance/in arrears options now use a radio button set, since the options are mutually exclusive. * **Coming Soon!** A new Console with updated layout and navigation is coming soon. For now, you can check out a preview of the new Console from your Dashboard page. You can submit feedback when previewing and we'd welcome your views from trying out the new layout and navigation. ### API Updates * **File Upload Service API**. If you have prepared a usage data measurements file in JSON format ready for upload using the File Upload Service, you can now perform the upload directly in the Console. The **File Upload API** tab on the Submit Measurements panel on Meter Details pages allows you to either drag-and-drop the file or select it for upload. See the [File Upload Service API](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api) topic for more details. * **Listing File Upload Jobs**. The [List File Upload Jobs](/api#tag/Measurements/operation/ListJobs) call now offers `dateCreatedStart` and `dateCreatedEnd` optional query parameters, which allows you to define a date range and filter the File Upload Jobs returned. ### Resolved Issues * Fix: When linking a Credential to an Integration, the select dialog now lists the timestamp for the date the Credential was created. * Fix: The Create Aggregation form in the Console now properly clears out both the Meter and Target field drop-downs if the Product selection is changed. * Fix: An error where the Console attempted to load an Account where no id was available is now resolved by running a check for id first. * Fix: An error preventing users from viewing Integration Destination details is now resolved. * Fix: The submit usage workflow for an Account now works correctly when a Meter has been selected - previously the workflow might hang after Meter selection. * Fix: A UI issue where Account Details with long strings failed to wrap text is now resolved. * Fix: A problem with the Users tab on the Organization Access page in the Console where the Users panel was hidden when the browser window was narrowed is now resolved. A similar problem when viewing an Account Prepayment Details page has also been addressed. ### Product Updates * **Salesforce Native Integration**. You can now create and manage native integrations for sending your end customer Account Bills generated in m3ter outbound into your Salesforce system. * **Notifications for Disabled Integration**. You can set up Emails notifications to be sent to Organization users when an Integration has been auto-disabled. See the [Setting Up and Managing Native and Notification Integrations](/guides/integrations/setting-up-integrations) section for more details. ### Console Updates * **Usability Enhancements**: * **Pricing Editor**. When users are setting up to price Product Plans in the Pricing Editor, the workflow is improved to avoid the creation of duplicated pricing - items which have already been selected for pricing are now removed from selection lists: * Plans and Plan Templates. * Aggregations and Compound Aggregations. * **Billing for Accounts and Prepayments**. The **First bill date** setting for Account and Prepayment/Commitment billing forms has been changed to **Billing cycle date** to clarify the purpose of this setting for users, with an advisory text shown on forms giving an example of how the setting can be used. * **Bill Management**. When users define a period to view Bills using the **Invoice Date** calendar popups, both the start and end date are interpreted inclusively and this is now clearly labeled. * **Meter Details**. Users can now commence a workflow directly from a **Meter Details** page to create an Aggregation that targets one of the Meter's Data Fields or Derived Fields. * **Integration Credentials**. The Credentials page now contains a **Created Date** column to help users distinguish Credentials they've created for the same integration destination. * **User/Password Authentication**. Advisory texts have been added to the m3ter sign-in modal to enhance the user login experience and reminding users: * The Email address used for sign-in is case sensitive. * Temporary passwords cannot be reset and a new one must be requested. ### Resolved Issues * Fix: An issue that allowed duplicate pricing grid rows to appear in the Pricing Editor is now resolved. * Fix: Credit or Debit line items on Approved or Locked Bills can no longer be edited or deleted. * Fix: Labels have been made consistent across Plan Details and Plan Template Details pages. * Fix: Settings on Pricing forms are now grouped to match the styling used on other configuration forms. * Fix: An issue where a pricing would not show in the Pricing Editor when a minimum spend was not configured has been resolved. * Fix: Duplication of a Plan Template from the Pricing Editor is now working correctly. ### Product Updates * **Connector for Salesforce**. The m3ter Connector for Salesforce is now available as an initial release version. If you are interested in installing the Connector into your Salesforce environment to sync your Salesforce data with the m3ter platform, please get in touch with m3ter Support or your m3ter contact. See [m3ter Connector for Salesforce](/guides/m3ter-connector-for-salesforce) for more details. * **Event Notifications**. When a Notification is triggered for an Event, the Notification payload sent out to a webhook now contains details of the Event. See [Event Notification Payload](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#example-notification-payload). ### Console Updates * **Usability Enhancements**: * When users attempt to sign in with the platform, the alternative authentication methods —using either Email/Password credentials or Single Sign-On (SSO)—are now clearly signposted. * Configuring a **Bill auto-approval** setting for an Organization has been improved. The default period is now set at 24 hours, and a clear warning text explains a possible conflict if scheduled billing is also enabled. * When selecting an Aggregation/Compound Aggregation for pricing a Product Plan, a clear warning informs users that the selection list is pre-filtered to show only those Aggregations/Compound Aggregations belonging to the same Product as the Plan together with any Global Aggregations/Compound Aggregations created for the Organization. * Users confronting empty pick-lists when attempting to add Currencies/Transactions/Credits/Debits are now shown a warning that no relevant items are available, with advice to check for archived items and, alternatively, use a link taking them directly to the relevant page to commence a create item workflow. * Time Period options for Data Explorer query setup have been adjusted for usability and clarity with options now fully documented - for example, at [Building and Performing a Usage Data Query](/guides/data-explorer/performing-usage-queries-and-reviewing-results#building-and-performing-a-usage-data-query). * When reviewing a Pricing configuration, the Pricing Details card now clearly distinguishes between the *Pricing type* and *Pricing applied as* setting. * Updated button labels used when attaching Product and Custom Plans to Accounts to create Account Plans now make it clear what this workflow achieves, and help to avoid confusion with the separate workflow for creating Product or Custom Plans in the first place. * When creating or editing an Account Prepayment, an improved Prepayment Draw-Down card assists users in selecting the Products and charge types made available for draw-down against the Prepayment. ### Resolved Issues * Fix: The pricing for a Global Plan added to Custom Plan Group can no longer be edited in the Associated Pricing panel for the Custom Plan Group. * Fix: Aggregations added to the Associated Pricing panel for Plan or Plan Template Details pages now persist. * Fix: The Submit Usage form now correctly auto-updates the UID field for the usage data measurement submission when users switch to and from Simple/Advanced view before making the submission. * Fix: Creation of Custom Currencies now imposes the constraint that a three-character Code must be used. ### Product Updates * A **Service Status** page is now available, which can be accessed directly from the Console main navigation. On this page you can check the current operational status of the platform's Config API and Ingest API services, together with a percentage measure of status over the last 90 days. To review a breakdown of service performance status over the 90 days, you can expand a service. For more details, see [Checking Service Status](/guides/getting-started/working-in-the-m3ter-console#checking-service-status). * **Integration Credentials** can now be created and managed separately from Integration Configurations. You can then use these Credentials to set up authentication of m3ter integrations with your 3rd-party systems. For more details, see [Creating and Managing Integration Credentials](/guides/integrations/setting-up-integrations/managing-integration-credentials). ### Console Updates * Configuring pricing for a Product Plan has been made easier in Pricing Editor and Plan Details - separate buttons for adding Plans and Aggregations are now clearly shown instead of users having to open a menu to select these options. * The m3ter authentication flow for both Username/Password and Single Sign-On (SSO) authentication is now handled directly in the Console, leading to a smoother experience when accessing the platform. * When checking Integration Run details, the presentation and styling of the payload has been improved to be more accessible and readable. * When selecting Aggregations to price Product Plans, a useful warning is now shown informing users that the Aggregations available are restricted to those belonging to the same Product as the Plan and any Global Aggregations. ### Resolved Issues * Fix: Keyboard accessibility issues on Create forms in the Console have now been addressed. * Fix: An issue where Bill line items might be duplicated by being associated with both a Product ID and a Plan Group ID has now been fixed. ### Product Updates * **Native Integrations**. If you want to send outbound bills for Accounts to multiple destinations in your 3rd-party Accounts Receivable system, you can now use an *Account Filter* setting on a native integration to do this. You can enter an expression for Account Filter that references available Account fields or references custom fields you have added to Accounts. The integration will then run for an Account \*only if \*the expression is satisfied. See [Managing Multiple Third Party Destinations for Integrations](/guides/integrations/setting-up-integrations/managing-multiple-destinations-for-integrations) for more details. * **Integration Credentials**. Any authentication credentials you've set up for connecting native integrations to 3rd-party systems or for notification integration webhook destinations are now listed in a new Credentials page, where you can view and manage them. See [Managing Integration Credentials](/guides/integrations/setting-up-integrations/managing-integration-credentials) for more details. ### Console Updates * **Product-specific vs. Global Entities**. Usability and workflow changes now help reinforce the distinction between Product-specific and Global Meters and Aggregations: * When a Product is selected for Meters, Aggregations, and Compound Aggregation pages, any Global entities are included in the list but are clearly labeled - previously users had to to first de-select a Product to see Global entities listed. If Product is de-selected, only Global entities are listed. * Creating Aggregations: * If you select a Product for the Aggregations list, the Meter pick list on the Create form only shows Meters belonging to the Product as targets. * If you de-select Product for the Aggregations list, the Meter pick list on the Create form only shows Global Meters as targets. * If you de-select Product once inside the Create form, the Meter pick list adjusts to only show Global Meters as targets. * See [Creating Product Aggregations](/guides/usage-data-aggregations/creating-aggregations), [Creating Global Aggregations](/guides/usage-data-aggregations/creating-global-aggregations), and [Compound Aggregations](/guides/usage-data-aggregations/compound-aggregations) for more details. * **Revisiting Recent Pages**. You can now use a **Recents** button to open a panel listing links to recently visited pages, such as Accounts, and allowing you to quickly re-open these pages. * **Empty Pick Lists**. Users attempting a workflow where prerequisites do not yet exist previously confronted empty pick lists, such as trying to add a Transaction to a Balance but no Transaction Types yet exist in their Organization. A clear warning is now given with a hotlink which takes users directly to the relevant Create page for the missing entity. When they click to create the missing entity, they are taken back to their original workflow to continue. ### Resolved Issues * Fix: The UI validation for a Notification Rule now only runs when the *Always fire notification* switch is not selected. * Fix: When selected, the *Re-enable* button on the Integration Details card for a disabled Integration Configuration now correctly re-enables it. * Fix: An error shown in the Console when trying to connect to a Paddle integration has been resolved. ### Product Updates * m3ter Single Sign-On (SSO) is now available and supports SAML based Identity Providers (IdPs). m3ter SSO allows users with federated identities that exist in different IdPs to sign into m3ter without having to manually provision new users/identities in m3ter’s user pool. See [m3ter Single Sign-On](/guides/authenticating-with-the-platform/m3ter-single-sign-on) for details. * We recommend setting up your end-customer Accounts prior to submitting usage data measurements for them, but we appreciate this may not always be possible. To avoid rejecting usage data measurements in instances where the measurement is submitted but an Account does not yet exist in your Organization, the m3ter system will now *auto-create an Account* for you. See [Submitting Usage Data for Non-Existent Accounts](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-for-non-existent-accounts) for details. ### Console Updates * When creating a custom Plan and attaching it to create an Account Plan on an Account, you can now immediately define the Account hierarchy billing mode to be applied for Parent/Child Account contexts. This is also now available when creating and attaching custom Plan Groups to Accounts. * For Parent/Child Account contexts, Child Accounts Bills cannot be calculated separately from the Parent Account billing. In the Console, relevant Account and billing management pages now make this restriction clear by disabling *Run Billing* and *Recalculate Bills* for Child Accounts and also showing a warning why these actions are blocked for Child Accounts. * On entity create and edit configuration forms, fields are now presented under functional groupings with mandatory and optional field groupings labeled accordingly. When building a configuration to meet their specific functional requirements, this allows users to quickly focus on the fields relevant to required features and ignore those features not needed for their specific requirements. ### Resolved Issues * Fix: The Pricing Editor now correctly shows a newly created Plan pricing when saved. * Fix: When creating entities used to populate picklists, such as currencies or transaction types, the *Code* field can now be properly edited when first creating the entity. ### Console Updates * When reviewing an Account in the Overview tab, the latest ten Bills for the Account are listed together with two informative charts covering the billing period: * **Revenue Tracking**. Review and track Account revenue. * **Billed Usage**. Select an aggregated usage pricing metric and review the billed usage against the Account. * See [Working in Account Overview](/guides/end-customer-accounts/working-in-account-overview) for more details. * The Invitation Details page now lists the Permission Policies assigned to the invited user. ### Resolved Issues Fix: Prevent enter key submitting forms unexpectedly when using drop-downs. Fix: Percentage pricing rounding error. Fix: External mapping combo box error. Fix: Error when no Permission Policies defined for a user Invitation. # Exploring m3ter - Getting to Know the Platform Source: https://docs.m3ter.com/exploring-m3ter-getting-to-know-the-platform Use our docs to get to know m3ter: simplify usage-based pricing, automate billing, sync with finance & boost innovation. Shorten cycles, prevent revenue loss. m3ter helps B2B software scale-ups manage complex usage-based pricing and billing, ingesting usage data at scale, automating bill calculation, and sending the results to downstream finance and invoicing systems - you can shorten billing cycles, eliminate revenue loss, and unblock product innovation. ### How does it work? * m3ter plugs directly into your existing quote-to-cash stack including your CRM, CPQ, finance systems, payment providers and your product. Data flows will be automated and the data used for bill calculations always synchronized and up to date. * m3ter ingests, aggregates, prices, and bills your product usage data right within a single environment, saving your finance team hours of challenging and tedious manual work. * m3ter distributes bill line items and customer spend data across your organization, enabling Sales to have informed customer conversations, Finance to analyze reports on profit margins, and Product teams to quickly develop and iterate new features. Use this section to evaluate the m3ter platform and quickly gain an understanding of the features and capabilities the platform offers for implementing usage-based pricing solutions for your products and services: * [Key Concepts](/exploring-m3ter-getting-to-know-the-platform/key-concepts) * [Entity relationship Diagram](/exploring-m3ter-getting-to-know-the-platform/entity-relationship-diagram) * [Getting Usage Data into m3ter](/exploring-m3ter-getting-to-know-the-platform/getting-usage-data-into-m3ter-quick-reference-starter) * [Integrations for m3ter](/exploring-m3ter-getting-to-know-the-platform/integrations) * [Sending your Data into m3ter](/exploring-m3ter-getting-to-know-the-platform/sending-data-to-m3ter-quick-reference-starter) # Entity Relationship Diagram Source: https://docs.m3ter.com/exploring-m3ter-getting-to-know-the-platform/entity-relationship-diagram The following diagram shows the main configuration entities of the m3ter platform and their relationships: * Click the diagram to open it in a separate tab and use the browser zoom to view. * See below for section summaries and links to relevant documentation. Entity Relationship Diagram ## Organization and Access An *Organization* represents your company as a direct customer of m3ter. An Organization offers many settings that are applied generally and ensure key areas such as billing fulfill your specific requirements. m3ter supports two types of user that can authenticate and be *granted access* to your Organization: * **Users**. Represent the *people* you’ll grant access to your Organization. * **Service Users**. Intended to represent *automated processes* that you want to grant direct API access to your Organization. You'll typically want to set up Service Users for integrations of your 3rd-party systems with the m3ter platform. Using **Permission Policies**, you can then control what individual Users and Service Users are authorized to do when they have gained access to your Organization. **More Details?** See the [Organization and Access Management](/guides/organization-and-access-management) section in our User Guides. ## Product and Pricing *Products* in m3ter to represent the products and services you offer to your end customers. Once you have created a Product, to enable pricing for it you can then: * Create **Meters** to collect Product usage data. * Create and configure **Aggregations** that target Meter data fields and define usage-based pricing metrics as units of aggregated usage. * Create **Counters** to apply unit-based pricing for recurring subscription charges. * Set up Product **Plans** and apply **Pricing** to those Plans using your pricing metrics. **More Details?** See the following sections in our User Guides: * [Creating Products](/guides/creating-and-managing-products) * [Usage Date: Meters](/guides/usage-data-meters) * [Pricing Metrics: Aggregations](/guides/usage-data-aggregations) * [Creating Counters and Pricing Plans](/guides/recurring-charges-counters/creating-counters) * [Plans and Pricing](/guides/plans-and-pricing) ## Accounts and Billing An *Account* is used to define one of your end-customers. You can attach a priced Product Plan to an Account and create an **Account Plan**, which is used at *billing* to determine the charges due for any: * Product usage consumed by the Account in the billing period. * Counter units subscribed to by the Account for the billing period. **Bills** are generated according to the configured billing frequency and can be quickly integrated with your external account receivable systems. **Bill Statements** can be generated for an Account to provide a customized breakdown of the Bill by metered dimensions. These act as helpful backing sheets to invoices sent to your end-customers and are based on a **Statement Definition** you have set up either for your Organization as a whole or for particular Accounts. **More Details?** * See the following sections in our User Guides: * [End-Customer Accounts](/guides/end-customer-accounts) * [Running, Viewing, and Managing Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills) * [Working with Bill Statements](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) ## Integrations Use m3ter Integrations to quickly map and synchronize data held in any 3rd-party systems you use for core business operations, such as sales, pricing, billing and invoicing, and general finance: * Map and synchronize data held in leading Finance, CRM, and CPQ systems. * Self-serve Integrations and set them up directly in the m3ter Console for outbound billing flows into your preferred invoicing system. **More Details?** See the following sections in our User Guides: * [Integrations](/guides/integrations) * [Setting Up and Managing Integrations](/guides/integrations/setting-up-integrations) ## Events and Notifications m3ter's *Events and Notifications* feature allows you to define and implement **Notifications** that are triggered by specific **Events** in your m3ter production environment: * Set up a **Notification Rule** that references a **System Event** or a **Scheduled Event**. * Include a calculation for the Notification Rule that references the Event's fields to define the precise conditions for triggering the Notification. * Configure a webhook as **Destination** for the Notification payload to be delivered to. **More Details?** See the [Utilizing Events and Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications) section in our User Guides. ## Data Export The m3ter *Data Export* service allows you to export usage data and operational data from your m3ter Organization directly into your AWS S3 or Google Cloud Storage buckets. **More Details?** See the [Data Export (Preview)](/guides/data-exports) section in our User Guides. # Getting Usage Data into m3ter Source: https://docs.m3ter.com/exploring-m3ter-getting-to-know-the-platform/getting-usage-data-into-m3ter-quick-reference-starter Designed as a data-first solution from the outset, the m3ter platform helps you ingest usage data flexibly and easily, and with the minimum of ongoing effort. This topic provides a quick reference starter explaining some of the options available for getting your usage data into the platform. ## Usage Data We’ve built our platform to handle high volumes of usage events, and we encourage customers to send rich, granular usage data because this allows us to provide you with more flexibility and value from the data after ingestion. *Measurements* are the individual units of usage data in m3ter, and their schema and data types are defined by Meters. You can find out more about Meters and the structure of Measurements in the [Reviewing Meter Options](/guides/usage-data-meters/reviewing-meter-options) topic. However, to demonstrate using a simple example - suppose you run a SaaS platform that provides messaging services via API, then you might define a Meter that collects usage data for the number of requests, the region in which they occurred, and the category of action performed: ```json theme={null} { "uid": "705b30d2-4a79-43f3-9aae-a6ebe3894a2b", "meter": "api_requests", "account": "your_customer_ref_123456789", "ts": "2023-01-02T03:04:05.000Z", "measure": { "requests": 21 }, “what”: { “action”: “sendMessage” }, “where”: { “region”: “eu-west-1” } } ``` There are two endpoints for ingesting usage data - *Ingest REST API* and *File Upload*. We also offer multiple client-side options to help you deliver your usage data reliably, quickly, and cost-effectively ## Ingest API Our *Ingest REST API* is the primary mechanism for ingesting your usage data into the platform. It’s easy to use, and is designed with scale in mind. See the [API Calls for Data Ingest](/guides/billing-and-usage-data/submitting-usage-data/api-calls-for-data-ingest) topic and the [Submit Measurements](/api/measurements/submit-measurements) section in our API Reference documentation. Some request rate and payload size limits are imposed on data submissions to the Ingest API. For details on these limits and guidance on optimizing your data submissions, see [Ingest Limits and Optimizing Submissions](/guides/m3ter-apis/ingest-api-limits). ## File Upload If your existing systems and data flow are better suited to uploading a file containing usage data, perhaps at the end of a batch operation, we offer a *File Upload* service. The process is simple - make a call to the API to generate a temporary upload URL, then upload your file and we’ll do the rest. Any errors are reported to you via the normal Events and Notifications service. See our [File Upload Service API](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api) topic for more information. ## Usage Data Ingest Process The usage data ingest process has two stages: * **Pre-enrichment**. This stage is kept as simple as possible to avert the possibility of data loss: * It is synchronous and is the level at which any API response to a usage data measurement submission refers. * Data validation checks are not performed at this stage and a usage data submission might not be immediately rejected. * **Enrichment**. This stage is where data validation checks are made: * It is asynchronous. * A usage data submission that was accepted for the pre-enrichment stage might be rejected at this stage because it fails a validation check that is performed during data enrichment. **Note: Ingest Processing time?** The ingest process can up to a few minutes to complete. Consequently, features that work on usage data, such as Billing and Data Explorer, will not reflect ingested usage data until the process has completed. ## Third-Party Integrations and Managed Ingest Many customers have usage data already being passed between systems via streams and queues. We can often help these customers get up and running quickly without additional steps and infrastructure by ‘hooking into’ existing data streams, transforming them into m3ter measurement format and sending them to our API. This ingest capability is currently available for Amazon SNS, Amazon SQS, and Apache Kafka, with support for Customer Data Platforms (CDPs) such as Segment, and Reverse ETL platforms planned. Additionally, we offer *Managed Ingest* solutions that typically involve m3ter pulling usage data from a set endpoint or location (like an S3 bucket) on the customer’s behalf. ## SDKs m3ter SDKs reduce the development effort associated with integrating your applications with m3ter, and help ensure efficient behavior with the API. SDKs are available in different languages to support convenient access to our REST APIs and maintain feature parity with our APIs - please see [Developer Tools](/guides/developer-tools) for more details. ## Error Handling m3ter gives you complete visibility of exceptions that occur during ingest. There are two feedback processes, depending on the exception: * Those that can be detected at the point of submission - for example, authorization failures, malformed payloads, and missing mandatory fields like the measurement timestamp. These are indicated clearly and immediately in the API response. * Errors that occur in the ingest and enrichment stage - for example, validation against your Meter configurations and failures in Derived Field calculations. These are reported asynchronously via the Events service. Ingest Error events contain the error detail, the original measurement submitted, and additional information to assist with troubleshooting. You can then set up Notifications to be triggered when these error Events occur for manual or automated follow-up. See the [Reviewing and Resolving Ingest Events](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events) topic for further information. ## Idempotency and Deduplication No system is immune from failures, especially when transferring data across the Internet, and there are many reasons measurements might get lost or duplicated on their way into the m3ter platform. To handle this, a key feature of the m3ter ingest service is that sending a measurement is an idempotent operation within a 35 day window - each measurement is stored for 35 days based on their `receivedAt` timestamp. This means that if a measurement with the same UID arrives multiple times in that time-frame, we'll only ingest it once. If you’re not sure whether a network connectivity issue or application crash affected measurements being sent, you can simply resend them with their original UIDs and we’ll de-duplicate and only store the missing ones. ## General Recommendations There are some general recommendations worth noting for usage data ingest: * **More not Less**. Send us **more** data rather than less. Also, where possible enrich the usage data you send us, for example by sending data more frequently, or by adding more data dimensions and metadata. The richer the data you send us, the more powerful you’ll find m3ter since we’ll be able to provide better analytics on your ingested data. * **Queue Usage Events**. If your usage events are short-lived or not retained after being submitted, we recommend putting them on a queue, such as Amazon SQS, Azure Storage Queues, or RabbitMQ, within your environment first. Then, read from that queue when submitting to the m3ter Ingest API. This adds a layer of protection against data loss due to network or software issues. ## FAQs **Can you fetch my usage data instead of me submitting it?** **Yes**. Please get in touch with your m3ter contact to discuss your preferred solution. **Is it possible to delete or modify usage data?** **Not directly**. Measurements are immutable once ingested, but it’s possible to make adjustments to correct aggregated data by submitting corrective measurements (either positive or negative). See the [Submitting Test Usage Data](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data) and [Dates in m3ter](/guides/getting-started/working-with-dates-in-m3ter-easy-reference) topics for more information. **Can I export my data?** **Yes**. You can view, filter, aggregate, and export usage data via our Data Explorer, either by using API calls or through the UI. In the future, we'll be introducing additional features to allow you to export larger volumes of data. For now if you require bulk export, you can submit a request to m3ter Support to assist you **What happens if I need to add fields to my Meter or remove fields after I've already sent data?** If you send measurements containing data fields that are not yet configured in your Meter, we still store the data. When you create a Data Field with the same code field, it will become linked and available for rating. Removing a Data Field from a Meter does not delete the existing measurements, but it becomes unavailable for other m3ter features. **What happens if I attempt to send usage data for a Meter that doesn't exist?** You might plan to set up a new product and have already done some testing in your sandbox or UAT m3ter environments. If you attempt to then perform some testing for the new product in your production environment and submit test data for a Meter that doesn't yet exist, this usage data will be rejected. This will not cause any issues or break anything in your production environment but the usage will have to be resubmitted once the Meter has been created and set up. **Can I send you any Personal Data in usage?** **No**. Don’t put any Personal Data (sometimes referred to as PI or PII) in the usage data. Instead, use anonymous unique identifiers that map to Personal Data in your CRM or other systems. A limited amount of Personal Data *can* be used in the Account object. Please see section 4.2 “Customer responsibility for Customer Data and Authorised User Accounts” in our [Terms of Service](https://www.m3ter.com/docs/legal/terms-of-service) and section 4 “Data Retention” of m3ter’s [Data Protection Agreement](https://www.m3ter.com/docs/legal/dpa) for more details. ## Data Ingest Overview - Diagram This diagram gives an overview of how usage data fits into the wider m3ter platform: # Integrations for m3ter Source: https://docs.m3ter.com/exploring-m3ter-getting-to-know-the-platform/integrations The m3ter platform is designed to facilitate and support robust and seamless *Integrations* with your 3rd-party systems. m3ter Integrations allow you to quickly map and synchronize data in m3ter with data held in other systems you rely on for core business operations, such as sales, pricing, billing and invoicing, and general finance. We also support usage data ingest directly from 3rd-party customer data platforms. You can then promptly start to leverage this data synchronization between m3ter and your other systems to implement a wide range of use cases to serve your operational requirements. **More Details?** For more details, see the [Integrations](/guides/integrations) section. # Key Concepts Source: https://docs.m3ter.com/exploring-m3ter-getting-to-know-the-platform/key-concepts This topic sets out and explains the key concepts of the m3ter platform. Links for more details on these key concepts are provided. **Tip: Other Terms?** For definitions of other terms you'll find when working with the m3ter service, see the [Glossary of Terms](/glossary-of-terms). ## Organization An *Organization* represents either: * Your company as a direct customer of m3ter. * Your company as an indirect customer of m3ter via one of our partners who integrate with m3ter. **More Details?:** See [Managing Organization and Users](/guides/organization-and-access-management) ## Products A *Product* in m3ter represents a product or service that you offer to your end customers. Each **Product** can act as a container the following items: * [Plan Templates and Plans](/exploring-m3ter-getting-to-know-the-platform/key-concepts#plan-templates-and-plans) * [Meters](/exploring-m3ter-getting-to-know-the-platform/key-concepts#meters) * [Aggregations](/exploring-m3ter-getting-to-know-the-platform/key-concepts#aggregations) * [Pricing](/exploring-m3ter-getting-to-know-the-platform/key-concepts#pricing) Plans and Plan Templates always belong to a specific Product. You can create Meters and Aggregations which belong to a specific Product, as shown above. **More Details?** See [Create and Manage Products](/guides/creating-and-managing-products). ## Plan Templates and Plans You can use *PlanTemplates* to define default values for the pricing **Plans** you want to apply to your **Products**. This allows you to avoid unnecessary repetition when setting up your pricing **Plans**, while retaining some flexibility to adjust individual pricing Plans to suit individual customer accounts. Each *Plan* is a child of a **PlanTemplate** and represents a specific pricing plan for one of your products or services. A **Plan** inherits key attributes for billing purposes from a **PlanTemplate**, such as the pricing structure, billing currency, billing frequency, billing interval, and any standing charge to apply to each bill. In a particular **Plan**, only some of these inherited attributes, such as pricing structure and standing charge, can be overridden to meet individual account billing needs. You can create **Plan Groups** for cases where you want to apply a minimum spend amount at billing across several of your products or features that are each priced separately. When you create the Plan Group, you can define an overall minimum spend and then add the priced Plans you want to include in the Group. **More Details?** See [Creating and Working with Plan Templates and Plans](/guides/plans-and-pricing/working-with-plan-templates-and-plans) and [Working with Plan Groups](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups). **Tip: Custom Plans for Accounts!** You can also create *Custom Plans* for an Account, which means the Plan can only be attached to that specific Account for charging for the Products the Account consumes. For more details, see [Creating Custom Plans for Accounts](/guides/end-customer-accounts/creating-custom-account-plans). ## Meters A *Meter* is used to collect usage data. You can set up **Data Fields** for a **Meter** to collect usage data measurements for your products or services. If required, you can use these raw data fields to set up more complex usage data collectors as **Derived Fields**, whose values are the result of calculations made on **Data Fields**. **Tip: Global Meters?** Note that you can also create Global Meters and Aggregations, which are not tied to a specific Product. **More Details?** See [Reviewing Meter Options](/guides/usage-data-meters/reviewing-meter-options). ## Aggregations When you have configured a **Meter** for usage data collection, you can create an *Aggregation* using the **Data Fields** or **Derived Fields** on the **Meter**. This allows you to define how the data collected by **Data Fields** will be aggregated to create a metric to suit the pricing model you want to apply to one of your products or services. For example: * You might want a **Data Field’s** data to be *summed* to yield a pricing metric. * Or for another **Data Field’s** data, you might want the *maximum value* reached to be used as a pricing metric. As key aspects for usage-based pricing, there are further ways you can use Aggregations to achieve the precise units of usage you require for pricing your products: * You can use your Aggregations to create *Compound Aggregations*. These allow you to derive numerical measures from usage data by applying a calculation to one or more simple Aggregations. This capability greatly extends the range of unit measure you can set up for the pricing you want to apply to usage. * If the Meter your Aggregation targets contains the appropriate Data Fields, you can also configure *Segmented Aggregations*, which allow you to segment the usage data collected by a single Meter and go on to apply separate pricing to the resultant segmented values. This capability can prove extremely useful for implementing some pricing and billing use cases. **More Details?** See [Reviewing Aggregation Options](/guides/usage-data-aggregations/reviewing-aggregation-options), [Compound Aggregations](/guides/usage-data-aggregations/compound-aggregations), and [Segmented Aggregations](/guides/usage-data-aggregations/segmented-aggregations). ## Counters Many providers of SaaS products and services want to charge their end-customers for product consumption using a subscription or recurring charge pricing model, one where end-customers are charged based on the numbers of product units, seats, or user licenses subscribed to within a given billing period. Counters in m3ter enable you to quickly implement a wide-range of unit-based pricing models for your products: * Set up recurring subscription charges for your products with a quantity or number of units as the pricing metric. * Offer your end-customers a flexible subscription model to help them optimize their subscription costs and easily manage their billing as their level of product consumption changes. * Implement hybrid pricing models for products or services that you want to charge your end-customer for in a mixed way - partly on this kind of subscription basis and partly based on metered product usage. ## Pricing ### Usage-Based Pricing For *usage-based pricing*, you can link an **Aggregation** to a **Plan** or a **PlanTemplate** to produce usage-based pricing plans. You can then complete the pricing configuration by selecting the type of pricing structure you want for your pricing plans, such as tiered pricing, pricing by volume, or stairstep pricing. **More Details?** See [Pricing and Managing Plan Templates and Plans](/guides/plans-and-pricing/pricing-plans) ### Unit-Based Pricing For *unit-based pricing*, you can quickly price Product **Plans** in the **Pricing Editor** using **Counters**. **More Details?** See [Creating Counters and Pricing Plans](/guides/recurring-charges-counters/creating-counters). ### Hybrid Pricing If you want to apply a hybrid pricing model for a product or service, you can set up a combined pricing for a Product Plan to charge end-customers who consume the product or service using: * An **Aggregation** as the pricing metric for usage-based charges you want to apply. * A **Counter** as the pricing metric for any recurring subscription charges you want to apply. At billing, all charge amounts due on the Account are combined in a single Bill. **More Details?** To review a worked example of hybrid pricing, see [Recurring Charges Billing: Hybrid Pricing](/guides/recurring-charges-counters/recurring-charges-example-2-hybrid-pricing). ## Accounts An *Account* represents your end customer - a person or company that pays your **Organization** for one of your products or services. For setting up your end customer Accounts, you can: * Attach a **Plan** to an **Account**, which determines the pricing that will be applied to that **Account** for billing purposes. When you attach a **Plan** to an **Account**, you can select for the start and end dates to define the period the pricing **Plan** is active and will be applied to the **Account** for billing purposes. * Apply a **Prepayment/Commitment** to an Account for cases where your customer has agreed to pay a fixed amount over the duration of their contract with you to consume one or more of your products or services. The amount is understood as payable regardless of the actual usage they become liable to pay for during the contract period. You can include a surcharge rate to be applied for any overage on the Prepayment/Commitment amount that occurs during the contract period. * Create **Contracts** for end-customer Accounts. If you expect to have end customers who consume several different service or product packages you offer, for accounting purposes you can then report on the total Contract values for these end customer Accounts. * Create **Child Accounts** for a main or **Parent Account**. You might want to do this if your Organization has customers with multiple Accounts and instead of issuing multiple bills to these customers, you want to provide them with single Bill for a Parent Account that covers data usage across their multiple Child Accounts. * Define **Custom Plans** for an Account. A Custom Plan can only be attached to that specific Account. In your production environment, operationally you can: * Open an Account **Overview** summarizing the Account setup and showing latest Bills for the Account with charts tracking billed usage and any recurring charges. * Review and manage a detailed listing of Account **Bills**. **More Details?** See [End-Customer Accounts](/guides/end-customer-accounts) ## Account Plan When you attach a priced Plan to an Account, this defines a link between them to create an *Account Plan*. Attaching priced Plans to an Account determines the charges incurred by customers who are put on the Plan when they consume one of your Products. **More Details?** See [Attaching Plans to Accounts](/guides/end-customer-accounts/attaching-plans-to-an-account) ## Account Plan Group When you attach a Plan Group to an end customer Account, this defines a link between them to create an *Account Plan Group*. The Account Plan Group for an Account determines the charges incurred by the Account. **More Details?** See [Attaching Plan Groups to an Account](/guides/end-customer-accounts/attaching-plan-groups-to-an-account) ## Billing A *Bill* is generated for an **Account** based on the usage-based pricing **Plan** that has been attached to the **Account**. **More Details?** See [Running, Viewing, and Managing Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills). # Sending your Data to m3ter Source: https://docs.m3ter.com/exploring-m3ter-getting-to-know-the-platform/sending-data-to-m3ter-quick-reference-starter A common question we get asked by our customers is: "What data are we required to send to m3ter?". To some extent the data we need from you will depend on the details of the usage-based pricing solution you implement on the m3ter platform. However, there's a limited core set of business and operational data we typically require from you and which is independent of the end-customer usage data you'll be sending for your rating and billing purposes. This topic summarizes the core business and operational data we'll require from you and explains the types of more specific end-customer data we'll need relevant to your particular usage-based pricing solution: * [User's Data](/exploring-m3ter-getting-to-know-the-platform/sending-data-to-m3ter-quick-reference-starter#users-data) * [End-Customer's Data](/exploring-m3ter-getting-to-know-the-platform/sending-data-to-m3ter-quick-reference-starter#end-customers-data) * [Usage Data](/exploring-m3ter-getting-to-know-the-platform/sending-data-to-m3ter-quick-reference-starter#usage-data) You may also have questions regarding how a Subject Access Request (SAR) regarding Personal Data made under the General Data Protection Regulation (GDPR) would be handled by m3ter: * [GDPR and m3ter](/exploring-m3ter-getting-to-know-the-platform/sending-data-to-m3ter-quick-reference-starter#gdpr-and-m3ter) ## User's Data We'll require some details of the people in your organization who become m3ter Users: * Their name and e-mail address so we can identify them as Users. * What we do with this data - how we process and store it - is covered in our [Privacy Notice](https://www.m3ter.com/docs/legal/privacy-notice). ## End-Customer's Data Setting up your m3ter Organization will require you to enter data about your end-customers. This will comprise: * Any end-customer data required to create and configure key m3ter entities, such as your end-customer Accounts and service Contracts on Accounts. * In general terms, the details of their charge rates for billing them when pricing up their Product Plans. We need this minimum amount of data to be able to identify your end-customers in m3ter and understand their contracts with yourselves, and therefore to ensure we are able to generate sound and complete end-customer bills. In many cases, this data will be sent through to m3ter via an integration with one of your 3rd-party systems. ### Personal Data * Any *Personal Data* you send is confined to certain fields on the *Account* configuration object. Under the [Data Processing Agreement](https://www.m3ter.com/docs/legal/dpa), the only fields you are allowed to use for any of your end-customer Personal Data in m3ter are the `name`, `address`, and `emailAddress` fields on an Account - see the [Create Account](/api/account/create-account) request schema as documented in our API Reference. See also section 4.2 of the [Terms of Service](https://www.m3ter.com/docs/legal/terms-of-service). * We appreciate that many of your end-customers will be businesses, and in those cases these fields on the Account object won’t contain Personal Data anyway. These fields act as labels to identify your end-customers and it is your choice what data you use to populate these fields - either personal or non-personal. ## Usage Data The *usage data* we require will be wholly dependent on the usage-based pricing schema you want to apply to charge and bill your end-customers for consuming your products and services. Given the wide scope m3ter offers, in terms of the pricing complexity you can set up for charging your customers, this usage data can vary enormously. Here are some examples to illustrate how the usage data you'll need to send us to implement your usage-based pricing and billing solution can vary: * Suppose you run a SaaS company that provides a cloud storage and cleanup service for corrupted graphics files. You want to charge your end-customers for this service on the basis of a count of the number of corrupted files submitted for cleanup together with the total storage measured at the end of any given billing period. The usage data you'll need to send us will therefore include metadata on each end-customer's number of files submitted and the cumulative storage volume of the files. * Suppose you provide a cloud service which allows your end-customers to develop and host software applications. You intend to charge customers for this application build-and-host cloud service by total number of applications built and hosted on your service and by count on the number of requests made to their applications. The usage data you'll need to send us will therefore include metadata on the number of applications each end-customer has built together with application request counts. * Suppose you offer a service to manage and process orders and deliveries for online retailers. Your basic pricing model uses a tiered structure on number of orders/deliveries you handle per billing period for an end-customer. You also want to include a fixed charges for product add-ons you offer, such as express delivery, which your customers can select for on an order-by-order basis. The usage data you'll need to send us will therefore include metadata on the number of orders each end-customer sends through for processing together with a count of the number of product add-ons they request. ### Personal Data - Inclusion in Usage Data We are conscious that Personal Data should only be processed for specific purposes, therefore as stated in our [Terms of Service](https://www.m3ter.com/docs/legal/terms-of-service), you are *not permitted* to send any Personal Data in Usage Data. ## GDPR and m3ter With respect to the General Data Protection Regulation (GDPR) and in the case of individuals making a Subject Access Request (SAR) regarding Personal Data sent to m3ter or collected by m3ter: * **User's Data**. If a person in your organization who has become a m3ter user makes a SAR, we as the Data Controller would respond to that request. * **End-Customer's Data**. m3ter is the Data Processor of any data relating to your end-customers, and you are the Data Controller. Therefore, we would direct any SAR issued by a person whose Personal Data has been processed in this way by m3ter to you for your action. # FAQs: Configuration and Setup - Best Practices Source: https://docs.m3ter.com/faqs/faqs-configuration-and-setup-best-practices Answers to questions on configuration setup in m3ter. Learn when to use one Meter or two and how to structure Products for accurate accounting and billing. ## Question: When to use one Meter and when to use two? One Meter is sufficient when the source data does not change. Aggregations *(including compound aggregations)*, segmentation and pricing can then be leveraged to create different data summaries and price points. As a general rule, you should use a single Meter with multiple Data Fields when the data being collected is of a similar or related type. For example: * Suppose you want to charge your end customers on the basis of the number of logins they make and where they are logging into your service from. You could create a single Meter and define two non-numeric Data Fields: a *Who* Data Field to collect the required data for login counts on specific users; a *Where* Data Field for collecting the location of logins. * However, you might also want to charge your customers on the basis of the volume of data they upload to store on your service during a given billing period. You should then create a second and separate Meter with a numeric *Measure* Data Field to sum each customer's quantity of data stored. *** ## Question: Should you have one Product or two? Typically you would create a Product per accounting code in your accounts receivables (AR) system. This way, when integrating with the AR, m3ter knows which Product to assign to the invoice line so that revenue for the product/service can be easily identifiable and recognized. To ensure Bill line items are assigned to the correct Product lines, you can select an *Accounting Product* when configuring many of the billing-related entities used to set up pricing and charges in your m3ter Organization. **More Details?** See [Bill Line Items - Mapping to Accounting Products](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products). # FAQs: Configuration, Rating and Billing Source: https://docs.m3ter.com/faqs/faqs-configuration-rating-and-billing Gain insights on Commitments/Prepayments, billing methods, and more. Optimize pricing and manage accounts effectively. ## Question: What are Commitments/Prepayments? A *Commitment/Prepayment* is when an end customer agrees to pay you a fixed amount over the duration of their contract with you. The agreed Commitment/Prepayment amount is typically paid in advance and used to consume one or more of your products or services. The Commitment/Prepayment amount is payable regardless of the actual usage by the end customer of your service or product. You can define overage rates should the original agreed amount be exhausted before the customer's contract ends. For an example, see [m3ter prepayment example](/guides/end-customer-accounts/creating-prepayments-for-accounts#example-prepayment).    *** ## Question: How does a Prepayment/Commitment differ from a minimum spend? A *minimum spend* ensures that you receive revenue from your customers in each billing period of at least the minimum spend amount. It is assessed on a bill-by-bill basis.  An end customer's consumption of your product or service is based on usage at an agreed pricing. Should the customer consumption amount be less than the minimum spend, they will be billed at the minimum amount. If the total value of the usage consumed exceeds the minimum spend amount, then the customer is charged for the usage amount. That is, they are charged the minimum spend plus the usage excess over the minimum.  A Commitment/Prepayment is assessed across multiple bills for the entire contract period. It represents your customer's prepayment for services or contractual spend agreements and typically falls under a contractual purchase clause requiring your customer to purchase a minimum quantity of your service at an aggregate agreed price over the contract term.  *** ## Question: Does m3ter support both in advance and in arrears billing? Yes, m3ter supports both billing in advance and in arrears with the following conditions: * For usage charges, only billing in arrears is supported. Billed in arrears is also known as "invoice in arrears", "paid in arrears", or "arrears billing". This is when the billing and payment occur *after* a service is completed, rather than in advance.   * Other charges such as standing charges, prepayments/commitments, and minimum spend can be billed in advance or in arrears. Billing in advance means sending bills to customers *before* the service is completed. **Example of billing in advance** Standing charges, minimum spends, and prepayments/commitments can all be set to bill in advance. Suppose * The quarterly prepayment amount is \$10,000. * The prepayment runs from 01-Jul-2022 through 30-Sep-2022. * Billing frequency is monthly. If the prepayment first bill date is 01-Jul-2022 and prepayment is set to "bill in advance", the upfront fee will appear on the June invoice, which is typically run in the first week of July. *** ## Question: Can I migrate to m3ter with customers already within a Prepayment period? Yes, m3ter supports migration even with end customers in mid-flight, when they have usage already logged against their prepayment. This means the end customers have remaining balances that m3ter does not know anything about. Currently, m3ter supports two approaches to this use case, depending upon the exact setup of the prepayment schemes and other circumstances.  1. Insert usage into m3ter reflecting the usage that has already occurred prior to migration over to m3ter.  2. Tweak the Prepayment amounts in m3ter, ignoring the usage so that the remaining balance is represented as expected. *** ## Question: What are Balances and how can they be used? Balances, also known as Top-Ups or Prepaid draw-down, can be used for cases where a customer prepays an amount for use as credit against a service. Any service consumption draws-down against the Balance for charging and billing purposes. Balances can also be used as a "Free Credit" scheme. This encourages sales because customers can use the free credits for consumption against your product or service for a trial period. The free credits can be added on customer signup, or at other stages during the active customer service period.     Balances can also enhance customer satisfaction. Credit can be added to a Balance when there have been issues delivering your service, or some other form of customer dissatisfaction has occurred. The additional Balance credit can then be used for future service consumption, instead of you having to take the trouble to credit and adjust an invoice that covered the period during which the agreed issue occurred.   *** ## Question: Can I use Prepayments/Commitments and Balances together? Yes. You can use Prepayments and Balances together on the same end customer Account, with options to define the draw-down order - Balance first or Prepayment first. # FAQs: General Questions Source: https://docs.m3ter.com/faqs/faqs-general-questions Get expert answers about Usage-Based Pricing (UBP), m3ter's role, suitability for your business, and why not to build your own billing system. ## Question: What does usage-based pricing (UBP) mean? [Usage-Based Pricing](https://www.m3ter.com/guides/usage-based-pricing) (UBP) is a pricing model where customers are charged based on their consumption of services or products, rather than a flat rate. This approach can complement or substitute the traditional recurring subscription models commonly seen in SaaS businesses. Typically, vendors offer a base subscription package and incorporate additional usage elements, like overages or usage-based add-ons, to provide more flexibility and alignment with customer usage patterns. However, billing operations and management for UBP are often done manually, introducing risk of errors with consequent revenue leakage. Manual billing process also place heavy and tedious operational demands each billing cycle for teams across Billing Operations & Finance, Product, and Sales. This is where m3ter can help. *** ## Question: What is m3ter and how does it help with usage-based pricing? m3ter helps B2B software scale-ups implement and manage complex usage-based pricing models by automating bill calculation and sending the results to downstream systems so you can shorten billing cycle operations, eliminate revenue loss and unblock product innovation. m3ter not only supports UBP but also accommodates complex pricing structures, such as hybrid pricing, which blends subscription fees with usage-based charges. m3ter plugs directly into your existing quote-to-cash stack including your CRM, CPQ, finance systems, payment providers and your product. Data flows will be automated and the data used for bill calculations always synchronized and up to date. m3ter seamlessly aggregates, prices, and bills your product usage data within a single environment, saving your finance team hours of challenging and tedious manual work. You can then distribute bill line items and customer spend data across your organization, enabling Sales to have informed customer conversations, Finance to analyze reports on profit margins, and Product teams to quickly develop and iterate new features. *** ## Question: Is UBP right for my business? UBP isn't suitable for every SaaS company, but when it's a good match, it can reduce adoption friction, enable effortless upselling, and help manage gross margins. Customers appreciate it too, because it aligns the costs they incur with the value they receive from your product. Discover if UBP is the right choice for your business [here](https://www.m3ter.com/blog/is-usage-based-pricing-right-for-my-saas-business). Various pricing models might suit your business depending on your product and business model. Explore the full spectrum of pricing options [here](https://www.m3ter.com/guides/saas-pricing-spectrum). *** ## Question: Why should I use m3ter instead of building my own system? m3ter, a flexible usage-based billing platform, offers distinct advantages over building your own system, ensuring your business is equipped with a robust, scalable solution: 1. **Cost-Effective Solution**: Developing and maintaining an in-house system is costly, with an average initial build cost of \$500K and an annual maintenance fee of \$300K. These figures, sourced from a survey of over 150 top SaaS companies, underscore the cost benefits of choosing m3ter. 2. **Reduced Risk and Complexity**: m3ter's proven track record mitigates the execution risks and complexities associated with in-house development. m3ter's seamless integrations with essential quote-to-cash tools like Stripe, NetSuite, Paddle, and Chargebee, combined with the flexibility of the open-API framework for custom integrations, streamlines your billing processes. 3. **Expert Support and Scalability:** m3ter provides unparalleled customer support and a platform that scales with your business growth, handling increasing volumes and complexities without the constant need for internal development. 4. **Compliance and Security:** m3ter adheres to strict industry compliance standards and prioritizes data security, so you have peace of mind and no internal burden of maintaining these critical aspects. 5. **Continuous Innovation:** With m3ter, you benefit from continuous updates to the product, so your business stays at the forefront without any additional development from your team. 6. **Rapid Time to Market:** Implementing m3ter is much faster than the lengthy process of building, testing, and launching an in-house solution. Plus, you might build something that meets your pricing and billing needs today, without being able to fully anticipate what those needs will be in the future. 7. **Proven Success:** Dive into [our customer success stories](https://www.m3ter.com/customers) to see how SaaS businesses like yours have successfully leveraged m3ter to transform their billing. Discover the strategic benefits of choosing m3ter for your billing needs and learn why our customers prefer our solution over building their own. Hear from [one of our customers](https://www.m3ter.com/blog/it-s-dangerous-to-go-alone-take-this) why they decided to buy rather than build. *** ## Question: How soon can I start using your platform? With m3ter, you can implement simple configurations in just hours. Easily integrate with your quote-to-cash systems, automate processes, and tailor m3ter to your business's evolving complexities. [Reach out to us here](https://www.m3ter.com/contact) for an initial discussion about your needs and how we can assist. Our expert team is ready to guide you through a demo, assist with sandbox setup, and support you throughout your evaluation journey. # FAQs: Metering Source: https://docs.m3ter.com/faqs/faqs-metering Review answers to key questions concerning usage data ingest into m3ter, such as how to handle data ingest issues and what happens when Account codes are changed. ## Question 1: How can I get my usage data into m3ter? We’ve built our platform to handle high volumes of usage events, and we encourage customers to send us rich, granular usage data, because this allows us to provide you with more flexibility and value from your data once it has been ingested. There are two generally available methods of sending usage data to m3ter - **API** and **File Upload**.  ### API Our ingest API is the primary mechanism for ingesting usage data. It’s built with scale and flexibility in mind, allowing up to **1,000** measurements in each API request. ### File Upload If your existing systems and data flow better suit uploading a file containing usage data, perhaps at the end of a batch operation, we offer a file upload service. Make an API call to generate a temporary upload URL, then upload your file; we’ll do the rest, and any errors are reported to you via the normal Alerts service. **Other Options?** Other options are currently in beta, such as the m3ter Ingest Agent - see [Question 6](/faqs/faqs-metering#question-6-can-you-fetch-my-usage-data-instead-of-me-submitting-it) below. Please ask your m3ter contact for more details in usage data ingest options with m3ter. **More Details?** * See the [Getting Usage Data into m3ter](/exploring-m3ter-getting-to-know-the-platform/getting-usage-data-into-m3ter-quick-reference-starter) topic for a broad overview quick reference covering usage data ingest. * See the [Submitting Usage Data](/guides/billing-and-usage-data/submitting-usage-data) section for more detailed topics with instructions and examples. *** ## Question 2: What should I do if data was not ingested due to network issues? There are many reasons measurements might get lost or duplicated on their way to the m3ter platform, so a key quality of the m3ter ingest service is that sending a measurement is an idempotent operation within a 35-day window. This means that if a measurement with the same UID arrives multiple times in that timeframe, we will only ingest it once. If you're unsure whether a network connectivity issue or application crash affected measurements being sent, resend them with their original UID. We’ll de-duplicate, only store the missing ones, and will generate an event so you can confirm. When dealing with short-lived usage events, we recommend putting the events on a queue such as Amazon SQS or Azure Storage Queues within your environment, then read from that queue when sending it to the m3ter API. This adds a layer of protection against data loss because of network or software issues. *** ## Question 3: What if I need to change an Account code? Although changing Account codes is possible to allow for corrections, be aware that because usage is submitted using the Account code you need to properly coordinate sending usage to the current Account code when changing it. We therefore recommend not renaming Account codes once usage has been sent. ## Question 4: Can I reuse an old Account code for a different Account? Yes, but we recommend that you *don't do this*. Account codes should generally be a unique, immutable identifier for the Account, for example a customer ID in your system. **More Details?** See [Managing Accounts - Best Practices](/guides/end-customer-accounts/managing-accounts-best-practices) for more on the implications of deleting and recreating Accounts using the same Code. *** ## Question 5: Should I send PII in the usage data? No. Do not send personally identifiable information (PII) in the usage data. Use an anonymous unique identifier that you can map to individual information in your CRM. **More Details?** See [Sending your Data to m3ter](/exploring-m3ter-getting-to-know-the-platform/sending-data-to-m3ter-quick-reference-starter). *** ## Question 6: Can you fetch my usage data instead of me submitting it? Yes. Our Ingest Agent can poll external systems and submit it to the m3ter API. Various sources and formats are supported out of the box, but we can also help develop custom collectors should one be required. **More Details?** See the [Getting Usage Data into m3ter](/exploring-m3ter-getting-to-know-the-platform/getting-usage-data-into-m3ter-quick-reference-starter) topic for more on working with our Ingest Agent. *** ## Question 7: Is it possible to delete or modify usage data? Measurements are immutable once ingested, but it’s possible to make adjustments to correct aggregated data by submitting corrective measurements *(either positive or negative)*.  **More Details?** See [Using Timestamp to Submit Usage Data Adjustments](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp) and [Dates for Usage Data](/guides/getting-started/working-with-dates-in-m3ter-easy-reference#dates-for-usage-data) for more information. *** ## Question 8: Can I export my data? Yes, you can view, filter, aggregate, and export usage data via our Data Explorer (v2) in the m3ter Console, or via the API. In the future, we shall introduce additional features enabling you to export larger volumes of data. **More Details?** See [Data Explorer (v2)](/guides/data-explorer/usage-data-explorer-v2). *** ## Question 9: What happens if I need to add fields to my Meter or remove them after I've already sent data? If you send measurements containing data that you have not configured in your Meter yet, we will still store the data. When you create a Data Field with the same code field, it will become available.  Removing a Data Field from a Meter does not delete the existing measurements, but it becomes unavailable for other m3ter features. ## Question 10: What happens if I attempt to send usage data for a Meter that doesn't exist? You might plan to set up a new product and have already done some testing in your sandbox or UAT m3ter environments. If you attempt to then perform some testing for the new product in your production environment and submit test data for a Meter that doesn't yet exist, this usage data will be rejected. This will not cause any issues or break anything in your production environment but the usage will have to be resubmitted once the Meter has been created and set up. # FAQs: Parent and Child Accounts Source: https://docs.m3ter.com/faqs/faqs-parent-and-child-accounts If you are implementing Parent/Child Accounts in your Organization, key questions concerning billing when Child Accounts are deleted or removed. ## Question: When a Child account is deleted and Bills recalculated, do the Child items still show on the Bill? As soon as a Child is disassociated from the Parent, the Child no longer contributes to the Bill. However, Parent-Child relationships do not carry start and end date information. The disassociation of the Child from the Parent will apply to all Bills. Therefore, you need to recalculate all the Bills for the Parent before the Child usage or line items are removed. *** ## Question: A Child is removed from one Parent and added to a new Parent. When Bills are recalculated, does the Child show for both Parents? No, it will only show up for the *new* Parent. However, you will need to recalculate all the Bills for the *previous* Parent to have the Child usage or line items removed.   *** ## Question: A Child is removed from the Parent and now exists without a Parent. What happens to previously calculated Bills for the Parent? Since the Child is disassociated from the Parent, all future Bills no longer have any contributions from the former Child. However, all previous Bills must be recalculated before the Child's usage or line items are removed. # Glossary of Terms Source: https://docs.m3ter.com/glossary-of-terms ## Account An *Account* is used to define one of your end-customers, and contains the end-customer name and contact details. > **See:** [Creating and Managing Accounts](/guides/end-customer-accounts) ## Account Plan When you attach a priced Plan to an Account, this creates a link between them to create an *Account Plan*. Attaching priced Plans to an Account determines the charges incurred by customers who are put on the Plan when they consume one of your Products. > **See:** [Attaching Plans to Accounts](/guides/end-customer-accounts/attaching-plans-to-an-account) ## Account Plan Group When you attach a Plan Group to an end customer Account, this creates a link between them to create an *Account Plan Group*. Attaching a Plan Group to an Account implicitly attaches all of the Plans included in the Group to the Account, and the Account is charged in accordance with those Plans. > **See:** [Attaching Plan Groups to an Account](/guides/end-customer-accounts/attaching-plan-groups-to-an-account) ## Aggregation An *Aggregation* specifies how to transform into a single number all of the individual measurements submitted to a Meter data field as usage data. For example, you may choose to simply SUM the values of a data field in the submitted usage data. These single number measurements can then be used as pricing metrics for your products and services and for calculating bills against the customer Accounts that consume those products and services. > **See:** [Reviewing Aggregation Options](/guides/usage-data-aggregations/reviewing-aggregation-options) ## Balance You create *Balances* for end customer Accounts, which act as credit or debit amounts for your customers. A customer can then draw down against any Balance credit amount for charges incurred throughout the period the Balance has been defined as active for the Account. You can include options to top-up the original Balance. > **See:** [Creating Balances for Accounts](/guides/end-customer-accounts/creating-balances-for-accounts) ## Bill A *Bill* is generated for an Account based on the usage-based pricing Plan that has been attached to the Account. > **See:** [Running, Viewing, and Managing Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills) ## Charge A *Charge* can be created for an end-customer Account and serves those use cases requiring ad-hoc or one-off line items for Account billing. > **See:** [Creating Charges for Accounts](/guides/end-customer-accounts/creating-charges-for-accounts) A *Charge* can be created for a Balance on an end-customer Account to create single, one-off line items for Balance billing. > **See:** [Creating Charges for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances) ## Charge Schedule You can set up a *Charge Schedule* for a Balance on an Account. This allows you to generate Charges for billing a Balance at regular daily, weekly, monthly, or yearly intervals over a specified time period. > **See:** [Setting Up Charge Schedules for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances) ## Child Account A *Child Account* is an Account that has a Parent Account defined. You can create Child Accounts for cases where your Organization has customers with multiple Accounts and instead of issuing multiple bills to these customers, you want to provide them with single Bill for the Parent account. > **See:** [Working with Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts) ## Compound Aggregation A *Compound Aggregation* allows you to define an aggregation that is based on other (simple) Aggregations using a mathematical expression. For example, you may choose to multiply the result of two Aggregations together, or choose the maximum value of them, and so on. You can also reference *default* Custom Fields - those defined at Organizational level - in your Compound Aggregation calculation. > **See:** [Compound Aggregations](/guides/usage-data-aggregations/compound-aggregations) ## Contract Create a *Contract* for an Account if you expect to have end customers who consume several different service or product packages you offer. You can then: * Report for your accounting purpose the total Contract values for these end-customer Accounts. * Bill end-customer Accounts on a Contract basis and fulfill invoicing requirements for cases where you offer customers a specific product package agreement to consume several of your core products > **See:** [Working with Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts) ## Counter *Counters* in m3ter enable you to quickly implement a wide-range of unit-based pricing models for recurring subscription charges on your products. These types of pricing models require a quantity or number of units as the pricing metric and enable you to charge end-customers based on the numbers of product units, seats, or user licenses they subscribe to within a given billing period. > **See:** [Creating Counters and Pricing Plans](/guides/recurring-charges-counters/creating-counters) ## Counter Adjustment Create *Counter Adjustments* for end-customer Accounts using Counters to ensure the Account is billed according to the number of Counter units the Account subscribes to in a given billing period. > **See:** [Understanding and Creating Counter Adjustments for Accounts](/guides/recurring-charges-counters/creating-counter-adjustments-for-accounts) ## Counter Pricing Create a *Counter Pricing* for a Product Plan or Plan Template using a Counter, and define a unit-based pricing structure for charging end-customer Accounts put on the Plan for consuming the Product. > **See:** [Creating Counters and Pricing Plans](/guides/recurring-charges-counters/creating-counters) ## Credits *Credit Reasons* are defined for an Organization. For Bill adjustments, Credit Reasons are then used to add Credits for an existing bill line item or apply a product Credit manually to a Bill. > **See:** [Creating Credit Reasons](/guides/organization-and-access-management/viewing-and-editing-organization#creating-credit-reasons) and [Adding Credit Line Items to Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-credit-line-items-to-bills) ## Custom Fields *Custom Fields* allow you to attach custom data to some m3ter entities. You can add Custom Fields to define default custom string or number values at the level of your Organization for Products, Plan Templates, Plans, Accounts, Account Plans, or Meters. You can also add Custom Fields to define custom string and number values at the level of the individual Product, Plan Template, Plan, Account, Account Plan, or Meter. The custom values you define at the individual-entity level override the values you’ve defined at the Organizational level. > **See:** [Adding and Editing Custom Fields](/guides/organization-and-access-management/viewing-and-editing-organization#adding-and-editing-custom-fields) ## Data Explorers A *Data Explorer* allows you to query the data collected for your Organization in the m3ter platform for *Usage*, *Billing*, or *Prepayments/Commitments* data. You can review the data returned for submitted queries in various formats, including Data Tables or Pivot Tables. > **See:** [Data Explorers](/guides/data-explorer) ## Data Field A *Data Field* is configured for a Meter and defines a raw usage data collection field. > **See:** [Reviewing Meter Options](/guides/usage-data-meters/reviewing-meter-options) ## Debits *Debit Reasons* are defined for an Organization. For Bill adjustments, Debit Reasons are then used to add Debits for an existing bill line item or apply a product Debit manually to a Bill. > **See:** [Creating Debit Reasons](/guides/organization-and-access-management/viewing-and-editing-organization#creating-debit-reasons) and [Adding Debit Line Items to Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-debit-line-items-to-bills) ## Derived Field A *Derived Field* is configured for a Meter and uses a calculation on other fields to determine a usage data field. The calculation for a Derived Field can reference Meter Data Fields, Custom Fields, and system Timestamp fields. > **See:** [Reviewing Meter Options](/guides/usage-data-meters/reviewing-meter-options) ## Events You can use *Events* generated in m3ter as the basis for setting up and sending [Notifications](/glossary-of-terms#notifications) into your external systems when those Events occur and the specific conditions you've defined for triggering a Notification are satisifed. > **See:** [Utilizing Events and Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications) ## External Mapping An *External Mapping* is a mapping reference. It is a configuration object that allows you to store unique ids for matched objects (such as your end Customer id matched to an Account id in m3ter) across two or more systems. An External Mapping can then be used as a reference lookup for which objects are matched across systems. > **See:** [Reviewing External Mappings](/guides/organization-and-access-management/viewing-and-editing-organization#reviewing-external-mappings) ## Global Meter A *Global Meter* does not belong to a specific Product. This allows you to set up usage-based pricing across different Products on the basis of the usage data a single Global Meter collects. > **See:** [Reviewing Meter Options](/guides/usage-data-meters/reviewing-meter-options) ## Grants A *Grant* is an allowance of pre-rated usage data allocated to an end-customer Account, which can be drawn-down to reduce the amount of usage that is rated and would result in charges against the Account. > See: [Grants](https://m3ter.mintlify.app/guides/end-customer-accounts/creating-balances-for-accounts/balance-grants) ## Integrations *Integrations* exploit m3ter's open-API framework allowing you to quickly map and synchronize data held in any 3rd-party systems you use for core business operations. > **See:** [Integrations](/guides/integrations) ## Lookup Tables Lookup Tables enable you to manage dynamic data mappings that your calculations reference. Use them for currency conversion, pricing tiers, discount rates, and similar scenarios where you require values to change operationally but for calculation logic to remain constant. > **See:** [Lookup Tables](/guides/lookup-tables) ## Meter A *Meter* defines the data fields that your system will submit to the m3ter platform as usage data. You can create Product-specific Meters or Global Meters. Global Meters are not tied to a specific Product. > **See:** [Reviewing Meter Options](/guides/usage-data-meters/reviewing-meter-options) ## m3sh The m3sh platform underpins and drives m3ter's interoperability and automation capabilities, encompassing Events and Notifications, Integrations, Workflows, and Apps. > **See:** [m3sh](/guides/m3sh-automation) ## Notifications You can set up *Notifications* to be triggered and sent into external systems on the basis of m3ter-generated [Events](/glossary-of-terms#events). This includes the capability to create rule sets to define the precise conditions under which a Notification will be triggered and sent out when a specific Event occurs. > **See:** [Utilizing Events and Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications) ## Organization An *Organization* represents your company as a direct customer of the m3ter platform. > **See:** [Managing your Organization](/guides/organization-and-access-management/viewing-and-editing-organization) ## Permission Policy A *Permission Policy* allows you to control what users in your Organization who have authenticated with the platform are allowed to do. > **See:** [Managing your Users](/guides/organization-and-access-management/managing-users) ## Plan A *Plan* represents 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 only some of which can be overridden. > **See:** [Reviewing Options for Plans and Plan Templates](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates) ## Plan Group A Plan Group allows you to include Plans for different Products in the Group and define a minimum spend for the Group. This means you can apply a cross-product minimum spend straightforwardly, which is a very useful capability for certain billing use-case. > **See:** [Working with Plan Groups](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups) ## Plan Template A *Plan Template* allows you to configure default settings for your pricing Plans. These settings control billing operations and the pricing structure you want to apply to your products. Plan Templates avoid repetition in configuration work - many Plans will share settings for billing operations and differ only in the details of their pricing structures. > **See:** [Reviewing Options for Plans and Plan Templates](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates) ## Prepayment A *Prepayment/Commitment* allows you to assign an amount to a customer Account that the customer has agreed to pay over the duration of their contract with you to consume one or more of your products or services. The Prepayment amount is understood as payable regardless of the actual usage the customer becomes liable to pay for during the contract period. A Prepayment contrasts with a simple agreed minimum spend amount defined for an Account, since this will be assessed on a bill-by-bill basis whereas a Prepayment spans across multiple bills and is for the entire contract period. When setting up a Prepayment on an Account, you can include a surcharge rate to be applied for any overage on the Prepayment amount that occurs during the contract period. > **See:** [Creating Prepayments for Accounts](/guides/end-customer-accounts/creating-prepayments-for-accounts) ## Pricing *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. > **See:** [Pricing and Managing Plans and Plan Templates](/guides/plans-and-pricing/pricing-plans) ## Product A *Product* represents a product or service that your Organization offers to your end customers. A Meter, Aggregation, Plan Template, Plan, or Pricing typically all belong to a Product. *Global* Meters and Aggregations can be created, which do not belong to a specific Product. > **See:** [Creating, Managing, and Reviewing Products](/guides/creating-and-managing-products) ## Segmented Aggregations *Segmented Aggregations* allow you to segment the usage data collected by a single Meter and price your Product Plans by these segment values. This capability is very useful for implementing some pricing and billing use cases. > **See:** [Segmented Aggregations](/guides/usage-data-aggregations/segmented-aggregations) ## Service User A *Service User* represents automated processes that you want to grant direct API access to your Organization. Service Users are used for integrating 3rd-party systems with the m3ter platform. > **See:** [Creating and Configuring Service Users](/guides/organization-and-access-management/managing-users#creating-and-configuring-service-users) ## Statements *Statements* are used to accompany the Bills sent out to end customers as backing sheets to invoices. Bill Statements can provide a useful and welcome breakdown of the usage responsible for the usage charge line items your customers see on their invoices. > **See:** [Working with Bill Statements](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) ## Transaction Types and Transactions *Transaction Types* are defined for an Organization. Transaction Types are then used to create specific *Transaction amounts* for Balances on end-customer Accounts. In this way, Transaction are used to flexibly manage Balance amounts on end-customer Accounts, with a Transaction ledger being maintained for individual Balances. > **See:** [Creating Transaction Types](/guides/organization-and-access-management/viewing-and-editing-organization#creating-transaction-types) and [Creating Transactions for Balances](/guides/end-customer-accounts/creating-balances-for-accounts#creating-transactions-for-a-balance) ## Transaction Schedule You can set up a *Transaction Schedule* for a Balance on an Account. This allows you to generate Transactions of a specific type for a Balance at regular daily, weekly, monthly, or yearly intervals over a specified time period. > **See:** [Setting Up Transaction Schedules for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances) ## User A *User* represents a person you allow to authenticate with and have access to your Organization in the m3ter platform. > **See:** [Viewing and Editing Users](/guides/organization-and-access-management/managing-users#viewing-and-editing-users) # Alerts, Events, and Notifications Source: https://docs.m3ter.com/guides/alerts-events-and-notifications This section guides you through Alerts, Events, and Notifications. * [Viewing and Managing Alerts](/guides/alerts-events-and-notifications/viewing-and-managing-alerts) * [Utilizing Events and Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications) * [Key Concepts and Relationships](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships) * [Object Definitions and API Calls](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls) * [Creating, Managing, and Reviewing Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications) * [Example - Notification Setup for Commitment Updated Event](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event) # Utilizing Events and Notifications Source: https://docs.m3ter.com/guides/alerts-events-and-notifications/utilizing-events-and-notifications You can use m3ter's *Events and Notifications* feature to define and implement alerts or notifications that are triggered by specific events in your m3ter production environment. For example, you might offer a sign-up bonus credit to your new customers. You then want to receive a notification when an end customer account has consumed 90% of their initial credit amount. This section explains m3ter's *Events and Notifications* framework, sets out the main object definitions within that framework, explains how to create and configure *Notification Rules* in the m3ter Console, and provides some worked examples for you to follow: * [Key Concepts and Relationships](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships) * [Object Definitions and API Calls](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls) * [Creating, Managing, and Reviewing Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications) * [Example - Notification Setup for Commitment Updated Event](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event) In addition to system-generated Events that occur when a configuration entity undergoes a state change at creation, update, or deletion of the entity, you can use API calls to create and configure *Scheduled Event Configurations*. Scheduled Events are custom Event types, which you can set up by referencing Date/Time fields on configuration and billing entities: * [Working with Scheduled Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events) # Creating, Managing, and Reviewing Notifications Source: https://docs.m3ter.com/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications In the Console, you can set up *Notification rules*, which allow you to define a rule set that controls when a Notification is triggered with reference to an Event: * **Event**. Specify the system Event that the Notification will be sent for - for example, a Prepayment/Commitment created Event. * **Calculation**. Include a calculation that references the Event's fields. The calculation is evaluated as either true or false, and this allows you to define precisely the conditions that must be satisfied for the Notification to be triggered and sent when the specified Event occurs. For example, a Notification that will be sent only when a Prepayment created Event occurs and the Prepayment amount is equal to or greater than \$5,000. * **Always fire notification**. If you want a Notification to be triggered simply by the Event occurring and with no further conditions having to be met, you can use a switch to implement this use case. No calculation is then required for the Notification rule. * **Active/Inactive**. Switch the Notification on and off for the referenced Event. When you've created Notification rules for Events, you can link them to Outgoing webhooks and complete your setup to create *Notification Webhook Integrations*. Once this setup is complete, a Notification will be sent to an Outgoing webhook if: * You have enabled the Notification rule linked to the Outgoing webhook to be active. * The system Event occurs that the Notification rule is based on. * Any calculation you've built into the Notification rule is evaluated as true at the time the Event occurs. After setting up your Notification rules and enabled them as active in your production environment, any Events that cause Notifications to be triggered in accordance with those rules are logged and recorded. You can then review and inspect these Notification Events as part of your routine operations. This topic explains how to create a Notification rule and link it to an Outgoing webhook. How to view and manage your Notification rules is also explained: * [Creating Notification Rules](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#creating-notification-rules) * [Linking Notification Rules to Outgoing Webhooks](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#linking-notification-rules-to-outgoing-webhooks) * [Managing Notification Rules](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#managing-notification-rules) How to review the Events that have triggered Notifications according to your Notification rules is explained: * [Reviewing Events for Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#reviewing-events-for-notifications) Lastly, an example of a Notification payload is given: * [Example Notification Payload](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#example-notification-payload) **IMPORTANT: Notes and Tips:** * **Events are Time-Bound!** Events in m3ter are time-bound and are deleted 28 days after creation. This includes all system Events, Notification Events, Integration error Events, Ingestion validation failure Events, Data Export job failure Events, and Scheduled Events. * **Working with Notifications?** Before attempting to create and configure Notification rules, we *strongly recommend* that you first review the [Key Concepts and Relationships](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships) and [Object Definitions and API Calls](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls) topics in this section, which explain in detail the Events and Notifications framework and provide guidance on object definitions and API calls. * **Scheduled Events?** As well as setting up Notifications for system-generated Events, you can also set up Notifications on the basis of any *Scheduled Events* you've created for your Organization. See [Working with Scheduled Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events) for more details. ## Creating Notification Rules **To create a Notification Rule:** 1. In the Console, select **Alerts and notifications**: The **Alerts and notifications** section opens at the **System alerts** page. 2. Select **Notification rules**: The **Notification rules** page opens and lists any existing Notification rules. 3. Select **Create notification rule**. The **Create** page opens. 4. On the **Notification rule details** panel, enter: * **Name** and **Code**. * A **Description** for the Notification rule. **Tip:** 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. 5. Enter **Notification rule settings**: * Use the **Event** drop-down list to select the Event you want to create the Notification rule for. Note that this field is searchable - simply start to type in the name of the Event and the list will be filtered automatically as you type: **Tip: Scheduled Events?** If you've created any custom Scheduled Events for your Organization, these will also be available for selection in the **Event** drop-down list. * If you want a Notification to be triggered simply by the selected Event occurring and with no further conditions having to be met, enable the **Always fire notification** switch. Default is disabled. * No calculation is then required for the Notification rule configuration. * However, if you do enter a calculation, then the **Test calculation** button on the **Rule calculation** panel will be disabled and when you save the Notification rule, any calculation you've entered will be ignored. * Use the **Active** switch to enable the Notification rule for the selected Event. Default is disabled. * In the **Calculation** edit box, enter the calculation that defines the condition you want to apply for the Notification rule to be triggered when the selected Event occurs: * Note that you must ensure you reference fields that are valid for the Event. For details on how to obtain the fields available for different Event types, see [Event Fields](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls#event-fields). * For more details on creating calculations for Notification rules, see [Creating Calculations](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#creating-calculations). **Tip: Add Calculation later?** You can omit a calculation when you first create a Notification rule and edit the rule later to add the required calculation. 6. When you've entered a calculation, in the **Rule calculation** panel, select **Test calculation**. The calculation is evaluated for correctness with respect to: * The fields you've referenced are valid ones for the selected Event type. * The syntax, functions, and operators you've used are valid for the m3ter calculation engine - see [Creating Calculations](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#creating-calculations). 7. Check the result of the calculation evaluation: * If the calculation is valid, **Calculation passed** will show **True**. * If the calculation is invalid, **Calculation passed** will show **False:** In this example: * The Notification rule is set to be **Active**. * Because we want to apply conditions for the rule, we leave the **Always fire notification** switch in the default *off position*. * A calculation is used that references the `new.amount` field for a `configuration.commitment.created` Event. * The calculation has been tested and evaluated as **Calculation passed** = **True**. **Tip: Can't create or update a Notification rule?** If you enter an invalid calculation and the **Test calculation** returns **False** for **Calculation passed**, then you'll receive an error and you won't be able to save the Notification rule. 8. Select **Create notification rule**. The **Notification rule details** page opens: Notifications57 You can now link the Notification Rule to an Outgoing webhook to complete the setup - see the [next section](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#linking-notification-rules-to-outgoing-webhooks-to-create-notification-integration-configurations) for details. ## Linking Notification Rules to Outgoing Webhooks To complete your setup for a Notification, you can link a Notification rule to an Outgoing webhook - see [Creating and Managing Outgoing Webhooks](/guides/integrations/setting-up-integrations/creating-and-managing-destinations) for more details: * When you link a Notification rule to an Outgoing webhook, this creates a Notification Webhook Integration. * If an Event of the type on which the Notification rule is based occurs and any conditions you've defined using a calculation in the rule are satisfied, then the Notification is triggered and sent to the Outgoing webhook you've linked it to. This section explains how to link Notifications to Webhooks and how to review and manage those links: * [Linking Notifications to Webhooks](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#linking-notifications-to-webhooks) * [Reviewing and Managing Notification/Webhook Links](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#reviewing-and-managing-notificationwebhook-links) ### Linking Notifications to Webhooks **To link a Notification Rule to an Outgoing webhook:** 1. In the Console, select **Alerts and notifications**. The **System Alerts** page opens. 2. Select **Notification rules**. The **Notification rules** page opens and lists any existing Notification rules. 3. Select the **Name** hotlink text of the Notification rule you want to link to an Outgoing webhook. The **Notification rule details** page opens. 4. Scroll down the page and on the **Linked webhooks** panel, select **Link webhooks**. A **Select outgoing webhooks** dialog appears, and lists the Outgoing webhooks created for your Organization. 5. Select the Outgoing webhooks you want to link the Notification rule to, and then select **Confirm**. The dialog closes and the selected Outgoing webhooks are listed: In this example: * A single Outgoing webhook has been linked to a Notification rule. * You can read off the URL for the the webhook. * If you haven't yet created the Outgoing webhook you want to link the Notification rule to, you can select **Create outgoing webhook**. This takes you directly to the **Create** page - see [Creating and Managing Outgoing Webhooks](/guides/integrations/setting-up-integrations/creating-and-managing-destinations). 6. If you want to review the Outgoing webhook details, select the **Name** hotlink text. The **Outgoing webhook details** page opens: Notifications58 7. You can open the **Integrations>Outgoing webhooks** page and review other webhooks: Notifications59 **Tip: Reviewing and Managing Notification Webhook Integrations?** See [Creating and Managing Integrations](/guides/integrations/setting-up-integrations/creating-and-managing-integration-configurations). **Tip: Review Integration Run Details for a Notification?** For detail on how to do this, see [Reviewing Notification Integration Runs](/guides/integrations/setting-up-integrations/reviewing-integration-run-details#reviewing-notification-integration-runs). ### Reviewing and Managing Notification/Webhook Links When you've linked a Notification to a webhook, you can review and manage the link: * If the link is flagged as inactive, check the status. * Set up Organization users to receive email notifications if the Notification Webhook integration created by the link has been auto-disabled. **To review and manage Notification/Webhook Links:** 1. Open the **Notification rules** page and select the **Name** hotlink text of the Notification rule you want to review and manage a Notification/Webhook link for. The **Notification rule details** page opens. 2. Scroll down the page to the **Linked webhooks** panel. 3. Select the **Details** icon for the link you want to review and manage: The **Notification rule / outgoing webhook link** modal appears: Notifications60 * In this example, the modal for an **INACTIVE** Notification/Webhook link has been opened and an information banner gives the reason why - because the Notification rule configuration is set as globally inactive. * If you want to change the status, select **Update**. The **Edit** page of the Notification opens. * Under **Notification rule settings**, enable the **Active** switch and select **Update notification rule**. You are returned to the **Notification rules** page where the Notification now shows as **ACTIVE**. 4. If you want to set up an Organization user to receive an email notification when the Notification Webhook integration created by the link is auto-disabled, use the **Disabled notification users** drop-down to select the user: Notifications61 **Tip: When is a Notification Webhook Integration Auto-Disabled?** See [Integration Run Error Handling and Alerts](/guides/integrations/setting-up-integrations/creating-and-managing-integration-configurations#integration-run-error-handling-and-alerts) for details. 5. Select **Update**. A message appears advising that the link options were updated successfully. ## Managing Notification Rules **To manage Notification Rules:** 1. In the Console, select **Alerts and notifications**. The **Alerts** page opens. 2. Select **Notification rules**. The **Notification rules** page opens. 3. If you want to make any editing changes to a Notification, select **Edit**: 4. Make your changes, and select **Update**. 5. If you want to view details of the Notification, select the **Name** hotlink text. The **Notification rules details** page opens. 6. If you want to delete a Notification rule, select **Delete**: A confirmation dialog appears. 7. Select **Yes** to confirm the deletion. ## Reviewing Events for Notifications When you have created and configured Notifications rules for system Events and enabled them as active in your production environment, you can review any triggered Notifications and the Events that triggered them. **To review Events for Notifications:** 1. In the Console, select **Alerts and notifications**. The **System alerts** pages opens. 2. Select **Notifications**. The **Notification rules** page opens. 3. Select the **Name** hotlink text of the Notification that you want to check for triggering Events: Notifications62 The **Notification rule details** page opens. 4. Scroll down the page and the **Latest events** panel lists recent Events which triggered the Notification giving the **Date** for each triggering **Event** for the Notification rule: ## Example Notification Payload The following is an example of the payload sent on a webhook when a Notification is triggered. The example is for a Notification triggered by a `billing.bill.created` Event: ```json theme={null} { "orgId": "30de0543-b025-4e4f-87cb-76edfcb6a37f", "entityId": "ee2b80ed-a064-42cb-8bc8-4ecee84b10f3", "requestType": "NOTIFICATION", "name": "Webhook Create", "description": "Webhook bill create", "sourceEntityId": "384973f7-c83a-45d2-a509-26bf8c7a7d3b", "event": { "new.lastModifiedBy": "m3ter_server", "new.orgId": "30de0543-b025-4e4f-87cb-76edfcb6a37f", "new.dtCreated": "2024-05-17T14:28:14.511170Z", "new.billJobId": "4eec6950-2c32-43cd-ac1c-b1d29dc5c985", "new.endDateTimeUTC": "2024-05-01T00:00:00Z", "new.startDate": "2024-04-01", "new.dtLastCalculated": "2024-05-17T14:28:13.911668Z", "new.id": "384973f7-c83a-45d2-a509-26bf8c7a7d3b", "new.currency": "USD", "new.startDateTimeUTC": "2024-04-01T00:00:00Z", "new.billingFrequency": "MONTHLY", "new.accountCode": "customer_ing", "new.billDate": "2024-05-01", "new.createdBy": "m3ter_server", "new.accountId": "a5ef843e-a0ce-4e56-8ede-9345591aae86", "new.status": "PENDING", "new.billFrequencyInterval": 1, "new.endDate": "2024-05-01", "new.version": 1, "new.locked": false, "new.statementUpdateOnly": false, "new.timezone": "UTC", "new.dueDate": "2024-05-15", "new.dtLastModified": "2024-05-17T14:28:14.511170Z" }, "accountId": "a5ef843e-a0ce-4e56-8ede-9345591aae86", "originalEventId": "90dc31eb-3ee4-4e7d-a7c8-18312505ed5e", "eventName": "billing.bill.created", "notificationEventId": "2dd1741c-6d9e-4439-b55d-91876ebd6a55", "notificationCode": "webhook_create", "entityType": "Notification" } ``` **NOTE:** `entityId`, `sourceEntityId`, and `event`: * `entityId` is the ID of the Notification Configuration that was used to send a Notification to a webhook. * `sourceEntityId` is the ID of the entity that the Notification is about. For example, for a `configuration.account.updated` Event, `sourceEntityId` would be the ID of the Account. * `event` contains the details of the Event that triggered the Notification. # Example - Notification Setup for Commitment Updated Event Source: https://docs.m3ter.com/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event This topic provides a worked example of how to use API calls to set up a Notification Rule for triggering a Notification only if the specific conditions defined in the Notification Rule are satisfied: * Any Commitment updated Event where the Commitment amount drops below 10% of the original amount. When an Event of this type occurs in the system and which satisfies this condition, a Notification will be sent to the configured Destination. You can follow the set up in three steps: * [Step 1: Create a Notification Rule](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event#step-1-create-a-notification-rule) * [Step 2: Create Integration Destination](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event#step-2-create-integration-destination) * [Step 3: Create Integration Configuration for Notification](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event#step-3-create-integration-configuration-for-notification) **Tip: Setting Up Notifications for Events in Console?** You can also set up Notification Rules that reference a specific system Event and then link these Rules to webhook integration Destinations you've created to complete the Notification configuration. See the [Linking Notification Rules to Destinations](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#linking-notification-rules-to-destinations-to-create-notification-integration-configurations) section in the [Creating, Managing, and Reviewing Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications) topic. ## Step 1: Create a Notification Rule `POST at https://api.m3ter.com/organizations/{orgId}/notifications/configurations/` In this example, we’ve set up a rule for triggering a Notification based on a `configuration.commitment.updated` Event, which includes a calculation referencing Event Fields to define the precise conditions for triggering the Notification. The calculation means the Notification will be triggered when the amount spent from the commitment drops below 10% of the total amount. ```json theme={null} { "name": "Commitment has under 10% remaining", "description": "Commitment amount fell below 10%", "eventName": "configuration.commitment.updated", "calculation": "(new.amountSpent >= ((new.amount*90)/100)) AND ((old.amountSpent <= ((old.amount*90)/100)) OR (old.amountSpent == null))", "code" : "under_10_percent_", "active": true } ``` **Note:** The response schema for this call returns a unique “id” for the notification rule we’ve set up ## Step 2: Create Integration Destination `POST at: https://api.m3ter.com/organizations/{orgId}/integrationdestinations/webhooks` ```json theme={null} { "url":"https://xbmnbkwece.execute-api.eu-west-2.amazonaws.com/dev/send_email" "version": 1, "credentials": { "version": 1, "type": "M3TER_SIGNED_REQUEST", "apiKey": "apiKey", "secret": "some secret" } } ``` With this call, credentials are done in the same call as the Destination. In the response schema, the unique “id” for Integration Destination is returned. ## Step 3: Create Integration Configuration for Notification `POST at: https://api.m3ter.com/organizations/{orgId}/integrationconfigs` ```json theme={null} { "entityType": "Notification", "entityId": "id of the notification rule", "destination": "Webhook", "destinationId": "id of the destination", "configData": {}, "credentials": { "type" : "M3TER_SIGNED_REQUEST" } } ``` For this call: * We use the `“id”` of the Notification Rule returned for the `POST` call we sent in [Step 1](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event#step-1-create-a-notification-configuration) as the value for the `“entityId”`. * We use the Integration Destination `“id”` returned for the `POST` call at [Step 2](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event#step-2-create-integration-destination) as the value for the `“destinationId”`. # Key Concepts and Relationships Source: https://docs.m3ter.com/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships This topic sets out the Events and Notifications framework and introduces the main configuration concepts, objects, and their roles: * [Relationship Diagram](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#relationship-diagram) * [Events and Event Types - Key Points](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#events-and-event-types-key-points) * [Types of Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#types-of-events) * [Notification Rule](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#notification-rule) * [Notification Webhook Integration - Outgoing Webhooks and Credentials](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#notification-webhook-integration-outgoing-webhooks-and-credentials) * [Creating Calculations](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#creating-calculations) * [Events Permissions](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#events-permissions) ## Relationship Diagram The following diagram shows the key concepts and their relationships in the Events and Notifications framework: You can exploit this framework to quickly set up Notifications based on system Events. The following sections explain the role of the essential configuration components and how they are designed to work together. ## Events and Event Types - Key Points Here are some key points to note regarding *Events* and *Event Types*: * **Events are tokens of Event Types**. Any Notifications you set up act on actual **Events**. * **Events are system generated**. For example, when a new Prepayment/Commitment is created for an Account. * **Events Types are available for main configuration and billing entities**. For each entity three Event Types are available - when the entity is created, updated, or deleted. * **Each Event Type offers a number of fields**. By referencing these Event fields, you can exploit a wide-ranging flexibility when you define the conditions on which a Notification will be triggered by an Event. * **Real-time processing**. Events are evaluated in real-time. * **Evolving schemas**. The Events system doesn’t statically hold schemas, they are dynamically updated assuming forward compatibility is kept. * **Events are time-bound**. Events in m3ter are time-bound and are deleted 28 days after creation. This includes all system Events, Notification Events, Integration error Events, Ingestion validation failure Events, Data Export job failure Events, and Scheduled Events. ## Types of Events Events fall into several broad categories: * [Configuration Entity Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#configuration-entity-events) * [Billing Entity Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#billing-entity-events) * [Integration Events](#integration-events) * [Integration Error Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#integration-error-events) * [Ingest Failure Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#ingest-failure-events) * [Data Export Job Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#data-export-job-events) * [Scheduled Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#scheduled-events) ### Configuration Entity Events **Event Types** are available for each of the following m3ter *configuration* entities. Three events are associated with each entity - whenever an entity is *created*, *deleted*, or *updated*: * Account * Account Plan * Aggregation * Alert * Commitment * Compound Aggregation * Contract * Counter * Counter Pricing * Credit Reason * Custom Field * Lookup Table * Lookup Table Revision * Lookup Table Revision Data Job * Meter * Meter Group * Organization * Organization Configuration * Plan * Plan Group * Plan Group Link * Plan Template * Pricing * Pricing Band * Product * Transaction Type ### Billing Entity Events **Event Types** are available for each of the following m3ter *billing* entities. Three events are associated with each entity - whenever a billing entity is *created*, *deleted*, or *updated*: * Balance * Balance Amount * Bill * Bill Config * Bill Job * Charge * Counter Adjustment * Scheduled Balance Charge * Scheduled Balance Transaction * Statement Job ### Integration Events **Event Types** are available for the *External Mapping* entity - whenever one is created, updated, or deleted. ### Integration Error Events **Event Types** are available for certain kinds of *error* that can occur for an integration: * authentication * disabled * missing account mapping * perform * validation **Tip: Reviewing Integration Error Events?** When any of these types of integration error Events are generated, they are listed on the **Integrations>Integration Events** page. For more details, see [Reviewing and Resolving Integration Events](/guides/integrations/setting-up-integrations/reviewing-and-resolving-integration-events). ### Ingest Failure Events A usage data ingest *failure* **Event Type** is available for when a usage measurement you submit to the m3ter platform fails to ingest properly: * ingest validation **Tip: Reviewing Ingest Failure Events?** When this type of ingest failure Event is generated, it is listed on the **Usage>Ingest Events** page. For more details, see [Reviewing and Resolving Ingest Events](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events). ### Data Export Job Events Data export job *success* and *failure* **Event Types** are available for when a data export job succeeds or fails to complete: * data export job **Tip: Reviewing Data Export Job Events?** When either one of these types of data export job Event is generated, it is listed on the **Export jobs** page. For more details, see [Reviewing Export Jobs](/guides/data-exports/reviewing-export-jobs). ### Scheduled Events Scheduled Events are custom Events that reference Date/Time fields belonging to configuration and billing entities. They are specific to an Organization. See [Working with Scheduled Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events) for more details. ## Notification Rule A *Notification Rule* allows you to control when a Notification is triggered with reference to an Event. You can: * Include a *calculation* that references Event fields. This allows you to precisely define the conditions on which the Notification is triggered with respect to the Event. For example, send a Notification when a new Commitment is created for an Account and the commitment amount is equal to or greater than \$5000. See the following [Creating Calculations](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#creating-calculations) section for more details. * Select to *always fire the Notification*, and omit any calculation. This means the Notification will be triggered simply by the referenced Event occurring and with no further conditions having to be met. When you have created a Notification Rule, you can link it to an Outgoing Webhook to complete the Notification setup and create a *Notification Webhook Integration* - see the [following section](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#integration-destination-and-credentials). ## Notification Webhook Integration - Outgoing Webhooks and Credentials To complete a Notification setup, you must link a Notification Rule to an Outgoing Webhook as the endpoint for the Notification and to create a *Notification Webhook Integration*: * Currently, only the `M3TER_SIGNED_REQUEST` credentials format can be used as the authentication method used for connecting to a webhook. * If credentials are not required, then dummy values can be used. **Tip: More Details on Outgoing Webhooks?** See [Creating and Managing Outgoing Webhooks](/guides/integrations/setting-up-integrations/creating-and-managing-destinations). ## Creating Calculations The *calculations* you use in your Notification Rules can reference Event fields. This powerful capability sits at the heart of the Events and Notifications feature, giving you wide-ranging flexibility to define the precise conditions for sending Notifications: * A Notification calculation is a formula that will be evaluated to a **boolean**. * If the calculation evaluates to **true**, a Notification instance for the Event is created and is sent to the configured Outgoing Webhook. * You can reference numeric, string, and boolean Event fields in a calculation. * The fields you can use in a calculation are those returned in the response to the **List Events** API call: * `GET https://api.m3ter.com/organizations/{orgId}/events/fields` * See the [Event Fields](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls#event-fields) section of the [Object Definitions and API Calls](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls) topic for more details. * For details of the supported operators, variables, functions, and type casts for creating Notification calculations, see [m3ter Calculation Engine](/guides/m3ter-calculation-engine). ### Example Calculations * Only trigger the Notification for a single Account: * `new.accountId == "df41d216-XXXX-470f-YYYY-79b16059a96f"` * Trigger a Notification when the Amount Spent field (on a commitment) has exceeded 90%: * `(new.amountSpent >= ((new.amount*100)/90)) AND ((old.amountSpent <= ((old.amount*100)/90)) OR (old.amountSpent == null))` * Note that this has a check against the “old” value to ensure there is only 1 notification when crossing the 90% threshold. ## Events Permissions You can use the m3ter Permissions framework to create Permission Policies to allow users in your Organization to create, retrieve, update, or delete Events. Permissions for Events work in the normal way: * If a user has a deny Event Permission Policy assigned to them, they will not be able to see Events. * If a user has a deny Permission Policy for another entity assigned to them, for example deny Product, they will not be able to see Events associated with Products. See [Understanding, Creating, and Managing Permission Policies](/guides/organization-and-access-management/creating-and-managing-permissions) for more details. # Object Definitions and API Calls Source: https://docs.m3ter.com/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls This topic sets out in detail the objects that feature in the Events and Notifications framework. The relevant API calls you can use with each object are noted together with examples of object JSON schemas: * [Event Types](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls#event-types) * [Event Fields](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls#event-fields) * [Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls#events) * [Notification Rule](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls#notification-rule) * [Outgoing Webhooks and Credentials](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls#outgoing-webhooks-and-credentials) * [Integration Configuration for Notification](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls#integration-configuration-for-notification) **Tip: API Calls?** Please see the [Events](/api/events/introduction), [Notifications](/api/notifications/introduction), and [Integrations](/api/integrations/introduction) sections of our API Reference Docs for relevant API calls. ## Event Types *Events Types* cover: * Many of the common configuration and billing objects: * For each object there are three Event Types - for when the configuration or billing object is **created**, **updated**, or **deleted**. * The integration **External Mapping** entity - whenever one is **created**, **updated**, or **deleted**. * Some integration errors. These are surfaced in the Console on the **Integrations>Events** page. See [Reviewing and Resolving Integration Events](/guides/integrations/setting-up-integrations/reviewing-and-resolving-integration-events). * Some ingest validation failures. These are surfaced in the Console on the **Usage>Ingest Events** page. See [Reviewing and Resolving Ingest Events](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events). * Data export job failures. You can return these using the [List EventResponse](/api/events/list-eventresponse) API endpoint. See [Following-Up on Failed Export Jobs](/guides/data-exports/reviewing-export-jobs#following-up-on-failed-export-jobs) for more details. * Scheduled Events you can set up for your specific Organization. See [Working with Scheduled Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events). ### API Call To obtain a list of the Event Types currently available for configuring Notifications, you can use the [List Notification Events](/api/events/list-notification-events) API call: `GET https://api.m3ter.com/organizations/{orgId}/events/types` The return lists the available Event Types: ```json theme={null} { "events": [ "billing.balance.created", "billing.balance.deleted", "billing.balance.updated", "billing.balanceamount.created", "billing.balanceamount.deleted", "billing.balanceamount.updated", "billing.bill.created", "billing.bill.deleted", "billing.bill.updated", "billing.billconfig.created", "billing.billconfig.deleted", "billing.billconfig.updated", "billing.billjob.created", "billing.billjob.deleted", "billing.billjob.updated", "billing.charge.created", "billing.charge.deleted", "billing.charge.updated", "billing.counteradjustment.created", "billing.counteradjustment.deleted", "billing.counteradjustment.updated", "billing.scheduledbalancecharge.created", "billing.scheduledbalancecharge.deleted", "billing.scheduledbalancecharge.updated", "billing.scheduledbalancetransaction.created", "billing.scheduledbalancetransaction.deleted", "billing.scheduledbalancetransaction.updated", "billing.statementjob.created", "billing.statementjob.deleted", "billing.statementjob.updated", "configuration.account.created", "configuration.account.deleted", "configuration.account.updated", "configuration.accountplan.created", "configuration.accountplan.deleted", "configuration.accountplan.updated", "configuration.aggregation.created", "configuration.aggregation.deleted", "configuration.aggregation.updated", "configuration.alert.created", "configuration.alert.deleted", "configuration.alert.updated", "configuration.commitment.created", "configuration.commitment.deleted", "configuration.commitment.updated", "configuration.compoundaggregation.created", "configuration.compoundaggregation.deleted", "configuration.compoundaggregation.updated", "configuration.contract.created", "configuration.contract.deleted", "configuration.contract.updated", "configuration.counter.created", "configuration.counter.deleted", "configuration.counter.updated", "configuration.counterpricing.created", "configuration.counterpricing.deleted", "configuration.counterpricing.updated", "configuration.creditreason.created", "configuration.creditreason.deleted", "configuration.creditreason.updated", "configuration.customfield.created", "configuration.customfield.deleted", "configuration.customfield.updated", "configuration.lookuptable.created", "configuration.lookuptable.deleted", "configuration.lookuptable.updated", "configuration.lookuptablerevision.created", "configuration.lookuptablerevision.deleted", "configuration.lookuptablerevision.updated", "configuration.lookuptablerevisiondatajob.created", "configuration.lookuptablerevisiondatajob.deleted", "configuration.lookuptablerevisiondatajob.updated", "configuration.meter.created", "configuration.meter.deleted", "configuration.meter.updated", "configuration.metergroup.created", "configuration.metergroup.deleted", "configuration.metergroup.updated", "configuration.organization.created", "configuration.organization.deleted", "configuration.organization.updated", "configuration.organizationconfig.created", "configuration.organizationconfig.deleted", "configuration.organizationconfig.updated", "configuration.plan.created", "configuration.plan.deleted", "configuration.plan.updated", "configuration.plangroup.created", "configuration.plangroup.deleted", "configuration.plangroup.updated", "configuration.plangrouplink.created", "configuration.plangrouplink.deleted", "configuration.plangrouplink.updated", "configuration.plantemplate.created", "configuration.plantemplate.deleted", "configuration.plantemplate.updated", "configuration.pricing.created", "configuration.pricing.deleted", "configuration.pricing.updated", "configuration.pricingband.created", "configuration.pricingband.deleted", "configuration.pricingband.updated", "configuration.product.created", "configuration.product.deleted", "configuration.product.updated", "configuration.transactiontype.created", "configuration.transactiontype.deleted", "configuration.transactiontype.updated", "dataexport.job.failure", "dataexport.job.success", "ingest.validation.failure", "integration.authentication.error", "integration.disabled.error", "integration.externalmapping.created", "integration.externalmapping.deleted", "integration.externalmapping.updated", "integration.missingaccountmapping.error", "integration.perform.error", "integration.validation.error" ] } ``` * Note that if you've set up any Scheduled Events for your Organization, these will be included in the response to this call. The format for this type of Event is: * **scheduled**.*\*.*\* * For example: `"scheduled.bill.endDateEvent"` * See [Working with Scheduled Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events) for more details. ## Event Fields *Fields* are available for each Event Type to make any calculations on the schema dynamic and forward compatible. ### API Call To obtain a list of the fields for an Event Type, you can use the [List Event Fields](https://docs.m3ter.com/api/events/list-event-fields) call: `GET https://api.m3ter.com/organizations/{orgId}/events/fields` #### Query Parameters `eventName (String)` - the name of the Event Type to filter by. Here we've queried to get the field for the `configuration.commitment.created` Event Type - `new` represents the attributes the new object has: ```json theme={null} { "events": { "configuration.commitment.created": { "new.accountCode": "string", "new.accountId": "string", "new.accountingProductId": "string", "new.amount": "double", "new.amountFirstBill": "double", "new.amountPrePaid": "double", "new.amountSpent": "double", "new.billEpoch": "string", "new.billingInterval": "int", "new.billingOffset": "int", "new.billingPlanId": "string", "new.commitmentFeeBillInAdvance": "boolean", "new.commitmentFeeDescription": "string", "new.commitmentUsageDescription": "string", "new.contractId": "string", "new.currency": "string", "new.customFields": "map", "new.endDate": "string", "new.feeDates": "array", "new.id": "string", "new.overageDescription": "string", "new.overageSurchargePercent": "double", "new.productIds": "array", "new.startDate": "string" } } } ``` Here we’ve queried to get the fields for the `configuration.commitment.updated` Event Type, where `new` is the updated object and `old` is the previous state of the object: ```json theme={null} { "events": { "configuration.commitment.updated": { "new.accountCode": "string", "new.accountId": "string", "new.accountingProductId": "string", "new.amount": "double", "new.amountFirstBill": "double", "new.amountPrePaid": "double", "new.amountSpent": "double", "new.billEpoch": "string", "new.billingInterval": "int", "new.billingOffset": "int", "new.billingPlanId": "string", "new.commitmentFeeBillInAdvance": "boolean", "new.commitmentFeeDescription": "string", "new.commitmentUsageDescription": "string", "new.contractId": "string", "new.currency": "string", "new.customFields": "map", "new.endDate": "string", "new.feeDates": "array", "new.id": "string", "new.overageDescription": "string", "new.overageSurchargePercent": "double", "new.productIds": "array", "new.startDate": "string", "old.accountCode": "string", "old.accountId": "string", "old.accountingProductId": "string", "old.amount": "double", "old.amountFirstBill": "double", "old.amountPrePaid": "double", "old.amountSpent": "double", "old.billEpoch": "string", "old.billingInterval": "int", "old.billingOffset": "int", "old.billingPlanId": "string", "old.commitmentFeeBillInAdvance": "boolean", "old.commitmentFeeDescription": "string", "old.commitmentUsageDescription": "string", "old.contractId": "string", "old.currency": "string", "old.customFields": "map", "old.endDate": "string", "old.feeDates": "array", "old.id": "string", "old.overageDescription": "string", "old.overageSurchargePercent": "double", "old.productIds": "array", "old.startDate": "string" } } } ``` Note that in contrast to a new Event, an updated Event contains fields for both `new` and `old` values, where the `old` field values are those from the previous version and `new` are the updated version values. Correspondingly, if you query for `configuration.commitment.deleted` Event, the response will show only `old` field values, which are the values at point of deletion. **Warning:** `customFields`**show!** Some Event types will show `customFields` even though the specific billing or configuration object the Event is for doesn't yet have the custom fields functionality implemented. For these Events, their `customFields` values will not be populated until such time as the custom fields functionality is implemented for them. ## Events *Events* are instances of available Event Types. They describe a state change in the system. ### API Call You can use the [List Event Response](/api/events/list-eventresponse) call to obtain a list of all Events and apply a filter or `GET` by id. #### Query Parameters * `eventName (String)` -  the name of the Event to filter by. * `notificationId (String)` -  the notification id to filter by. * `accountId (String)` -  the account Id that generated the Event to filter by. * `eventType (String)` -  the name of the Event to filter by. * `notificationCode (String)` -  the code of the notification to filter by. * `resourceId (String)` -  the id of the resource that triggered the Event to filter by. * `ids(String)` -  List of ids to filter by. **NOTE:** cannot be used with other filters. * `nextToken (String)` -  next page token. * `pageSize (int)` - page size. For example, if we query by `eventName`: `GET https://api.m3ter.com/organizations/{orgId}/events?eventName=configuration.commitment.created` In this example, we see that there is a single `configuration.commitment.created` Event for the Organization: ```json theme={null} { "data": [ { "id": "9cb46d85-7cb6-4637-80a1-d4ec38e4ab30", "eventName": "configuration.commitment.created", "eventTime": "2022-10-28T13:54:49.557Z", "m3terEvent": { "eventData": { "newDto": { "commitmentFeeDescription": "", "endDate": "2024-12-31", "billingInterval": 1, "orgId": "396d788d-5174-XXXX-9d69-YYYY4671fc33", "overageSurchargePercent": 5.0, "overageDescription": "", "currency": "USD", "id": "480d317e-2030-416b-b64b-c07577c418b4", "amountSpent": 0.0, "accountCode": "doetech_premium", "amount": 15000.0, "billingOffset": 0, "lastModifiedBy": "USER_810e3a43-XXXX-4dab-YYYY-470977405b58", "billingPlanId": "0409e75a-8a87-43de-aa58-fc6ec823ce37", "version": 1, "accountId": "1cf2a754-476c-498c-b05a-7d41abfc404d", "dtCreated": "2022-10-28T13:54:48.081781Z", "amountPrePaid": 0.0, "productIds": [ "bec371ef-dbad-4e73-a56a-dadecff2287c" ], "createdBy": "USER_810e3a43-XXXX-4dab-YYYY-470977405b58", "contractId": "68595d6d-261f-496b-bf88-51fc7d2b5ccc", "commitmentUsageDescription": "", "startDate": "2023-01-01", "dtLastModified": "2022-10-28T13:54:48.081781Z" } }, "eventTime": "2022-10-28T13:54:48.087Z", "eventName": "configuration.commitment.created" } } ], "nextToken": "MTY2MDMxNTYyNjQ1NCNERUxJTSNhNTIxMDQ0Zi0zMzA0LTQ0ZjEtYTBkYy05YzQyMjIzZGFhMWE=" } ``` ## Notification Rule Enables you to set up the rules for when a Notification gets triggered on the basis of an Event. ### API Calls You can use the API calls documented in the [Notifications](/api/notifications/introduction) section of our API Reference Docs - supports `POST`, `PUT`, `DELETE`, `GET `by id, or `GET` list verbs. Here's an example schema: ```json theme={null} { "id": "uuid", "version": 1, "name": "Commitment has under 10% remaining", "description": "Commitment amount fell below 10%", "eventName": "configuration.commitment.updated", "calculation": "(new.amountSpent >= ((new.amount*100)/90)) AND ((old.amountSpent <= ((old.amount*100)/90)) OR (old.amountSpent == null))", "code" : "under_10_percent", "active": true } ``` Some points to note for the Notification Rule schema: * `calculation` - is the key part, determining whether or not an Event will trigger a Notification. Please see the [Creating Calculations](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#creating-calculations) section for more details on working with calculations for Notifications. * `active` - allows you to temporarily disable a Notification. * `eventName` - the calculation will be applied only on these specific events. To apply the same calculation over multiple events, multiple notification rules need to be created. **Tip: Creating Notification Rules in the Console?** For details on how to create and configure Notification Rules in the Console and go on to link Rules to integration Destinations to create Notification Integration Configurations, see the following topic in this section: [Creating, Managing, and Reviewing Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications). ## Outgoing Webhooks and Credentials You can specify the endpoint for a Notification using an Outgoing Webhook. You can also specify credentials to be used with the Outgoing Webhook. Currently, only the `M3TER_SIGNED_REQUEST` credential format is supported: * `apiKey` - secret that will always be passed in “X-m3ter-apikey” header when the webhook is called. * `Secret` - secret that never leaves m3ter servers. Used as key to compute a SHA256 hash over: url + "|" + queryString + "|" + apiKey + "|"  + timestamp + "|" + body. * The timestamp will be passed in the request at “X-m3ter-timestamp”. ### API Calls You can use the webhooks Destination calls documented in the [Integrations](/api/integrations/introduction) section of our API Reference Docs - supports all `POST`, `PUT`, `DELETE`, `GET `by id or `GET `list verbs. For example [Create Webhook Destination](/api/integrationdestinations/create-webhook-destination): `POST https://api.m3ter.com/organizations/{orgId}/integrationdestinations/webhooks` Here's an example of the Destination schema: ```json theme={null} { "version": null, "url":"https://someurl.io", "credentials": { "version": null, "type": "M3TER_SIGNED_REQUEST", "apiKey": "apiKey", "secret": "a secret" // Only visible in first call } } ``` **Important!** As a security safeguard, you won’t be able to retrieve the secret once you’ve saved the credential. **Tip: Creating and Managing Outgoing Webhooks in the Console?** For details on how to create and configure Outgoing Webhooks in the Console and how to link them to Notifications and create Notification Integration configurations, see [Creating and Managing Outgoing Webhooks](/guides/integrations/setting-up-integrations/creating-and-managing-destinations). ## Integration Configuration for Notification When you connect a Notification Rule of entityType (=’Notification’) to an Outgoing Webhook as destination, you set up a *Notification Webhook* *Integration*. ### API Calls You can use the IntegrationConfig calls documented in the [Integrations](/api/integrations/introduction) section of our API Reference Docs - supports all `POST`, `PUT`, `DELETE`, `GET `by id or `GET `list verbs. Here's an example: ```json theme={null} { "entityType":"Notification", "entityId":"be2b3082-f660-42b0-8895-33fdebcce73c", "destination":"Webhook", "destinationId":"ff1767ca-5871-49dd-82c1-48fc78610d72" } ``` We use the ID from the notification created in the Notification Rule step, and the ID of the Integration Destination created. # Working with Scheduled Events Source: https://docs.m3ter.com/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events You can use API calls to create, configure, and manage *Scheduled Event Configurations*. Scheduled Event Configurations define custom Event types that reference Date/Time fields belonging to configuration and billing entities. They therefore provide you with an extra degree of flexibility over and above system-generated Events for setting up Notifications based on Events: * When you've created a Scheduled Event Configuration, it becomes available as an Event type to set up Notifications for in the same way as you can for system-generated Event types. * You use an `offset` parameter when you create a Scheduled Event Configuration, which allows you to specify in days after a Date/Time field when Events of that type will occur. * For example, you might want to set up a Scheduled Event Configuration that references the `endDate` field for Bill entities and then specify an `offset` of ten days. This means an Event of that type will occur ten days after a Bill end date. Using this custom Scheduled Event as a basis, you can then set up a Notification that triggers on the Event occurring, and which can then alert your Billing Operations team to check that the Bill has been settled. This topic provides a worked example showing how to use an API call to create and configure a Scheduled Event Configuration and explains how to go on to set up a Notification based on the new custom Scheduled Event: * [Creating a Scheduled Event Configuration](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events#creating-a-scheduled-event-configuration) * [Creating Notifications for Scheduled Events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events#creating-notifications-for-scheduled-events) **Tip: API Reference for Scheduled Events API calls?** Details of all API calls used in this topic can be found in the [Scheduled Event Configurations](/api/scheduledeventconfigurations/introduction) section of our API Reference documentation. ## Creating a Scheduled Event Configuration This section uses the [Create ScheduledEventConfiguration](/api/scheduledeventconfigurations/create-scheduledeventconfiguration) API call to create an example custom Scheduled Event Configuration: * We'll reference the `endDate` field for Bill entities to create the Event Configuration. * We'll use the `offset` request body parameter to set an offset of 5 days. * Our custom Scheduled Event will therefore occur 5 days after the end date of Bills in our Organization. **Note:** For this example, we use Postman to submit API Calls and the request body JSON is given for you to copy out directly to your clipboard. **To create a Scheduled Event Configuration:** 1. First, use a `POST` call to obtain a Bearer Token for the Service User you want to use to create a Scheduled Event Configuration. See [Service Authentication](/guides/authenticating-with-the-platform/service-authentication). 2. Make a `POST` [Create ScheduledEventConfiguration](/api/scheduledeventconfigurations/create-scheduledeventconfiguration) call: Here is the request body JSON: ```json theme={null} { "name": "scheduled.bill.enddate", "entity": "Bill", "field": "endDate", "offset": 5 } ``` * Note that for the `name` request parameter, you must use the following format: * **scheduled**.*\*.*\* If the custom Scheduled Event has been created successfully, you'll receive a 200 response similar to this: You've now created a Scheduled Event Configuration for the current Organization, which you can use as the basis for setting up a Notification. **Tip: Check for Scheduled Event Configurations?** If you want to check for the Scheduled Event Configurations that have been created for your Organization, you can use the [List ScheduledEventConfigurations](/api/scheduledeventconfigurations/list-scheduledeventconfigurations) API call. ## Creating Notifications for Scheduled Events If you've created a Scheduled Event Configuration for your Organization, you can now create a Notification based on it in the same way that you can create Notifications based on a system-generated Event. For full details on how to create a Notification Rule based on an Event, please see the [Creating, Managing, and Reviewing Notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications) topic. If you go to **Notifications>Create notification rule** in the Console, on the **Create** page under **Notification rule settings** your new custom Scheduled Event will show for selection in the **Event** drop-down for the same name as you used to create it. For the example shown in the [previous section](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events#creating-notifications-for-scheduled-events) of this topic, this Event name is **scheduled.bill.enddate**, and you can start to enter this name to filter the drop-down Event list: Scheduled Events7 # Viewing and Managing System Alerts Source: https://docs.m3ter.com/guides/alerts-events-and-notifications/viewing-and-managing-alerts System Alerts are automatically generated for your Organization in m3ter, both to inform you about key events and to notify you of any issues or errors that have occurred: * **INFO**. Information about key events. * **WARN**. Warnings about events. * **ERROR**. Errors for events with information about cause of error where possible. New Alerts are listed on your [Dashboard](/guides/getting-started/quick-start-worked-example) and from there you can open the main **Alerts** page to view the full list and follow up. This topic explains how to view and open Alerts, follow up on them, and manage their status. * [Viewing, Opening, and Following Up System Alerts](/guides/alerts-events-and-notifications/viewing-and-managing-alerts#viewing-opening-and-following-up-system-alerts) * [Managing System Alerts](/guides/alerts-events-and-notifications/viewing-and-managing-alerts#managing-system-alerts) **Note: System Alerts also generate Events.** For some Alerts corresponding Events are generated. For example, an **API\_INGEST** Alert might be generated for a missing Meter field but a corresponding **ingest.validation.failure** Event for a *MissingField* will also be listed on the **Ingest Events** page. You can use this ingest failure Event as an alternative way to follow-up on and troubleshoot the issue. See [Reviewing and Resolving Ingest Events](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events). ## Viewing, Opening, and Following Up System Alerts The **Your Alerts** panel on the Console Dashboard shows new Alerts generated for your Organization. You can quickly view the full listing, open an Alert, and view details to follow up. **To view, open, and follow up Alerts:** 1. Open your **Dashboard**. The **Your Alerts** panel lists the number and types of Alerts triggered for your Organization: Alerts12 2. Select **View all**. Alternatively, select **Alerts and Notifications**. The **System alerts** page opens: Alerts15 You can read off information about an Alert: * **Status**. Shows if the Alert is **NEW** or **IN PROGRESS**. * **Dates**. When the Alert was created and last updated. * **Severity**. Whether the Alert is **INFO**, **WARN**, or **ERROR** severity level. * **Type**. The type of event which is the source of the Alert. * **Description**. A short description of the Alert. 3. To open an Alert for more details, select the **Details** button at the right side of the row: Alerts14 An **Alert Details** dialog opens: In this example, we've opened an **ERROR** Alert for **BILLING** where a Bill has failed to create. Under **Details**, the Account for which a Bill failed and the cause of failure are given - in this case a required currency conversion rate between pricing currency for the Account and the configured billing currency was not found. Where possible, Alerts will provide **Details** that help you to follow up and investigate the Alert to resolve and close it. **Tip: Following up on failed Bill Alerts?** For more details on following up and resolving failed Bill Alerts, see [Troubleshooting Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills). 4. Select **Close** to return to the main **Alerts** page. ## Managing System Alerts When you open to view an Alert and follow up on it, you can manage your workflow as you investigate and resolve it. **To view, open, and follow up Alerts:** 1. Open the new Alert you want to view and follow up - see the [previous section](/guides/alerts-events-and-notifications/viewing-and-managing-alerts#viewing-opening-and-following-up-alerts). On the **Alert Details** dialog you can review the **Details** given about the cause of the Alert and decide whether or not you want to follow up the Alert to resolve it. 2. If you do, take note of the information given about the cause of the Alert and then use the **Status** drop-down to change the Alert's status from **New** to **In progress** and select **Update Status**: Alerts16 3. Select **Close**. The **Alert Details** dialog closes and on the **Alerts** page the Alert now shows a **STATUS** of **IN PROGRESS**. 4. When you have completed your follow up on the Alert and resolved it, on the **Alerts** page, you can select **Delete**: A confirmation dialog appears. 5. Select **Yes** to confirm that you want to delete the Alert. # Authentication Source: https://docs.m3ter.com/guides/authenticating-with-the-platform Discover m3ter's authentication options: Username/Password for Console access, m3ter SSO, and Bearer Token for API calls. The m3ter platform supports several authentication methods: * Username/Password authentication. This method is used for log in to the m3ter Console. **Important Note: Login Email is Case Sensitive!** * Please note that your login email address is case-sensitive. This means that `example.user@acme.com` and `Example.User@acme.com` are treated as two different logins, even though they appear similar. * *Always double-check* the capitalization of your email address when logging in. * Service authentication using a Bearer Token for API calls. This method is used for programmatic access via API calls. * m3ter Single Sign-On. This method allows users with federated identities in different Identity Providers (IdPs) to sign into m3ter. These authentication methods allow different types of user to access to the m3ter platform: * **Users** represent the *people* you want to grant access to your Organization in m3ter. Authentication by **Users** can be performed: * With Username/Password login credentials to authenticate and gain access to the Console. * **Service Users** represent the *automated processes* you want to grant access to your Organization. **Service Users** will use service authentication to gain access to the m3ter platform. **Tip: More on User Types?** For more details on the types of user supported in m3ter, see [Managing your Users](/guides/organization-and-access-management/managing-users). To support these two authentication methods for different types of user, we maintain two authorization flows: * An *Authorization Code* flow, which controls access for Users. * A *Client Credentials* flow, which controls API access for Service Users. **Tip: More Details on Auth Flows?** For more details see the [API Reference Docs Authentication](/api/authentication) page. This section explains how to authenticate with the m3ter platform: * [User/Password Authentication](/guides/authenticating-with-the-platform/user-password-authentication) * [m3ter Single Sign-On](/guides/authenticating-with-the-platform/m3ter-single-sign-on) * [Service Authentication](/guides/authenticating-with-the-platform/service-authentication) # m3ter Single Sign-On Source: https://docs.m3ter.com/guides/authenticating-with-the-platform/m3ter-single-sign-on m3ter Single Sign-On (SSO) allows users with federated identities that exist in different Identity Providers (IdPs) to sign into m3ter without having to manually provision new users/identities in m3ter's user pool. m3ter SSO supports SAML based Identity Providers (IdPs). The SAML 2.0 standard offers an XML-based protocol for the exchange of user security information, such as authentication and authorization details, between an identity provider and service provider. In this way, SAML enables the implementation of web-based SSO across security domains. To implement SSO, two main steps are required: * Set up your external SAML based Identity Provider application. * Request m3ter Support to create an Identity Provider in m3ter for you. When SSO has been implemented for your chosen SAML-based IdP, you might have to check how your users will be provisioned. This topic explains how SSO is implemented in m3ter for your chosen IdP and how to authenticate and log into the m3ter Console when your corporate federated identity has been set up: * [Setting Up an External Identity Provider](/guides/authenticating-with-the-platform/m3ter-single-sign-on#setting-up-an-external-identity-provider) * [Setting Up an Identity Provider in m3ter](/guides/authenticating-with-the-platform/m3ter-single-sign-on#setting-up-an-identity-provider-in-m3ter) * [User Provisioning for SSO](/guides/authenticating-with-the-platform/m3ter-single-sign-on#user-provisioning-for-sso) * [Using SSO to Sign Into the m3ter Console](/guides/authenticating-with-the-platform/m3ter-single-sign-on#using-sso-to-sign-into-the-m3ter-console) ## Setting Up an External Identity Provider Here are the settings you'll need when setting up your external IdP. ### SSO URL/Endpoint This is the Single Sign-On URL/Endpoint where the m3ter application receives the SAML assertion: > `https://m3ter.auth.us-east-1.amazoncognito.com/saml2/idpresponse` ### Audience URI This is the Entity ID of the m3ter application: > `urn:amazon:cognito:sp:us-east-1_9OJBvIFUw` ### Attributes Mappings The following table gives the mappings between the identity attributes used in the external provider and the ones used by m3ter that must be also configured: | External IdP Attribute | m3ter Attribute | | ---------------------- | --------------- | | \<> | name\* | | \<> | email\* | | \<> | firstName | | \<> | lastName | | \<> | groups | **Notes:** * \* means mapping is mandatory. * For `groups` mapping values, use comma-separated format. For example: `m3ter-staging-admin, m3ter-prod-read-only` ## Setting Up an Identity Provider in m3ter An Identity Provider can be created in m3ter for a single m3ter Organization or for all of the m3ter Organizations you use: * **Note:** This second step will be done for you by m3ter Support. * **Required IdP Details:** In order for us to create an Identity Provider for you, please provide the following details: * `name` - Unique name of IdP. * `metadataUrl` - URL for downloading the SAML metadata. * Note: For setting up Google SSO, we'll need the xml file. * `identifiers` - Globally unique values of IdP domains. Used to redirect users to corresponding external IdP login page. * `groupMappings` - Used to map groups in the external IdP to regular User Groups in m3ter. Ensures that SSO users belonging to groups in the IdP will be added to corresponding User Groups in m3ter, and inherit the Permission Policies assigned to those m3ter User Groups. ## User Provisioning for SSO Depending on how and when your IdP setup for m3ter SSO was implemented and other factors, such as the possibility of pre-existing m3ter users, you might have to check to ensure your users are properly provisioned for SSO inclusion and have the correct permissions assigned to them. Here are some explanatory notes and recommendations to help with this: * **Pre-existing Users**. If the user with the given email *already exists as a m3ter user*, then the federated identity will be attached to the existing user’s profile and the identity will have access to the same Organizations with the same permissions as before and will be allowed to login with both the m3ter credentials or using the external identity provider. * **New Users - Provisioning**. If the user with the given email *does not already exists as a m3ter user*, then the provisioning process will create a m3ter User and an OrgUser having no actual permissions for the configured Organization(s). * **New Users - Permissions**. As per the previous bullet point, the `OrgUser` now exists in the proper Organizations but can’t do anything because they lack permissions. There are two ways in which you can attach the required Permission Policies to them: * **Directly**. Attach the relevant Permission Policies to the `OrgUser`. See [Managing Users and Assigning Permission Policies](/guides/organization-and-access-management/managing-users/managing-users-and-assigning-permission-policies) for more details. * **Via** `groupMappings`. Ask m3ter Support to set up `groupMappings` at the IdP level so the `OrgUser` is automatically added to the corresponding m3ter User Groups at each login, hence inheriting the Permission Policies attached to the User Groups they then belong to in the Organization. ## Using SSO to Sign Into the m3ter Console When your corporate federated identity has been set up for SSO, you can use it to authenticate and sign into the m3ter Console. **Coming Soon: IdP-Initiated Logins!** IdP-initiated logins are not currently supported but will be added in the future. If you're interested in this feature, please get in touch with m3ter Support or your m3ter contact. **To authenticate with the platform:** 1. Open your browser and enter the URL for the m3ter environment. The m3ter **Sign in to your account** appears. The default presentation is for User/Password authentication: Llogin Dialog28 2. Instead, select **Single Sign-On (SSO)**. The sign in adjusts for SSO and **Sign in with Single Sign-On (SSO) using your Corporate ID** shows: L Login Dialog29 3. Enter your federated SSO corporate **Email Address** to authenticate and gain access to the Console: * If your account has been set up for access to a single Organization, you are taken directly to the m3ter Console **Dashboard** for the Organization. * If your account had been set up for access to more than one Organization, a **Select Organization** page opens. Select the Organization you want to access. The meter Console **Dashboard** for the selected Organization opens. **Important!** When you log in to the m3ter platform for the first time, please review our **Terms of Service** straightaway to ensure you accept them. To review these terms, click the **Documentation** link at the bottom of the Console's main navigation, and then select **Legal**. # Service Authentication Source: https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication When sending usage data to m3ter or accessing the API directly, you should always use *Service Authentication*. To control access to m3ter by Service Users, we implement the OAuth 2.0 Client Credentials Grant authentication flow. In accordance with this grant type, to use Service Authentication you must first obtain a Bearer Token to use for access when making API calls to the m3ter platform. You can use Basic Authentication to obtain a Bearer Token. For Basic Authentication, you will first need an api key and api secret. **OAuth 2.0 Client Credentials Grant?** If you are not already familiar with this type of client credentials authorization flow, we *strongly recommend* you consult the [OAuth 2.0 Clients Credentials documentation](https://datatracker.ietf.org/doc/html/rfc6749#section-4.4) first. This topic explains how to generate access keys and obtain Bearer Tokens for your Service Users. **Tip: Creating and Managing Service Users?** For more details, see [Creating and Configuring Service Users](/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users). ## Generating an API Key and Secret for a Service User You can generate an **Access Key id** and **Api Secret** for a Service User from within the m3ter Console: * When you first create a Service User, you can choose to generate access keys - see [Creating a Service User](/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users#creating-service-users). * Alternatively, you can open the details page for a Service User and generate access keys. You will likely want to rotate access keys at regular intervals as good security practice by making existing keys inactive and generating new ones. **To generate access keys for Service Users:** 1. On the **Settings>Access>Service Users** tab, select the **NAME** text of the **Service User**. The details page for the Service User opens. Any access keys generated for the Service User are listed in the **Access Keys** panel. 2. Select **Generate Access Key**. A **Generate Access Key** popup appears, which shows: * **Organization ID** * **Access Key ID** * **API Secret** You can copy each of these string values directly to your clipboard. **Important!** When you generate an access key for a Service User, you need to keep a record of the **Api Secret** before you close the popup, because this will only be shown once. 3. On the **Generate Access Key** popup, select **Close**. You are returned to the details page where the access key is listed as **ACTIVE** on the **Access Keys** panel. You can now use the **Access Key id** and **Api Secret** to authenticate the Service User to m3ter using the Basic Authentication method and obtain a Bearer Token for making subsequent API calls. 4. If you want to generate additional access keys, you can repeat steps 2 to 3. If you generate additional keys, you should take care to mark the old ones as **Inactive** - those for which you cannot remember or find the **Api Secret** or those no longer required due to rotation. **Tip: Rotating Access Keys?** Note that you can only create up to two Access Keys at a time - if you want to maintain continual rotation of your Service User Access Keys, after creating two you must first inactivate and remove one to create a new one. ## Obtaining a Bearer Token Using Basic Auth When you have generated access keys for a Service User as explained in the [previous section](/guides/authenticating-with-the-platform/service-authentication#generating-an-api-key-and-secret-for-a-service-user), you can use them with Basic Authentication to obtain a Bearer Token. This section gives some examples of how to obtain a Bearer Token using Basic Auth: * [Example Using Postman](/guides/authenticating-with-the-platform/service-authentication#example-using-postman) * [Example Using cmd Line](/guides/authenticating-with-the-platform/service-authentication#example-using-cmd-line) * [Example Using Python Script](/guides/authenticating-with-the-platform/service-authentication#example-using-python-script) **Tip: API Reference Docs?** When obtaining a Bearer Token for a Service User, please see the [Auth section](/api/auth/get-token) of our API Reference Docs. ### Example Using Postman This example uses Postman to obtain a Service User Bearer Token using Basic Authentication. **To obtain a Bearer Token using access keys in Postman:** 1. In your Postman workspace, select to make a **POST** call and enter this URL as the endpoint: > `https://api.m3ter.com/oauth/token` 2. On the **Authorization** tab, for **Type** select **Basic Auth** and copy and paste your Service User **Access Key id** for **Username** and **Api Secret** for **Password**: Authorization m3ter example 3. Select the **Body** tab and enter this JSON: post in m3ter authorisation code 4. Click **Send**. Your Bearer Token is generated and loaded into the **Body** tab of the **Response** panel in Postman as the `"access_token"` value: Bearer Token m3ter **Warning:** The Bearer Token is valid for 18000 seconds or 5 hours, after which time has elapsed, you will have to obtain a new one. You can now use your Bearer Token when making API calls to m3ter. **Important!** You must assign **Administrator** Permissions to a Service User to allow the user to make API calls to the Service. See [Adding Permissions to Service Users](/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users#adding-permission-policies-to-service-users). ### Example Using cmd Line This example uses the cmd line to obtain a Service User Bearer Token using Basic Authentication. **To obtain a Bearer Token using access keys from the cmd line:** 1. Encode the **Access  key id** and **Api Secret** as base64 and use the value as in Step 2: 2. Encode the **Access  key id** and **Api Secret** as base64 and use the value as `{{basicAuth}}` in Step 2: > `base64(${Access key id}:{Api Secret})` 2. Submit the following: ```bash theme={null} curl --location --request POST 'https://api.m3ter.com/oauth/token' \ --header 'Authorization: Basic {{basicAuth}}' \ --header 'Content-Type: application/json' \ --data-raw '{     "grant_type": "client_credentials" }' ``` The response is: ```json theme={null} {     "token_type": "Bearer",     "access_token": "xx",     "expires_in": 18000 } ``` You can now use the returned `access_token` value as a Bearer Token in API calls to m3ter. 3. Alternatively, you can skip the base64 encoding at Step 1, and simply use: ```bash theme={null} curl --location --request POST 'https://api.m3ter.com/oauth/token' \ -u {Access key id}:{Api Secret} \ --header 'Content-Type: application/json' \ --data-raw '{  "grant_type": "client_credentials" }' ``` In other words, use the `-u` option and specify the **Access key id** and **Api Secre**t separated by colon. ### Example using Python Script For an example of how to obtain a Bearer Token using a Python script, please see the [Authentication and Authorization](/api/authentication) section in the introduction to our API Reference documentation. # User/Password Authentication Source: https://docs.m3ter.com/guides/authenticating-with-the-platform/user-password-authentication When you have registered for an account with the m3ter platform, you will receive login credentials with a temporary password from m3ter Support, together with a URL for the m3ter environment. You can use these login credentials to log in to the m3ter Console. **Important: Login Email is case-sensitive!** * The login email you enter when attempting to sign into the platform is treated case-sensitively. For example, if your email is `example.user@acme.com` and you enter `Example.User@acme.com` you will not be able to login. * Please exercise care in this respect when typing your email address. **To authenticate with the platform:** 1. Open your browser and enter the URL for the m3ter environment. The m3ter **Sign in to your account** appears: Llogin Dialog28 2. Enter your m3ter **Email Address** and **Password** login credentials: * If your account has been set up for access to a single Organization, you are taken directly to the m3ter Console **Dashboard** for the Organization. * If your account had been set up for access to more than one Organization, a **Select Organization** page opens. Select the Organization you want to access. The meter Console **Dashboard** for the selected Organization opens. **Tip: Using Single Sign-On (SSO)?** If your Organization has been set up to allow you to use SSO with a federated identity, you can use your corporate ID to authenticate with and sign in instead. On the m3ter **Sign in to your account** select **Single Sign-On (SSO)** instead. See [m3ter Single Sign-On](/guides/authenticating-with-the-platform/m3ter-single-sign-on). **Important!** **First Log in:** * **Didn't Attempt Log In Within 30 Days?** When you receive your temporary password for Console log in, you have 30 days to make your first log in. If you go beyond this grace period, your temporary password will expire and you'll not be able to log in, so please contact your Organization Administrator who will be able to issue you with a new temporary password. * **Forgot Password not applicable.** If you try the **Forgot you password?** option on your first attempt at sign in and before you've used your temporary password, it will not work. * **Change Temporary Password.** After your first log in, you'll be asked to change your temporary password. * **Check Terms of Service.** When you log into the m3ter platform for the first time, please review our **Terms of Service** straight away to ensure you accept them. To review these terms, click the **Documentation** link at the bottom of the Console's main navigation, and then select **Legal**. **Subsequent Log ins**: * After performing your first log in and then logging out, for any subsequent logins when you open the Console log in page the log in method (email/password or SSO) you last used is remembered and the page presents accordingly. # Billing and Usage Data Source: https://docs.m3ter.com/guides/billing-and-usage-data The first part of this section guides you through submitting usage data: * [Submitting Usage Data](/guides/billing-and-usage-data/submitting-usage-data) * [API Calls for Data Ingest](/guides/billing-and-usage-data/submitting-usage-data/api-calls-for-data-ingest) * [File Upload Service API](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api) * [Submitting and Checking Test Usage Data](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data) * [File Uploads for Usage Data by Meter](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp) * [Submitting Usage Data Adjustments Using Timestamp](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp) * [Submitting Usage Data for Non-Existent Accounts](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-for-non-existent-accounts) * [Reviewing and Resolving Ingest Events](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events) The second part of this section provides detailed guidance on viewing and managing Bills: * [Running, Viewing, and Managing Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills) * [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details) * [Working with Bills in Bill Management](/guides/billing-and-usage-data/running-viewing-and-managing-bills/managing-bills) * [Approving and Locking Bills - Managing Bill Lifecycle](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle) * [Adding Credit Line Items to Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-credit-line-items-to-bills) * [Adding Debit Line Items to Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-debit-line-items-to-bills) * [Viewing Bill History](/guides/billing-and-usage-data/running-viewing-and-managing-bills/viewing-bill-history) * [Scheduling Billing](/guides/billing-and-usage-data/running-viewing-and-managing-bills/scheduling-billing) * [Working with Bill Statements](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) * [Bill Line Item Types](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-item-types) * [Bill Line Items - Default Descriptions](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-default-descriptions) * [Troubleshooting Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills) # Running, Viewing, and Managing Bills Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills The *Billing* area of the m3ter Console is designed to let you run, view, and manage Bills for your Accounts. You can: * View Bills for your Accounts. * Select a billing period, and view Bills for that period. You can also access and manage for specific Accounts Bills directly from the Bills tab for the Account: * View the Bills for an Account. * Open a Bill in Bill Management and view Bill details with a breakdown of charges. You can also perform common tasks for billing management workflows: * View and approve a Bill. * Lock an approved Bill or set a global lock date for all Bills. * Re-calculate a Bill. * Re-run billing. * Add Credit or Debit line items to a Bill. * Review the Bill History for a selected Account. * Download Bills. * Run billing manually by date and billing frequency using a *Run billing* modal. You might want Bills to be updated on a regular basis. If so, you can set up scheduling for Bill creation at set intervals as part of your Organization configuration. This section explains how to run and manage Bills for your Accounts: * [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details) * [Managing Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/managing-bills) * [Approving and Locking Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle) * [Adding Credit Line Items to Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-credit-line-items-to-bills) * [Adding Debit Line Items to Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-debit-line-items-to-bills) * [Viewing Bill History](/guides/billing-and-usage-data/running-viewing-and-managing-bills/viewing-bill-history) * [Scheduling Billing](/guides/billing-and-usage-data/running-viewing-and-managing-bills/scheduling-billing) * [Working with Bill Statements](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) * [Bill Line Item Types](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-item-types) * [Bill Line Items - Default Descriptions](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-default-descriptions) * [Bill Line Items - Mapping to Accounting Products](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products) * [Troubleshooting Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills) **Tip: Encountering Billing Issues?** If you are having issues with Bills - such as a Bill is not generating for an Account or line item and/or total amounts are not what you expect them to be for a Bill, please review the [Troubleshooting Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills) in this section, which offers a checklist of common billing issues with guidance on how to follow-up on and resolve issues. **Tip: Reviewing Billing Data?** You can query for Billing data and review the returned data using the [Usage Data Explorer (v2)](/guides/data-explorer/usage-data-explorer-v2). **Tip: End-dating billing entities associated with an Account?** You can end-date the billing entities associated with an end-customer Account - Account Plans, Prepayments, Pricings, and Contracts - from an Account page. This is useful in cases where you need to create new agreements with end-customers - such as for renewals or mid-service term amendments - and for service cancellations. For more details, see [End Dating Account Billing Entities](/guides/end-customer-accounts/end-dating-account-billing-entities). # Adding Credit Line Items to Bills Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-credit-line-items-to-bills From *Bill management*, you can open Bills and add credits for Bill line items using the Credit reasons you've created for your Organization: * [Add a credit for a line item on an existing bill](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-credit-line-items-to-bills#adding-a-credit-for-an-existing-bill-line-item). * [Add a credit line item manually](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-credit-line-items-to-bills#adding-a-credit-manually). **Tip: Adding Credit Reasons?** For details on how to add Credit reasons to your Organization, see [Creating Credit Reasons](/guides/organization-and-access-management/viewing-and-editing-organization/creating-credit-reasons). ## Adding a Credit for an Existing Bill Line Item **To add credit line items to Bills for an existing Bill line item:** 1. Select **Billing**. The **Bill management** page opens and the Bills that have been generated for your Accounts are listed. The Bills listed are those for the default settings of monthly frequency and current month period end. 2. If the Bills you want to work with are for a different frequency and period, use the **Invoice date (inclusive)** calendar pop-ups accordingly. See [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). **Tip: Invoice dates are inclusive!** Note that when you define a period to view Bills using the **Invoice date** calendar popups, both the start and end date are interpreted inclusively. 3. To select a specific **Bill** you want to add a credit line item for, select the **Reference** hotlink text. The **Bill details** page opens. * Note that this page provides a full breakdown of the charges made to the Account for the billing period up to the **Last calculated date**. You can expand line items to see further details. 4. Select **Add credit**. The **Create** page opens and the **Credit a line item from a bill** option is selected by default. 5. Leave this default option selected and under **Credit line item details** use the **Bill** drop-down to select the bill date. The **Line item** drop-down is enabled. 6. Use the **Line item** drop-down to select the line item from the Bill for which you want to apply a credit. * Note that the **Amount** field is automatically populated for the selected line item's amount. 7. Select a **Credit reason** for the credit line item. **Warning: You must create at least one Credit reason for your Organization before you can add a credit line item to a Bill!** If you haven't, the **Credit reason** drop-down will not be available and you'll see a warning: * Select the **create a new credit reason** hotlink text provided. This takes you directly to the **Create** page to create the Credit reason you want to use to add a credit line item to the Bill. See [Creating Credit Reasons](/guides/organization-and-access-management/viewing-and-editing-organization/creating-credit-reasons). * When you create the new Credit reason, you are taken directly back to the **Create** page and the Credit reason is selected. 8. Enter a **Description**. 9. Adjust the **Amount** as required. 10. If you want to define a specific service period to apply to the credit line item, under **Service period settings** use the pop-up calendars to enter a **Service period start date (inclusive)** and **Service period end date (exclusive)**. **Notes!** * If you leave the service period start and end date fields blank, the service period applied to the credit line item will be the same as the current billing period. * If you intend to set up an integration for sending Bills to an external 3rd-party system, the service period start and end dates for credit line items may be *required* when integrating with some external systems. Please check your external system requirements to avoid any issues that might occur with an integration if these dates are left blank. 11. Select **Create Credit line item**. You are returned to the **Bill** **details** page, where the credit line item is shown and the bill is re-calculated to factor in the credit line item amount: Credit Reasons22 * In this example, a credit line item has been added to a Bill in the full amount for one of the line items - **File submission charges**. 12. You can expand the credit line item to view details and **Edit** or **Delete** the credit line item. **Warning: Approving and Locking Bills!** * If you Approve the Bill: * You can **Edit** the credit line item but the Bill will be reverted to Pending. * You cannot **Delete** the credit line item. * If you Approve and then Lock the Bill: * You cannot **Edit** or **Delete** the credit line item. ## Adding a Credit Manually **To add a manual credit line items to Bills:** 1. Select **Billing>Bill management**. The **Bill management** page opens and the Bills that have been generated for your Accounts are listed. The Bills listed are those for the default settings of monthly frequency and current month period end. 2. If the Bills you want to work with are for a different frequency and period, use the **Invoice date** calendar pop-ups accordingly. See [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). 3. To select a specific **Bill** you want to add a credit line item for, select the **Reference** hotlink text. The **Bill details** page opens. * Note that this page provides a full breakdown of the charges made to the Account for the billing period up to the **Last calculated date**. You can expand line items to see further details. 4. Select **Add credit**. The **Create** page opens and the **Credit a line item from a bill** option is selected by default. 5. Select **Apply manual credit**. The **Create** page adjusts for creating a manual credit line item to the Bill. 6. Under **Credit line item details**, select a **Product** reference for the manual credit line item. * Note that this is required for accounting purposes and associates the credit line item with a specific Product. 7. Enter a **Credit reason**, **Description**, and the **Amount** for the manual credit line item. **Warning: You must create at least one Credit reason for your Organization before you can add a manual credit to a Bill!** If you haven't, the **Credit reason** drop-down will not be available and you'll see a warning: * Select the **create a new credit reason** hotlink text provided. This takes you directly to the **Create** page to create the Credit reason you want to use to add a manual credit to the Bill. See [Creating Credit Reasons](/guides/organization-and-access-management/viewing-and-editing-organization/creating-credit-reasons). * When you create the new Credit reason, you are taken directly back to the **Create** page and the Credit reason is selected. 8. Enter a **Service period start date (inclusive)** and **Service period end date (exclusive)**. **Service Period Required!** When adding a *manual credit line item*, these dates are required. If you leave them blank, you'll receive an error when you try to create the credit line item 9. Select **Create Credit line item**. You are returned to the **Bill** **details** page, where the manual credit line item is shown and the bill is re-calculated to factor in the manual credit line item amount: Credit Reasons23 * In this example, a **General rebate** manual credit line item has been added to a Bill in the amount of \$20. 10. You can expand the manual credit line item to view details and **Edit** or **Delete** the credit line item. **Warning: Approving and Locking Bills!** * If you Approve the Bill: * You can **Edit** the manual credit line item but the Bill will be reverted to Pending. * You cannot **Delete** the manual credit line item. * If you Approve and then Lock the Bill: * You cannot **Edit** or **Delete** the manual credit line item. 11. Also, you can add a manual credit line item to a bill for credit against *another Product* consumed by the Account: Credit Reasons24 * In this example, a **New product sign-up bonus** manual credit line item has been added to the Bill in the amount of \$50. Note that this new line item is clearly listed on the recalculated Bill as a credit against the Account for a different Product. # Adding Debit Line Items to Bills Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-debit-line-items-to-bills From *Bill management*, you can open Bills and add debits for Bill line items using the Debit reasons you've created for your Organization: * [Add a debit for a line item on an existing bill](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-debit-line-items-to-bills#adding-a-debit-for-an-existing-bill-line-item). * [Add a debit line item manually](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-debit-line-items-to-bills#adding-a-debit-manually). **Tip: Adding Debit Reasons?** For details on how to add Debit Reasons to your Organization, see [Creating Debit Reasons](/guides/organization-and-access-management/viewing-and-editing-organization/creating-debit-reasons). ## Adding a Debit for an Existing Bill Line Item **To add debit line items to Bills for an existing line item:** 1. Select **Billing**. The **Bill management** page opens and the Bills that have been generated for your Accounts are listed. The Bills listed are those for the default settings of monthly frequency and current month period end. 2. If the Bills you want to work with are for a different frequency and period, use the **Invoice date (inclusive)** calendar pop-ups accordingly. See [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). **Tip: Invoice dates are inclusive!** Note that when you define a period to view Bills using the **Invoice date** calendar popups, both the start and end date are interpreted inclusively. 3. To select a specific **Bill** you want to add a debit line item for, select the **Reference** hotlink text. The **Bill details** page opens. * Note that this page provides a full breakdown of the charges made to the Account for the billing period up to the **Last calculated date**. You can expand line items to see further details. 4. Select **Add debit**. The **Create** page opens and the **Debit a line item from a bill** option is selected by default. 5. Leave this default option selected and under **Debit line item details** use the **Bill** drop-down to select the bill date. 6. Use the **Line item** drop-down to select the line item from the Bill for which you want to apply a debit. * Note that the **Amount** field is automatically populated for the selected line item's amount. 7. Select a **Debit reason** for the debit line item. **Warning: You must create at least one Debit reason for your Organization before you can add a debit line item to a Bill!** If you haven't, the **Debit reason** drop-down will not be available and you'll see a warning: * Select the **create a new debit reason** hotlink text provided. This takes you directly to the **Create** page to create the Debit reason you want to use to add a debit line item to the Bill. See [Creating Debit Reasons](/guides/organization-and-access-management/viewing-and-editing-organization/creating-debit-reasons). * When you create the new Debit reason, you are taken directly back to the **Create** page and the Debit reason is selected. 8. Enter a **Description**. 9. Adjust the **Amount** as required. 10. If you want to define a specific service period to apply to the debit line item, under **Service period settings** use the pop-up calendars to enter a **Service period start date (inclusive)** and **Service period end date (exclusive)**. **Notes!** * If you leave these start and end date fields blank, the service period applied to the debit line item will be the same as the current billing period. * If you intend to set up an integration for sending Bills to an external 3rd-party system, the service period start and end dates for debit line items may be *required* when integrating with some external systems. Please check your external system requirements to avoid any issues that might occur with an integration if these dates are left blank. 11. Select **Create Debit line item**. You are returned to the **Bill details** page, where the debit item is shown and the bill is re-calculated to factor in the debit item amount: Debit Reasons3 * In this example, a debit item has been added to a Bill in the amount of \$50 for one of the line items - **Stored charges**. 12. You can expand the debit line item to view details and **Edit** or **Delete** it. **Warning: Approving and Locking Bills!** * If you Approve the Bill: * You can **Edit** the debit line item but the Bill will be reverted to Pending. * You cannot **Delete** the debit line item. * If you Approve and then Lock the Bill: * You cannot **Edit** or **Delete** the debit line item. ## Adding a Debit Manually **To add debit line items manually:** 1. Select **Billing**. The **Bill management** page opens and the Bills that have been generated for your Accounts are listed. The Bills listed are those for the default settings of monthly frequency and current month period end. 2. If the Bills you want to work with are for a different frequency and period, use the **Invoice date (inclusive)** calendar pop-ups accordingly. See [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). 3. To select a specific **Bill** you want to add a debit line item for, select the **Reference** hotlink text. The **Bill details** page opens. * Note that this page provides a full breakdown of the charges made to the Account for the billing period up to the **Last calculated date**. You can expand line items to see further details. 4. Select **Add debit**. The **Create** page opens and the **Debit a line item from a bill** option is selected by default. 5. Select **Apply manual debit**. The **Create** page adjusts for creating a manual debit line item for the Bill. 6. Under **Debit line item details**, select a **Product** reference for the manual debit line item. * Note that this is required for accounting purposes and associates the debit line item with a specific Product. 7. Enter a **Debit reason**, **Description**, and **Amount** for the manual debit line item. **Warning: You must create at least one Debit reason for your Organization before you can add a manual debit to a Bill!** If you haven't, the **Debit reason** drop-down will not be available and you'll see a warning: * Select the **create a new debit reason** hotlink text provided. This takes you directly to the **Create** page to create the Debit reason you want to use to add a manual debit to the Bill. See [Creating Debit Reasons](/guides/organization-and-access-management/viewing-and-editing-organization/creating-debit-reasons). * When you create the new Debit reason, you are taken directly back to the **Create** page and the Debit reason is selected. 8. Enter a **Service period start date (inclusive)** and **Service period end date (exclusive)**. **Service Period Required!** When adding a *manual debit line item*, these dates are required. If you leave them blank, you'll receive an error when you try to create the debit line item 9. Select **Create Debit line item**. You are returned to the **Bill details** page, where the manual debit line item is shown and the bill is re-calculated to factor in the debit line item amount: Debit Reasons4 * In this example, an **Overdue Bill payment penalty** manual debit line item has been added to a Bill in the amount of \$25. 10. You can expand the manual debit line item to view details and **Edit** or **Delete** the manual debit line item. **Warning: Approving and Locking Bills!** * If you Approve the Bill: * You can **Edit** the manual debit line item but the Bill will be reverted to Pending. * You cannot **Delete** the manual debit line item. * If you Approve and then Lock the Bill: * You cannot **Edit** or **Delete** the manual debit line item. 11. Also, you can add a manual debit line item to a bill for consumption of *another Product* by the Account: Debit Reasons5 * In this example, an **Additional storage** manual debit line item has been added to the Bill in the amount of \$125. Note that this new debit line item is clearly listed on the recalculated Bill as a charge due against the Account for a different Product. # Approving and Locking Bills - Managing Bill Lifecycle Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle Account Bills can be taken through a lifecycle, from when they are first generated in a Pending status, being approved, and finally being locked at which point they can no longer be recalculated or updated. Bills can be in either Pending or Approved status: * **Pending Status**: * When Bills are first generated they have a Pending status. * You can move a Bill into Approved from Pending status. * You cannot lock a Pending status Bill. * Pending status allows you to review and check an Account Bill before moving it to Approved. When you are satisfied a Pending status Bill on an Account is correct and complete, you can move it to Approved status meaning it is ready for sending out to invoicing systems. * **Approved Status**: * You can lock an Approved status Bill. * If you recalculate an Approved status Bill, such as running a Bill job that includes an Approved Bill or recalculating an Approved Bill directly in Bill management, the Bill is automatically moved back to Pending status. **Note: Approving Bills with Integrations set up for 3rd-party systems.** m3ter integrations for sending Bills to 3rd-party invoicing systems are typically configured to send Bills out when they are changed from Pending to Approved status, and this change of status can also be used as the trigger for billing flows implemented for custom integrations. Only Approved status Bills can be locked. A locked Bill cannot be changed - it can no longer be: * Selected in Bill management. * Unlocked. * Updated. * Recalculated, and is therefore excluded from any billing runs. You can also define a *Global* lock date in the Console under Bill management: * All Bills dated before or on the global lock date are effectively locked and cannot be updated or recalculated. * However, globally locked Bills can be unlocked - if you change the Global lock date and move the date backwards in time, any Bills previously locked globally but which are dated after the new global locking date will be unlocked. This topic explains how to work in Bill management to move Bills through their lifecycle: * [Approving Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle#approving-bills) * [Auto-Approving Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle#auto-approving-bills) * [Locking Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle#locking-bills) * [Setting Global Lock Date](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle#setting-global-lock-date) **Tip: API calls for managing Bill lifecycle?** * **Changing Bill Status**. You can use the [Update Bill Status](/api/bill/update-bill-status) API call to change the status of a Bill. * **Locking Bills**. You can use the [Lock Bill](/api/bill/lock-bill) API call to lock Bills. ## Approving Bills When Bills are first generated, they have **Pending** status. For Pending Bills, you can: * Select Bills directly in Bill management and then approve the selected Bills. * Approve a set of Bills by a specified invoice date period. **To approve Bills:** 1. Select **Billing**. The **Bill management** page opens and lists Bills for the default **Invoice date** setting of the current month. 2. If you want to approve Bills for a different period, use the **Invoice date** calendar pop-ups to adjust the period accordingly. See [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). * If you want to review the details of a Bill before approving it, select the **Reference** hotlink text to open the Bill. 3. Use the checkboxes to select the Bill or Bills you want to approve. * Note that if you've selected a Bill which is already at **Approved** status. the **Approve selected** button is automatically disabled. 4. Select **Approve selected**. The selected Bills are moved to **Approved** status and the **Lock selected** button is now enabled for these Bills. 5. If you want to approve a set of Bills by date range, select **Approve bills**. The **Approve bills** modal appears: 6. Use the **Calendar** pop-ups to select the **Invoice start date** and **Invoice end date** to define the date range for Bill approval. * **Note to clarify**: start and end dates for Bill approval date range: * The **Invoice start date** is *inclusive*. This means, for example, if you've set the **Invoice start date** for Bill approval date range as April 1st, any Bill with an **Invoice date** of April 1st or later will be approved. * The **Invoice end date** you select for the date range is *exclusive*. This means, for example, if you've set the **Invoice end date** for Bill approval date range as April 30th, any Bill with an **Invoice date** of April 29th or earlier will be approved. However, a Bill dated April 30th *will not be approved*. 7. Select **Approve bills**. The modal closes and all **Pending** status Bills dated within the defined date range are moved to **Approved** status. ## Auto-Approving Bills You can enable *auto-approval* for Bills, which allows you to specify a time period (*in minutes, hours, or days)* following the Bill date after which Bills will be automatically approved: * For example, suppose you are using a monthly billing frequency for an end customer Account and Bills are created at 12 midnight on the the last day of each month. You then enable **Auto-approve bills** and set it to 2 hours. Each month's Bill is approved automatically at 2 a.m. on the first day of the month following. **Warnings!** * **Possible Conflict between Auto-Approval of Bills and Scheduled Bill Interval!** If a Bill is recalculated because of late-arriving data after being auto-approved, and the bill auto-approval interval is less than 24 hours, then the Bill will revert to a Pending, unapproved state: * We recommend setting the auto-approval interval to 24 hours or longer when using scheduled bill updates. * Please see [Understanding the Scheduled Billing Process](/guides/billing-and-usage-data/running-viewing-and-managing-bills/scheduling-billing#understanding-the-scheduled-billing-process) for more details. * **Auto-Approval tied to Bill date!** If you generate a Bill early and *before* the scheduled Bill date, it will *not be auto-approved* from the date/time you do this, but only at the specified time after the Bill date. **To set up auto-approval for Bills:** 1. Select **Settings**: The **Organization** page opens with the **Configuration** tab selected. 2. On the **Organization configuration details** panel, select **Edit**. The **Organization configuration** page opens. 3. Under **Bill auto-approval** use the **Auto-approve bills** switch to enable auto-approval. Two time period settings fields are activated for **Bill auto-approval grace period**. 4. Use these two fields to define the time-period following the Bill date you want Bills to be auto-approved: * Use the drop-down field to select **Minutes**, **Hours** , or **Days**. * Use the numeric field to enter the *number* of minutes, hours, or days. 5. Select **Update Organization configuration**. ## Locking Bills You can only lock Bills that have an **Approved** status. When you've locked a Bill it can no longer be changed and is excluded from any billing runs. **To lock Bills:** 1. Select **Billing**. The **Bill management** page opens and lists Bills for the default **Invoice date** setting of the current month. 2. If you want to lock Bills for a different period, use the **Invoice date** calendar pop-ups to adjust the period accordingly. See [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). 3. Use the checkboxes to select the **Approved** **Status** Bill or Bills you want to lock. * Note that if you've selected a Bill which is in **Pending** status, the **Lock selected** button is automatically disabled. 4. Select **Lock selected**: * The **Status** on Console screens will show the selected Bills as **Approved**. * Since the Bill `locked` property value has been changed to `true`, the **Locked** column will also show the Bill as **Locked**: View Bills53 Note that locked Bills can no longer be: * Selected in the list. * Unlocked. * Updated. * Recalculated. **Important!** * **Re-running Billing**. If you re-run billing, locked Bills are excluded. * **Deleting Locked Bills**. You can delete a locked Bill using the [Delete Bill](/api/bill/delete-bill) API call. We strongly recommend that you only do this after due consideration since deleted Bills cannot be recovered. This call is made available for removing incorrect or obsolete Bills, and for Bills that have not been sent to customers.  Where end-customer invoices for Bills have been sent to customers, Bills should not be deleted to ensure you have an audit trail of how the invoice was created. ## Setting Global Lock Date You can also set a *Global lock date*, after which all Bills dated before or on the date set will be effectively locked and you won't be able to update or recalculate them. The global locking capability allows you to impose a cut-off date where all Bills dated on or before the date are frozen - they can no longer be updated and are excluded from billing. However, if you subsequently change the Global lock date for your Bills and move it back in time, any Bills whose date is now *after* the new global lock date will be unlocked. **To set a Global lock date:** 1. Select **Billing**. The **Bill management** page opens and lists Bills for the default **Invoice date** setting of the current month. 2. Select **Set global lock date**. A **Set global lock date** modal appears: * Note that the default date used in the Modal when it's first opened is dependent on the end date set in **Bill management** for the **Invoice date** range - in this example, the end date was set at **04/30/2023** and the default global lock date is set as the following day. 3. Use the calendar popup to select the global locking date for which you want all Bills to be locked and then select **Save**. The modal closes and the **Status** on Console screens will show affected Bills as **Locked**, since a global lock has been has now been set on those Bills in Bill configuration. However, the `locked` property on these Bills will remain as `false`, since globally locked Bills can be unlocked in Bill configuration if the global lock date is changed. # Bill Line Item Types Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-item-types This topic lists Bill line item types in m3ter and explains what each type means and what each type is used for. The term used in the API response schema is given together with the term used to denote the same type when Bills are viewed in the Console. | API Line Item Type | Console Line Item Type | Used to Show | | ------------------------------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | AD\_HOC | Ad-hoc | Ad-hoc Charge amounts for Accounts. | | BALANCE\_CONSUMED | Balance consumed | Balance draw down amount. | | BALANCE\_FEE | Balance fee | Charge amounts for Balances. | | COMMITMENT\_CONSUMED | Prepayment consumed | Prepayment/Commitment draw down amount. | | COMMITMENT\_FEE | Prepayment fee | When m3ter bills the prepayment/commitment, this is the charge, either upfront, recurring, or according to a custom schedule. | | COUNTER\_ADJUSTMENT\_CREDIT | Counter adjustment credit | Recurring charges amount based on counter adjustment quantity on Account (credit). | | COUNTER\_ADJUSTMENT\_DEBIT | Counter adjustment debit | Recurring charges amount based on counter adjustment quantity on Account (debit). | | COUNTER\_RUNNING\_TOTAL\_CHARGE | Counter running total charge | Recurring charges amount based on running total counter quantity on Account (debit). | | CREDIT\_DEDUCTION | | No longer used. | | CREDIT\_MEMO | Credit | Referenced or ad hoc credit memo item. | | DEBIT\_MEMO | Debit | Referenced or ad hoc debit memo item. | | MANUAL\_ADJUSTMENT | | No longer used. | | MINIMUM\_SPEND | Minimum spend | Recurring minimum charge (debit). | | MINIMUM\_SPEND\_REFUND | Minimum spend adjustment | Used for cases where minimum spend is charged in advance. If advance minimum spend charge is \$1000 per billing period and actual usage consumed charge due in a billing period amounts to \$800, then \$200 is refunded under this line item type. | | OVERAGE\_SURCHARGE | Overage surcharge | For Prepayments/Commitments when using overage surcharge percentage. | | OVERAGE\_USAGE | Overage usage | For Prepayments/Commitments where “overage pricing” has been configured on the plan. | | STANDING\_CHARGE | Standing charge | A fixed amount charge that is billed on a recurring basis. | | USAGE | Usage | Metered consumption amount based on usage (debit). | | USAGE\_CREDIT | Usage Credit | Metered consumption amount based on usage (credit). | # Bill Line Items - Default Descriptions Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-default-descriptions 1When setting up priced Product Plans and Prepayment or Balance amounts to apply usage-based or unit-based charges against your end-customer Accounts for consuming Products, there are several places where you have the option to define custom descriptions for Bill line items: * **Plan Templates/Plans**: Standing Charge and Minimum Spend descriptions. * **Plan Groups** - Standing Charge and Minimum Spend descriptions. * **Pricing** - Usage and Minimum Spend descriptions. * **Counter Pricing** - Recurring subscription charge descriptions. * **Prepayments** - Fee, Usage, and Overage descriptions. * **Balances** - Draw-down description, one-off Charge description. * **Accounts** - Charge description. This topic explains how Bill line item default descriptions are compiled *if you omit custom descriptions for Bill line items.* ## Standing Charge * **Plan Template or Plan**: * Default DESCRIPTION: **Standing Charge** * **Plan Group**: * Default DESCRIPTION: **Standing Charge** ## Minimum Spend * **Plan Template**: * Default DESCRIPTION: *\* **Minimum Spend Adjustment** * **Plan**: * Default DESCRIPTION: *\* **Minimum Spend Adjustment** * **Plan Group**: * Default DESCRIPTION: *\* **Minimum Spend Adjustment** * **Pricing:** * Default DESCRIPTION: *\* **Minimum Spend Adjustment** ## Usage The default descriptions for *usage line items* are derived from the name of the Aggregation that defines the usage metric used to price the Product Plan. * **Simple Aggregation**: * Default DESCRIPTION: *\* * **Compound Aggregation**: * Default DESCRIPTION: *\* * **Segmented Aggregation**: * Default DESCRIPTION: *\ + (\, \, ...)* * **Custom SQL Aggregation**: * Default DESCRIPTION: \<*Custom SQL Aggregation name> + (\,\< group key/value 2>,* *...)* ## Recurring Charges The default descriptions for unit-based recurring *subscription line items* are derived from the different *types of counter charges* due on Accounts whose Account Plan is priced using a counter: * Charge type: Counter running total charge: * Default DESCRIPTION: **Counter Running Total Charge** * Charge type: Counter adjustment debit: * Default DESCRIPTION: **Counter Adjustment Debit** * Charge type: Counter adjustment credit: * Default DESCRIPTION: **Counter Adjustment Credit** ## Prepayments * **Fee**. Two cases: * Product selected: * Default DESCRIPTION: **Prepayment Fee (***\***)** * No Product selected: * Default DESCRIPTION: **Prepayment Fee (account-wide)** * **Usage**. Two cases: * Product selected: * Default DESCRIPTION: **Prepayment Consumed (***\***)** * No Product selected: * Default DESCRIPTION: **Prepayment Consumed (account-wide)** * **Overage**. Two cases: * Product selected: * Default DESCRIPTION: **Overage Surcharge (***\***)** * No Product selected: * Default DESCRIPTION: **Overage Surcharge (account-wide)** ## Accounts * **Charge**: * Default DESCRIPTION: **Ad hoc charge** ## Balances * **Draw-down**: * Default DESCRIPTION: \<*Balance name*>**:** **Balance Consumed**. * **One-off Charge**: * Default DESCRIPTION: **Balance fee charge** ## Parent/Child Account Bills - Line Item Descriptions Default descriptions for line items that appear on Bills where there is a Parent/Child Accounts set up follow the same rules for compiling the DESCRIPTION text, except the *name of the Child Account* is also appended to the default description text string. **Warning - Case where Child Account code also shown in description!** If you have the Account Plan attached to the Parent Account and set the **Account hierarchy billing mode** to **Bill parent account - bill line item per account**, then the Bill for the Parent Account will append both the Child Account **name** and **code** to the description text for any Child Account usage charge line items. # Bill Line Items - Mapping to Accounting Products Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products To ensure Bill line items are assigned to the correct Product lines, you can select an *Accounting Product* when configuring many of the billing-related entities used to set up pricing and charges in your m3ter Organization. The Accounting Product feature gives you the capability to map line items to specific Products in a fine-grained way, and therefore allows your finance team to: * Map revenue sources more accurately to track profitability and financial performance. * Automate revenue recognition and deferrals based on contract, plan, and pricing structures. * Reduce manual finance workload by ensuring accounting products set in m3ter flow through to accounts receivables when invoices are generated. This topic explains by line item type how different billing-related entities assign this mapping to an Accounting Product. Since in many cases the mapping of Accounting Product to a line item type can be defined for several billing-related entities, the order of precedence for which Accounting Product mapping is used is also explained: * [Usage Line Items](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products#usage-line-items) * [Recurring Charges Line Items](#recurring-charges-line-items) * [Prepayment/Commitment Line Items](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products#prepaymentcommitment-line-items) * [Minimum Spend Line Items](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products#minimum-spend-line-items) * [Standing Charge Line Items](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products#standing-charge-line-items) * [Balance Line Items](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products#balance-line-items) * [Ad-Hoc Line Items](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products#ad-hoc-line-items) **Tip: Grouping Bill Line Items by Accounting Products!** When a Bill has been generated for an Account and line items are mapped to Accounting Products, in Bill Management you can use a display option to group line items by Accounting Product. See [Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#viewing-bill-details). ## Usage Line Items The mapping to Accounting Product for *Usage* or *Usage credit* line items is determined by: * **Pricing**. The Pricing **Accounting product** takes precedence. * **Aggregation**. If not defined for the Pricing, the **Accounting product** for the Aggregation used to price a Plan is used. * **Plan**. If not defined for either the Pricing or the Aggregation, the **Product** the Plan belongs to is used. ## Recurring Charges Line Items The mapping to Accounting Product for *Counter adjustment credit*, *Counter adjustment debit*, or *Counter running total charge* line items is determined by: * **Counter Pricing**. The **Accounting product** defined for the Counter pricing takes precedence. * **Counter**. If not defined for the Counter pricing, then the **Product** the Counter belongs to is used. ## Prepayment/Commitment Line Items ### Prepayment Consumed The mapping to Accounting Product for *Prepayment consumed* line items is determined by: * The **Draw-downs accounting product** defined for the Prepayment takes precedence. * If the **Draw-downs accounting product** is not defined, then the **Accounting product** defined for the Prepayment is used. ### Prepayment Fee The mapping to Accounting Product for *Prepayment fee* line items is determined by: * The **Fees accounting product** defined for the Prepayment takes precedence. * If the **Fees accounting product** is not defined, then the **Accounting product** defined for the Prepayment is used. ## Minimum Spend Line Items ### Plan The mapping to Accounting Product for *Minimum spend* and *Minimum spend adjustment* line items is determined by: * The **Minimum spend accounting product** defined for the Plan takes precedence. * If the **Minimum spend accounting product** is not defined for the Plan, then the **Product** the Plan belongs to is used. ### Plan Group The mapping to Accounting Product for *Minimum spend* and *Minimum spend adjustment* line items is determined by the **Minimum spend accounting product** defined for the Plan Group. ## Standing Charge Line Items ### Plan The mapping to Accounting Product for *Standing charge* line items is determined by: * The **Standing charge accounting product** defined for the Plan takes precedence. * If the **Standing charge accounting product** is not defined for the Plan, then the **Product** the Plan belongs to is used. ### Plan Group The mapping to Accounting Product for *Standing charge* line items is determined by the **Standing charge accounting product** defined for the Plan Group. ## Balance Line Items ### Balance Consumed The mapping to Accounting Product for *Balance consumed* line items is determined by the **Consumptions accounting product** defined for the Balance: * If you omit a **Consumptions accounting product**, then then *Balance consumed* Bill line items will not be linked to a Product and will be listed under **Balance**. ### Balance Fee The mapping to Accounting Product for *Balance fee* line items is determined by: * The **Accounting product** defined for the Balance Charge takes precedence. * If the **Accounting product** is not defined for the Balance Charge, then the **Fees accounting product** defined for the Balance is used. * If an **Accounting product** has not been defined for a Charge and you omit **Fees accounting product** for the Balance, then *Balance fee* Bill line items will not be linked to a Product and will be listed under **Balance**. ## Ad-Hoc Line Items The mapping to Accounting Product for *Ad-hoc* line items is determined by the **Accounting product** defined for the Account Charge. # Working with Bills in Bill Management Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/managing-bills You can use the *Bill Management* page to review your Account Bills and perform common administrative tasks for managing them. This topic explains how to work in Bill Management: * [Recalculating Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/managing-bills#recalculating-bills) * [Downloading Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/managing-bills#downloading-bills) * [Deleting Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/managing-bills#deleting-bills) **Tips:** * **Run Bills and view Bill details?** See the previous topic: [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). * **Approving and Locking Bills?** For details on how to approve and lock Bills, see the following topic: [Approving and Locking Bills - Managing Bill Lifecycle](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle). * **Encountering Billing Issues?** If you are having issues with Bills - such as a Bill is not generating for an Account or line item and/or total amounts are not what you expect them to be for a Bill, please review the [Troubleshooting Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills) in this section, which offers a checklist of common billing issues with guidance on how to follow-up on and resolve issues. ## Recalculating Bills You can recalculate Bills for end-customer Accounts at any time. For example, you might want to do this if you’ve updated the pricing Plan for the Account and want to check that the Bill is correct when calculated using the revised pricing. **To recalculate Bills:** 1. Select **Billing**. The **Bill management** page opens and lists Bills for the default **Invoice date** setting of the current month. 2. If you want to recalculate Bills for a different period, use the **Invoice date** calendar pop-ups to adjust the period accordingly. See [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). **Tip: Invoice dates are inclusive!** Note that when you define a period to view Bills using the **Invoice date** calendar popups, both the start and end date are interpreted inclusively. 3. Use the checkboxes to select the Bill or Bills you want to recalculate. 4. Select **Recalculate selected**. The selected Bills are recalculated. **Important!** * **Child Account Bills are not recalculated separately**. If you've selected Child Account Bills, these are not guaranteed to be recalculated. A Child Account Bill is only recalculated when its Parent Account Bill is recalculated. * **Maximum for a Recalculate Bill Job is 100**. If you select more that 100 Bills to recalculate, the Bill Job will fail and you'll receive an error. ## Downloading Bills You can download the Bills listed in the Bill management page for a selected **Invoice Date** period as a `.csv` formatted file. **To download Bills:** 1. Select **Billing**. The **Bill management** page opens and lists Bills for the default **Invoice Date** setting of the current month. 2. If you want to download Bills for a different period, use the **Invoice Date** calendar pop-ups to adjust the period accordingly. See [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). **Tip: Invoice Dates are inclusive!** Note that when you define a period to view Bills using the **Invoice Date** calendar popups, both the start and end date are interpreted inclusively. 3. Select **Download Bills**. The Bills in the selected date range are exported in a `.csv` formatted file and saved to your **Downloads** folder. **Warning!** * **Download Limits**. You can only download Bills for a period of up to 31 days or up to a maximum of 5000 Bills. If you attempt a download that exceeds either of these two limits, you'll receive an error message. * **Empty Bills**. The `.csv` formatted file is compiled for download by taking each of the line items found in Bills that exist in your Organization for the specified period. The Bill for each line item record is given, along with Bill Total and other billing attributes. However, this means that if you have an *empty Bill* that exists for the specified period - one for which *no line items currently exist* - then no line item records will be shown for this Bill in the `.csv` file you download. ## Deleting Bills You can delete Bills listed in Bill management. **To delete Bills:** 1. Select **Billing**. The **Bill management** page opens and lists Bills for the default **Invoice date** setting of the current month. 2. If you want to delete Bills for a different period, use the **Invoice date** calendar pop-ups to adjust the period accordingly. See [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). **Tip: Invoice dates are inclusive!** Note that when you define a period to view Bills using the **Invoice date** calendar popups, both the start and end date are interpreted inclusively. 3. Select the checkboxes of the Bills you want to delete. 4. Select **Delete selected**. A pop-up appears asking you to confirm the delete. 5. Select **Yes** to confirm and the selected Bills are deleted. # Running Bills and Viewing Bill Details Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details You can open the *Bill management* page and view Bills for your Accounts for the current month. From there, you can: * Open a Bill for an Account to review the Bill details. * Reset the billing period to list the Bills for your Accounts for that period. * If you've set up an integration with for sending Account Bills to a 3rd-party system, you can check the status and then review details of the last completed integration run or view all integrations runs. You can also use an external reference link to open the linked invoice in your external system. * Filter the Bills listed by status: Locked or Approved/Pending. * Reorder columns for Bill Management. * Use display options to: * Hide zero quantity line items. * Group line items by Accounting Product or Contract when applicable. * Run Bills manually for a specific Bill date for your Accounts. You can run Bills: * Either for all billing frequencies or a specific frequency, such as for weekly or monthly frequency. * For a specific target currency. This topic explains how to work in the Bill Management page to view Bill details, reorder the columns for the Bills listed, and run Bills manually: * [Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#viewing-bill-details) * [Reviewing Bill Metadata](#reviewing-bill-metadata) * [Filtering Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#filtering-bills) * [Managing Columns for Bill Management](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#managing-columns-for-bill-management) * [Checking Zero Total Bills](#checking-zero-total-bills) * [Exporting the Bill Management Page](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#exporting-the-bill-management-page) * [Running Bills Manually](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#running-bills-manually) **Tip: Viewing and Running Bills for Specific Accounts?** It's sometimes easier to go into an Account and view and run Bills directly from the Bills tab - see [Reviewing and Recalculating Bills for an Account](/guides/end-customer-accounts/reviewing-bills-for-an-account). **Tip: Encountering Billing Issues?** If you are having issues with Bills - such as a Bill is not generating for an Account or line item and/or total amounts are not what you expect them to be for a Bill, please review the [Troubleshooting Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills) in this section, which offers a checklist of common billing issues with guidance on how to follow-up on and resolve issues. ## Viewing Bill Details * [Opening and Viewing Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#opening-and-viewing-bills) * [Viewing Bills - Display Options](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#viewing-bills-display-options) * [Viewing Bills - Notes and Tips](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#viewing-bills-notes-and-tips) ### Opening and Viewing Bills **To open and view Bill details:** 1. Select **Billing**. The **Bill management** page opens and lists the Bills for your Accounts. The default **Invoice date** settings lists Bills to cover the current month. Details of the current Bills for each Account for this period are given, such as: * **Reference** * **External reference** * **External invoice date** * **Account name** * **Account code** * **Total** * **Status** * **Locked** * **Last calculated date** * **Integration status** Optionally: * **Total debits** * **Total credits** **Tips:** * **Bill Reference number?** We recommend that you set up the **Reference** Bill numbering to suit your accounting and operational requirements, which you can enable at Organization level. This allows you to define a Bill prefix combined with a sequential numbering based on the date Bills are first created. If you do not enable Bill numbering, then a default Bill **Reference** number is used, which concatenates the prefix **Invoice-** with the last four characters of the Bill's **ID**. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * **No Bills Listed?** If none of the Accounts in your Organization have Bills for the default current month, then a warning will show to tell you this. You can change the default settings for the **Invoice date** period and the page will automatically refresh. * **Controlling Bill list Columns?** You can customize the Bills list to either re-order the columns or hide columns - see the following [Managing Columns for Bill Management](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#managing-columns-for-bill-management) section below for details. 2. If you want to view the Bills for a different billing period, use the popup **Invoice date (inclusive)** calendar icons to adjust the period accordingly. The **Bill management** page adjusts to show Bills for the selected period: * The default period when you open the **Bill management page** is the current month. * When you open the calendar pop-ups, you can select for pre-defined periods of **This month** or **Last month**. **Notes:** * **Invoice dates are inclusive!** Note that when you define a period to view Bills using the **Invoice Date** calendar popups, both the start and end date are interpreted inclusively. * **Single day Invoice date period?** You can define a single day as the period you want to show Bills for. 3. All Bills are shown by default, regardless of their status. You can filter the list of Bills to show only those with a specific status. See below: [Filtering Bills by Status](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#filtering-bills-by-status). 4. If you want to view the Bills for a specific Account, select the **Account name** text in the listing: * The **Account details** page for the Account opens showing the **Overview** tab, where you can review the **Latest bills** for the Account. Select the **Bills** tab to review all the Account's Bills. 5. To view the details of a Bill for an Account, select the **Reference** text hotlink. The **Bill details** page opens. This page provides a full breakdown of the charges due on the Account for the billing period for the **Invoice date**. * A **Bill details** panel gives details of the Bill: View Bills39 * A text hotlink is provided to open the details page of the Account the Bill is for. * If you've set up an integration for sending Bills for the Account to a 3rd-party system the date/time and status of the **Last integration run** are shown. Here's an example where an integration exists to Chargebee: View Bills38 * You can use a text hotlink to open details of the last run or to **View all runs**. Checking integration run details can be very useful when you have implemented an integration with your external invoicing system and you need to troubleshoot if the run fails. For more details, see [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). * Note that if the last integration run was successful, then the **External invoice reference** will also show a hotlink text. If you select this hotlink, you'll be taken to the invoice generated in the 3rd-party external system by the integration run. **Important!** Note that if the Account the Bill was generated for has since been deleted, the Bill will open in **Bill management** but the **Bill details** panel will be incomplete and you'll receive an Account loading error. 6. Scroll down to review the Bill: View Bills42 * The Bill **Total** is shown at top-left for quick reference. * In this example, the Bill line items are grouped for charges due for **Product** consumed. * For Product charge line items, select the **Description** hotlink text to open the details of the priced Product Plan used to determine the line item charge. * You can expand a *usage charge line item* to review details: View Bills43 * Read-off: * The period the **Pricing** has been applied to the Plan. * The **Plan**, **Aggregation**, **Meter**, and **Pricing** used to set the usage charges raised against the Account. You can then select hotlink texts to open the details pages for each of these. * If the Pricing is tiered and the usage spans more than one tier, how the total charge for the line item breaks down into the separate charges due for each tiered pricing band. * A usage chart covering the billing period is also given, which allows you to check when the usage consumption was metered. For that usage, you can then: * **View in the Data Explorer** * **Download CSV** * If there are any draw-down line items for a **Balance** on the Account, select the **Description** text to open the details page for the Balance attached to the billed Account. ### Viewing Bills - Display Options When you've opened a Bill, there are several **Display options** for controlling how the Bill is displayed: * If you are viewing a Bill with many zero usage line items, you can use the **Hide zero quantity line items** switch to reduce clutter on the Bill * If **Accounting products** have been defined for line items: View Bills44 View Bills45 View Bills46 * You can then select **Group by Accounting product**: View Bills47 * When a Bill is first opened, the default display arrangement is to group by Product: View Bills48 * If an Account has been set up for billing on a Contract basis, you can select to **Group by Contract**: View Bills49 **Display options persisted**. If you've opened a Bill and selected a display option, this will be persisted across reloads, browser tab changes, and separate browser sessions. ### Viewing Bills - Notes and Tips Here are some notes and tips to bear in mind when viewing Bills: **Line Item Types**. You can review a list of the different line item types used on Bills in the [Bill Line Item Types](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-item-types) topic in this section. **Line Item Descriptions**. * There are several places where you have the option to define the description texts you want to appear for Bill line items. If you don't define these description texts for line items, then *default descriptions* are used. For details on how these default descriptions are compiled, see the [Bill Line Items - Default Descriptions](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-default-descriptions) topic in this section. * If you have priced Plans attached to Accounts for billing using Segmented or Custom SQL Aggregations, then you can define custom descriptions for the Bill line items produced by the pricing. See [Custom Descriptions for Segmented Aggregations](https://docs.m3ter.com/guides/usage-data-aggregations/custom-sql-aggregations#example-4-custom-sql-descriptions) and [Custom SQL Descriptions](https://docs.m3ter.com/guides/usage-data-aggregations/custom-sql-aggregations#example-4-custom-sql-descriptions). **Zero Usage Line Items**. If you are viewing a Bill with many zero usage line items, you can use the **Display options>Hide zero quantity line items** switch to reduce clutter on the Bill. **Billing Amounts Decimal Places**. The number of decimal places shown for the billing currency amounts depends upon the configured decimal places for the currency in your Organization - see [Creating and Managing Currencies](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies). **Mixed Pricing and Billing Currencies and Currency Conversions**: * If an Account Plan pricing is in a different currency to the configured billing currency, then line items for usage charges due on the Account under that Plan will show the pricing currency for **Unit price** but the **Subtotal** amount for line items will show the converted amount due in the billing currency. See [Billing Currency, Pricing Currency, and Currency Conversions](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#billing-currency-pricing-currency-and-currency-conversions) for more details. * If your pricing currency is different to the billing currency, **Currency Conversions** will be shown at the bottom of a Bill. See [Creating and Managing Currencies](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies). * For example, here's a Bill where the pricing currency is British Pounds (GBP) and the billing currency is US Dollars (USD): View Bills57 * Note that: * Under **Subtotal**, the unconverted pricing currency subtotal for line items is also shown in grayed-out text. * You can check any **Currency conversions** configured for the Organization. ## Reviewing Bill Metadata You can review **Bill metadata** on the **Bill details** page. **External mappings**. Any External mappings set up for the Bill are listed: View Bills36 * The **External system** and **External table** mapped to are shown - such as **Chargebee - Invoice** in the above example. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Bill has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. * You can commence a workflow to **Create external mapping** for the Bill directly - see [Creating and Managing External Mappings for Accounts](https://m3ter.mintlify.app/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) for an example. **Integration runs**. If you've set up an integration that synchronizes the Bill with an external system, the date/time and status of the **Latest** integration run are shown. * You can use a text hotlink to open details of this latest run or **View all runs**. See [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). ## Filtering Bills When you select a period for the Bills you want to load into the **Bill management** page, you might want to filter the list to help find specific Bills more easily. You can filter the Bills listed by **Status** or show only locked Bills. **To filter Bills by Status or only show Locked:** 1. Select **Billing>Bill management**. The **Bill management** page opens and the **Invoice date (inclusive)** range is set for the current month and any Bills for that period are listed. 2. If required, update the **Invoice date (inclusive)** range for the period you want to view Bills for. The page adjusts to show Bills for the selected period. 3. You can use the **Status** filter options or the **Only locked** switch: * The default settings when you first open **Bill management** are: * **Status** filter is **All**. * **Only locked** is off. * Select **Pending** for **Status**. The list adjusts to show only **Pending** Bills, none of which can be **Locked**: View Bills50 * Select **Approved** for **Status**. The list adjusts to show only **Approved** Bills, some of which might be **Locked**: View Bills51 * Select **Approved** or **All** for **Status** and then enable the **Only locked** switch. The list adjusts to show only Bills that are **Approved** and have been **Locked**: View Bills52 ## Managing Columns for Bill Management When working with Bills in Bill management, you can quickly reorder columns or switch columns off to suit your current operational purposes. For example, you might want to show **Status** and **Last Calc date** as the first two columns or hide these columns from view: * [Reordering Bill Management Columns](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#reordering-bill-management-columns) * [Switching Off Bill Management Columns](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#switching-off-bill-management-columns) ### Reordering Bill Management Columns **To reorder columns for the Bills list:** 1. Select **Billing>Bill management**. The **Bill management** page opens and the **Invoice date (inclusive)** range is set for the current month and any Bills for that period are listed. 2. If required, update the **Invoice date (inclusive)** range for the period you want to view Bills for. The page adjusts to show Bills for the selected period. 3. If you want to reorder the columns of the Bills list, select the vertical **Columns** button on the right-hand side of the list: 4. On the reorder columns panel that appears, drag-and-drop columns to give the order you want to show on the page: * Repeat until you have a top-bottom order of columns that you want to appear in left-right order on the page: 5. Select **Columns** again. The reorder columns panel closes and the **Bill management** page shows the reordered columns for the Bills list: Reorder Cols18 ### Switching Off Bill Management Columns **To switch off columns for the Bills list:** 1. Select **Billing>Bill management**. The **Bill management** page opens and the **Invoice date (inclusive)** range is set for the current month and any Bills for that period are listed. 2. If required, update the **Invoice date (inclusive)** range for the period you want to view Bills for. The page adjusts to show Bills for the selected period. 3. If you want to switch off columns of the Bills list, select the vertical **Columns** button on the right-hand side of the list: 4. Use the **Columns** panel that appears to switch off any columns you want to hide from the list: 5. Select **Columns** again. The switch columns panel closes and the **Bill management** page shows the Bills list without the hidden columns: ## Checking Zero Total Bills When you select a period for the Bills you want to load into the **Bill management** page, there might be some zero total Bills listed. A Bill can have a zero total because: * There are no product consumption or other charges due against the Account for the billing period. * The total of debit line items for product consumption and other charges against the Account are equal to the credit line items, such as Prepayment or Balance draw-downs. To check Bills listed in Bill management to determine why Bills have a zero total, you can switch on optional columns for *total debits* and *total credits*. This saves you having to open each individual Bill to check. **To check zero total Bills:** 1. Select **Billing>Bill management**. The **Bill management** page opens and the **Invoice date (inclusive)** range is set for the current month and any Bills for that period are listed: View Bills55 * In this example, the first four Bills listed have a zero **Total**. 2. Select **Columns**, switch on the **Total debits** and **Total credits** columns, and reorder the columns as required - see the [previous section](#managing-columns-for-bill-management) for details on how to do this: View Bills56 * We can now see that the second and fourth Bill are zero because the Total debits equals the Total credits and the first and third Bill are zero because there are no charges due against the Account for the billing period. ## Exporting the Bill Management Page You can export the list of Bills displayed on the Bill management page as a `CSV` formatted file at any time. **To export the Bills list:** 1. Select **Billing>Bill management**. The **Bill management** page opens and the **Invoice date (inclusive)** range is set for the current month and any Bills for that period are listed. 2. If required, update the **Invoice date (inclusive)** range for the period you want to view Bills for. The page adjusts to show Bills for the selected period. 3. If you want to export the list of Bills currently shown on the **Bill management** page, select the vertical **Export** button on the right-hand side: * The current **Bill management** list is downloaded locally in a `CSV` formatted file which you can then load into your preferred application to view. In this example, a downloaded file has been opened and we can see that the column and row ordering of the exported page is preserved: ## Running Bills Manually Some common billing management operations might require you to run bills manually for a specific Bill date. You can do this from **Bill management** by creating a *Bill job*: * [Preparing to Run Bills Manually - Notes and Tips](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#preparing-to-run-bills-manually-notes-and-tips) * [Creating and Running Bill Jobs](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#creating-and-running-bill-jobs) * [Running Bills Jobs - Example](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#running-bill-jobs-example) ### Preparing to Run Bills Manually - Notes and Tips Please review the following notes and tips before you attempt to set up and run billing manually. **Notes:** * **Billing does not run for Child Accounts separately.** Only when you run billing for a Parent Account will billing run for its Child Accounts. * **Maximum number of concurrent Bill jobs is restricted to 10.** If you already have 10 Bill jobs currently running, and try to create another one, you'll get an HTTP 429 response (Too many requests). When one of the existing bill jobs has completed, you'll be able to submit another job. **Tips:** * **Running Bills for Specific Accounts?** It's sometimes easier to open a specific Account and run Bills directly for that Account from the Bills tab - see [Reviewing and Recalculating Bills for an Account](/guides/end-customer-accounts/reviewing-bills-for-an-account). ### Creating and Running Bill Jobs This section explains how to create a Bill job and run Bills manually. **To create a Bill job and run billing:** 1. Open **Bill management** and select **Run billing**. The **Create Bill job** page opens: 2. First check your current **Organization billing settings**, which can affect how Bills are created for a Bill job: * **External invoice date**. The **Invoice date** you use is dependent on your Organization-level setting for **External invoice date**. The default for this under **Organization configuration** is **First day of next period**. However, if your accounting policy requires that you recognize usage revenue in the same service period as that in which the usage is recorded, and not in the following service period, then you can set **External invoice date** to **Last day of arrears**. If you are using **Last day of arrears** for the **External invoice date** setting, when entering an **Invoice date** for a Bill job you *must use the last day* of the service period. For example, if you are billing monthly, use the last day of the month period for which you want to generate a Bill manually. If you use the first day of the month service period following, a Bill *will not be generated*. * **Epochs**. The **Year**, **Month**, **Week**, and **Day epoch** dates configured for your Organization are shown. * **Consolidate bills**. If you've enabled **Consolidate bills** in your Organization configuration, the **Billing frequency** option will not be available for your Bill job settings. 3. If you want to change any of the current **Organization billing settings** before setting up a Bill job and running Bills manually, select the **View billing settings** hotlink text to open the **Configuration** page where you can **Edit** the **Organization configuration details**. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) for more details. 4. Enter **Bill job settings**: * **Invoice date**. (*Required*). Your selection for **Invoice date** will depend on the specific settings of your Organization for billing frequency and billing cycle date. For common billing setups, such as for monthly billing frequency and a billing cycle date of the 1st of each month, you can use the 1st of the month following to generate a Bill for the previous month's charges. * **Bill frequency**. (*Optional*). When you open the **Create Bill job** page, a default of **All** is selected for **Bill frequency**. But if you want to run billing manually for only those Accounts that are on a specific billing frequency, you can use the drop-down list to select the frequency: * **Daily** * **Weekly** * **Monthly** * **Annually** * **Ad Hoc** - You can use this setting: * For Bills generated for one-off Charges on Accounts. * When a custom billing schedule is used for billing an Account, such as for billing of Prepayment/Commitment fees using a custom billing schedule. **Warning!** If you've enabled **Consolidate bills** in your Organization configuration, the **Billing frequency** option will not be available. Please see the notes on enabling the **Consolidate bills** option for your Organization in the [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) topic. * **Target currency**. (*Optional*). You can select from the drop-down list of currencies you've set up for your Organization: * If you leave **Target currency** blank, the billing currency used for any bills generated for the Bill job depends on what you've defined as the billing currency at either Account or Organization level. * If you've defined a currency for an Account and chosen to override the Organization currency for the Account, then the billing currency used when you run Bills manually for the Account will be the Account currency. If you haven't defined an Account currency, then the Organization currency is used for billing the Account. * If you select a **Target currency**, then any Bills generated for the Bill job will be created using the selected currency as the billing currency. **Warning!** Remember that you must first configure any required currency conversion rates if the selected **Target currency** is different to the pricing currency configured for use on an Account, otherwise Bills will fail for the Account and you'll receive an **ERROR** alert under **Alerts**. For more details see [Creating and Managing Currencies](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies). 5. Select **Run billing**: 6. The Bill job is queued and you can track the billing run progress by clicking the **Running tasks** icon at top-right to open the **Running tasks** panel: When the Bill job has completed, the **Run billing** page opens: You can review: * **Bill job details**. The job **Status** is shown and you can **Copy** the job **ID** directly to your clipboard. * **Generated bills**. Any Bills created or updated by the Bill job are listed: * Use the **Reference** hotlink text to open a Bill. * Use the **Account name** hotlink text to open the Account the Bill was for. 7. If scroll to the bottom of the page, two buttons are provided: * If you want to set up another Bill job and run billing manually again, select **Re-run billing**. You are taken back to the **Create Bill job** page. * Otherwise select **Back to Bill Management.** ### Running Bill Jobs - Example Setting up Bill jobs and running billing manually can be useful for many billing operations scenarios. For example, suppose some historical usage data has come in for an Account that is billed on a monthly billing frequency and you want to run billing for the relevant billing date to check that a Bill is updated correctly to allow for the additional product usage. **To run Bills manually:** 1. Select **Billing>Bill management**. The **Bill management** page opens. 2. First, update the **Invoice date (inclusive)** date range to include the Account Bill you want to check. The page will refresh to show Bills with dates in the date range and you can identify the Account Bill you want to check for additional charges due to new historical usage data: Run Billing32 3. Select **Run billing**. 4. Enter the **Bill job settings** accordingly: * In this example, we want to check for new historical usage data submitted for the Account in November 2024 and have set the Invoice date at **December 1st 2024** and selected **Monthly** for **Bill frequency.** 4. Select **Run billing**. 5. When the Bill job has completed for the selected date and frequency and the **Run billing** pages opens, scroll to the bottom of the page and select **Back to Bill Management**: Run Billing33 * We can see that for the example Account the Bill **Total** has increased as expected for the charges due for historical usage data submitted in November 2024. # Scheduling Billing Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/scheduling-billing If you want Bills for your Accounts to be updated on a regular basis, you can: * Define this as part of your Organization configuration in the Console. * Use the *Update OrganizationConfig* API call. ## Understanding the Scheduled Billing Process If you implement scheduled billing for your Organization to have Bills for end customer Accounts updated at regular intervals, it's important to be clear about how the process works: * **What is included at Bill update?** The Bill for each Account is calculated at the time the scheduled update is due. The calculation will only include charges from *active* Account Plans on the Account at the time of the update. If an Account Plan becomes inactive before the scheduled update, only charges accumulated under that Account Plan up to its deactivation date will be included in the Bill. * **What about late-arriving data?** We accommodate usage data received up to 24 hours after the scheduled Bill update. Late-arriving data refers to usage data with a timestamp before the scheduled update, but which is ingested into the m3ter platform after the Bill has been updated. If any late-arriving data is recorded for an Account within this 24-hour window, the Bill will be recalculated to include the associated charges. * **Important qualification**: The 24 hour inclusion period following scheduled Bill update for late-arriving data is not always timed from the scheduled Bill update time. For cases where an Account Plan used to charge an Account ends before the scheduled time of Bill update, the 24 hour inclusion period for late-arriving data is timed from the time the Account Plan ends. For example, * If, on a monthly billing frequency, an Account has a single Account Plan which is active for all of October, we'll continue to recalculate the Bill to catch any late-arriving data through to end of November 1st. * If, however, the single Account Plan ceases to be active for the Account at midnight on the 14th October, we'll continue to recalculate the Bill to catch any late-arriving data only up to midnight on the 15th October. **Warnings!** * **Possible Conflict between Auto-Approval of Bills and Scheduled Bill Interval!** If a Bill is recalculated because of late-arriving data after being auto-approved, and the bill auto-approval interval is less than 24 hours, then the Bill will revert to a pending, unapproved state. * We recommend setting the auto-approval interval to 24 hours or longer when using scheduled bill updates. * **Deleting and recreating Account using same Code in late-arriving window**. If you delete an Account and recreate it using the same Code within the 24 hour late-arriving window, then usage data with an earlier timestamp will not be caught. For this and other reasons we strongly recommend *not reusing Account Codes* - see [Managing Accounts - Best Practices](/guides/end-customer-accounts/managing-accounts-best-practices) for more details. ## Scheduling Billing from Console **To schedule Billing in the Console:** 1. Select **Settings**: The **Settings** section opens at the **Organization** page with the **Configuration** tab selected. 2. On the **Organization configuration details** panel, select **Edit** The **Organization configuration** page opens. 3. Use the **Scheduled bill interval** drop-down to select the required interval in minutes or hours - ten options: **15 minutes, 30 minutes,** **1 hour**, **2 hours**, **3 hours**, **4 hours**, **6 hours**, **8 hours**, **12 hours**, or **24 hours**: * If, and only if, you select **24 hours** to implement daily Bill updates, then optionally you can also select a **Scheduled bill offset** and specify the hour in the day - **1** to **23** - when the scheduled daily Bill update will run. * The default is **Disabled**, which means no Billing is scheduled. 4. Select **Update Organization configuration**. You are returned to the **Configuration** tab where the **Scheduled bill interval** now shows on the **Organization configuration details** panel. ## Scheduling Billing Using API Call **To schedule Billing using API call:** 1. Review the API Documentation at [https://m3ter.com/docs](https://m3ter.com/docs). 2. Open the **OrganizationConfig** section. You can use the [Update OrganizationConfig](/api/organizationconfig/update-organizationconfig) API call to define a schedule interval for updating Bills: > **PUT** `/organizations/{orgid}/organizationconfig` 3. Enter the required parameters for this call and use the optional `scheduledBillInterval` request schema parameter to set the required interval: * **For portions of an hour (minutes).** Two options: **0.25** (15 minutes) and **0.5** (30 minutes). * **For full hours.** Enter **1** for every hour, **2** for every two hours, and so on. Eight options: **1**, **2**, **3**, **4**, **6**, **8**, **12**, or **24**. * If, and only if, you use **24** to implement daily Bill updates, then you can also use the optional `scheduledBillOffset` request schema parameter to specify the hour in the day - **1** to **23** - when the scheduled daily Bill update will run. * **Default.** The default is **0**, which disables scheduling. 4. Submit the API call. # Troubleshooting Bills Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills If you're experiencing issues when generating bills for an end customer Account, it's well worth running through the following troubleshooting checklist of common billing problems with suggested remedies/checks. * [Failed Bill Checklist](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#failed-bill-checklist) * [Billing Dates Issues](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#billing-dates-issues) * [Recalculating Bills after Billing Configuration Changes](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#recalculating-bills-after-billing-configuration-changes) * [Prorated Charges](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#prorated-charges) * [Using Preview Bill API Call with Debug Enabled](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#using-preview-bill-api-call-with-debug-enabled) * [Querying and Checking Usage Data in Data Explorer](#querying-and-checking-usage-data-in-data-explorer) ## Failed Bill Checklist Bills for an Account in your Organization might be failing to create for several reasons. You can use the *System Alerts* page in the Console as a starting point to check and remedy any issues which are causing Bills to fail. On your Organization **Dashboard**, *Your alerts* are listed and you can click **View all** to open the System Alerts page: * When a Bill is created successfully, an **INFO** Alert is generated. You can click the Alert to bring up an Alert dialog, which identifies the Account and the Bill total is shown. You can then use this information to keep track of Bills and also to check if the calculated Bill amount is what you'd expected it to be. * When a Bill fails to create, an **ERROR** Alert is generated. You can click on the Alert and in many cases the reason for the failure is explained in the Alert dialog. Here are some of the main reasons Bills fail to create and how to remedy the cause of failure: * [Currency Conversion Rate Missing](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#currency-conversion-rate-missing) * [Compound Aggregation Calculation Invalid](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#compound-aggregation-calculation-invalid) * [No Price Plan Attached to Account](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#no-price-plan-attached-to-account) * [Usage Data Issues](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#usage-data-issues) * [Parent/Child Accounts - Billing Hierarchy Issues](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#parentchild-accounts-billing-hierarchy-issues) * [Accounts with Prepayments/Commitments](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#accounts-with-prepaymentscommitments) * [Unexpected Error](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#unexpected-error) ### Currency Conversion Rate Missing If the *billing currency* set for your Organization or at Account level doesn't match the *pricing currency* set in the Plan Template/Plan you've attached to an Account for billing and you haven't defined a rate for converting the Plan pricing currency into the billing currency, then Bills will fail for the Account. To remedy: * Check the currency set for the Organization or at Account Level - see [Creating and Managing Currencies](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies). * Check the pricing currency set for the Plan Template/Plan - see [Editing Plan Templates and Plans](/guides/plans-and-pricing/working-with-plan-templates-and-plans/editing-plan-templates-and-plans). * Edit your Organization configuration. First select **Settings**: * The **Organization** page opens with the **Configuration** tab selected: * Select **Currency settings**: Default Curr3 * The **Currency settings** page opens. * On the **Currency conversions** panel, select **Edit**. * Add the required **Currency conversion** and then select **Update currency conversions**. * Re-run billing for the Account. **Tip:** The mismatch between the *billing currency* and *pricing currency* setting might not be explicit. For example, if you have entered "USD" for billing currency for Organization but entered "usd" - that is, in lower case - for Plan Template/Plan pricing currency, this will cause Bills to fail and a "Currency conversion missing" **ERROR** Alert will be generated. The remedy in this example is to update the Plan pricing currency setting to use upper case: "USD". ### Compound Aggregation Calculation Invalid If you've used a Compound Aggregation - an Aggregation that uses a calculation - and the calculation is invalid and cannot be resolved by the m3ter calculation engine, then Bills will fail for any Account on a Plan that is priced using the Compound Aggregation. A simple example would be if your calculation attempts to multiply or divide two non-numeric values. An **ERROR** Alert will be generated that identifies the invalid Compound Aggregation and explains why the calculation it uses is invalid. To remedy: * Open the Compound Aggregation and update the calculation as required in light of the explanation given on the Alert. * Re-run Billing for the Account. ### No Priced Plan Attached to Account A priced Plan has not been attached to an Account. This means that no pricing metrics are available for any usage data submitted for the Account so no Bill is generated. To resolve this problem: 1. [Create a Priced Plan](/guides/plans-and-pricing/pricing-plans/pricing-plans) if you have not already created one. 2. [Attach the Plan to the Account](/guides/end-customer-accounts/attaching-plans-to-an-account) to create an Account Plan. 3. Re-run Bill generation. ### Usage Data Issues Usage data may not have been uploaded correctly due to a variety of reasons. You can use the [Usage Data Explorer (v2)](/guides/data-explorer/usage-data-explorer-v2) to check if usage data and measures have been submitted against the Account. Key points to check: * Does the Account number on the usage data match the Account number you are billing? * Is the usage data within the service period being billed? ### Parent/Child Accounts - Billing Hierarchy Issues For Parent/Child Accounts, billing hierarchy issues can cause problems. If Bills are failing to generate: * Check at which level the Account Plan to be used for billing has been attached? * Is the Account Plan attached to the Parent/Child, or both? * Is the Account to which the Account Plan is attached part of the billing hierarchy? For more details on Parent/Child Accounts billing hierarchy mode settings, see [Billing Hierarchy Modes for Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts). ### Accounts with Prepayments/Commitments If the Account has a Prepayment added, then it's worth noting: * When using the **Bill with plan** option for billing Prepayment fees, ensure: * The Account Plan has the same **Billing cycle date** as the Prepayment/Commitment. * If configured, the Account Plan has the same Contract associated with it as the Prepayment. If Contracts do not match, then at billing the Prepayment amount will not be drawn-down against. * If you have set up billing for Prepayment fees to **Bill on a schedule** and you have made changes to the schedule, check Bills that were generated according to the original schedule. See [Prepayment Billing on a Schedule](/guides/end-customer-accounts/creating-prepayments-for-accounts#prepayment-billing-on-a-schedule) for more details. ### Unexpected Error If you receive a "Failed to create bill" **ERROR** on your **System Alerts** page, when you open the Alert an "Unexpected error" might be given as the reason for failure. This is for failures where the system cannot identify and report on a specific reason for the failure. In such cases, we recommend: * Select the the Alert. The Alert dialog will identify the Account for which a Bill has failed to generate and the date the error occurred is given. * [Contact m3ter Support](/guides/getting-started/contacting-m3ter-support) for help in investigating the error and have these details given in the Alert dialog ready to hand. ## Billing Dates Issues There are several areas where billing dates can get out of alignment and cause issues for Bill generation: * [Plan Pricing and Account Plan Dates not Synchronized](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#plan-pricing-dates-and-account-plan-dates-not-synchronized) * [First and Subsequent Bill Dates not Aligned](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#first-bill-date-not-aligned) * [Prepayment Dates Alignment with Required Billing Period](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#prepayment-dates-alignment-with-required-billing-period) ### Plan Pricing Dates and Account Plan Dates not Synchronized When Account Bills are generated in m3ter, two key sets of dates affect what is calculated with respect to the usage charged for in the Bill: * **Plan Pricing**. The period you've configured for the pricing on a Plan to be *applied to that Plan* - you set a start date and optional end date when you price a Plan. * **Account Plan**. The period you've configured for a priced Plan to be *active for an Account* - when you attach the Plan to an Account to create an Account Plan, you set a start date and optional end date. The start and end dates that define these two periods do not have to coincide, but if they do not, you might see a generated bill with unexpected amounts showing: * **Example**. Suppose you've set up a pricing to be applied to a Plan to start on September 1st 2022 for the rest of the calendar year. You've then attached the priced Plan to become active for an Account on August 1st, also through to the end of the year. If, after some usage data has been submitted for the Account during the month of August, you open **Bill management** in the Console and **Re-run billing**, the Bill generated for the Account *will not show* charges for this submitted usage data. Because the pricing start date is set at September 1st, the Bill will only show any standing charges configured for the Plan. * **Fix**. What's the fix for this sort of misalignment of dates for billing? Assuming monthly billing frequency, if you want to produce a Bill for the month of August that includes charges for usage data, you must go back into the **Pricing editor** and create a *second pricing* for the Plan with a start/end date of August 1st/ September 1st (remembering end dates are exclusive so to cover the August period through to midnight on August 31st). If you return to **Bill management** and **Re-run billing**, the bill for the same Account will now show charges for the August usage data according to the new pricing you've configured for the Plan, since the Plan is already active for the Account. If you suspect this might be your billing issue, you can follow a course through the Console to quickly chase it down and confirm Account Plan/Plan Pricing dates alignment: 1. Open the page for the Account with billing issues and select the **Attached Plans** tab. The **Active and pending plans** panel lists Account Plans with **ACTIVE** and **PENDING** tags. Note the start/end dates of an **ACTIVE** Account Plan. 2. Select the hotlink text for the Account Plan. The **Plan attachment** page opens: * Under Plan attachment details, you can read off the **Start** and **End** dates defining the *period the Account Plan will be active for the Account*. 3. Scroll down the page: * Under **Plan details** you can read-off details of the Plan attached to the Account to create the Account Plan. * Any **Pricing** configured for the attached Plan will be shown with the **Start** and **End** dates defining the *period a Pricing applies to the Plan*. 4. Check the start/end dates for the pricing on the Plan to confirm date alignment between *period pricing applies to Plan* and *period Account Plan is active for the Account*. 5. If you want to investigate further, select the **View pricing schedule** hotlink text for a **Pricing**: * The **Pricing schedule** page for the priced Plan opens and gives you comprehensive details of the Plan with the **Aggregation** used to price it and date ranges for a list of (active or pending) **Pricings** you've configured for the Plan. ### First and Subsequent Bill Dates not Aligned You can set up *first and subsequent* Bill creation dates at the Organization level when you configure your *Epoch settings* at **Settings>Organization>Edit Organization**. However, you can also define *first and subsequent* Bill creation dates at two further points in your overall configuration: * **At Account Level**. You can optionally set a **Billing cycle date** for a specific Account and this will override the Epoch settings at Organizational level. * **At Account Plan Level**. You can optionally set a **Billing cycle date** for a specific Account Plan that will be used to determine charges on an Account and this will override the **Billing cycle date** you might have set up at Account level. With these configuration dependencies in mind, if you're seeing some unexpected billing behavior, it's well worth performing a quick check to confirm the *first and subsequent* Bill creation date that applies for the Account - at Organization, Account, or Account Plan level - is correct. For more details with explanatory examples, see [First and Subsequent Bill Dates](/guides/getting-started/working-with-dates-in-m3ter-easy-reference#first-and-subsequent-bill-creation-dates). ### Prepayment Dates Alignment with Required Billing Period If you add a Prepayment to an end-customer Account and not all of the Prepayment is paid upfront, to set up billing on the Account for the remaining Prepayment fees due you can select either to *Bill with Plan* or *Bill on a Schedule* - see [Creating Prepayments for Accounts](/guides/end-customer-accounts/creating-prepayments-for-accounts) for more details. If you choose to set up billing for any outstanding Prepayment fees due on an Account using the *Bill with plan* option, please take care to ensure the required alignment of start/end dates for the Prepayment service period with the required overall billing period: * For example, suppose you select a Plan for Prepayment billing that is set up for quarterly billing. This is what your Prepayment billing use case requires: * A \$10,000 Prepayment has been agreed with your customer with nothing to be paid upfront. The Prepayment amount is to be paid in four equal amounts at quarterly intervals across the first year. * You want to Bill in advance and the first bill date to be July 1st 2025. * The first Bill amount to be set at \$2,500, and the remaining \$7,500 is to be billed at quarterly intervals in three equal amounts of \$2,500. * However, if the end date configured for the Prepayment service period doesn't extend for the full year from the first bill date - say the Prepayment end date is set at June 15th 2026: * In this case, the Bills will not be calculated at the correct \$2,500 for each of the remaining three quarters: * We can see that because the Prepayment service period does not extend for the full extent of the final quarter, the remaining \$7,500 due has been split between the 2nd and 3rd quarterly Bills. * If we adjust the Prepayment service period to make the end date July 1st 2026: * And we then recalculate the 2nd, 3rd, and 4th quarter Bills, we see the correct Bill totals of \$2,500: ## Recalculating Bills after Billing Configuration Changes Suppose you've set up a specific billing configuration for an end-customer Account and Bills have already been generated according to this configuration. If you then make changes to the billing configuration, when you recalculate the previously generated Bills, the changes might not be reflected the recalculated Bills: * [Removing or Changing an Account Plan](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#removing-or-changing-an-account-plan) * [Updating a Prepayment/Commitment Fee Billing Schedule](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#updating-a-prepaymentcommitment-fee-billing-schedule) ### Removing or Changing an Account Plan After setting up billing configuration for an end-customer Account by attaching one or more Account Plans to the Account, you might need to change the billing configuration for the Account for cases such as: * An end-customer begins their service period with you having signed-up to consume several of your products or services. After some billing dates have passed, the customer decides they want to drop one of the products. Several Account Plans are attached to the Account - one for each of the products consumed. You therefore remove the Account Plan from their Account covering charges for the dropped product. In this type of case, any charges due under the previously attached Account Plan - such as standing charges even if no product usage charges had accrued - *will not be removed* when you simply recalculate the existing Bills. You must first *manually delete these Bills* and then *re-run billing* to ensure the billing configuration changes are correctly shown on the Account's Bills. * In a similar way, if Bills have been created for an Account, you want adjust the pricing for the product. To do this, you swap out the Account Plan for a product your end-customer consumes by removing the original Account Plan attached to the Account and replacing it with a new one. To ensure Bills created for the original billing configuration are updated, you must first *manually delete* those existing Bills and then *re-run billing*. ### Updating a Prepayment/Commitment Fee Billing Schedule Suppose you've set up a schedule for Prepayment billing for an Account and a Bill has already been generated for one of the Prepayment fee dates on that schedule, a Bill that might also includes usage charges for priced Plans attached to the Account. If you then change the dates for the Prepayment schedule, when you recalculate the existing Bill the Prepayment fee due under the original schedule will still be included. You must *first delete the old Bill* generated for the original Prepayment fee schedule and then *re-run billing*. The new Bill will then be generated in accordance with the updated Prepayment schedule. **Important: Scheduled Billing!** If you are using [Scheduled Billing](/guides/billing-and-usage-data/running-viewing-and-managing-bills/scheduling-billing), please ensure you check for this after updating a Prepayment fee schedule. ## Prorated Charges There are cases where line item charges shown on Bills are prorated. If you see a charge amount on a Bill which you were not expecting or which you find puzzling, this mechanism might be the cause. It's worth checking for this when you find what at first appears to be an odd billing charge. ### Bill Doesn't Cover Entire Billing Period If a Bill doesn't cover the entire billing period, then prorating is applied: * **Billing Charges Start Mid Billing Period**. For example, if you've set things up to bill an Account on a monthly frequency on the 1st of each month, *BUT* you've set the start and end dates for the Account Plan to fall *somewhere within calendar month billing periods* - the first and last Bills will apply prorating accordingly: * Similarly, if the Account Plan is active for the Account from the first day of the first month and last day of the last month of the overall service period, *BUT* when you priced the Product Plan you set the start and end dates for the period the pricing *applies to the Plan* somewhere within the first and last calendar month of the overall service period. * Similarly, for other billing frequencies - weekly or yearly. * **First and subsequent Bill dates not set to 1st day of Billing Period**. For example, prorating is applied if you've set things up to bill an Account on a monthly frequency and the Account Plan is set to start to be active for the Account on the 1st of a month and end on the last day of a month, *BUT* you've set the *first and subsequent Bill date* somewhere in the middle of the first and successive months. The first Bill will apply prorating to cover the appropriate *leading portion* of the first billing period, and the last Bill will apply prorating to cover the appropriate *trailing portion* of the last billing period of the overall service period. * Similarly, for other billing frequencies - weekly or yearly. **Note: Prorating Precision**. The following examples illustrate cases of prorating applied for whole days, such as when an Account Plan attached to an Account only covers a number of whole days within a monthly billing period. However, prorating of standing charge and minimum spend amounts for billing is done to millisecond precision to accommodate cases where start or end date/times fall within a single day, such as when one Account Plan ends at 10:00 and another Account Plan starts at 14:00 on the same day. Here are some examples to illustrate: * [Billing Charges Start Mid-Billing Period](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#billing-charges-start-mid-billing-period) * [First Bill Date Not Set to 1st of Month](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#first-bill-date-not-set-to-1st-of-month) #### Billing Charges Start Mid-Billing Period Suppose we've set up an Account to be billed using a priced Product Plan we've attached to the Account where the Plan is set up for: * Monthly billing frequency billed on the 1st of each month. * A Standing Charge of \$20. * A Minimum Spend amount of \$40. However, when we attached the Plan to create an Account Plan, we select a start date for the Account Plan to become active for the Account that falls somewhere within the first monthly billing period. This means on the first Bill, the Standing Charge and Minimum Spend amounts will be prorated for the number of days of the first month's billing period the Account Plan was active for the Account: T Shoot Bills113 In this example, we've attached the Plan to create an Account Plan that becomes active on May 25th 2025 for the Account. Suppose that as yet no usage charges have accrued since we attached the Plan and we now run a Bill for June 1st 2025: T Shoot Bills14 We can see that prorating is applied for the non-usage charges to bill only 7-day's worth each of the 31-day month of May for the \$20 Standing Charge and \$40 Minimum Spend. A similar prorating occurs if we set the *end date* for when the Account Plan ceases to be active for the Account on a date that falls somewhere within the final billing period: * To adapt this example, suppose we'd set the end date for the Account Plan at May 25th 2026. The final Bill for June 1st 2026, would then prorate the \$20 Standing Charge and \$40 Minimum spend amounts accordingly. Remembering that end dates are exclusive, the final Bill shows 24-day's worth of the 31-day month of May for these charges: T Shoot Bills15 #### First and Subsequent Bill Date Not Set to 1st of Month If you set the [first and subsequent Bill creation date](/guides/authenticating-with-the-platform/service-authentication#generating-an-api-key-and-secret-for-a-service-user) for an Account to fall somewhere mid-month, then the billing period for calculating any prorated charges will span that date on successive months. For example with a monthly billing frequency, if you set first and subsequent Bill date at May 15th, then the first billing period is April 15th to May 15th, and it's important to note that the number of days in that period will vary depending on the successive months the period spans. Suppose we've set up an Account to be billed using a priced Product Plan we've attached to the Account where the Plan is set up for: * Monthly billing frequency. * A Standing Charge of \$20. * A Minimum Spend amount of \$40. * The Account Plan is active for billing the Account from the first day of the first month until the last day of the last month - for our example, an overall period of May 1st 2025 until May 31st 2026: T Shoot Bills19 However, we've set the **Billing cycle date** for the Account at May 15th 2025: T Shoot Bills17 Suppose as yet no usage charges have accrued on the Account and we run billing for the first bill date: T Shoot Bills16 Since we've set the **Billing cycle date** as May 15th, the billing period is determined as the 30-day period April 15th 2025 to May 15th 2025. We can see that prorating is applied for the non-usage charges to bill only 14-day's worth each of this 30-day period for the \$20 Standing Charge and \$40 Minimum Spend. A similar prorating occurs for the final Bill for this example, when we again assume no usage charges have accrued and we run billing for June 15th 2026 - only 17-day's worth each of the 31-day billing period from May 15th 2026 to June 14th 2026 for the \$20 Standing Charge and \$40 Minimum Spend: T Shoot Bills18 ## Using Preview Bill API Call with Debug Enabled When you generate a bill and the result isn't what you expect, you can use the *Preview Bill* API call with *Debug* enabled to review information in the response which might help you to figure out what's going wrong. Here's an example to follow using Postman. **To make a Preview Bill call with debug enabled in Postman:** 1. Make the usual preparation for Service User authentication with the platform by generating an **Access Key id** and **Api Secret** in the Console - see [Generating an API Key and Secret for a Service User](/guides/authenticating-with-the-platform/service-authentication#generating-an-api-key-and-secret-for-a-service-user). 2. In your Postman workspace, obtain a Bearer Token for the Service User using the Access Key id and Api Secret - see [Obtaining a Bearer Token Using Basic Auth](/api/account/list-accounts). 3. If you are unsure of the Account id of the Account for which bill generation has failed, then use your Bearer Token to submit a **GET** *List Accounts* call for your Organization: > `https://api.m3ter.com/organizations/396d788d-5174-XyXy-RsRs-a12f3456fc78/accounts` The response will list all of the Accounts in your Organization and you can read-off the Account id you need. See the API Reference for the [List Accounts](/api/account/list-accounts) call for more details. 4. Now, submit a **POST** *Preview Bill* call for the relevant Account using your Bearer Token and with debug enabled: > `https://api.m3ter.com/organizations/396d788d-5174-4e8b-9d69-a41f4671fc33/bills/preview?debug=true` In the **Body** tab, enter the relevant bill data, for example: ```json theme={null} {    "lastDateInBillingPeriod": "2022-06-30", "accountIds": ["18611463-aa04-46bf-9233-bfdab1fcf082"], "billingFrequency": "MONTHLY", "billFrequencyInterval": 1 } ``` See the API Reference for the [Preview Bill](/api/bill/preview-bill) call for more details. 5. In the `debugLog` section of the response schema, you can read-off debug `INFO`. For example: ```json theme={null} "debugLog": [ "INFO Retrieving billing configuration for account:18611463-aa04-46bf-9233-bfdab1fcf082", "INFO Getting required bills to generate", "INFO Will generate bill for date:2022-07-01 interval:1 frequency:MONTHLY", "INFO Generating bill for account:18611463-aa04-46bf-9233-bfdab1fcf082 date:2022-07-01 interval:1 frequency:MONTHLY", "INFO Adding standing charge of 25.0 for Plan ee03ac6f-77d1-4ae7-81cd-4e62673b2b0f", "INFO Retrieving aggregated usage between 2022-06-01T00:00:00Z to 2022-07-01T00:00:00Z for meter code:my_meter1 aggregation:SUM field:gb_store segments: for account codes:[doetech_premium2]", "INFO No aggregated usage found", "INFO Processing usage for Plan ee03ac6f-77d1-4ae7-81cd-4e62673b2b0f", "INFO No product dynamic credits to apply", "INFO Adding arrears minimum spend adjustment of 1.5E+2 for Plan ee03ac6f-77d1-4ae7-81cd-4e62673b2b0f", "INFO No global dynamic credits to apply", "INFO No commitments to consume", "INFO No commitments to charge fee" ] ``` In this example, at line **8**, we can see that `"No aggregated usage found"` for the target field on the Meter for the billing time period, all as detailed on line **7**. This might the reason the Bill amount is not what was expected, which can now be followed-up. ## Querying and Checking Usage Data in Data Explorer The Usage Data Explorer (v2) is a great tool that let's you query for usage data held for your Organization in m3ter. We strongly urge you to exploit the Usage Data Explorer (v2) when investigating and chasing down any knottier billing issues you are encountering. You can quickly build a usage data query and review the returned usage data measurements ingested into the platform. For details see [Usage Data Explorer (v2)](/guides/data-explorer/usage-data-explorer-v2). # Viewing Bill History Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/viewing-bill-history Under Billing, you can review the *Bill history* for a selected Account. You can inspect the standing charges and pricing charges under the pricing Plans attached to the Account. You can also open a pricing Plan used for a Bill and review the pricing structure of the Plan more closely. This topic explains how to work in the Billing section to open and view an Account's Bill history. **To view Bill history for an Account:** 1. Select **Billing**. The **Bill management** page opens. 2. Select **Bill history**: The **Bill history** page opens. 3. Use the drop-down to select the **Account** for which you want to view Bill history. The Bills generated for the Account are listed with the most recent shown first: The charges amounts used to calculate the Bill totals are listed by Product. 4. If you want to review the usage quantity under a listed charge, select to expand the charge and reveal the **Quantity**: 5. If you want to review a **Pricing plan** used for a Bill, select the name text of the Plan. You are taken to the **Plan details** page, where you can review any **Pricing** configured for the Plan. # Working with Bill Statements Source: https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements You can create *Statements* to accompany the Bills you send out to your end-customers as backing sheets to their invoices. Bill Statements provide a useful breakdown of the usage responsible for charge line items your end-customers see on their invoices: * Create *Statement Definitions* to specify the way billed usage will be aggregated and compiled in the Statement. For example, if you are billing customers monthly, you might want to breakdown the usage responsible for the monthly charge on a Bill into weekly portions in Bill Statements. * At Organization level select a default Statement Definition. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * At Account level: * Select a Statement Definition, which will then override the Organization default. * Select to auto-generate Statements when Bills are approved or locked. * When viewing a Bill, generate Statements manually - two options: * Full Statements. Generated Statements will include for *all usage* collected by the Meters defined for the Statement Definition. * Partial Statements. Allows you to filter by Meter IDs defined for the Statement Definition. Generated Statements will include only for the *usage collected by selected Meters*. * When Statements have been generated for a Bill, download them in JSON and CSV format, which you can then transpose and compile into the required delivery format. * Check if a Bill Statement needs refreshing by comparing the Bill calculation timestamp against the Statement's last modified date, which is available in the response to a get Statement API call Common Bill Statement use cases: * One common use case is to provide a breakdown by time period. For example, if you bill and issue invoices on a monthly frequency, then you might want to provide a weekly or daily charge breakdown Statement as a backing sheet to invoices, allowing end-customers to see how their usage was distributed across the billing period. * Another use case would be to provide a breakdown on the basis of location of usage charged for. For example, a text messaging service imposes a usage charge per billing period for all messages logged that originate from outside of a customer's native country. This usage is measured for the billing charge as a single block of total recorded usage, which results in a single usage charge line item for "other country" usage in customer invoices. But if the Meter collecting that usage is set up to also record a location for message events by country of origin, you can set up a Statement Definition that provides the required breakdown by the Meter's location dimension. This topic uses the second common use case as a worked example to explain how to create Statement Definitions, set up default Statements, generate full or partial Statements for Bills, and how to download generated Statements in your preferred format. * [Creating Statement Definitions](#creating-statement-definition) * [Using Statement Definitions](#using-statement-definitions) * [Generating Full Statements for Bills and Downloading](#generating-full-statements-for-bills-and-downloading) * [Generating Partial Statements for Bills and Downloading](#generating-partial-statements-for-bills-and-downloading) * [Enabling Auto-Generation for Statements](#enabling-auto-generation-for-statements) * [Checking Statement Last Modified Date](#checking-statement-last-modified-date) **Bill Statement limit**. A default Bill line item limit of 50,000 is imposed on Bill Statements. This default limit can be increased on request - please ask your m3ter contact for more details or get in touch with [m3ter Support](/guides/getting-started/contacting-m3ter-support). ## Creating Statement Definitions When you create and configure a Statement Definition, you can define how the usage data collected by a Meter for a billing period, and on which usage charges are based, will be broken down for end-customers who will receive a Statement generated using the Statement Definition. **To create and configure a Statement Definition:** 1. Select **Billing**. The **Billing** section opens at the **Bill management** page. 2. Select **Statement definitions**: The **Statement definitions** page opens and list any existing Statement Definitions. 3. Select **Create statement definition**. The **Create** page opens. 4. Under **Statement definition details**, enter a **Name** for the Statement Definition. 5. Use the drop-down to select an **Aggregation frequency**: * **Daily** * **Weekly** * **Monthly** * **Quarterly** * **Yearly** * **Whole bill period** 6. Use the switch to enable **Include price per unit**. Default is disabled. 7. Use the switch to **Generate slim statements**. Enable this option if you have priced Plans using segmented Aggregations attached to end-customer Accounts and want to exclude segments that don't appear on Bills from Statements. Default is disabled: Statementdef19 8. Under **Measures**, use the drop-down to select a **Meter** that collects the usage data used as the basis of the usage charges for billing. The **Measure** drop-down selection field is activated for the selected Meter. 9. Use the **Measure** drop-down to select a Meter measure Data Field which is aggregated into unit price rates and used as the basis for usage charges at billing. 10. Use the **Aggregation functions** drop-down list to select the way you want to aggregate the selected Meter Data Field values for Statements. Seven options: * **Sum**. Adds the values * **Minimum**. Uses the minimum value. * **Maximum**. Uses the maximum value. * **Count**. Counts the number of values * **Latest**. Uses the most recent value. * **Mean**. Uses the arithmetic mean of the values. * **Unique**. Lists each of the unique values. 11. Under **Dimensions**, use the drop-down to select a Meter that collects the usage data as the basis of the usage charges on Bills. The **Dimension** drop-down is activated for the selected Meter. 12. Use the **Dimension** drop-down to select the Meter Dimension you want to use as the basis of the Statement's breakdown of usage. 13. If you want to filter the selected **Dimension** values which will appear on the Statement, under **Filter**, choose the **Selected values** radio button. The **Filter** values field is activated. 14. Enter any values you want to filter the Statement breakdown by - only the **Dimension** values you enter will be used: Statementdef20 In this example, the Statement Definition uses: * A single numeric **Message Events2** measure on a Meter, which collects usage data on the number of messages and on which billing usage charges are based. * A single non-numeric **Origin Country2** dimension on a Meter and on which a breakdown of charges will be based. No filtering of values is enabled. 15. If you want to use other Meter Measures and Dimensions for your Statement Definition, select **Add** under **Measures** or **Dimensions** and repeat steps 6 to 14. 16. Select **Create statement definition**. The **Statement definition details** page opens: Statementdef33 ## Using Statement Definitions When you've set up a Statement Definition, you can select it as the one used to generate Statements for Bills: * Select it as the default at the Organization level. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * Select it to be used for a particular Account as one of the Account settings. These options act in the following way: * If you set a default Statement Definition at the Organizational level, this is used when you generate Bill Statements for any Accounts for which *you haven't selected a Statement Definition*. * If you set a Statement Definition for an individual Account, this will be used when you generate Bill Statements for the Account and *takes precedence* over any Statement Definition you've selected at Organization level. **To set up default Bill Statements:** 1. Create the Statement Definition you want to set as the default at Organization level or the one you want set as the default for a particular Account level. See the [previous section](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements#creating-statement-definitions). 2. To define a default Statement Definition at Organization level, select **Settings**: The **Organization** page opens with the **Configuration** tab selected. 3. On the **Organization configuration details** panel, select **Edit**. The **Organization configuration** page opens. 4. Scroll down the page and under **Bill statements**, use the **Statement definition** drop-down to select the Statement Definition you want to set as the default. 5. Select **Update Organization configuration**. You are returned to the **Configuration** tab and the selected Statement Definition is shown on the **Organization configuration details** panel as the **Default statement definition**. * Note that you can select the hotlink name text of the Statement Definition to open the **Statement definition details** page directly. 6. If you want to override the Statement Definition you've set as the default at Organization level for a particular Account, open the **Edit** page for the Account. 7. Scroll down the page and on the **Bill statements** panel, use the **Statement definition** drop-down to select the Statement Definition you want to use for the Account. 8. Select **Update Account**. ## Generating Full Statements for Bills and Downloading When you open and view a Bill for an Account under Bill management, you can manually generate a *full Bill Statement* and include for usage collected by all Meters when the Statement is generated: * The Statement generated will use the Statement Definition you've set as the default at Organization level or the Statement Definition you applied to the Account - if you've defined a Statement Definition at Account level, this will take precedence. * You can choose to generate the Statement in JSON format only or both JSON and CSV format. Note that the line items within a Statement are not necessarily sorted, and you should sort by the appropriate fields as part of subsequent processing. * When the Statement has been generated for the Bill, you can download the Statement in JSON or CSV format if you also selected CSV format when generating the Statement. **To generate full Statements for Bills and Download:** 1. Open the Bill you want to generate a full Statement for in **Bill management**: Statement Def37 In this example, we've opened a monthly Bill for an Account in an Organization where the default Statement Definition is the **Message Location Statement** we created in the [previous section](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements#creating-statement-definitions): * We can see that month's charge is for a total of 6,100 messages, and this is shown as a single line item. * The generated Statement should show a breakdown into separate countries of message origin. 2. At top-right, select **Statements**. The **Generate statements** page opens: Statementdef24 3. Under **Statement job settings**, you can review the set up for the Statement that will be generated, including the Statement Definition that will be used. 4. For the current example, we'll leave the **Statement job type** at the default **Full statement** selection. 5. Select for the formats used in Statement generation: * **Generate JSON statement**. This is selected by default and you cannot de-select. * **Generate CSV statement**. By default this is de-selected - use the switch to select it if you want the statement to be generated in CSV format also. **Important: Statement Definition default must be selected!** If you haven't selected a default Statement Definition for Bills at either Organization or Account level, then the **Generate statements** button will not be active and you won't be able to generate Statements. See above: [Using Statement Definitions](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements#using-statement-definitions). 6. Select **Generate statement**. This will kick-off the job to generate a full Bill Statement and the **Statement job details** page opens: Statementdef25 **Notes**: * Note that the Statement job might take a few minutes and the **Status** will show as **PENDING** while it runs. * From **Statement job details**, you can select to **Re-generate statement**: * This takes you back to the **Generate statements** page where you can generate another partial or full Statement. * Full Statements are persisted on the Bill and remain available for download from the **Generate statements** page. A reminder is given: Statementdef32 7. When the Statement job is **COMPLETE**, select which format you want to download: **Download JSON** (always) or **Download CSV** (if you selected **Generate CSV statement**). The Statement is downloaded and saved locally to your **Downloads** folder. 8. You can now open the Statement in the 3rd-party application of your choice and transpose and compile it as required for issuing to your end-customers as a charge breakdown backing sheet to their invoice. * For the current example using the **Messaging Location Statement** as Statement Definition for the example Bill, we've generated and downloaded a full Statement in CSV format and loaded it into a spreadsheet: Statementdef26 * We can see that the Bill Statement shows the breakdown on the basis of location of message origin using the Meter dimension field **Origin Country2 (origin\_country\_2)**, and in accordance with the Statement Definition we set up and applied to the billed Account. ## Generating Partial Statements for Bills and Downloading When you open and view a Bill for an Account under Bill management, you can manually generate a *partial Bill Statement* and include only for the usage collected by selected Meters when the Statement is generated. To show how to generate partial Bill Statements: * We'll extend the current worked example and update the Statement Definition we used in the [previous section](#generating-full-statements-for-bills-and-downloading) to now use *two each of measure and dimension fields* and belonging to two different Meters. * Assume end-customer Accounts are Billed for usage collected by both Meters. First, here's the updated **Message Location Statement**: Statementdef35 * Note that we've added to include for Statements generated using this Statement Definition to include Measure and Dimension fields on *two different Meters* - **Messaging Events 2** and **Messaging Events 1**. **To generate partial Statements for Bills and Download:** 1. Open the Bill you want to generate a partial Statement for in **Bill management**: Statement Def38 * Note that the Bill has usage charge line items that derive from Aggregation pricing metrics targeting different Meters. 2. Select **Statements**. The **Generate statements** page opens. 3. Under **Statement job type**, select **Partial statement**. The page adjusts to show a **Meters** drop-down selection field. 4. For the current example, select **Messaging Events 1** for **Meters**: Statementdef29 * Note that you can select up to a maximum of **10 Meters**. 5. Select **Generate partial statement**. This will kick-off the job to generate a partial Bill Statement and the **Statement job details** page opens: Statementdef30 **Notes**: * The Statement job might take a few minutes and the **Status** will show as **PENDING** while it runs. * From **Statement job details**, you can select to **Re-generate statement**. This takes you back to the **Generate statements** page where you can generate another partial or full Statement. **Partial Statements not persisted on Bill!** Note that if you do this and in contrast to when full Statements are generated, any partial Statements you might have already generated are no longer available for download from the **Generate statements** page. 6. When the Statement job is **COMPLETE**, select which format you want to download: **Download JSON** (always) or **Download CSV** (if you selected **Generate CSV statement**). The Statement is downloaded and saved locally to your **Downloads** folder. 7. You can now open the Statement in the 3rd-party application of your choice and transpose and compile it as required for issuing to your end-customers as a charge breakdown backing sheet to their invoice. * For the current example using the **Messaging Location Statement** as Statement Definition for the example Bill, we've generated and downloaded a partial Statement in CSV format and loaded it into a spreadsheet: Statementdef31 * We can see that the Bill Statement shows the breakdown on the basis of location of message origin using the Meter dimension field **Origin Country1 (orig\_country\_1)**, and in accordance with the Statement Definition we set up and applied to the billed Account. However, this only includes usage data collected by the single Meter we selected for the partial Bill Statement generation: **Messaging Events 1**. * Note also that *all* the Measures and Dimensions we included in the Statement Definition - that is in the current example, the **Message Events 2** Measure and **Origin Country 2** Dimension - are included, but since they belong to the *excluded* **Messaging Events 2** Meter these are empty. ## Enabling Auto-Generation for Statements You can enable auto-generation of Bill Statements for Accounts whenever a Bill is approved or locked: * At Organization level. * At individual Account level. These alternatives work together in the following way: * If you make a selection for auto-generation of Bill Statements at Organization level but do not select for this at the individual Account level, the Organizational level setting is applied. * If you make a selection for auto-generation of Bill Statements at the individual Account level, this selection will apply to the individual Account, regardless of the selection for this made at the Organizational level. **To enable auto-generation of Bill Statements when Bills are approved or locked :** 1. Either: * At **Settings>Organization**, on the **Configuration** tab select **Edit** on the **Organization configuration details** panel. The **Organization configuration** page opens. * Open the Account you want to enable auto-generation of Bill Statements for and select **Edit**. The **Edit** page opens. 2. Scroll down the page and on the **Bill statements** panel, use the radio buttons to enable **Auto-generate statements**: * **None**. Statements will not be auto-generated. (*Default*) * **JSON**. Statements will be auto-generated in JSON format. * **JSON and CSV**. Statements will be auto-generated in both JSON and CSV format. 3. Select **Update Organization configuration** or **Update account**. ## Checking Statement Last Modified Date You can obtain the last modified date for a Bill Statement using API calls. This is useful if you want to check whether or not the Statement needs regenerating by comparing the last modified date/time with the Bill's timestamp. **To obtain a Statement's last modified date:** 1. First, obtain the `id` of the Bill whose Statement you want to check the last modified date/time for. 2. Use this `id` to make one of the available Retrieve Bill Statement API calls: * [Retrieve Bill Statement in JSON format](/api/bill/retrieve-bill-statement-in-json-format) * [Retrieve Bill Statement in CSV format](/api/bill/retrieve-bill-statement-in-csv-format) 3. The response to either call returns a pre-signed URL, which you can use to download the Statement file in either JSON or CSV format with a `GET` call using the URL. For example: `GET https://m3ter-billing-statements-16yxyxyxyxy-eu-west-2.s3.eu-west-2.amazonaws.com/0a5ec4d1-3300-4e2e-975d-16b3009fbf4e/89b234c3-bbb7-4179...` The response to this call includes a **Last-Modified** header, where you can read-off the date and time. # Submitting Usage Data Source: https://docs.m3ter.com/guides/billing-and-usage-data/submitting-usage-data Usage data sits at the heart of any robust and reliable usage-based pricing implementation. As an explicitly data-first solution, m3ter offers several ways for you to quickly and easily get your usage data into the platform: * [API Calls for Data Ingest](/guides/billing-and-usage-data/submitting-usage-data/api-calls-for-data-ingest) * [File Upload Service API](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api) * [Submitting and Checking Test Usage Data](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data) * [File Uploads for Usage Data by Meter](/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter) ## Usage Data Adjustments There might be occasions where you need to make corrections for billing retrospectively against an Account. You can use the timestamp field for a usage data submission and submit positive or negative usage data amounts to correct and reconcile earlier billing anomalies: * [Submitting Usage Data Adjustments Using Timestamp](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp) ## Usage Data for Non-Existent Accounts If you need to get product usage data into the platform before you've set up all of your end-customer Accounts, you can use an Account code to submit a usage data measurement even if the Account doesn't yet exist. A skeleton Account is created automatically using the code, and the usage data measurement is then linked to the skeleton Account. * [Submitting Usage Data for Non-Existent Accounts](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-for-non-existent-accounts) ## Usage Data Ingest Failure Events Usage data ingest can fail for several reasons. When an attempt to ingest usage data measurements into the platform encounters an error, an ingest validation failure Event is generated. You can review and follow-up on ingest failure Events and resolve any issues: * [Reviewing and Resolving Ingest Events](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events) **Tip: Reviewing Submitted Usage Data?** You can query for and review submitted usage data using the [Usage Data Explorer (v2)](/guides/data-explorer/usage-data-explorer-v2). # API Calls for Data Ingest Source: https://docs.m3ter.com/guides/billing-and-usage-data/submitting-usage-data/api-calls-for-data-ingest m3ter is an API-first platform. When you've created your Meters and their data-collection fields, you can use the *Submit Measurements* API call to m3ter's *Ingest API* to submit usage data into those fields: > **POST** `/organizations/{orgid}/measurements` For more details on the Submit Measurements API call to the Ingest API, see: * The [Submit measurements](/api/measurements/submit-measurements) API Reference Docs page. * The [Getting Started with API Calls](/guides/m3ter-apis/getting-started-with-api-calls) topic, which provides an example of a the call with code snippets for different languages you can copy. **Important! Request Rate and Payload Limits**. The Ingest API is designed to handle high request rates and offers high payload-per-request size. However, we impose limits on request rate and request payload size. See [m3ter APIs](/guides/m3ter-apis) # File Upload Service API Source: https://docs.m3ter.com/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api You can use the m3ter *File Upload Service API* to upload a usage data measurements data files to the platform in preparation for measurements ingest: * You can upload measurements files in `JSON` format and you must specify the file content type when you request an upload URL. * An upload job ID is returned with the upload URL and you can use this upload job ID for other file upload service calls to follow up and troubleshoot any issues that arise with a file upload. * Uploaded files are processed sequentially at a rate of 2,000 measurements per second. Multiple files can be uploaded concurrently or while other files are being processed. Higher processing rates are available if required. **Maximum File Size!** You can upload JSON files up to 1GB in size using the File Upload service. This topic explains how to use the file upload service API to upload a usage data measurements file, and explains which API calls you can use to troubleshoot any issues you encounter: * [Uploading a Measurements Data File](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api#uploading-a-measurements-data-file) * [Troubleshooting Measurement File Uploads](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api#troubleshooting-measurement-file-uploads) If you have prepared a JSON file for upload using the File Upload Service API, then you can open a Meter Details page in the Console and also upload the file from there: * [Uploading a Measurements Data File in the Console](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api#uploading-a-measurements-data-file-in-the-console) ## Uploading a Measurements Data File This is a two-stage process: 1. First, obtain an upload URL from the m3ter platform by making a ***POST*** request to this endpoint: `https://api.m3ter.com/organizations/{orgId}/fileuploads/measurements/generateUploadUrl` The request body for this call should have the following structure: ```json theme={null} {   "fileName": "measurements_2022_02_14.json",   "contentType": "text/json",   "contentLength": 209 } ``` The `fileName` and `contentLength` parameter values you use will be specific to the file you intend to upload. In the response, the call will return: * An upload URL, which is time limited - it is valid for *one minute*. * An upload job ID. **Note: Authentication with Platform**. To make the *POST generateUploadUrl* API call, you'll have to use a Bearer Token you've obtained for authentication with the platform. For more details, see [Service Authentication](/guides/authenticating-with-the-platform/service-authentication). **More Details?** See the API Reference documentation for the [Generate an upload URL ](/api/measurements/generate-upload-url)API call. 2. Second, when you have received the response to your request for an upload URL, you can upload the data in your file using a ***PUT*** request to the returned upload URL. The binary data from the file should form the request body and the file should contain an array of measurements data. For example: ```json theme={null} [   {      "uid": "xxxxxxxx-62f7-45ea-a916-xxxxxxxxxxxx",      "meter": "api_request",      "account": "acme_corp",      "ts": "2022-02-14T11:30:51.897Z",      "measure": {          "quantity": 1.0      }   },   .   .   . ] ``` ## Troubleshooting Measurement File Uploads If any issues occur with your measurements data file upload, file upload service API calls are available to help you follow up and troubleshoot: * [Downloading Previously Uploaded Measurements File](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api#downloading-previously-uploaded-measurements-file) * [Obtaining File Upload Job Details](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api#obtaining-file-upload-job-details) **More Details?** For more details on how to make the API calls referred to in this section, see the [Measurements](/api/measurements/introduction) section of our API Reference documentation. ### Downloading Previously Uploaded Measurements File You can retrieve a measurements file that you've previously uploaded to the file upload service: * [Get Original File Download URL](/api/measurements/get-original-file-download-url) Follow a two-step process: * Use this call with the file upload job id to obtain a download URL. A download URL is returned together with a download job id. * You can then use a ***GET*** using the returned download URL as the endpoint to retrieve the previously uploaded file. ### Obtaining File Upload Job Details You can use two calls to obtain details of file upload jobs: * [List File Upload Jobs](/api/measurements/list-file-upload-jobs) - use this call to return a list of the file upload jobs. You can use two optional query parameters with this call - `dateCreatedStart` and `dateCreatedEnd` - to define a date range and filter the list of file upload jobs returned. * [Get File Upload Job Response](/api/measurements/get-file-upload-job-response) - use this call to get the file upload job response using the file upload job id. This returns useful information about the specific upload job, including it's status - "notUploaded", "running", "failed", or "succeeded". ## Uploading a Measurements Data File in the Console If you have prepared a usage data measurements file in JSON format ready for upload using the File Upload Service, you can perform the upload directly in the Console. **Warning: Using correct JSON format!** Please review the [section above](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api#uploading-a-measurements-data-file) *before you attempt* to upload a usage data measurements file through the Console - an example is given of the array format required in your JSON file. If you attempt to upload a file using the incorrect JSON format, then you'll receive an error and the upload will fail. **To upload a JSON measurements data file in the Console:** 1. Select **Metering**. The **Meters** page opens. 2. Select the name hotlink text of the Meter. The **Meter Details** page opens. 3. Scroll down the page to the **Submit Measurements** panel. 4. Select the **File Upload API** tab: 5. You can perform the measurements data file upload in one of two ways: * Drag-and-drop the file into the panel. * Use **Select Files** to open a **File Upload** selection window, locate and select the file where you have it saved, and select **Open**. **PLEASE NOTE!** * **Incorrectly formatted file?** If the file is incorrectly formatted for the upload, you'll receive a FAILED error and the upload will not complete. You can check and follow-up on the error under [System Alerts](/guides/alerts-events-and-notifications/viewing-and-managing-alerts). * **Measurements for different Meters?** The usage data measurements contained in the upload file *ARE NOT* restricted to the specific Meter whose **Meter Details** page you've opened to perform the upload from the **Submit Measurements** panel - you can submit a file containing measurements for any Meters in your Organization. # File Uploads for Usage Data by Meter Source: https://docs.m3ter.com/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter In the Console, you can select a Meter you've set up to collect your usage data and upload a `CSV` formatted file for usage data measurements ingest. Some constraints are imposed on the size and formatting of the measurements file: * **Size**. The file can contain up to a maximum of 1000 rows. * **Formatting**. You must compile the file in a way that makes it compatible for file upload. This topic explains how to prepare your usage data measurements CSV file and how to upload it: * [Preparing Upload File - Example](/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter#preparing-upload-file-example) * [Uploading a File](/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter#uploading-a-file) **Tip: Upload a JSON formatted usage data measurements file?** You can use the File Upload Service API to upload a measurements file in JSON format. On a **Meter Details** page in the Console on the **Submit Measurements** panel using the **File Upload API** tab, you can also do this directly. For more details, see the [File Upload Service API](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api) topic in this section. ## Preparing Upload File - Example For a successful and smooth CSV file upload for a Meter's usage data, you must ensure the file is correctly formatted and structured. To help you ensure these constraints are complied with, you can download a template for the CSV file for a Meter: File Upload Meter26 Suppose the Meter you want to upload a usage data measurements file for is set up with three Data Fields - two fields of Category **Measure** and one dimension field of Category **Who**. You plan to upload a file that contains ten measurements for this Meter. When you compile the file, you must ensure it conforms to the file upload requirements. Here's an example: Note in particular: * **Column headers**: * Use all lower case for these. * For Meter Data Fields column headers, use the format *\.\*. For example, for the current Meter use: **measure.num\_apps**. * **Measurement rows**: * Use valid codes for **account** and **meter**. * Ensure a column is included for each Meter Data Field and a value is given for each. * Use a unique **uid** for each measurement. * The **ts** value used must conform to **ISO-8601** format. When you upload a `CSV` usage data measurements file, a validation check is made to ensure these formatting rules have been complied with. If errors are identified, the ingest will be blocked. You can begin to compile a CSV file for upload by first downloading a template for a specific Meter. **To download a template for a Meter's CSV file:** 1. Select **Metering**. The **Meters** page opens. 2. In the **Product** drop-down, select the Product for the Meter you want to upload a measurements file. 3. Select the hotlink text of the Meter for which you want to perform a usage data measurements upload using a CSV file. The **Meter Details** page opens. 4. On the **Meter Details** card, select **Download CSV template**. A CSV file is downloaded to your Downloads folder. This is pre-formatted to agree with the specific Meter's Data Field configuration: For the current example Meter, we can see that the template complies with the required formatting and structure, and we can safely begin to enter measurements into the file in preparation for usage data ingest. ## Uploading a File **Warning! Check File:** Before you attempt to upload a `CSV` formatted usage data measurements file through the Meter Details page in the Console, please review the file to ensure it conforms with the upload formatting rules as explained in the [previous section](/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter#preparing-upload-file-example). **To upload usage data measurements file through the Console:** 1. Select **Metering**. The **Meters** page opens. 2. You first need to locate the Meter you want to upload a usage data measurements file for: * You can select or search for the Product to which the Meter belongs. Use the **Product**s drop-down at top-right, select the Product the Meter belongs to. The **Meters** page adjusts and shows: * The selected Product and any existing Meters created for it. * Any Global Meters. * Alternatively, in the **Search** box at top-left, start to type in the name of the Meter. The Meter pages adjusts as you type and shows: * The Meters whose name matches the entered text string and listed under the Product they belong to. * Any Global Meters whose name matches the entered text string. 3. Select the **Name** hotlink text of the Meter. The **Meter Details** page opens. 4. Scroll down the page to the **Submit measurements** panel. 5. Select the **Upload CSV** tab: File Upload Meter27 6. Select **Browse** and use the search window to find and select the file you want to upload. The `CSV` file is parsed and loaded into the **Upload usage data** as a measurements table for you to review: **Important: Invalid CSV file!** If you select a CSV file with an invalid format, then you'll receive and error when parsing of the file is attempted. 7. If on review you are satisfied with the measurements that are loaded, select **Submit usage**. The measurements contained in the file are ingested and under the **Log** section of the tab: * You'll see a `{"result" : "accepted"}` message. * The timestamp for the ingest is given. * The JSON for the measurements ingest is reproduced and you can scroll the **Log** window. Note that if you attempt to submit a usage data measurements file that when loaded into the **Upload CSV** tab contains rows that do not conform to the formatting requirements, use invalid codes, or are missing required values, the ingest will fail. Error messages are shown to help you make good the file and successfully re-submit: **Tip: Check usage data ingest?** If you want to check the usage data measurements ingest, you can open [Data Explorer (v2)](/guides/data-explorer/usage-data-explorer-v2) and submit a Usage Data query. # Reviewing and Resolving Ingest Events Source: https://docs.m3ter.com/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events If a usage data measurement you submit to the platform fails to ingest properly, then an ingest validation failure system Event is generated for the ingest error that has occurred: * **ingest.validation.failure** In the *Metering* section of the Console on the *Ingest events* page, you can review this errors handling and follow-up on ingest failure Events to troubleshoot and resolve them. When you have followed-up on an ingest validation failure Event and resolved it, you can select *Mark as actioned* and remove it from the Ingest events list: * [Reviewing Ingest Events](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events#reviewing-ingest-events) * [Marking Ingest Events as Actioned](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events#marking-ingest-events-as-actioned) **Note: Submit Measurements API call does NOT throw an Error.** If you use the **Submit Measurements** call to the Ingest API and the call is invalid due to one of the ingest validation failure errors, please be aware that the submission *is not immediately rejected*: * The API response will be: `"result" : "accepted"`. * This is by design - the API response refers to the pre-enrichment stage of the usage data ingest process. This synchronous stage is kept as simple as possible to avert the possibility of data loss as the first priority. The asynchronous enrichment stage can then carry out checks and reject any invalid usage data measurements. **Note: Ingest Failure Events also show as System Alerts.** For some **ingest.validation.failure** Events - for example the *MissingField* ingest failure Event - you'll also see a corresponding System Alert created for your Organization on the **System alerts** page. You can use the Alert as an alternative way to inspect details of the failure to follow-up and troubleshoot the issue. See [Viewing and Managing System Alerts](/guides/alerts-events-and-notifications/viewing-and-managing-alerts) for more details. ## Reviewing Ingest Events **To review and resolve ingest failure Events:** 1. In the Console, select **Metering>Ingest events**. Ingest Events20 The **Ingest events** page opens and lists any ingest failure Events generated for data submission measurement errors that have occurred in your Organization, and which have not yet been actioned: Ingest Events17 You can read-off the details of the Event: * **Name**. The name of the Event. * **Date**. The date and time of the Event. * **Type**. The error that occurred and caused the ingest failure. Several different error Types can be shown: * **UndefinedMeter**. The Meter Code used does not reference an existing Meter: * Consequence: The submitted usage data measurement IS NOT ingested. * **MissingField**. A field required to successfully ingest the measurement is missing. For example, this could be a Data Field defined for the Meter: * Consequence: The submitted usage data measurement IS NOT ingested. * **DuplicateUid**. A non-unique, duplicate UID was used for the measurement submission: * Consequence: The submitted usage data measurement IS NOT ingested. * **DuplicateField**. The measurement contained data fields with the same code in different categories. * Consequence: The submitted usage data measurement IS NOT ingested. * **CalculationError**. A Meter Derived Field calculation derivative on the measurements details failed to evaluate. * Consequence: The submitted usage data measurement IS ingested without the value for the failed Derived Field. * **InvalidAccountCode**. The Account code supplied in the measurement was invalid, and does not exactly match an existing Account code. A new Account could not be automatically created because an Account with a code string closely matching the submitted code string already exists but capitalization does not exactly match - such as for **Account1** and **account1**. * Consequence: The submitted usage data measurement IS NOT ingested. 2. If you want to follow-up and investigate the ingest failure, you can select the **Download log** button for the Event. A error log text file in JSON format is downloaded. 3. Open the downloaded log file. The file contains details of the error that caused the ingest failure, along with the original measurement to help identify and resolve the issue. For example: * In this example, the downloaded log file shows an ingest failure caused by an **UndefinedMeter**. We can see that the Meter Code used is identified as not belonging to an existing Meter in the current Organization. **Note:** **Delay in Ingest Failure Events Showing**? There can be a delay of one to two minutes before an ingest failure shows on the **Ingest Events** page. **Tip: Batch Submissions?** If you submit a set of usage data measurements as a batch submission, then all good measurements *are ingested* but any that provoke a, an **UndefinedMeter**, **MissingField** or **DuplicateUid** error *are blocked and do not get ingested*. ## Marking Ingest Events as Actioned When you have followed-up and resolved an Ingest Event, you can mark it as actioned to remove it from the list. **To mark an Ingest Event as actioned and remove it from the list:** 1. Select the checkbox of the Event you want to mark as actioned. 2. Select the **Mark as actioned** button. A confirmation popup appears: Ingest Events18 3. Select **Yes** to confirm. The page refreshes and the checked Event is removed from the Events list. **Tip: Mark multiple Events as actioned?** You can check-off multiple Events to mark them all as actioned at the same time. 4. If you want to check again on Events that you've already actioned, enable the **Include actioned events?** switch. The page refreshes and any actioned Events are added back into the Events list, and are clearly marked as **ACTIONED**: Ingest Events19 # Submitting and Checking Test Usage Data Source: https://docs.m3ter.com/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data When you have set up pricing for your Product Plans, attached these to end customer Accounts, and created any Prepayments/Commitments or Balances for Accounts that need them, you can generate some test Bills for these Accounts in your non-production (Sandbox) environment. To do this, you'll need to first feed some sample usage data measurements into the m3ter platform before you generate test Bills for Accounts. You can exploit a very useful feature built into the Console, which allows you to submit test usage data into m3ter directly from *Meter details* pages: * For a specific Account. * For the Meter data collection fields which are the basis for charging the Account. To do this, you need to have the following to hand: * The *Name* or *Code* of the Account for which you want to submit some test usage data measurements and then go on to check the Account billing. * The *Meters* whose Data Fields are the Target Fields for the Aggregations which you used to configure the Pricing for the Plan you’ve attached to the Account. As you make test usage data measurement submissions from a Meter details page, you can also check and track those submissions for ingest into the platform on an *Activity* panel on the Meter details page. You can then generate a sample Bill for the Account and verify that your usage-based pricing set up is charging correctly before you deploy to your production environment. This topic explains how to submit test usage data for a specific Meter Details page for an existing Account and how to check and track those submissions for ingest: * [Submitting Test Usage Data](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data#submitting-test-usage-data) * [Checking Test Usage Data Submissions](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data#checking-test-usage-data-submissions) * [Deleting Usage Data Measurements from Non-Production Organizations](#deleting-usage-data-measurements-from-non-production-organizations) **Tip: Submit Test Usage Data from an Account page?** Alternatively, you can follow similar steps to those explained here to submit usage data for a specific Account directly from the Account page. However, note that you'll not be able to check and track the submissions from there. See [Submitting Usage Data for an Account](/guides/end-customer-accounts/submitting-usage-data-for-an-account). ## Submitting Test Usage Data You can submit test usage data measurements for ingest into the platform directly from Meter details pages. **To submit test usage data:** 1. Select **Metering**. The **Meters** page opens and lists Meters by Product for **All Products** together with any **Global** Meters. 2. You first need to locate the Meter whose Data Fields were Target Fields for the Aggregation used for pricing the Plan you've attached to the Account: * You can select or search for the Product to which the Meter belongs. Use the **Product**s drop-down at top-right, select the Product the Meter belongs to. The **Meters** page adjusts and shows: * The selected Product and any existing Meters created for it. * Any Global Meters. * Alternatively, in the **Search** box at top-left, start to type in the name of the Meter. The Meter pages adjusts as you type and shows: * The Meters whose name matches the entered text string and listed under the Product they belong to. * Any Global Meters whose name matches the entered text string. 3. Select the name hotlink text of the Meter you want to submit test data for. The **Meter details** page opens. 4. Scroll down the page to the **Submit measurements** panel. There are four tabs: * **Ingest API.** Default selection offering advice on how to use the [Submit Measurements API](/api/measurements/submit-measurements) call to the m3ter Ingest API, together with code snippets in different languages that you can copy directly to your clipboard. For more details, see [Getting Started with API Calls](/guides/m3ter-apis/getting-started-with-api-calls). * **File upload API**. If you have prepared a usage data measurements file in JSON format ready for upload using the File Upload Service, you can perform the upload directly in the Console. See [File Upload Service API](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api) for more details. * **Upload CSV**. Allows you to upload a `CSV` formatted file for usage data measurements ingest. For more details, see [File Uploads for Usage Data by Meter](/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter). * **Submit usage data**. Allows you to submit usage data measurements for the Meter's Data Fields for specified Accounts. 5. Select the **Submit usage data** tab. 6. On the **Submit usage data** tab you can submit usage data for the Meter: * Using the default **Simple** UI format: * A measurement **UID** is entered automatically. * A **Timestamp** date/time is entered for the current date and time. You can adjust this as required, and you might want to enter a date/time value that is in the past for your submission - see the [section below](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data#adjusting-timestamp-for-submitting-usage-data) for more details. (*Required*) * **End timestamp**. Can be used in those cases where a usage event needs to have an explicit start and end rather than being instantaneous. (*Optional*) * The *Code* string for the **Meter** is entered - this is the required parameter for a Submit Measurements API call to the Ingest API. * You can select the **Account** for which you want to submit usage data for charging the Account. (*Required*) * Enter a **Value** for each of the Meter Data fields as required for the usage data submission. In this example, the selected Meter has a single **MEASURE** numeric Data Field: * Alternatively, you can switch to **Advanced**, where you can edit the raw JSON for the usage data submission: **Important!** * The [Submit Measurements](/api/measurements/submit-measurements) call to the Ingest API requires the Account *Code* string for the `"account"` request parameter. On the **Simple** format you'll select by the Account *Name*, but when you switch to the **Advanced** format, you'll see that it's the Account *Code* that is being used. * Any change you make to the **Ingest request body** JSON in **Advanced** format before submitting - such as changing the `“account”` parameter value - will persist and be reflected in the **Simple** format. * For JSON well-formedness, do not have a trailing comma after the last Data Field parameter entry. If you do, then your **Submit usage** call will be rejected as invalid. 7. Select **Submit usage**. If the submission succeeds: * You'll see a `{ "result" : "accepted"}` message under **Log**. * A **Log** item is shown for the measurement submission which reproduces the JSON. * Note that: * The usage data measurement **UID** - `"uid"` - has been automatically refreshed with a new unique value to allow a second submission for the same Meter and Account. * The timestamp - `"ts"` - is not refreshed and you can edit this as required for further submissions. **Warning! Repeated Test Submissions using the same UID:** If you submit using the same measurement `"uid"`, the Ingest API will accept the measurement, and then during enrichment the system will deduplicate the measurements and notify you of the duplicate. 8. If you want to send a second set of usage data for the same Meter but for a different Account, edit the Account Code, and a second set of measures for the Meter Data Fields. 9. Select **Submit usage** again to submit a second set of usage data. **Tip: Account consumes several Products?** If the Account for which you want to test Billing consumes more that one of your Products, you can repeat these steps for each of the Meters used as the basis for pricing each of the Product Plans attached to the Account. ## Checking Test Usage Data Submissions When you submit test usage data for ingest into the platform from a Meter details page, you can quickly check and track usage data measurement submissions using the *Activity* panel on the page, which will show: * A *Recent measurements* list for the Meter for submissions made in the last hour and which were successfully ingested into the platform: * Up to a maximum of the ten most recent submissions made in the last hour are listed. * A *Measurement counts* chart showing a running count of submissions made for the Meter over the previous 24 hours: * You can hover your cursor over the chart's hourly data points to read off actual measurement counts. **Important!** The **Activity** panel will on only show data measurement submissions whose **Timestamp** (`ts`) value falls in the last hour. If you have made submissions with a **Timestamp** of earlier in the past than sometime in the last hour, these will not be loaded into the **Activity** panel. **To check test usage data submissions:** 1. Select **Metering**. The **Meters** page opens and lists Meters by Product for **All Products** together with any **Global** Meters. 2. Follow the steps given in the [previous section](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data#submitting-test-usage-data) to open a **Meter details** page and submit some usage data measurements. 3. When you have done this and received a `{ "result" : "accepted"}` message under **Log** for your submissions, scroll down the page to the **Activity** panel. 4. Wait a few minutes and select **Refresh**: If your usage data submissions have been successfully ingested into the platform they will be listed on the **Activity** panel. For example: Submit Usage73 **Warning: Usage data measurements logged as successful might not appear!** Ingest into the m3ter platform is a two-stage process and if a submission is not ingested because it fails one of the ingest validation checks, please be aware that the submission *is not immediately rejected*: * The logged response to the submission can be: `"result" : "accepted"`. This is by design - the API response refers to the pre-enrichment stage of the usage data ingest process. This synchronous stage is kept as simple as possible to avert the possibility of data loss as the first priority. * The asynchronous enrichment stage can then carry out checks and reject any invalid usage data measurements. 5. If a usage data submission you've made in the last hour does not appear on the **Activity** panel and you suspect the submission has failed one of the validation checks performed during the asynchronous enrichment stage, you can select the check **Ingest Events** hotlink text at the bottom of the panel. This takes you directly to the **Ingest Events** page, where any ingest failures are listed and you can review and troubleshoot these errors - see [Reviewing and Resolving Ingest Events](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events). 6. Also, if you want to review a wider range of usage data measurements you've submitted to the platform, you can select **View in Data Explorer** on the **Activity** panel to open the **Usage Data Explorer**, where a query using the selected Meter and for a time period of **Today** is preloaded and performed. **Tip: Checking usage data ingest in the Usage Data Explorer :** * Submitted usage data can be queried for and then viewed in the Usage Data Explorer. See [Usage Data Explorer (v2)](/guides/end-customer-accounts/managing-accounts-best-practices) for details. * However, please note that in the *special case* where, after submitting some usage data for an Account, you have: * Deleted the Account and recreated it using the same Code. * Submitted further usage data for the recreated Account. * Then, usage data queries using the Usage Data Explorer will not be synchronized fully with the usage data linked to the Account for Billing purposes. * This is because the usage data linked to the now deleted Account is no longer available for Billing against the new recreated Account, but remains available for Usage Data Explorer queries using the same Account Code. * As a matter of best practice when managing your customer Accounts, we *strongly recommend* against deleting and recreating Accounts using the *same Code*. Please see [Managing Accounts - Best Practices](/guides/end-customer-accounts/managing-accounts-best-practices) for more on the implications of doing this. ## Deleting Usage Data Measurements from Non-Production Organizations If you are working in a non-production (Sandbox) Organization and, having submitted some usage data measurements for testing, you can submit a request to [m3ter Support](/guides/getting-started/contacting-m3ter-support) to have them deleted. Please include the following details in your request: * **Organization name**. The non-production Organization you want to delete the measurements from. * **Time Period**. The start date and end date (UTC) of the time window for deletion. * **Account ID**. Optional - to filter the scope of deletion to the Account. * **Meter ID**. Optional - to filter the scope of deletion to the Meter. **Check First!** Before submitting, we'd recommend using [Usage Data Explorer (v2)](/guides/data-explorer/usage-data-explorer-v2) in your non-production Organization to query the same time window, Account, and Meter you plan to delete against, so you can verify what will be removed. Deletions cannot be undone. # Submitting Usage Data Adjustments Using Timestamp Source: https://docs.m3ter.com/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp When you are setting things up to **Submit usage data**, the **Timestamp** field is automatically populated with the current date/time. You can edit this field and enter your own past date/time value for the usage data submission: * The data item is ingested immediately into m3ter. * The date/time value you enter determines billing for the submitted usage. * The date/time value you enter for the submission is used for the usage data item in the Data Explorer - when you query for usage data, the date/time value you've entered for the submission is shown for Meter Data Fields and is the value that can be filtered on. If the Meter also has Derived Fields whose value is calculated with reference to the Meter Data Fields, the custom date/time value you enter for the submission is applied to any such Derived Fields also. Adjusting the **Timestamp** to use date/time values in the past for submitted usage data is useful if you need to make corrections for billing retrospectively against an Account - you can submit positive or negative usage data amounts to correct and reconcile earlier billing anomalies. **Important!** **Please Note:** * **Future Date/Times**. If you edit the **Timestamp** value, you must enter a date/time that *is in the past*. If you try to submit usage date for a future date/time, the submission will be rejected and you'll receive an error message. * **Deleting and recreating Account with same Code**. You cannot send usage data adjustment measurements for an Account when the Account Code has been reused for a different Account. We strongly recommend not reusing Account Codes - for more details, see [Managing Accounts - Best Practices](/guides/end-customer-accounts/managing-accounts-best-practices). # Submitting Usage Data for Non-Existent Accounts Source: https://docs.m3ter.com/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-for-non-existent-accounts Although we recommend setting up Accounts prior to submitting usage data measurements for them, we appreciate this may not always be possible. To avoid rejecting usage data measurements in instances where the measurement is submitted but an Account does not yet exist, the m3ter system will *auto-create an Account* for you. You can test this functionality: * You'll still need details of the Meter and the Data Fields you want to submit usage data measurements for. * You can enter a Code for an Account, even if no Account with that Code exists in your Organization. In these cases, when you submit a usage data measurement to the m3ter Ingest API a new skeleton Account is auto-created: * **Code**. The Account Code used for the data measurement submission is assigned to the auto-created Account. * **Name**. The name assigned to the auto-created Account is the result of concatenating the Code used with "-autocreated": * For example, if you enter **TempAcct** as the Account **Code**, the **Name** assigned to the auto-created Account will be: **TempAcct-autocreated**. * **E-mail address**. An e-mail address is assigned to the Account using a random hash prefix to create a temporary address. * For example: [**-autocreated@example.com**](mailto:-autocreated@example.com) The usage data measurement is accepted and ingested as data belonging to the new auto-created Account. At a later date, you can then open the details of the new Account and edit the **Code**, **Name**, and **e-mail address**. **To submit usage data for a non-existent Account:** 1. Select **Metering**. The **Meters** page opens. 2. In the **Product** drop-down, select the Product the Meter is linked to. The Meters configured for the selected Product are listed. * Note that if you want to submit test data for a *Global Meter* instead, don't select a Product and only the Global Meters in your Organization are listed. 3. In the list, locate the Meter whose Data Fields you want to submit test usage data for the non-existent Account. 4. Select the hotlink text of this Meter. The **Meter details** page opens. On the **Submit usage data** panel you can submit usage data measurements for the Meter and for a non-existent Account. * Note that the default data submission format is **Simple**. In this format, you can go ahead and enter any Meter Data Fields **Values**. However, you cannot use this default **Simple** format to enter the **Code** you want use for the non-existent Account and you must switch to the **Advanced** and use a JSON editor format. 5. Switch to select the **Advanced** JSON editor format: * A measurement **UID** is entered automatically. * A **Timestamp** date/time is entered for the current date and time. If required, you can adjust this and enter a date/time value that is in the past for your submission - see the [Submitting Usage Data Adjustments Using Timestamp](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp) topic for more details. * Enter a **Value** for each of the Meter Data Fields as required for the usage data submission. In the example shown below, the selected Meter has a single **MEASURE** numeric Data Field. As noted above, you can also enter the Data Field values first using the **Simple** format. * Enter a *Code* string for the non-existent **Account** for which you want to submit usage data for charging the Account. 6. Select **Submit usage**. If the submission succeeds: * You'll see a `{ "result" : "accepted"}` message under **Log**. * A **Log** item is shown for the measurement submission which reproduces the JSON: * Note that: * The usage data measurement **UID** - `"uid"` - has been automatically refreshed with a new unique value to allow a second submission for the same Meter and Account. * The timestamp - `"ts"` - is not refreshed and you can edit this as required for further submissions. **Warning! Repeated Test Submissions using the same UID:** If you submit using the same measurement `"uid"`, the Ingest API will accept the measurement, and then during enrichment the system will deduplicate the measurements and notify you of the duplicate. 7. If you want to check that a new Account for the submitted usage data has been auto-created, select **Accounts**. A new Account should be listed for your Organization and named according to the Account auto-creation process - in the current example **TestAcct-autocreated**: Submit Usage71 You can now edit the details of the auto-created Account as required. **Tip: Using Submit Measurement Ingest API Call?** You can also use the [Submit Measurements API](/api/measurements/submit-measurements) call to to the Ingest API to make a usage data measurement submission for a non-existent Account. # Creating, Managing, and Reviewing Products Source: https://docs.m3ter.com/guides/creating-and-managing-products You can create *Products* in m3ter to represent the products and services you offer to your end customers. You can then create and configure the required Product entities in you m3ter Organization to bill end-customers for Product consumption: * To enable usage-based pricing for a Product: * Create Meters and Aggregations to collect Product usage data and define pricing metrics for Product consumption. * Set up Product Plans and apply usage-based pricing to Plans using the metrics you've defined, and then attach priced Plans to Accounts that consume the Product. * To enable unit-based subscription charge pricing for a Product: * Create Counters to represent the Product units you want to charge by - such as seats or licenses - and use these Counters to apply unit-based pricing to Product Plans. * Attach the priced Plans to Accounts that consume the Product and then Create Counter adjustments against Accounts for the number of units the Account has subscribed to. This topic explains how to create Products for your Organization, review Product entities, create Product entities, and how to check a Product's metadata: * [Creating Products](/guides/creating-and-managing-products#creating-products) * [Reviewing Product Entities](/guides/creating-and-managing-products#reviewing-product-entities) * [Creating Product Entities](#creating-product-entities) * [Reviewing Product Metadata](/guides/creating-and-managing-products#reviewing-product-metadata) * [Custom Fields](/guides/creating-and-managing-products#custom-fields) ## Creating Products **To create a Product:** 1. In the Console, select **Products**. The **Products** page opens and lists any existing Products in your Organization. 2. Select **Create product**. The **Create** page opens: 3. On the **Create** page enter the details of your new Product: * **Name**. Enter a descriptive name. * **Code**. Unique identifier for the Product. * 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. **Tip: Required Attributes?** Both attributes are required and are marked with a red asterisk. 4. Select **Create product**: The **Product details** page opens: 5. If you want to edit a Product's details, select the **Edit** button, make your changes, and click **Update**. 6. If you want to remove a Product, select **Delete**: * Alternatively, return to the **Products** page and select the **Delete** button for the Product: A confirmation popup opens. 7. Select **Yes** to confirm the delete action. **Important: Product has child entities!** If you attempt to delete a Product and child entities exists that belong to the Product - such as Plan Templates or Meters - then you will not be able to and an error message will show. ## Reviewing Product Entities On the **Product details** page, you can review and check various types of entities created for a Product and which belong to it. **To review Product entities:** 1. In the Console, select **Products**. The **Products** page opens. 2. Search for the Product you want to review and select the **Name** hotlink text to open the Product. The **Product details** page opens. 3. Scroll down the page and entities belonging to a Product are listed under tabs: * **Meters** * **Aggregations** * **Compound Aggregations** * **Counters** * **Plan Templates** * **Plans** When you first open the **Product details** page, the **Meters** tab is selected by default. 4. Select a tab to review the entities of that type that belong to the Product: Products17 * In this example, two **Plans** belonging to the Product are listed. * Note that if you select the **Meters**, **Aggregations**, **Compound aggregations**, or **Counters** tab, then **GLOBAL** versions of these entities created for your Organization are also listed because these can be applied to any Product, such as using a global Counter to price a Product Plan: Products18 **Tip: Tab selection persists!** If you select a Product entity tab and navigate away from the **Product details** page, when you return the tab selection is preserved for your current login session. 5. You can manage entities belonging to a Product: * Select the **Name** hotlink text to open the details page for an entity. * Edit an entity: * Delete an entity: ## Creating Product Entities You can create entities for a Product directly from the **Product details** page. This section shows how to create a *Product Plan* as an example. To create other entity types for a Product, you can follow similar steps. **To create Product entities:** 1. In the Console, select **Products**. The **Products** page opens. 2. Search for the Product you want to create an entity for and select the **Name** hotlink text to open the Product. The **Product details** page opens. 3. Scroll down the page and select the tab for the entity type you want to create for the Product - for the current example **Plans**: Products15 4. Select **Create plan**. The **Create** page opens with the **Product** pre-selected. 5. Select or enter the other required Plan details: * **Plan Template** * **Name** * **Code** 6. Configure the other Plan attributes as required: * **Standing charge** * **Minimum spend** * **Custom fields** 7. Select **Create plan**. You are returned to the **Product details** page and the new Product entity is shown on the **Plans** tab: Products16 ## Reviewing Product Metadata If you scroll down the **Product details** page, you can review **Product metadata**: **Custom fields**. Any Custom fields created for the Product entity are listed: Products21 * You can **Copy** the *String* or *Number* value of a Custom Field to your clipboard. See below [Custom Fields](/guides/creating-and-managing-products#custom-fields). **External mappings**. Any existing mappings created for the Product are listed: Products22 * The **External system** and **External table** mapped to are shown - such as **Stripe - Product** in the above example. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Product has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. * You can commence a workflow to **Create external mapping** for the Product directly - see [Creating and Managing External Mappings for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) for an example. **Integration runs**. If you've set up an integration that synchronizes the Product with an external system, the date/time and status of the **Latest** integration run are shown. You can use a text hotlink to open details of this latest run or **View all runs**. See [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). ## Custom Fields You can define **Custom Fields** when creating a Product or edit the Product at a later date to do this. Any Custom Fields you create for an individual Product override those you've created for Products at the Organizational level. We strongly recommend reviewing [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) before you create Custom Fields. # Working with Custom Fields Source: https://docs.m3ter.com/guides/creating-and-managing-products/working-with-custom-fields *Custom Fields* in m3ter allow you to store custom data in the form of number or string values against m3ter entities in a way that does not directly affect the normal working operation of the m3ter platform. Having this capability to store data in a free-hand fashion can prove very useful in helping you to meet the specific usage-based pricing and other operational business use cases you want to implement. You can create Custom Fields for the following m3ter entities: * **Organization** * **Product** * **Meter** * **Plan** * **Plan Template** * **Account** * **Account Plan** * **Aggregation** * **Compound Aggregation** * **Contract** * **Balance** * **Balance Transaction Schedules** * **Balance Charge Schedules** * **Plan Group** However, you can exploit the values you store using Custom Fields in another, more directed, way by referencing them in your Derived Field and Compound Aggregation calculations. When you use Custom Fields for this purpose, and given the key role Derived Fields or Compound Aggregation can play in implementing usage-based pricing schema, they will then affect how the platform behaves. Referencing Custom Field values in your calculations gives you a much wider scope of options when it comes to resolving complex usage-based pricing use cases. If you plan to use Custom Fields in calculations, there are some key points to note: * You can create Custom Fields you want to reference in your calculations at *two levels* - at the Organizational-level and at the level of individual entities - for the following: * **Product** * **Plan Template** * **Plan** * **Meter** * **Account** * **Account Plan** * **Aggregation** * **Compound Aggregation** * **Contract** * For example, if you want reference a Custom Field for Account, say `cfAccount1`, in your calculations: * You *must first create* an Account Custom Field called `cfAccount1` at the Organizational-level to act as a default value for the field. This is designed to ensure that a default value is always available and, for cases where the individual entity - in this case an Account - does not have a Custom Field defined, the calculation will not fail. You cannot simply create a Custom Field at the entity-level. * If you *do not create* a Custom Field called `cfAccount1` for an individual Account (say for Account 1), then when you reference `cfAccount1` in a calculation, the value of the *Organization-level field* will be used for the calculation. * If you *do create* a Custom Field called `cfAccount1` for an individual Account (say Account 1), then when you reference `cfAccount1` in a calculation, the value of the *entity-level field* will be used in the calculation. * The general rule when referencing Custom Fields in calculations is: the entity-level field value is used if defined, otherwise the Organization-level value is used. **Limits and Constraints:** * **Maximum number.** The maximum number of Custom Fields you can create for each entity type at Organization-level is **25**. * **Duplicate Naming**. More that one Custom Field with the same name is not allowed. If you try to add two or more Custom Fields with the same name for an entity type, when you save your changes *only the last one you added is saved*. **Important!** * **Exceptions to Rule**. There are exceptions to the general rule, so please review the following sections in this topic for [Referencing Custom Fields in Derived Field Calculations](/guides/creating-and-managing-products/working-with-custom-fields#referencing-custom-fields-in-derived-field-calculations) and [Referencing Custom Fields in Compound Aggregation Calculations](/guides/creating-and-managing-products/working-with-custom-fields#referencing-custom-fields-in-compound-aggregation-calculations) before you attempt to use them. * **What about Custom Fields for Aggregations and Compound Aggregations?** You can define Custom Fields for **Aggregations** and **Compound Aggregations** at both the Organizational level and the individual entity level. However, these Custom Fields are *NOT supported* for referencing in Derived Field or Compound Aggregation calculations. * **What about the entities you cannot create Custom Fields for at the Organization-level?** If you cannot create Custom Fields for an entity at Organization-level and only at individual entity-level, you cannot reference the field values for those you create at the entity-level in your calculations. Currently, these are: * **Balances** * **Balance Transaction Schedules** * **Balance Charge Schedules** * **Plan Groups** ## Creating Custom Fields ### At Organizational-Level You can create Custom Fields at the Organization-level in the Console when setting up your Organization in m3ter: see [Adding and Editing Custom Fields](/guides/organization-and-access-management/viewing-and-editing-organization/adding-and-editing-custom-fields) in the [Managing your Organization](/guides/organization-and-access-management/viewing-and-editing-organization) section. You can also use the [Update CustomFields](/api/customfield/update-customfields) API call to do this. ### At Individual Entity-Level When you create or edit an individual entity that accepts Custom Fields in the Console, you'll be able to add them. For example, when Creating Products. You can also use an API call to do this. For example, the [Create Product](/api/product/create-product) API call. ## Reviewing Custom Fields On the details pages for the main entities in your m3ter Organization, you can quickly review any Custom Fields created for the entity on the metadata panel. Any Custom Fields created for the entity are listed, and you can **Copy** the *String* or *Number* value of a Custom Field to your clipboard. * If the fields have been created only at Organizational-level, then these values will be shown: * If the fields have also been created for an individual entity, then the values configured for those created at Organizational-level are struck out indicating clearly that the Account level values will be used: ## Referencing Custom Fields in Derived Field Calculations ### Range of Entities In Derived Field calculations, the Custom Fields you can reference is restricted to the following entities: * **Organization** * **Meter** * **Account** If you are using Meters belonging to a specific Product, that is, *not Global Meters*, you can also reference Custom Fields added to a: * **Product** The following table summarizes the Custom Fields on which entities you can reference in Derived Field calculations: | Entity | Using Global Meters | Using Product Meters | | ------------- | ------------------- | -------------------- | | Organization | YES | YES | | Meter | YES | YES | | Product | NO | YES | | Account | YES | YES | | Account Plan | NO | NO | | Plan | NO | NO | | Plan Template | NO | NO | ### Format When referencing Custom Fields in your Derived Field calculations, you can use the following format: * `organization.` * `meter.` * `account.` * `product.` For example: * `meter.cfMeter1` * `account.cfAccount1` ### Precedence In Derived Field calculations the general rule of precedence applies: the entity-level value is used if defined, otherwise the Organization-level value is used. **Important! Aggregation and Compound Aggregation Custom Fields**. You can define Custom Fields for **Aggregations** and **Compound Aggregations**. However, these Custom Fields are *NOT supported* for referencing in Derived Field calculations. **Tip: More Details?** For more details on referencing Custom Fields in your Derived Field calculations, see [Calculation Syntax and Supported Functions/Operators](/guides/usage-data-aggregations/compound-aggregation-calculations). ## Referencing Custom Fields in Compound Aggregation Calculations ### Range of Entities * **Organization** * **Meter** * **Product** * **Account** * **Account Plan** * **Plan** * **Plan Template** ### Format When referencing Custom Fields in your Compound Aggregation calculations, you can use the following format: * `organization.` * `meter.` * `product.` * `account.` * `accountPlan.` * `plan.` * `planTemplate.` For example: * `plan.cfPlan1` * `account.cfAccount1` ### Precedence In Compound Aggregation calculations the general rule or precedence applies: the entity-level value is used if defined, otherwise the Organization-level value is used. **Important! Exceptions:** * **Meter Custom Fields**. If you reference a Meter Custom Field in a Compound Aggregation calculation, the default value set at Organization-level is ***always used***. This is because a Compound Aggregation might reference multiple individual Meters or no individual Meters, which means the specific Meter whose Custom Field value should be used cannot be identified, and therefore the default value is used. * **Aggregation and Compound Aggregation Custom Fields**. You can define Custom Fields for **Aggregations** and **Compound Aggregations**. However, these Custom Fields are *NOT supported* for referencing in Compound Aggregation calculations. **Tip: More Details?** For more details on referencing Custom Fields in your Compound Aggregation calculations, see [Calculation Syntax and Supported Functions/Operators](/guides/usage-data-aggregations/compound-aggregation-calculations). # Data Explorers Source: https://docs.m3ter.com/guides/data-explorer The m3ter *Data Explorers* are analytics tools you can use to query the Usage, Billing, and Prepayments data collected for your Organization in m3ter: * You can review and analyze the data returned for your queries in various formats, including Data Tables and Pivot Tables. * If you expect to want to run a query you've built repeatedly, you can save and re-use the query. * When you have built a query for your Usage, Billing, or Prepayments data in m3ter, you can export the data returned for the query as a `.csv` file. This section explains how to work with the data explorers to build and submit queries against your data, and how to review returned data: * [Usage Data Explorer](/guides/data-explorer/performing-usage-queries-and-reviewing-results) * [Usage Data Explorer (v2)](/guides/data-explorer/usage-data-explorer-v2) * [Billing Data Explorer](/guides/data-explorer/performing-billing-queries-and-reviewing-results) * [Prepayments Data Explorer](/guides/data-explorer/performing-commitments-queries-and-reviewing-results) * [Data Explorers: Saving, Updating, and Re-Using Queries](/guides/data-explorer/saving-queries) * [Data Explorers: Exporting Query Results](/guides/data-explorer/exporting-usage-query-results) # Data Explorers: Exporting Query Results Source: https://docs.m3ter.com/guides/data-explorer/exporting-usage-query-results When you have built a query for your Usage, Billing, or Prepayments data in m3ter using a Data Explorer, you can export the data returned for the query as a `.csv` file. This topic explains how to export your query results data from the Data Explorers. **Notes:** * **Usage Data Explorer - example export**. The following procedure explains how to export *Usage* data query results in the original version Usage Data Explorer. You can follow similar steps to export your *Billing* or *Prepayments* query results. * **Usage Data Explorer (v2)**. If you're working in Data Explorer (v2), you can export query results data directly from the Result rows table. See [Usage Data Explorer (v2)](/guides/data-explorer/usage-data-explorer-v2) for details. **To export query results:** 1. Select **Metering>Usage Data Explorer**. 2. In the **Usage query builder**, configure a query, perform the query, and review the returned data in the **Data Table** tab. 3. On the **Data table** tab, select **Export**. The returned data set is compiled in *.csv* formatted file, downloaded, and saved locally. **Warning: Number of Rows for Export!** If you download query results in a `.csv` formatted file, the number of rows is limited to **20001**. **Tip: Exporting Prepayments Query Data?** If you're exporting Prepayments query data, the **Export** button is on the **Prepayments - Table** tab. # Billing Data Explorer Source: https://docs.m3ter.com/guides/data-explorer/performing-billing-queries-and-reviewing-results You can use the *Billing Data Explorer* to configure and perform queries against your Organization's Billing data. You can quickly set up and submit a query that returns the billing data set needed to serve your current analytical purposes. You can then review the data in either a flat Data Table or a Pivot Table format. This topic explains how to work successfully in the Billing data explorer to configure and perform queries against your Billing data and review the returned data. **Important! Required Permissions for performing Billing queries in Data Explorer**. If you create a Custom Permission Policy to assign to your Organization Users and want Users to be able to perform Billing queries and view the results, ensure the Permission Policy allows: * Create and Retrieve action for the `config:analyticsJob` Resource. * Retrieve action for the `config:bill` Resource. For more details on working with Permission Policies, see [Understanding, Creating and Managing Permission Policies](/guides/organization-and-access-management/creating-and-managing-permissions). ## Building and Performing a Billing Data Query **To submit queries for Billing data and review returned data:** 1. Select **Billing>Billing Data Explorer**: The **Billing Data Explorer** page opens and you can use the **Billing query builder** to build a query for your Organization's billing data. 2. In the **Select period** section, define a period to retrieve billing data for: * **Time period**. Use the drop-down list to select a period for which you want to retrieve billing data. **Today** is the default. If you want to select a specific period, you can use **Custom**. * **Today**. All of today - that is, the 24 hour period from midnight to midnight. This saves you from having to reset the query time period to catch other new billing data that become available later that same day. * **Yesterday**. All of yesterday - that is, the 24 hour period from midnight to midnight yesterday. * **Week to date/Month to date**. Period covering the current week/month to date. For example, selecting **Month to date** on April 8th, 2024 means your query returns data for the time period starting April 1st, 2024 and including the entire current day - April 8th - and ending at midnight. This saves you from having to reset the query time period to catch other new billing data that become available later that same day. * **Last 7/30/90/120 days**. Period covering the selected number of whole days leading up to today. For example, selecting **Last 30 days** on April 8th, 2024 means your query returns data for the time period commencing 30 days prior - March 9th, 2024 - and ending midnight on April 7th, 2024. * **Previous week/month/quarter**. Period covering the entire previous week/month/quarter. For example, selecting **Previous month** on April 8th, 2024 means your query returns data for the whole of March 2024. * **Custom**. Define the time period for which you want your query to return data. * **Start (inclusive)** and **End (exclusive)**. If you have selected **Custom** for the query **Time period**, these date/time fields will be enabled. You can use calendar popups to select the start and end dates/times for the period you want to query. * Start dates are explicitly labeled as *inclusive* and End dates as *exclusive*. For example, if you want data returned for the entire month of June 2023, you must set the **Start** at June 1st 2023 and the **End** at July 1st 2023. If you set the **End** at June 30th 2023, the Custom Time period for your query will end at midnight on June 29th 2023. **Warning and Notes:** * **Warning!** Billing Data Explorer will filter on the basis of Bill *start dates*. For example, if you want your query to return the line items for a November 1st Bill for an Account that is set up for monthly billing on the 1st of each month, you must ensure the **Time period** you select includes October 1st, since that is the start date of the billing period for the the November 1st Bill on the Account. * **Note: Timezone for Query Start and End Dates/Time?** The **Start date** and **End date** fields will show the timezone you've set for your Organization. See [Managing your Organization](/guides/organization-and-access-management/viewing-and-editing-organization). 3. In the **Apply filters** section, enter the details of any filters you want to apply to the billing data returned for your query: * **Line item types**. Filter on line item types: * **All Line item types**. Data will be returned for all Bill line item types. * **Selected values**. Use the drop-down to select the Bill line item types for which you want to return Billing data. * **Accounts**. Filter on Accounts: * **All Accounts**. Data will be returned for all Accounts for which Bills have been created. * **Selected values**. Use the drop-down to select the Account Code of those Accounts for which you want to return Billing data. * **Products**. Filter on Products: * **All Products**. Data will be returned for all Products for which a Bill has been created. * **Selected values**. Use the drop-down to select the Products for which you want to return Billing data. In this example we have: * Defined a **Custom** time period. The Organization Timezone is set to **UTC**. * Selected a single Account and a single Product to return Billing data for. * Selected for two line item types in the returned Billing data. 4. Select **Perform query**. The query executes and the resultant data is loaded into the data tables. **Important: Limits imposed on response payload size and number of rows!** * **Response too Large:** If the response payload for your query is **>10MB**, this exceeds the limit and you'll receive an error message to inform you. You can either use the available filters to further limit the query result set and re-run your query or use the **Export** button to download the current results in a `.csv` formatted file - see [Exporting Query Results](/guides/data-explorer/exporting-usage-query-results). * **Number of Rows Returned for Query:** If the number of rows returned by your query exceeds **5001** but the payload size limit is not exceeded, then only the first **5001** are loaded. You will not receive an error and if you suspect your query return contained more rows, we recommend you use the **Export** button to download the results in a `.csv` formatted file and check. * **Number of Rows for Export:** If you download the query results in a `.csv` formatted file, the number of rows is limited to **20001**. ## Reviewing Billing Data Query Results in a Data Table You can review the Billing data returned for your query in a **Data table**: You can make adjustments to the **Data table** to: * Show/Hide data element columns. * Reorder the columns. **To Show/Hide columns:** 1. Select the column icon at top-right of the table: A panel appears showing the columns available for the table and you can use switches to select your Show/Hide preferences: 2. Select **Update** - the panel closes and the **Data table** refreshes for your Show/Hide selections. **To reorder columns:** 1. Select the column icon at top-right. A panel appears listing the available table columns. 2. Drag-and-drop these into a top-bottom ordering to correspond to the left-right ordering you want for the **Data table**: 2. Select **Update**. The panel closes and the **Data table** refreshes for the selected column order: ## Reviewing Billing Data Query Results in a Pivot Table You can review the Billing data returned for your query in a **Pivot table**: **Tip: Saving Billing Queries?** You can save, update already saved, and re-use saved Billing queries. You can also load pre-configured *Standard Queries* directly into the Query Builder. See [Saving, Updating, and Re-Using Queries](/guides/data-explorer/saving-queries). # Prepayments Data Explorer Source: https://docs.m3ter.com/guides/data-explorer/performing-commitments-queries-and-reviewing-results You can use the *Prepayments Data Explorer* to configure and perform queries against the Prepayments/Commitments data for your Organization in m3ter. You can quickly set up and submit a query that returns the Prepayments data set needed for your current analytical purposes. You can then review the data in either a Summaries or a Data Table format. When a query succeeds for Prepayments data, you can also review: * Remaining obligations due on Prepayment as month-on-month amounts for the remainder of the Prepayment service period. * Draw-down amounts made against the Prepayment at billing. This topic explains how to work successfully in the Prepayments data explorer to configure and perform queries against your Prepayments data and review returned data. **Important! Required Permissions for performing Prepayment queries in Data Explorer**. If you create a Custom Permission Policy to assign to your Organization Users and want Users to be able to perform Prepayment queries in Data Explorer and view the results, ensure the Permission Policy allows: * Create and Retrieve action for the `config:analyticsJob` Resource. * Retrieve action for the `config:commitment` Resource. For more details on working with Permission Policies, see [Understanding, Creating and Managing Permission Policies](/guides/organization-and-access-management/creating-and-managing-permissions). **Tip: Prepayments on Accounts?** For more details on Prepayments and creating them for an Account, see [Creating Prepayments for Accounts](/guides/end-customer-accounts/creating-prepayments-for-accounts). ## Building and Performing a Prepayments Data Query **To submit queries for Prepayments data and review returned data:** 1. Select **Accounts>Prepayments Data Explorer**: The **Prepayments Data Explorer** page opens and you can use the **Prepayments query builder** to build the specific query you want to perform against Prepayments data collected for your Organization. 2. In the **Select period** section, define a period for returning Prepayments data: * **Time period**. Use the drop-down list to select a period. If a Prepayment has a start date that falls in the period, then its data will be returned for the query. * **Today**. All of today - that is, the 24 hour period from midnight to midnight. This saves you from having to reset the query time period to catch other new Prepayment data that become available later that same day. (*Default*) * **Yesterday**. All of yesterday - that is, the 24 hour period from midnight to midnight yesterday. * **Week to date/Month to date**. Period covering the current week/month to date. For example, selecting **Month to date** on April 8th, 2024 means your query returns data for the time period starting April 1st, 2024 and including the entire current day - April 8th - and ending at midnight. This saves you from having to reset the query time period to catch other new Prepayment data that become available later that same day. * **Last 7/30/90/120 days**. Period covering the selected number of whole days leading up to today. For example, selecting **Last 30 days** on April 8th, 2024 means your query returns data for the time period commencing 30 days prior - March 9th, 2024 - and ending midnight on April 7th, 2024. * **Previous week/month/quarter**. Period covering the entire previous week/month/quarter. For example, selecting **Previous month** on April 8th, 2024 means your query returns data for the whole of March 2024. * **Custom**. Define the time period for which you want your query to return data. * If you want to define a specific period, you can use **Custom**: * **Start (inclusive)** and **End (exclusive)**. If you select **Custom** for the query **Time period**, these date/time fields will be enabled. You can use calendar popups to define the start and end dates/times for a custom period. * Start dates are explicitly labeled as *inclusive* and End dates as *exclusive*. For example, if you want data returned for the entire month of June 2023, you must set the **Start date** at June 1st 2023 and the **End date** at July 1st 2023. If you set the **End date** at June 30th 2023, the Custom Time period for your query will end at midnight on June 29th 2023. 3. In the **Apply an account filter** section, select the **Accounts** you want to the query to return Prepayments data for: * **All Accounts**. Data will be returned for all Accounts for which Prepayments have been created. * **Selected Accounts**. Use the drop-down to select the Accounts you want to return Prepayments data for. In this example we have: * Selected a single Account to return Prepayments data for. * Selected a **Custom** time period. The Organization Timezone is set to **UTC**. 4. Select **Perform query**. The query executes and the resultant data is loaded into the **Summaries** panel and **Data Table**. **Note: Prepayment Start Date must fall in selected period!** The query will only return data for Prepayments on the selected Accounts for Prepayments whose *start date falls in the selected time period*. **Important: Limits imposed on response payload size and number of rows!** * **Response too Large:** If the response payload for your query is **>10MB**, this exceeds the limit and you'll receive an error message to inform you. You can either use the available filters to further limit the query result set and re-run your query or use the **Export** button to download the current results in a `.csv` formatted file - see [Exporting Query Results](/guides/data-explorer/exporting-usage-query-results). * **Number of Rows Returned for Query:** If the number of rows returned by your query exceeds **5001** but the payload size limit is not exceeded, then only the first **5001** are loaded. You will not receive an error and if you suspect your query return contained more rows, we recommend you use the **Export** button to download the results in a `.csv` formatted file and check. * **Number of Rows for Export:** If you download the query results in a `.csv` formatted file, the number of rows is limited to **20001**. ## Reviewing Prepayments Data Query Results in a Summaries Table You can review the Prepayments data returned for your query in a **Summaries** table: **Tip: Multiple Prepayments Data?** If your query has returned data for multiple Prepayments - either for a single Account or across multiple Accounts - you can use the **Prepayment** drop-down to select which one you want to review. ## Reviewing Prepayment Data Query Results in a Data Table You can review the Prepayments data returned for your query in a data **Table**: * In **Prepayments - Table**: **Tip: End Date shown in Results Data differs from end date set for query?** The **End date** shown for the returned data, both in the **Prepayments - Summaries** panel and in the **Prepayments - Table**, might not be the same as the **End date** you've set for a query. This is because a Prepayment spans an entire contract period, and is not simply a minimum spend amount to be charged on a bill-by-bill basis. The **End date** shows as the *end date of the Prepayment contract period*, which in this example is January 1st 2025. You can reorder the columns for the **Prepayments - Table**. **To reorder columns:** 1. Select the column icon at top-right: A panel appears listing the available table columns. 2. Drag-and-drop these into a top-bottom ordering to correspond to the left-right ordering you want for the **Prepayments - Table**: 3. Select **Update**. The panel closes and the **Prepayments - Table** refreshes for the selected column order: **Tip: Exporting Prepayments Data?** You can use the **Export** button to create a `.csv` file of your returned Prepayments data. See [Exporting Query Results](/guides/data-explorer/exporting-usage-query-results) for more details. ## Reviewing Remaining Obligations for Prepayments You can use the **Obligations** panel to review the remaining obligations due under the Prepayment service period: * Note that you can reorder the columns in the **Obligations** table in the same way as you can in the **Prepayments - Table**. See the [previous section](/guides/data-explorer/performing-commitments-queries-and-reviewing-results#reviewing-prepayment-data-query-results-in-a-data-table) for details. **Tip: Export Prepayment Obligations?** You can select **Export** on the **Obligations** panel to export the remaining obligations as a `.csv` format file, which is downloaded to the Downloads folder on your local machine. ## Reviewing Prepayments Billing Information You can scroll down in the **Prepayments** tab to review a **Billing** panel. This gives details of amounts drawn-down against Prepayments at billing: * Note that you can reorder the columns in the **Billing** table in the same way as you can in the **Prepayments - Table**. See the [section above](/guides/data-explorer/performing-commitments-queries-and-reviewing-results#reviewing-prepayment-data-query-results-in-a-data-table) for details. **Tip: Export Prepayment billing details?** You can select **Export** on the **Billing** panel to export the billing details as a `.csv` format file, which is downloaded locally. **Tip: Saving Prepayments Queries?** You can save, update already saved, and re-use saved Prepayments queries. You can also load pre-configured *Standard Queries* directly into the Query Builder. See [Saving, Updating, and Re-Using Queries](/guides/data-explorer/saving-queries). # Usage Data Explorer Source: https://docs.m3ter.com/guides/data-explorer/performing-usage-queries-and-reviewing-results You can use the *Usage Data Explorer* to configure and perform queries against the metered usage data collected for your Organization in m3ter. You can quickly set up and submit a query that returns the metered data set needed to serve your current analytical purposes: * To build a usage data query, you can select a time period. Any Meters will be available for selection that have *numeric* Data Fields configured - **MEASURE**, **INCOME**, or **COST** types - and have had data submitted during the time period for those numeric fields. * Select an Aggregation function to apply to the numeric data that is returned by your query. * You can also filter the data returned by your query: * By Account - select only those end-customer Accounts you want data returned for. * Using other Meter dimensions, which are any *string* Data Field types also configured for the selected Meters - **WHO**, **WHAT**, **WHERE**, or **OTHER** types. For example, you might want your query to only return numeric data for usage data measurements submitted for specific **WHO** field values. * Note that **METADATA** string fields are *not made available* for filtering the data returned. You can then review the data in either a flat Data Table or a Pivot Table format. This topic explains how to work with the Usage Data Explorer to configure and perform queries against your usage data and review the returned data. **Notes and Warnings:** * **Usage Data Explorer - two versions**: * **Legacy Data Explorer**. If you signed up with m3ter after the 1st May 2026, you will not have access to the legacy Data Explorer service, and this version has now passed into maintenance mode with only security fixes being applied henceforth. This topic explains how to open and work with the Legacy Data Explorer. * **Usage Data Explorer (v2)**. This is the current version and opens when you select **Metering>Usage Data Explorer** in the Console. See [Usage Data Explorer (v2)](https://docs.m3ter.com/guides/data-explorer/usage-data-explorer-v2) for details on how to work with the current version. * **Required Permissions for performing Usage data queries**. If you create a Custom Permission Policy for your Organization Users to be able to perform Usage queries and view the results, ensure the Permission Policy allows: * Create and Retrieve action for the `config:analyticsJob` Resource. * Retrieve action for the `analytics:usage` Resource. * For more details on working with Permission Policies, see [Understanding, Creating and Managing Permission Policies](/guides/organization-and-access-management/creating-and-managing-permissions). * **Important! Data retrieval from Parent/Child Accounts**. When you query for usage data for a Parent Account or any of its Child Accounts, the usage data is treated as entirely separate. The data returned for a Parent Account will contain *none of the data* collected for any of its Child Accounts. If you want data from a Child Account, you must include the Account in the query you submit. ## Building and Performing a Usage Data Query **To submit queries for metered usage data and review returned data:** 1. Select **Metering>Usage Data Explorer**: **Usage Data Explorer (v2)** opens. 2. To use the original version of the Usage Data Explorer, select the information icon at the top-left. An information banner opens: 3. Select **Use the old version**. The original version of the **Usage Data Explorer** opens and you can use the **Usage query builder** to build a query for metered usage data collected for your Organization. * Note that if you can switch back to Usage Data Explorer (v2) - select the information icon time and select **Try it out!** on the information banner. 4. In the **Select period** section, define a period to retrieve usage data for: * **Time period**. Use the drop-down list to select a period for which you want to retrieve usage data. **Today** is the default. If you want to select a specific period, you can use **Custom**: * **Today**. All of today - that is, the 24 hour period from midnight to midnight. This saves you from having to reset the query time period to catch other new pieces of data submitted later that same day. * **Yesterday**. All of yesterday - that is, the 24 hour period from midnight to midnight yesterday. * **Week to date/Month to date**. Period covering the current week/month to date. For example: * Selecting **Month to date** on April 14th, 2024 means your query returns data for the time period starting April 1st, 2024 and including the *entire current day* - April 14th - and ending at midnight. * Weeks run Monday to Monday, so selecting **Week to date** on a Thursday means your query returns data for time period starting Monday of that week and including the *entire Thursday*. * In both cases, this saves you from having to reset the query time period to catch other new pieces of data submitted later that same day. * **Last 7/30/90/120 days**. Period covering the selected number of whole days leading up to today. For example, selecting **Last 30 days** on April 8th, 2024 means your query returns data for the time period commencing 30 days prior - March 9th, 2024 - and ending midnight on April 7th, 2024. * **Previous week/month/quarter**. Period covering the entire previous week/month/quarter. For example, selecting **Previous month** on April 8th, 2024 means your query returns data for the whole of March 2024. * **Custom**. Define the time period for which you want your query to return data. * **Start (inclusive)** and **End (exclusive)**. If you have selected **Custom** for the query **Time period**, these date/time fields will be enabled. You can use calendar popups to select the start and end dates/times for the period you want to query. * Start dates are explicitly labeled as *inclusive* and End dates as *exclusive*. For example, if you want data returned for the entire month of June 2023, you must set the **Start** at June 1st 2023 and the **End** at July 1st 2023. If you set the **End** at June 30th 2023, the Custom Time period for your query will end at midnight on June 29th 2023. * Note that when you select **Custom** for **Time period** and select the **Start** and **End** dates/times, the list of Meters available to filter your query by is restricted to those Meters for which data was submitted in that time period - see below Step 3. **Tip: Timezone for Query Start and End Dates/Time?** The **Start** and **End** fields will show the timezone you've set for your Organization. See [Managing your Organization](/guides/organization-and-access-management/viewing-and-editing-organization). 5. In the **Filter by meters and measures** section, select the **Meters** and **Measures** you want to filter your query by. * **Meters**. Select the Meters for which you want to return collected data. The default is **All Meters**. * Note that when you select a Meter, the **Filter by meter dimensions** section adjusts to show only those fields on the selected Meter as dimensions to filter by - see below Step 5. * **Measures**. Select the *numeric* Data Fields on the selected Meter or Meters whose data you want to return. These will be any **MEASURE**, **INCOME**, or **COST** Data Fields configured for the Meters. **Warning!** Note that the **Meters** list will show *only those Meters* whose *numeric* Data Fields have had data submitted/collected in the time period you've selected for your usage data query. 6. Use the **Apply aggregations** section to select: * **Aggregation frequency**. Select the frequency for the Aggregation data returned for the query. Note that if you select an **Aggregation function**, you must select a frequency other than **None**. * **Aggregation function**. If you want to aggregate the numeric Measures you've selected for your query, select how you want to aggregate the data returned. Default is **No Aggregation**. Seven options: * **Count**. Returns a count of the number of measure values. * **Latest**. Returns the latest measure value. * **Max**. Returns the maximum measure value. * **Mean**. Returns the arithmetic mean of the returned measure values. * **Min**. Returns the minimum measure value. * **Sum**. Returns the addition of the measure values. * **Unique**. Special case: * If you select this as the **Aggregation function**, it does not apply an aggregation method to the measure values but means your query will return a list of the Meters that have received usage data for the selected time period. * Note that if you also select to filter by a Meter dimension - see step 6 below - then this returns a list of Meters and the dimensions used. 7. In the **Filter by meter dimensions** section, use the **Account** filter to select the Accounts for which you want to return usage data submitted for the selected Meters: * **Any Account.** Usage data measurements for all Accounts will be returned. An **Account Code** column will be shown in the Data and Pivot Tables. * **Select Accounts.** Usage data measurements for the selected Accounts will be returned. An **Account Code** column will be shown in the Data and Pivot Tables. * **No filter**. Default setting. If you leave the **Account** filter blank, all usage data measurements for the Meter will be returned, regardless of whether an Account code was submitted with the measurement. No **Account Code** column will show in the Data and Pivot Tables. 8. In the **Filter by meter dimensions** section, use any *string* Data Fields on the selected Meters to filter your query by: * The *string* Data Fields available for filtering will depend on the Meters you've select for usage data querying. **Tip: Which Meter string Data Fields are included for filtering?** Note that as you start to set up your query and select a **Time period**, a check is made to determine the Meters which have had numeric data submitted during that period. The **Filter by meter dimensions section** then automatically adjusts to include any string Data Fields configured for those Meters. This is because the default selection for Meters is **All Meters**. However, if you then select only some of those Meters to query for submitted usage data, the **Filter by meter dimensions** section might auto-adjust again to remove any string Data Fields that do not belong specifically to the Meters you've selected. In this example we have: * Set a **Custom** time period of one month. The Organization Timezone is set to UTC. * Selected to filter our query by two Meter numeric Measures: **file\_submits** for number of files submitted and **gb\_store** for gigabytes stored. * Chosen *not to aggregate* any of the numeric measures returned for the query. * Filtered for any relevant Account codes to be shown as a column in the returned data. * Selected to filter our query by the **Customer\_name** Meter string field to return data for all values for that field. 9. Select **Perform Query**. The query executes and the resultant data is loaded into the data tables for you to review. **Important: Limits imposed on response payload size and number of rows!** * **Response too Large:** If the response payload for your query is **>10MB**, this exceeds the limit and you'll receive an error message to inform you. You can either use the available filters to further limit the query result set and re-run your query or use the **Export** button to download the current results in a `.csv` formatted file - see [Exporting Query Results](/guides/data-explorer/exporting-usage-query-results). * **Number of Rows Returned for Query:** If the number of rows returned by your query exceeds **5001** but the payload size limit is not exceeded, then only the first **5001** are loaded. You will not receive an error and if you suspect your query return contained more rows, we recommend you use the **Export** button to download the results in a `.csv` formatted file and check. * **Number of Rows for Export:** If you download the query results in a `.csv` formatted file, the number of rows is limited to **20001**. ## Reviewing Usage Data Query Results in a Data Table You can review the usage data returned for your query in a **Data table**: You can make adjustments to the **Data Table** to: * Show/Hide data element columns. * Reorder the columns. **To Show/Hide columns:** 1. Select the columns icon at top-right: A panel appears showing the columns available for the table and you can use switches to select your Show/Hide preferences: 2. Select **Update** - the panel closes and the **Data Table** refreshes for your Show/Hide selections. * Note that if you've run a query that *doesn't aggregate the usage data* it returns, you'll be able to Show/Hide a **UID** column: * This shows the **UID** used for the original usage data measurements when submitted: **To reorder columns:** 1. Select the columns icon at top-right. A panel appears listing the available table columns. 2. Drag-and-drop these into a top-bottom ordering to correspond to the left-right ordering you want for the **Data Table**: 2. Select **Update**. The panel closes and the **Data Table** refreshes for the selected column order: **Tip: Collapse Query Builder**. If your query returns a large results set, to make it easier to review the data loaded into the tables, you can collapse the Query Builder by selecting the arrow at top-right next to the **Saved Queries** button. ## Reviewing Usage Data Query Results in a Pivot Table You can review the usage data returned for your query in a **Pivot table**: * To review returned data using the Pivot Table, you can drag-and-drop data elements to show the preferred arrangement. For example: **Important: Returning Aggregated Data for Pivot Table Review and Analysis!** In the example given, we chose not to apply any Aggregations to the data returned for the query. If you want to work with raw usage data returned for the selected Meter Measures, you must de-select any **Aggregation functions** and select **None** for **Aggregation frequency** before you perform the query. In the Pivot table, you can then apply your own aggregations, without risking a distorted view of your usage data by aggregating already-aggregated data. **Tips:** * **Saving Usage Queries?** You can save, update, and re-use Usage queries. You can also load pre-configured *Standard Queries* directly into the Usage query builder. See [Saving, Updating, and Re-Using Queries](/guides/data-explorer/saving-queries). * **Exporting Usage Query Results?** You can export the results of a Usage query. See [Exporting Query Results](/guides/data-explorer/exporting-usage-query-results). # Data Explorers: Saving, Updating, and Re-Using Queries Source: https://docs.m3ter.com/guides/data-explorer/saving-queries If you have set up a query in either the *Usage Data Explorer*, *Billing Data Explorer*, or *Prepayments Data Explorer* and expect to use the query again, you can: * Save the query for re-use. * Update a saved query with the details of the current query. * Re-load a saved query into a query builder. This topic explains how to save, update, and re-use queries in the context of the original version Usage Data Explorer. You can follow a similar procedure when working in the Prepayment Data Explorer or the Billing Data Explorer. **Notes and Warnings:** * **Standard Queries.** For some query builders, pre-configured *Standard Queries* are available, such as the **Month-on-month report** Billing Query. You can use the Standard Queries button in the same way as the Saved Queries button to load these pre-configured Queries. * **Usage Date Explorer (v2)**. When working in Usage Data Explorer (v2), you can save and re-use queries, but you *cannot update saved queries*. ## Saving Queries **To save a query:** 1. Select **Metering>Usage Data Explorer**. 2. Use the **Usage query builder** to configure a query, perform the query, and review the returned data. 3. If you expect to want to perform the same query at a later date, select **Save Query**. A popup appears and the default action selected is to **Save a new query**: Query Save Explorers3 4. Enter a **Query name** and select **Save query**. The popup closes and your query is saved. ## Updating Saved Queries **To update a saved query:** 1. Select **Metering>Usage Data Explorer**. 2. Use the **Usage query builder** to configure a query, perform the query, and review the returned data. 3. If you expect to want to perform the query at a later date, and want to update a query you've previously saved with the details of the current query, select **Save query**. A popup appears and the default action selected on the popup is to **Save a new query**. 4. Select **Update an existing query**. The popup adjusts: Query Save Explorers4 5. Select a previously **Saved query** to update. The **Query name** field adjusts to show the selected saved query to be updated and to be saved under the same **Query name**. * If you want use the same name when updating, select **Update Query**. The popup closes and the updated query is saved under the same name. * If you want to update the saved query under a different name, enter a new **Query name** and select **Update Query**. The popup closes and the updated query is saved under the new name. ## Re-Loading Saved Queries **To re-load a saved query into Query Builder:** 1. Select **Metering>Usage Data Explorer**. 2. In the **Usage query builder**, select **Saved queries**. A popup appears and lists saved Usage queries. 3. Select **Load query** for the query you want to load into **Usage query builder**. The query is loaded and the query is automatically performed to return data for review. # Usage Data Explorer (v2) Source: https://docs.m3ter.com/guides/data-explorer/usage-data-explorer-v2 You can use the *Usage Data Explorer* *(v2)* to configure and perform queries against the metered usage data collected for your Organization in m3ter. It allows you to quickly set up and submit a query that returns the usage data set needed to serve your current analytical purposes: * **Time Period**. Define a time period for your data query: * You can select from a set of predefined time period options or define a custom time period. * The query returns the usage data collected for your Organization for the selected period: * Note that the query references the *timestamp values* of usage data submissions for applying the defined time period, and *not the time submissions were received* by the platform. Only usage data with a timestamp that falls in the defined time period are returned. * **Meters**. Select the Meters you want the query to return data for. * **Accounts**. Select the Accounts you want the query to return data for. * **Dimension Filters**. Filter the usage data returned by adding specific values of non-numeric Dimension data fields on included Meters. Only the data collected for the values you've added for the selected Dimension fields will be returned for the query. * **Aggregations**. Apply Aggregation functions to the usage data returned for the query. * **Grouped by**. For queries that apply Aggregations, you can select to group the data returned for the query by: * **Account** * **Time** * **Dimension** When you have performed a query, the data is loaded into the Usage Data Explorer (v2) and you can: * Review the data in a results table and check that it serves your current purposes. * Download the data in either `CSV` or `JSONL` format. * Use the query to create a usage Data Export Schedule or to run an Ad-Hoc Data Export. If you intend to use the Usage Data Explorer (v2) [API endpoints](/api/dataexplorerv2/introduction), for convenience you can view and copy the query JSON. This topic explains how to work with the Usage Data Explorer (v2) to configure and perform queries against your usage data and review the returned data. * [Building and Performing Simple Queries](/guides/data-explorer/usage-data-explorer-v2#building-and-performing-simple-queries) * [Using Dimension Filters for Queries](/guides/data-explorer/usage-data-explorer-v2#using-dimension-filters-for-queries) * [Applying Aggregations for Queries](/guides/data-explorer/usage-data-explorer-v2#applying-aggregations-for-queries) * [Managing Result Rows Table Columns](/guides/data-explorer/usage-data-explorer-v2#managing-result-rows-table-columns) * [Viewing and Copying Queries](/guides/data-explorer/usage-data-explorer-v2#viewing-and-copying-queries) * [Saving and Re-Using Queries](/guides/data-explorer/usage-data-explorer-v2#saving-and-re-using-queries) * [Downloading Query Results](/guides/data-explorer/usage-data-explorer-v2#downloading-query-results) * [Using Queries for Data Export](/guides/data-explorer/usage-data-explorer-v2#using-queries-for-data-export) **Note: Usage Data Explorers - two versions:** * **Data Explorer (v2)**. This is the current version and opens when you select **Metering>Usage Data Explorer** in the Console. This topic explains how to open and work with Usage Data Explorer (v2). * **Legacy Data Explorer**. If you signed up with m3ter after the 1st May 2026, you will not have access to the legacy Data Explorer service, and this version has now passed into maintenance mode with only security fixes being applied henceforth. See [Usage Data Explorer](https://docs.m3ter.com/guides/data-explorer/performing-usage-queries-and-reviewing-results). ## Building and Performing Simple Queries This section works through an example showing how to build and perform a simple usage data query - a simple query in that it doesn't use any Dimension filters and doesn't apply any Aggregations to the returned data. **To build and perform a simple query:** 1. Select **Metering>Usage Data Explorer**: UD Explorer1 Usage Data Explorer (v2) opens. 2. Select the **Time period** you want to return usage data for: * Default is **Today**. * Other predefined options: * **Yesterday**. * **Week**, **Month**, or **Year** to date. * **Previous week**, **month**, **quarter**, or **year**. * **Last 12 hours, Last 7**, **30**, **35**, **90**, or **120 days**, or **Last year**. * If you select a predefined **Time period**, then the start and end date/times are clearly shown in brackets. For example, **Last 120 days**: V2data Explorer39 3. For the current example, select **Custom**. The **Time period** panel adjusts to allow you to enter start and end date/times to define the time period for the query: V2data Explorer40 * Note that for a **Custom** period start date/time is *inclusive* and end date/time is *exclusive*. For the current example, we want to include all usage data collected for the entire month of January 2025. We've therefore set the exclusive end date/time as midnight on February 1st 2025. This means the query will return data collected up to the end of day January 31st 2025. 4. Use the plus icon on the **Meters** panel to open a dialog showing a list of Meters in your Organization. 5. On the dialog, check the Meters you want to include data from in your query and select **Add**. The selected Meters are then shown on the **Meters** panel. * For the current example, we've used the **Search** field on the dialog to filter the list, checked a single Meter, and then added it: Note that: * Alternatively, you can enter the **ID** of a Meter and **Add** it for a query. * Default is for **All Meters**. 6. Use the plus icon on the **Accounts** panel to open a dialog showing a list of Accounts in your Organization. 7. On the dialog, check the Accounts you want to include data for in your query and select **Add**. The selected Accounts are then shown on the **Accounts** panel. * For the current example, we've used the **Search** field on the dialog to filter the list, checked a single Account, and then added it: Note that: * Alternatively, you can enter the **ID** of an Account and **Add** it for a query. * Default is for **All Accounts**. 8. For the current example, we'll not use any **Dimension filters** for the query and we'll omit applying any **Aggregations** for the query results: 9. Select **Perform query**. The usage data collected for the defined **Time period** by the selected **Meters** and **Accounts** is loaded into a **Result rows** table: In this example, we can see: * Nine usage data submissions have been returned for the selected time period of the entire month of January 2025. * The selected Meter has four Data Fields configured: * **File Submits**. A numeric Measure field of type **MEASURE**. * **GBStore**. A numeric Measure field of type **MEASURE**. * **Customer Name**. A non-numeric Dimensions field of type **WHO**. * **Status**. A non-numeric Dimension field of type **METADATA**. Because no **Dimension filters** were defined and no **Aggregations** were applied, the query has returned all usage data submissions made using the single Meter for the single Account. In the [next section](/guides/data-explorer/usage-data-explorer-v2#using-dimension-filters-for-queries), we'll use Dimension filters to refine this example query to control the usage data returned. **Notes and Warnings:** * **Meter Derived Fields?** If selected Meters contain Derived Fields, then these will also be returned by your query. * **Result rows limit!** The **Result rows** panel is limited to loading up to **2000** rows. If your query returns more than this limit, the results will not load and you'll be advised to update your query to return fewer rows. ## Using Dimension Filters for Queries To control the range of usage data a query returns, you can set up Dimension filters for any non-numeric Dimension Data Fields configured for the Meters selected for the query. This section explains how to use Dimension filters and extends the example of a simple query given in the [previous section](/guides/data-explorer/usage-data-explorer-v2#building-and-performing-simple-queries): * The example used a simple query to return usage data collected by a single Meter and single Account. * We saw that the example Meter was configured with two numeric or Measure Data Fields and two non-numeric or Dimension Data Fields. We'll now use the **Customer Name** Dimension field to filter the range of data that's returned by the query. **To use dimension filters for queries:** 1. Build and perform the simple query example given in the [previous section](/guides/data-explorer/usage-data-explorer-v2#building-and-performing-simple-queries). 2. Before you perform the query, under **Dimension filters** select **Add dimension filter**. A menu appears and lists any Dimension fields for Meters selected for the query: * In the current example, a single Meter has two Dimension fields configured. 3. Select the Meter Dimension field you want to use to filter the data returned for the query. For the current example, we'll select **RevGraph Meter 1 > Customer Name**. A dialog replaces the menu, which lists values used for this field when usage submissions were made for the Meter within the selected **Time period**. 4. Check the values used for the selected Meter Dimension field you want to use to filter the data returned for the query and then select **Add filter**: The dialog closes and the select Dimension field values are added under **Dimension filters**: 5. Select **Perform query**. The filtered query executes and returns the data into the **Result rows** panel: * For the current example, we can see that the data returned for the filtered query now includes only those usage submissions made for **Customer Pay1** values for the **Customer Name** Dimension field on the Meter. ## Applying Aggregations for Queries When building a query in the Usage Data Explorer (v2), you can choose to apply Aggregations to the usage data collected by any Data Fields on the Meters selected for the query. This section explains the options you have when using Aggregations for queries and the consequences of using Aggregations. It then explains how to create and perform aggregated queries with some typical examples: * [Aggregations for Queries - Understanding Options and Consequences](/guides/data-explorer/usage-data-explorer-v2#aggregations-for-queries---understanding-options-and-consequences) * [Applying Aggregations to Queries and Grouping Results](/guides/data-explorer/usage-data-explorer-v2#applying-aggregations-to-queries-and-grouping-results) ### Aggregations for Queries - Understanding Options and Consequences Before you attempt to use Aggregations for your queries in the Usage Data Explorer (v2), it's important to understand the options you have and the consequences that aggregating the data returned by the query will have. There are two types of Meter Data Fields: * **Measures**. Numeric fields of category **MEASURE**, **INCOME**, or **COST**. * **Dimensions**. Non-numeric fields of category **WHO**, **WHAT**, **WHERE**, **METADATA**, or **OTHER**. When building queries in Usage Data Explorer (v2), the available Aggregation methods for the various Meter Data Field categories are as follows: | Aggregation Method | What it does | Can be applied to Meter field categories | | ------------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | Sum | Adds the values. | MEASURE, INCOME, or COST | | Minimum | Uses the minimum value. | MEASURE, INCOME, or COST | | Maximum | Used the maximum value. | MEASURE, INCOME, or COST | | Count | Counts the number of values. | MEASURE, INCOME, COST, WHO, WHAT, WHERE, METADATA, or OTHER | | Latest | Uses the most recent value. Based on the timestamp (ts) value of usage data submissions. | MEASURE, INCOME, or COST | | Mean | Uses the arithmetic mean of the values. | MEASURE, INCOME, or COST | | Unique | Uses unique values and returns a count of the number of unique values. | WHO, WHAT, WHERE, METADATA, or OTHER | If you apply Aggregations for a query: * This restricts the range of usage data returned by the query to only the data collected by the aggregated fields on Meters. Nothing is returned for any non-aggregated fields on Meters. * The usage data for Meter fields is returned as the values resulting from applying the selected aggregation method. * You can then select to group the results of the aggregated data returned by: * **Account** * **Time** * **Dimension** ### Applying Aggregations to Queries and Grouping Results This section provides some examples of aggregated queries with grouped results: * **Example 1**. [Results grouped by Dimension](/guides/data-explorer/usage-data-explorer-v2#aggregated-queries-with-grouped-results-example-1) * **Example 2**. [Results grouped by Time](/guides/data-explorer/usage-data-explorer-v2#aggregated-queries-with-grouped-results-example-2) * **Example 3**. [Results grouped by Account](/guides/data-explorer/usage-data-explorer-v2#aggregated-queries-with-grouped-results-example-3) #### Aggregated Queries with Grouped Results - Example 1 This example extends the simple unfiltered query example from the earlier section to show how to apply aggregations to usage data returned for the query. It then goes on to show how to group the query results by a Dimension. **To apply aggregations for queries and group the results:** 1. Build and perform the simple unfiltered query example given in the [earlier section](/guides/data-explorer/usage-data-explorer-v2#building-and-performing-simple-queries). 2. Under **Aggregations**, select **Add aggregation**. A menu listing available aggregation methods appears: 3. For the current example, select **Sum**. A dialog replaces the menu and shows the fields on the Meters selected for the query which can have this aggregation method applied: In the current example, the two Meter fields of category **MEASURE** - **File Submits** and **GBStore** are listed. 4. Select to **Sum** the **RevGraph Meter 1 > GB Store** numeric data field. The dialog closes and the aggregation is added. 5. Repeat steps 2 to 4 to apply a **Sum** aggregation to the **File Submits** Meter field: 6. Select **Perform Query**. The query with aggregations applied executes and returns the data into the **Result rows** panel: Suppose now we want to see how many different customers were responsible for these totals of file submissions and Gigabytes stored. 7. Repeat steps 2 to 4 to apply a **Unique** aggregation to the **Customer Name** Meter field: 8. Select **Perform Query**. The query executes and returns the data into the **Result rows** panel: We can see that only two distinct customers were responsible for the totals of usage data. Suppose now that we want to check how the totals were distributed between the two customers. We can use the **grouped by** option to do this. 9. First, remove the **Unique** aggregation of the **Customer Name** Dimension field from the query. 10. Under **Aggregations**, select the **grouped by** plus icon. A menu appears: 11. Select **Dimension**. The menu is replaced with a **Dimension** dialog: 12. Select the **Dimension** you want to group the aggregated usage by. For the current example, **RevGraph Meter 1 > Customer Name**. 13. Select **Perform Query**. The query executes and returns the data into the **Result rows** panel: #### Aggregated Queries with Grouped Results - Example 2 This example uses a query that aggregates measures data by a SUM method over a month and then groups the results by day. **To apply aggregations for queries and group the results:** 1. Build and perform an unfiltered query with **Sum** aggregations applied to MEASURE Data Fields on selected Meters: * The query returns the data for the month of February 2025 collected for a single Meter and Account, and aggregates for a Sum of the data for each of the MEASURE fields on the Meter. * The data is returned into the **Result rows** table as a single row. Suppose we want to review the sum of usage data over the month by day. We can do this using the **grouped by** option by **Time**. 2. Under **Aggregations**, select the **grouped by** plus icon. A menu appears: 3. Select **Time**. The menu is replaced with a **Time** dialog: 4. Select **Daily**. 5. Select **Perform Query**. The query executes and returns the data into the **Result rows** panel: #### Aggregated Queries with Grouped Results - Example 3 This example uses a query that aggregates measures data by a SUM method over a month and then groups the results by Account. **To apply aggregations for queries and group the results:** 1. Build and perform an unfiltered query with Sum aggregations applied to MEASURE Data Fields on selected Meters: * The query returns the data for the month of January 2025 collected for a single Meter and all Accounts, and aggregates for a Sum of the data for each of the MEASURE fields on the Meter. * The data is returned into the **Result rows** table as a single row. Suppose we want to review the sum of usage data over the month by Account. We can do this using the **grouped by** option by **Account**. 2. Under **Aggregations**, select the **grouped by** plus icon. A menu appears: 3. Select **Account**. 4. Select **Perform Query**. The query executes and returns the data into the **Result rows** panel: ## Managing Result Rows Table Columns When you perform a query the usage data returned for the query is loaded into the **Result rows** table. You can then open a *Columns* dialog to show or hide some table columns. **To manage Result rows table columns:** 1. Build and perform the query that returns the usage data results required for your analytical purposes. For example: 2. At the right-side of the **Result rows** table, select **Columns**. A menu appears: * The columns in the **Result rows** table will depend upon the query you've performed and some columns will be shown by default - such as the **Timestamp**, **Meter**, and **Account** columns in this example - and you will not be able to hide some - such as the Meter field data columns in this example: 3. You can hide and show columns to suit current requirements. For the current example, you might want to hide the **Timestamp** column and show the usage data measurement **UID** instead: * The **Result rows** table adjusts accordingly: 4. When you've finished showing or hiding columns for the **Result rows** table, select **Columns** again to close the menu. ## Viewing and Copying Queries As you are building a query, you might want to review the query's JSON structure. This can be helpful if you intend to use the Usage Data Explorer (v2) [API query endpoint](/api/dataexplorerv2/query-and-filter-usage-data). For convenience, you can quickly view a query's JSON and copy it from the explorer page in the Console. **To view and copy queries:** 1. Build and perform the query that returns the usage data results required for your analytical purposes. 2. In the Usage Data Explorer (v2), select **View query**: V2data Explorer43 A modal appears containing the query JSON as currently configured: V2data Explorer42 3. You can **Copy** the query JSON to your clipboard, if required. **Tip: API for Usage Data Explorer (v2)?** See the [DataExplorerV2](/api/dataexplorerv2/introduction) section of our API Reference for details. ## Saving and Re-Using Queries You can save queries and re-use them. **To save and re-use queries:** 1. In the **Query** panel, build and perform the query that returns the usage data results required for your analytical purposes. 2. Select **Save query**: A **Save query** dialog appears. 3. Enter a **Query name** and select **Save query**: V2data Explorer44 The **Save query** dialog closes and a **Query successfully saved** message appears. 4. If you want to re-use a saved query, on the **Query** panel select **Saved queries**: A **Saved queries** dialog appears. 5. For the saved query you want to re-use, select **Load query**: V2data Explorer45 The dialog closes and the selected saved query is loaded onto the **Query** panel. * Note that you can *delete saved queries* on the **Saved queries** dialog. 6. Make adjustments to the loaded query, if required, and select **Perform query**. The query executes and returns the data into the **Result rows** panel. ## Downloading Query Results When you have built a usage data query in Usage Data Explorer (v2), you can export the results returned for the query as a `CSV` or `JSONL` formatted file. **To download query results:** 1. Build and perform the query that returns the usage data results required for your analytical purposes and which you want to download for use elsewhere. 2. On the **Result rows** panel, select **Download CSV** or **Download JSONL**. The returned data set that was loaded into the **Result rows** panel from the query is compiled in a *.csv* or *.jsonl* formatted file, downloaded, and saved locally. ## Using Queries for Data Export When you've set up and performed a query in Usage Data Explorer (v2), you can quickly use the query for creating usage Data Export Schedules or to run an Ad-Hoc Data Export. **To use queries for Data Exports:** 1. Build and perform the query that returns the usage data results you want to export using the Data Export service. 2. If you want to use the query to create a Usage Data Export Schedule, select **Create export schedule**: V2data Explorer46 The **Export schedules>Create** page opens with the query loaded for the **Export schedule details**. You can now proceed to configure the Data Export Schedule. See [Creating Usage Data Export Schedules](/guides/data-exports/creating-export-schedules) for more details. **Note: Using Custom Time Period?** If you've set up a usage data query in Data Explorer that uses a **Custom** time period, when you load the query for configuring an Export Schedule, this *static time period* is not available for Export Schedules and the default of **Today** is used instead. 3. If you want to use the query to run and Ad-Hoc Usage Data Export, select **Run ad-hoc export**: V2data Explorer47 The **Run ad-hoc export** page opens with the query loaded for the **Ad-hoc export details**. You can now proceed to configure the Ad-Hoc Usage Data Export. See [Running Ad-Hoc Usage Data Exports](/guides/data-exports/running-ad-hoc-data-exports) for more details. # Data Exports (Preview) Source: https://docs.m3ter.com/guides/data-exports **Note: Data Exports in Preview Release.** Please note that the Data Exports feature is currently a Preview feature. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Preview feature guidance. The m3ter *Data Export* service allows you to export usage data and operational data from your m3ter Organization directly into your AWS S3 or Google Cloud Storage buckets: * Firstly, you can create *Export Destinations* and enable the Data Export service to export data to your AWS S3 or Google Cloud Storage buckets. * Secondly, use the Export Destinations you've set up to configure Export Schedules for usage or operational data exports at specified intervals of minutes, hours, or days. * Alternatively, select an Export Destination to run a one-off, ad-hoc, data export, delivered either to an existing Export Destination, or local device. When setting up Export Schedules or running ad-hoc exports, you can define precisely the data you want included in the exported data set: * **Usage Data**. Define the usage data measurements ingested for your Organization by Meter and Account that you want to export. * **Operational Data**. Export the configuration and operational data for a range entities from your production environment, such as Bills and Bill Line Items, Prepayments/Commitments, Accounts, and Balances. * **Export Format**. Two file formats are available for data exports: `.CSV` or `JSONL`. Export jobs are created for both export schedules and ad-hoc exports you've created, and you can open a page to review export jobs at any time to check their status. If you want to download the content of a data export file locally, you can simply omit a destination when setting up either an Export schedule or an ad-hoc Export. When the Export job runs and has succeeded, a download button is provided on the Export jobs page. In this way, the Data Export service is designed to facilitate business use cases where you want to export a clearly defined usage or operational data set extracted from your m3ter Organization, and which you can then use to drive other business applications such as dashboards or other business intelligence and reporting tools. This section explains how to work with, create, and manage Data Exports for your m3ter Organization: * [Creating and Managing Export Destinations](/guides/data-exports/creating-data-export-destinations) * [Creating Usage Data Export Schedules](/guides/data-exports/creating-export-schedules) * [Creating Operational Data Export Schedules](/guides/data-exports/creating-operational-data-export-schedules) * [Reviewing and Managing Export Schedules](/guides/data-exports/reviewing-and-managing-export-schedules) * [Running Ad-Hoc Usage Data Exports](/guides/data-exports/running-ad-hoc-data-exports) * [Running Ad-Hoc Operational Data Exports](/guides/data-exports/running-ad-hoc-operational-data-exports) * [Downloading Data Export Files Locally](/guides/data-exports/downloading-data-export-files-locally) * [Reviewing Export Jobs](/guides/data-exports/reviewing-export-jobs) * [Data Export - Entity Schema and Relationship Diagram](/guides/data-exports/data-export-object-relationship-diagram) **Important: Permissions for Data Export!** For users to be able to create, manage, and run Data Exports for either usage or operational data in your Organization, they will need the following permissions assigned to them: * **Create and Manage Exports**. **Create** and **Update** configuration actions for `config:exportDestination`, `config:exportSchedules`, and `config:exportStatus` resources. * **Run Exports**. **Download** export action for `exports:data` resource. * Do not grant permission to manage data exports to users who shouldn't have access to all data in m3ter. See [Understanding, Creating, and Managing Permission Policies](/guides/organization-and-access-management/creating-and-managing-permissions). # Creating and Managing Export Destinations Source: https://docs.m3ter.com/guides/data-exports/creating-data-export-destinations You can create data *Export Destinations* using: * S3 buckets on your AWS account. * Buckets in your Google Cloud Storage account. You'll need to create Export Destinations before you can create data Export Schedules or run ad-hoc data Exports using the Data Export service: * [Preparing to Create Export Destinations](/guides/data-exports/creating-data-export-destinations#preparing-to-create-export-destinations) * [Creating AWS S3 Bucket Export Destinations](/guides/data-exports/creating-data-export-destinations#creating-aws-s3-bucket-export-destinations) * [Creating Google Cloud Storage Bucket Export Destinations](/guides/data-exports/creating-data-export-destinations#creating-google-cloud-storage-bucket-export-destinations) * [Reviewing and Managing Export Destinations](/guides/data-exports/creating-data-export-destinations#reviewing-and-managing-export-destinations) ## Preparing to Create Export Destinations ### AWS S3 Bucket For a data upload into your S3 bucket to succeed, the m3ter Data Export service has to assume an IAM role with `PutObject` permission for the bucket. For this reason, you'll need to go into your AWS account and set up an IAM role for this access level. You then must enter the IAM role ARN when you create the Export Destination. **Tip: Copy Permission and Trust Policies from m3ter Console!** To assist you in setting up the required IAM role, the **Create export destination** page in the Console shows sample **Permission** and **Trust** policies, which you can copy, complete for your specific bucket details, and then use to create the required IAM role. See the [following section](/guides/data-exports/creating-data-export-destinations#creating-aws-s3-bucket-export-destinations). ### Google Cloud Storage Bucket For a data upload into your Google Cloud Storage (GCS) bucket to succeed, the m3ter Data Export service has to authenticate with your Google Cloud Platform Project using Workload Identity Federation. You can grant the `storage.objectCreator` role to the data exports principal directly or using service account impersonation. **Tip: Copy gcloud commands from m3ter Console!** To assist you in setting up the required authentication with your Google Cloud Platform project, we've created sample gcloud commands for you to create a workload identity pool, identity provider and policy binding. You can copy these commands to use with your specific project details. See the [following section](/guides/data-exports/creating-data-export-destinations#creating-google-cloud-storage-bucket-export-destinations). ## Creating AWS S3 Bucket Export Destinations You can create Export Destinations for your AWS S3 buckets in the m3ter Console. **To create an AWS S3 Export Destination:** 1. Select **Data exports**: The **Data export** page opens and lists any existing **Export destinations**: 2. On the **Export destinations** panel, select **Create export destination**. The **Create** page opens with **AWS S3** selected by default as **Export destination type**. 3. Select **Next**. The page adjusts for **Export destination details**. 4. Enter the details of the new Export destination: * **Name**. Descriptive name for the destination. * **Code**. Unique identifier for the destination. * Note that when you've entered a Name and clicked in the **Code** field, a Code is automatically entered based on the Name. You can then edit the auto-generated Code as required. * **Bucket name**. Name of the S3 bucket for the destination. * **Prefix**. Location in bucket for the export. Leave this blank if you want to use the root of the bucket. * **IAM role ARN**. You must use the correct format: * The **IAM role ARN** must begin with "`arn:aws:iam`". * The general format required is: "`arn:aws:iam:::role/`". For example: **arn:aws:iam::922609978421:role/IAMRole636**. * If the **IAM role ARN** you enter doesn't comply with this format, then you won't be able to save the Export Destination and an error message will show. * **Partition data by**. Required. Specify how you want the file path to be structured in your bucket destination - by **Time first** (Default) or **Type first**. * Type is dependent on whether the data export is for usage or operational data: * **Usage**. Type is `measurements`. * **Operational**. Type is one of the entities for which operational data exports are available, such as `account`, `commitment`, `meter`, and so on. * Here's an example for usage data export: * **Time first**: * `{bucketName}/{prefix}/orgId={orgId}/date=2025-01-27/hour=10/type=measurements/b9a317a6-860a-40f9-9bf4-e65c44c72c94_measurements.csv.gz` * **Type first**: * `{bucketName}/{prefix}/orgId={orgId}/type=measurements/date=2025-01-27/hour=10/b9a317a6-860a-40f9-9bf4-e65c44c72c94_measurements.csv.gz` **Notes:** * Sample **Permission** and **Trust** polices are provided on the **Create** form and you can **Copy** these directly to your clipboard. * For the **Trust** policy, your m3ter *Organization ID* is used as the `ExternalId`. *Please ensure this is not changed*. This is what the Data Export service will use when assuming the role and if you change it, the export will not work and security will be compromised. 5. Select **Create export destination**. The new Export destination is saved and is listed under **Export destinations** on the **Data export** page. You can read-off the **Code**, **Bucket name**, and **Prefix** settings, and also **Export destination type**. **Note:** The service validates that it can assume the defined role prior to saving. ## Creating Google Cloud Storage Bucket Export Destinations You can create Export Destinations for your Google Cloud Storage (GCS) buckets in the m3ter Console. **To create an Google Cloud Storage Export Destination:** 1. Select **Data exports**: The **Data export** page opens and lists any existing **Export destinations**. 2. On the **Export destinations** panel, select **Create export destination**. The **Create** page opens with **AWS S3** selected by default as **Export destination type**. 3. Select **Google Cloud Storage**. 4. Select **Next**. The page adjusts for **Export destination details**. 5. Enter the details of the new Export destination: * **Name**. Descriptive name for the destination. * **Code**. Unique identifier for the destination. * Note that when you've entered a Name and clicked in the **Code** field, a Code is automatically entered based on the Name. You can then edit the auto-generated Code as required. * **Bucket name**. Name of the GCS bucket for the destination. * **Prefix**. Location in bucket for the export. Leave this blank if you want to use the root of the bucket. * **Workload identity pool ID**. (*Required*) * **Identity Provider ID**. (*Required*) * **GCP Project Number**. (*Required*) * **Service account email**. (*Optional*) If you want m3ter to authenticate using service account impersonation, the email of the service account. * **Partition data by**. Required. Specify how you want the file path to be structured in your bucket destination - by **Time first** (Default) or **Type first**. * Type is dependent on whether the data export is for usage or operational data: * **Usage**. Type is `measurements`. * **Operational**. Type is one of the entities for which operational data exports are available, such as `account`, `commitment`, `meter`, and so on. * Here's an example for usage data export: * **Time first**: * `{bucketName}/{prefix}/orgId={orgId}/date=2025-01-27/hour=10/type=measurements/b9a317a6-860a-40f9-9bf4-e65c44c72c94_measurements.csv.gz` * **Type first**: * `{bucketName}/{prefix}/orgId={orgId}/type=measurements/date=2025-01-27/hour=10/b9a317a6-860a-40f9-9bf4-e65c44c72c94_measurements.csv.gz` **Note: Sample gcloud commands**. You can copy sample gcloud commands to create a workload identity pool, identity provider and policy binding. You can grant the 'storage.objectCreator' role to the data exports principal directly or using service account impersonation. For further help in performing this setup, please consult your Google Cloud Platform documentation, such as this [Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation) page. 6. Select **Create export destination**. The new Export destination is saved and is listed under **Export destinations** on the **Data export** page. You can read-off the **Code**, **Bucket name**, and **Prefix** settings, and also **Export destination type**. **Note:** The service validates that it can assume the defined role prior to saving. ## Reviewing and Managing Export Destinations From the Data export page you can manage your export Destinations to review or edit a Destination's details and delete a Destination if you no longer want to export data to it. **To view details, edit, or delete an Export Destination:** 1. Select **Data exports**. The **Data export** page opens and lists any existing **Export destinations**. 2. If you want to review details of a Destination, on the **Export destinations** panel, select the name hotlink text. The **Export destination details** page opens: Data Export90 You can review details and copy directly to your clipboard the: * Destination **ID**. * In the example of an AWS S3 bucket Destination, the **IAM role ARN**. 3. If you want edit a Destination, on the **Data export** page under **Export destinations** select the **Edit** icon: * Alternatively, if you've opened the **Export destination details** page, you can **Edit** the Destination directly from there. The **Edit** page opens and you can update the **Export destination details**. 4. When you have completed your editing changes, select **Update export destination**. 5. If you want to delete a Destination, select the **Delete** icon: A confirmation dialog appears. 6. Select **Yes** to confirm the delete action. **Tip**: Alternatively, you can use the **Edit** and **Delete** buttons at top right of the **Export destination details** page. **Warning: Destination currently in use!** If the Export Destination is currently being used for an Export Schedule, you won't be able to delete it and an error message will show. # Creating Usage Data Export Schedules Source: https://docs.m3ter.com/guides/data-exports/creating-export-schedules When you have created some Export Destinations using S3 buckets in your AWS account or using buckets in your Google Cloud Storage account, you can set up Export Schedules to perform *usage data exports* to those destinations from your m3ter Organization. You can specify an hourly or daily frequency for these exports to run. This topic explains how to work with and create Export Schedules for exporting usage data from your Organization at regular intervals: * [Working with Usage Data Export Schedules](/guides/data-exports/creating-export-schedules#working-with-usage-data-export-schedules) * [Creating Usage Data Export Schedules](/guides/data-exports/creating-export-schedules#creating-usage-data-export-schedules) **Note and Tips:** * **Start in Usage Data Explorer?** You might want to first review the usage data returned for a query you plan to use for your Export Schedule. If so, you can start in the Usage Data Explorer and build and perform the query. If the data the query returns is the data you want to export, you can then select **Create export schedule**. See [Using Queries for Data Export](/guides/data-explorer/usage-data-explorer-v2#using-queries-for-data-export) for more details. * **Export jobs for Export schedules?** When you have created a data Export schedule, an export job is created for each time the data export is due to run under the schedule. You can review and check the status of data export jobs on the **Export jobs** page - see [Reviewing Export Jobs](/guides/data-exports/reviewing-export-jobs). * **Usage data (legacy format) Export Schedules?** If you were an early customer of Data Exports you might also still have access to the legacy usage format for data Export Schedules. See [Creating Legacy Usage Data Export Schedules](/guides/data-exports/creating-export-schedules/creating-legacy-usage-export-schedules). However, the legacy usage format is *NOT available* for new customers. ## Working with Usage Data Export Schedules This section explains how the Data Export service will compile and run usage data exports according to the various options available to you when setting up your usage data Export Schedules: * [Data Export Service - Timezone Used](/guides/data-exports/creating-export-schedules#data-export-service-timezone-used) * [When Export Schedules are Run](/guides/data-exports/creating-export-schedules#when-export-schedules-are-run) * [Export File Format and Composition](/guides/data-exports/creating-export-schedules#export-file-format-and-composition) * [Maximum Results and Output File Sizes](/guides/data-exports/creating-export-schedules#maximum-results-and-output-file-sizes) **Important!** Please review this section before setting up any usage data Export schedules to understand the various options you can use to ensure the exports contain the correct usage data to serve your specific needs. ### Data Export Service - Timezone Used The Data Export service uses UTC and this is not affected by the **Timezone** you've set for your Organization. ### When Export Schedules are Run When you've completed the configuration for an Export Schedule and select to create it: * An Export job is scheduled to run the data export immediately with the Data Export service. * Export jobs for the next and subsequent in the series of exports are then scheduled to run with the Data Export Service according to the frequency you've configured for the Schedule - at a specified number of minutes, hours, or days intervals. You can also define an offset: for hourly scheduling an offset in minutes from start of hour; for daily scheduling an offset in hours from midnight. * For example, if you select to create an Export schedule at 10:00 a.m. on June 1st, 2024 UTC and the Export schedule is configured for a frequency of every 2 days, an Export job is scheduled to run with the Data Export Service immediately. An Export job for the next data export will then be scheduled to run at 10:00 a.m. on June 3rd 2024 UTC, and so on. * Exported files are retained in m3ter for 24 hours after the Export job completes, after which they are removed. ### Export File Format and Composition The range of usage data and the way it is compiled will depend on several options which allow you to control closely what the export file will contain. #### File Format The available data exports file formats are `.CSV` or `JSONL`. #### Time Period You can define a Time period when creating a usage data Export schedule to control the range of data you want the data export to contain each time it runs according to the schedule. Options: * **Today**. Data collected for the current day up until the time the export is scheduled to run. For example, if the Export schedule is configured to run with a frequency of every 3 hours and is created initially at 10:00 a.m. UTC, the first export scheduled to run will contain the usage data collected up until 10 a.m. UTC of the current day, the second export will be scheduled to run at 1 p.m. UTC that day and will contain all the usage data collected up until 1 p.m. for that day, and so on. (*Default setting*) * **Yesterday**. Data collected for the day before the export runs under the schedule - that is, the 24 hour period from midnight to midnight of the day before. * **Week, Month, Year to date**. Data collected for the period covering the current week, month, or year period. For example, for **Week to date** setting weeks run Monday to Monday - if the Export is scheduled to run at 10 a.m. UTC on October 16th 2024, which is a Wednesday, it will contain all usage data collected starting Monday October 14th 2024 through to the Wednesday at 10 a.m. UTC of the current week. * **Previous week, month, quarter, year**. Data collected for the previous full week, month, quarter, or year period. For example, weeks run Monday to Monday - if the export is scheduled to run on June 12th 2024, which is a Wednesday, the export will contain data for the period running from Monday, June 3rd to midnight on Sunday, June 9th 2024. * **Last 12 hours**. Data collected for the twelve hour period up to the start of the hour in which the export is scheduled to run. * **Last 7 days, 30 days, 35 days, 90 days, 120 days, year**. Data collected for the selected period prior to the date the export is scheduled to run. For example, if **Last 30 days** and the export is scheduled to run for any time on June 15th 2024, it will contain usage data collected for the previous 30 days - starting May 16th 2024 through to midnight on June 14th 2024. #### Meters and Accounts You can select Meters and Accounts in your Organization for the export. The usage data export file will then contain only the usage data collected for those Meters and Accounts: * If you *do not select to aggregate* the usage data, then the export will contain the raw usage data measurements ingested by the selected Meters and selected Accounts. The usage data measurement values included in the export for *non-aggregated* usage data exports are: * For all Data Fields types - both String and Numeric - and any Derived Fields on the selected Meters. * The values will be the post-enrichment ingest process values. See [Usage Data Ingest Process](/exploring-m3ter-getting-to-know-the-platform/getting-usage-data-into-m3ter-quick-reference-starter#usage-data-ingest-process) for more details. * Default option is for all Meters and all Accounts. #### Dimension Filters You can filter the usage data returned for export by adding specific values of non-numeric Dimension data fields on included Meters. Only the data collected for the values you've added for the selected Dimension fields will be included in the export. #### Aggregations You can apply Aggregation functions to the usage data returned for export. #### Group By If you've applied Aggregation functions to the usage data for export, you can then select to group the data returned for export by: * **Account** * **Time** * **Dimension** **Important: Applying Aggregations and Grouping for Usage Data Exports!** If you intend to apply Aggregations to usage data returned for export and apply grouping to the aggregated data, *please ensure you review* the [Applying Aggregations for Queries](/guides/data-explorer/usage-data-explorer-v2#applying-aggregations-for-queries) section first. The functionality used by the Data Export service when you set up a usage data export and aggregate the data is the same as used by the Usage Data Explorer (v2) for querying usage data. ### Maximum Results and Output File Sizes Data Exports can contain up to 500,000,000 records, and the file size limit is determined by the file size limit imposed by your destination. ## Creating Usage Data Export Schedules You can quickly set up Export schedules for data exports containing usage data collected for your Organization. Usage data exports contain the usage data measurements ingested into m3ter for the selected Meters and Accounts covering the specified time period. **To create a Usage Data Export Schedule:** 1. Select **Data exports**: The **Data exports** page opens and lists any existing **Export schedules**: 2. Select **Create export schedule**. The **Create** page opens. 3. Enter the **Export schedule details**: * **Name**. Descriptive name for the schedule. * **Code**. Unique identifier for the schedule. * Note that when you've entered a Name and clicked in the **Code** field, a Code is automatically entered based on the Name. You can then edit the auto-generated Code as required. * **Destinations**. Use the drop-down to select the Export destinations to be used each time the data export runs for the schedule. Notes: * Select a destination. * If *No options* shows in the drop-down, you must first create at least one destination before you can set up an Export Schedule - see [Creating and Managing Export Destinations](/guides/data-exports/creating-data-export-destinations). * Alternatively, if you simply want to download the data export file locally, *do not select* a Destination. See [Downloading Data Export Files Locally](/guides/data-exports/downloading-data-export-files-locally) for more details. * **Export file format**. Select the format you require for the usage data export files: * **CSV**. (*Default*). * **JSONL**. 4. Set up the **Export schedule**: * You can use the default **Simple** scheduling mode to do this: * **Frequency**. Define the frequency for the schedule in **Hours**, **Days**, or **Minutes**. * **Offset**. If you use an hourly or daily frequency, then you can define an offset for when the export will run relative to the hour or day: * For hourly scheduling, an offset in minutes from start of hour. * For daily scheduling an offset in hours from midnight. * Alternatively, select the **Advanced** scheduling mode and define a cron expression for when you want the export to run: The data export will be scheduled to run immediately when you create it and then at the defined frequency. **Warning! Limits are imposed:** * Lowest frequency is every 3 days. * Highest frequency is every 15 minutes. * Errors will show if you try to set a frequency outside of these limits. 5. Enter the **Export data**: * **Source type**. For a usage data Export schedule, leave this as the default selection for **Usage data**. * **Time period**. Define a time period you want the data export to cover each time it runs according to the schedule. This setting controls what usage data collected for the specified Meters/Accounts the export will contain. See above: [Time Period](/guides/data-exports/creating-export-schedules#time-period) for details on each of the options. **Today** is the Default. * **Meters**. Add Meters for the data export: * Select the plus icon. A popup will show listing all Meters in your Organization and you can search the list. * Check the Meters whose usage data you want to include in the export and select **Add**. * For the current example, we've used the **Search** field on the dialog to filter the list. * Alternatively, you can enter the **ID** of a Meter and then **Add** it. * The export will contain the usage data collected by the Meters you add for the specified **Time period**. (*Default is* ***All meters***) * **Accounts**. Add Accounts for the data export: * Select the plus icon. A popup will show listing all Accounts in your Organization and you can search the list. * Check the Accounts whose usage data you want to include in the export and select **Add**. * For the current example, we've used the **Search** field on the dialog to filter the list. * Alternatively, you can enter the **ID** of an Account and then **Add** it. * The export will contain the usage data collected by the Meters and Accounts you've added for the specified **Time period**. (*Default is* ***All Accounts***) 6. If you want to use **Dimensions filters** for the usage data included in the export, select **Add dimension filter**. A menu appears and lists any Dimension fields for Meters selected for the export: * In the current example, a single Meter has two Dimension fields configured. 7. Select the Meter Dimension field you want to use to filter the data returned for the export. For the current example, we'll select **RevGraph Meter 1 > Customer Name**. A dialog replaces the menu, which lists values used for this field when usage submissions were made for the Meter within the selected **Time period**. 8. Check the values used for the selected Meter Dimension field you want to use to filter the data returned for the export and then select **Add filter**: The dialog closes and the select Dimension field values are added under **Dimension filters**: 9. If you want to apply Aggregations to the usage data returned for export, under **Aggregations**, select **Add aggregation**. A menu listing available aggregation methods appears: 10. Select the Aggregation method you want to apply. For example, select **Sum**. A dialog replaces the menu and shows the fields on the Meters selected for the export which can have this aggregation method applied: 11. Select the Meter data field you want to apply the Aggregation method to. The selection is added under **Aggregations**. 12. Repeat steps to apply any other Aggregations for the usage data export: For the current example, we've applied a **Sum** Aggregation to both of the numeric data fields on the selected Meter. 13. If you've applied Aggregations to the returned usage data for export and you want to group the data, under **Aggregations**, select the **grouped by** plus icon. A menu appears: In the current example, we select to group by a Meter Dimension. The menu is replaced by a dialog showing the available Dimensions on the Meter: 14. Select the Dimension you want to group the data by. The dialog closes and your **grouped by** selection is added under **Aggregations**. 15. When you have entered all details, select **Create export schedule**. The **Export schedule details** page opens: Data Export91 * In this example, we've selected a single Meter and Account for which filtered and aggregated usage data grouped by a dimension will be included in the data exports ran every three days for the Export Schedule. 16. Return to the **Data exports** page where the new schedule is listed on the **Export schedules** panel: # Creating Legacy Usage Data Export Schedules Source: https://docs.m3ter.com/guides/data-exports/creating-export-schedules/creating-legacy-usage-export-schedules When you have created some Export Destinations using S3 buckets in your AWS account or using buckets in your Google Cloud Storage account, you can set up Export Schedules to perform *usage data exports* into those destinations from your m3ter Organization. You can specify an hourly or daily frequency for these exports to run. This topic explains how to work with and create Export Schedules for exporting usage data from your Organization at regular intervals: * [Working with Usage Data Export Schedules](/guides/data-exports/creating-export-schedules#working-with-usage-data-export-schedules) * [Creating Legacy Usage Data Export Schedules](/guides/data-exports/creating-export-schedules/creating-legacy-usage-export-schedules#creating-legacy-usage-data-export-schedules) **Notes:** * **Usage data (legacy format) Export Schedules?** If you were an early customer of Data Exports you might also still have access to the legacy usage format for data Export Schedules. However, the legacy usage format is *NOT available* for new customers - please see [Creating Usage Data Export Schedules](/guides/data-exports/creating-export-schedules). * **Export jobs for Export schedules**. When you have created a data Export schedule, an export job is created for each time the data export is due to run under the schedule. You can review and check the status of data export jobs on the **Export jobs** page - see [Reviewing Export Jobs](/guides/data-exports/reviewing-export-jobs). ## Working with Usage Data Export Schedules This section explains how the Data Export service will compile and run usage data exports according to the various options available to you when setting up your usage data Export Schedules: * [Data Export Service - Timezone Used](/guides/data-exports/creating-export-schedules#data-export-service-timezone-used) * [When Export Schedules are Run](/guides/data-exports/creating-export-schedules#when-export-schedules-are-run) * [Export File Format and Composition](/guides/data-exports/creating-export-schedules#export-file-format-and-composition) * [Export File Size Limit](/guides/data-exports/creating-export-schedules#export-file-size-limit) **Important!** Please review this section before setting up any usage data Export schedules to understand the various options you can use to ensure the exports contain the correct usage data to serve your specific needs. ### Data Export Service - Timezone Used The Data Export service uses UTC and this is not affected by the **Timezone** you've set for your Organization. ### When Export Schedules are Run When you've completed the configuration for an Export Schedule and select to create it: * An Export job is scheduled to run the data export immediately with the Data Export service. * Export jobs for the next and subsequent in the series of exports are then scheduled to run with the Data Export Service according to the hourly or daily frequency you've configured for the Schedule. * For example, if you select to create an Export schedule at 10:00 a.m. on June 1st, 2024 UTC and the Export schedule is configured for a frequency of every 5 days, an Export job is scheduled to run with the Data Export Service immediately. An Export job for the next data export will then be scheduled to run at 10:00 a.m. on June 6th 2024 UTC, and so on. * Exported files are retained in m3ter for 24 hours after the job completes, after which they are removed. ### Export File Format and Composition The range of usage data and the way it is compiled will depend on several options which allow you to control closely what the export file will contain. #### File Format The available data exports file formats are `.CSV` or `JSONL`. #### Time Period You can define a Time period when creating a usage data Export schedule to control the range of data you want the data export to contain each time it runs according to the schedule. Options: * **Today**. Data collected for the current day up until the time the export is scheduled to run. For example, if the Export schedule is configured to run with a frequency of every 3 hours and is created initially at 10:00 a.m. UTC, the first export scheduled to run will contain the usage data collected up until 10 a.m. UTC of the current day, the second export will be scheduled to run at 1 p.m. UTC that day and will contain all the usage data collected up until 1 p.m. for that day, and so on. (*Default setting*) * **Yesterday**. Data collected for the day before the export runs under the schedule - that is, the 24 hour period from midnight to midnight of the day before. * **Week, Month, Year to date**. Data collected for the period covering the current week, month, or year period. For example, for **Week to date** setting weeks run Monday to Monday - if the Export is scheduled to run at 10 a.m. UTC on October 16th 2024, which is a Wednesday, it will contain all usage data collected starting Monday October 14th 2024 through to the Wednesday at 10 a.m. UTC of the current week. * **Previous week, month, quarter, year**. Data collected for the previous full week, month, quarter, or year period. For example, weeks run Monday to Monday - if the export is scheduled to run on June 12th 2024, which is a Wednesday, the export will contain data for the period running from Monday, June 3rd to midnight on Sunday, June 9th 2024. * **Last 12 hours**. Data collected for the twelve hour period up to the start of the hour in which the export is scheduled to run. * **Last 7 days, 30 days, 35 days, 90 days, 120 days, year**. Data collected for the selected period prior to the date the export is scheduled to run. For example, if **Last 30 days** and the export is scheduled to run for any time on June 15th 2024, it will contain usage data collected for the previous 30 days - starting May 16th 2024 through to midnight on June 14th 2024. #### Meters and Accounts You can select Meters and Accounts in your Organization for the export. The usage data export file will then contain only the usage data collected for those Meters and Accounts: * If you *do not select to aggregate* the usage data, then the export will contain the raw usage data measurements ingested by the selected Meters and selected Accounts. The usage data measurement values included in the export for *non-aggregated* usage data exports are: * For all Data Fields types - both String and Numeric - and any Derived Fields on the selected Meters. * The values will be the post-enrichment ingest process values. See [Usage Data Ingest Process](/exploring-m3ter-getting-to-know-the-platform/getting-usage-data-into-m3ter-quick-reference-starter#usage-data-ingest-process) for more details. * Default option is for all Meters and all Accounts. #### Aggregated Usage You can select to *aggregate the usage data measurement values* collected for the selected Meters and Accounts: * **Aggregation Frequency**. Select a time period for aggregation - **Hourly**, **Daily**, **Weekly**, or **Monthly**: * The default setting is **Original**, which means the usage data is *not aggregated* for export. See the [previous section](/guides/data-exports/creating-export-schedules#meters-and-accounts) for what is included when the usage data export is for non-aggregated usage. * **Aggregation**. Select a function for aggregating raw usage data measurement values over the selected aggregation frequency time period: * **Sum**. Adds the values. * **Minimum**. Uses the minimum value. * **Maximum**. Uses the maximum value. * **Count**. Counts the number of values. * **Latest**. Uses the most recent value, based on the timestamp - `ts` - values of ingested usage data measurements. * **Mean**. Uses the arithmetic mean of the values. If you select to aggregate usage data measurements for data export, the usage data values contained in the data export will only include: * The usages data measurements collected for any *numeric* Data Fields on selected Meters for Accounts - Data Fields of type MEASURE, INCOME, or COST - and aggregated in accordance with the aggregation frequency and function you've selected. * For example: * Suppose you select a single Meter for the data export that has two Data Fields: * A Data Field of type MEASURE, a Numeric field which is used to collect usage data for file submissions by size of file in megabytes. * A Data Field of type WHAT, a String field which is used to collect usage data on the file format. * You then implement aggregation for a daily sum of usage data values for the export. * The aggregated usage data export will only contain the values for the daily sums of file submission size from the MEASURE Data Field. ### Export File Size Limit We perform gzip compression for usage data files for export. The file size limit for usage data exports is constrained by the limit imposed by your S3 bucket destination, which we understand to be 5TB maximum size after gzip compression. ## Creating Legacy Usage Data Export Schedules You can quickly set up Export schedules for data exports containing usage data collected for your Organization. Usage data exports contain the usage data measurements ingested into m3ter for the selected Meters and Accounts covering the specified time period. **To create a Legacy Usage Data Export Schedule:** 1. Select **Data exports**: The **Data exports** page opens and lists any existing **Export schedules**. 2. Select **Create export schedule**. The **Create** page opens. 3. Enter the **Export schedule details**: * **Name**. Descriptive name for the schedule. * **Code**. Unique identifier for the schedule. * Note that when you've entered a Name and clicked in the **Code** field, a Code is automatically entered based on the Name. You can then edit the auto-generated Code as required. * **Destinations**. Use the drop-down to select the Export destinations to be used each time the data export runs for the schedule. Notes: * Select at least one destination. * If *No options* shows in the drop-down, you must first create at least one destination before you can set up an Export Schedule - see [Creating and Managing Export Destinations](/guides/data-exports/creating-data-export-destinations). * Alternatively, if you simply want to download the data export file locally, *do not select* a Destination. See [Downloading Data Export Files Locally](/guides/data-exports/downloading-data-export-files-locally) for more details. * **Export file format**. Select the format you require for the usage data export files: * **CSV**. (*Default*). * **JSONL**. * **Frequency**. Define the frequency for the schedule in **Hours** or **Days**. Highest frequency is for exports to run every hour. * Note that the data export will be scheduled to run immediately when you create it and then at the defined frequency. See above [Working with Usage Data Export Schedules](/guides/data-exports/creating-export-schedules#working-with-usage-data-export-schedules) for details. * **Source type**. Select **Usage data (legacy format)**. The **Export schedule details** panel adjusts. * **Time period**. Define a time period you want the data export to cover each time it runs according to the schedule. This setting controls what usage data collected for the specified Meters/Accounts the export will contain. See above: [Time Period](/guides/data-exports/creating-export-schedules#time-period) for details on each of the eight options. **Today** is the Default. * **Aggregation frequency** and **Aggregation**. If you want to aggregate ingested values for your usage data export, then use these options in combination: * **Aggregation frequency**. Select the frequency for aggregation - five options: * **Original**. No aggregation performed. (*Default*) * **Hourly**. * **Daily**. * **Weekly**. * **Monthly**. * **Aggregation**. Select the type of Aggregation you want to apply to the data values for the selected frequency - six options: * **Sum**. Adds the values. * **Minimum**. Uses the minimum value. * **Maximum**. Uses the maximum value. * **Count**. Counts the number of values. * **Latest**. Uses the most recent value, based on the timestamp - `ts` - values of ingested usage data measurements. * **Mean**. Uses the arithmetic mean of the values. **Aggregation for Usage Data exports - notes:** * **Aggregation type is required!** If you select an **Aggregation frequency** other than the default of **Original** (which means the data will *not be aggregated*), then you must select an **Aggregation** type. If you don't select a type, then you won't be able to create the Export schedule and an error will show. * **Aggregation vs. non-aggregated usage data for export?** If you choose to aggregate usage data for an export schedule, this will affect what data is included in the export. For details, please see the [Working with Usage Data Export Schedules](/guides/data-exports/creating-export-schedules#working-with-usage-data-export-schedules) section above. * **Meters**. Add Meters for the data export: * Select the plus icon. A popup will show listing all Meters in your Organization and you can search the list. * Check the Meters whose usage data you want to include in the export and select **Add**. * The export will contain the usage data collected by the Meters you add for the specified **Time period**. (*Default is* ***All meters***) * **Accounts**. Add Accounts for the data export: * Select the plus icon. A popup will show listing all Accounts in your Organization and you can search the list. * Check the Accounts whose usage data you want to include in the export and select **Add**. * The export will contain the usage data collected by the Meters you've added and for the Accounts you add for the specified **Time period**. (*Default is* ***All Accounts***) 4. When you have entered all details, select **Create export schedule**: The Schedule is saved and the **Export schedule details** page opens: Data Export93 * In this example, we've selected two Meters and two Accounts for which non-aggregated usage data will be included in the data exports ran every day for the Export Schedule. 5. Return to the **Data exports** page where the new schedule is listed on the **Export schedules** panel: # Creating Operational Data Export Schedules Source: https://docs.m3ter.com/guides/data-exports/creating-operational-data-export-schedules When you have created some Export Destinations using S3 buckets in your AWS account or using buckets in your Google Cloud Storage account, you can set up Export Schedules to perform *operational data exports* into those destinations from your m3ter Organization. This topic explains how to work with and create Export Schedules for exporting operational data from your Organization at regular intervals: * [Working with Operational Data Export Schedules](/guides/data-exports/creating-operational-data-export-schedules#working-with-operational-data-export-schedules) * [Creating Operational Data Export Schedules](/guides/data-exports/creating-operational-data-export-schedules#creating-operational-data-export-schedules) **Note: Export jobs for Export schedules**. When you have created a data Export schedule, an export job is created for each time the data export is due to run under the schedule. You can review and check the status of data export jobs on the Exports job page - see [Reviewing Export Jobs](/guides/data-exports/reviewing-export-jobs). ## Working with Operational Data Export Schedules This section explains how the Data Export service will compile and run operational data exports according to the various options available to you when setting up your operational data Export Schedules: * [Data Export Service - Timezone Used](/guides/data-exports/creating-operational-data-export-schedules#data-export-service-timezone-used) * [When Export Schedules are Run](/guides/data-exports/creating-operational-data-export-schedules#when-export-schedules-are-run) * [Export File Format and Composition](/guides/data-exports/creating-operational-data-export-schedules#export-file-format-and-composition) * [Export Size Limit](/guides/data-exports/creating-operational-data-export-schedules#export-size-limit) ### Data Export Service - Timezone Used The Data Export service uses UTC and this is not affected by the **Timezone** you've set for your Organization. ### When Export Schedules are Run When you've completed the configuration for an operational data Export Schedule and select to create it: * An Export job is scheduled to run the data export immediately with the Data Export service. * Export jobs for the next and subsequent in the series of exports are then scheduled to run with the Data Export Service according to the minutes, hours, or days frequency you've configured for the Schedule. * For example, if you select to create an Export schedule at 10:00 a.m. on June 1st, 2024 UTC and the Export Schedule is configured for a frequency of every 2 days, then: * An Export job is scheduled to run with the Data Export Service immediately. * An Export job for the next data export will then be scheduled to run at 10:00 a.m. on June 3rd 2024 UTC; and so on. * Exported files are retained in m3ter for 24 hours after the Export job completes, after which they are removed. ### Export File Format and Composition The range of data included in an operational data export depends on the operational entities you select when you set up the Export Schedule: * [Operational Entities](/guides/data-exports/creating-operational-data-export-schedules#operational-entities) * [File Format, Composition, and Entity Schema](/guides/data-exports/creating-operational-data-export-schedules#file-format-composition-and-entity-schema) #### Operational Entities You can select to export the operational data in your m3ter Organization for the following entities: * **Accounts** * **Account Plans** * **Aggregations** * **Balances** * **Balance Transactions** * **Bills** * **Bill line items** * **Charges** * **Prepayments/Commitments** * **Compound Aggregations** * **Contracts** * **Meters** * **Plans** * **Plan Groups** * **Plan Group Links** * **Plan Templates** * **Pricing** * **Pricing Bands** * **Products** * **Transaction Types** A file is compiled for each of the entity types you select. #### File Format, Composition, and Entity Schema ##### **File Format** The available data export file formats are `.CSV` or `JSONL`. ##### **File Composition - Entity Fields** Generally, the fields returned with entities by Data Exports are the same as are returned by the API when retrieving an entity, plus some additional fields only relevant for exports. ##### **File Composition - Initial and Subsequent Scheduled Exports** The data included in an Export Job performed for an operational data Export Schedule will depend on where it sits in the sequence of exports: * **Initial Export**. The operational data for all selected entities are included. * **Subsequent Exports**. Only the operational data for any selected entities that have been created or modified since the previous export are included. Note: * If *nothing has changed* from one export run to the next in the Schedule - in the period since the previous export was run none of the selected entities have been created or modified - then an *empty file* is exported. * If one of the selected entities *has been deleted* in the period since the previous export was run, then the data for that entity are included in the next run and the `deleted` field for the entity is set to `true`. Data for a deleted entity data are only included in the export ran *immediately following* the period in which the entity was deleted and are not included in any further exports ran for the Schedule. * If you *edit the frequency* mid-Schedule after some exports have already been run for the original frequency - for example from hourly to daily - then only the data for selected entities that have been created or modified in the period since the last hourly export run to the first daily export ran are included. Importantly, the first export ran for the adjusted frequency *does not include* the data for *all selected entities*, and as if a new Schedule has been set up. ##### **Data Export Entity Schema** You can review the details of export schema for each entity available for operational data export - see [Data Export - Entity Schema and Relationship Diagram](/guides/data-exports/data-export-object-relationship-diagram). ### Export Size Limit Typically Operational Data exported files are relatively small, but if they do exceed 6GB the exported data is split across multiple files. ## Creating Operational Data Export Schedules You can quickly set up scheduled exports of operational data such as Accounts, Bills, and Balances. Scheduled exports are incremental and designed to be easily integrated into downstream data tools. **To create an Operational Data Export Schedule:** 1. Select **Data exports**: The **Data exports** page opens and lists any existing **Export** schedules. 2. Select **Create export schedule**. The **Create** page opens. 3. Enter the **Export schedule details**: * **Name**. Descriptive name for the schedule. * **Destinations**. Use the drop-down to select the Export destinations to be used each time the data export runs for the schedule: * Select the Export Destination(s) you want the export to be delivered to. * If *No options* shows in the drop-down, you must first create at least one Destination before you can set up an Export Schedule - see [Creating and Managing Export Destinations](/guides/data-exports/creating-data-export-destinations). * Alternatively, if you simply want to download the data export file locally, *do not select* a Destination. See [Downloading Data Export Files Locally](/guides/data-exports/downloading-data-export-files-locally) for more details. * **Export file format.** Select the format you require for the usage data export files: * **CSV**. (*Default*). * **JSONL**. 4. Set up the **Export schedule**: * You can use the default **Simple** scheduling mode to do this: * **Frequency**. Define the frequency for the schedule in **Hours**, **Days**, or **Minutes**. * **Offset**. If you use an hourly or daily frequency, then you can define an offset for when the export will run relative to the hour or day: * For hourly scheduling, an offset in minutes from start of hour. * For daily scheduling an offset in hours from midnight. * Alternatively, select the **Advanced** scheduling mode and define a cron expression for when you want the export to run: The data export will be scheduled to run immediately when you create it and then at the defined frequency. **Warning! Limits are imposed:** * Lowest frequency is every 3 days. * Highest frequency is every 15 minutes. * Errors will show if you try to set a frequency outside of these limits. **Note: Editing the Frequency mid-Schedule?** You can edit an operational Export Schedule's **Frequency** after some exports have already been run for the original **Frequency** - for example from an hourly to a daily. However, this *does not mean the Schedule will reset* and the first export ran for the adjusted **Frequency** will include the data for *all selected entities*. See above under [Export File Format and Composition](/guides/data-exports/creating-operational-data-export-schedules#export-file-format-and-composition). 5. Enter the **Export data**: * **Source type**. Select the **Operational data** option. The page adjusts to allow you to select the operational entities whose data you want the export to contain. * Under **Operational data entities**, select the plus icon and use the pop-up to select the entities whose data you want to include in the export: * Select **Add**. the selected entities are added to **Export data**: * In this example, we've selected to include the operational data for **Accounts**, **Account Plans**, and **Prepayments/Commitments** in data exports ran every three days. 6. When you have entered all details, select **Create export schedule**. The **Export schedule details** page opens: Data Export94 7. Return to the **Data exports** page where the new schedule is listed on the **Export schedules** panel: # Data Export - Entity Schema and Relationship Diagram Source: https://docs.m3ter.com/guides/data-exports/data-export-object-relationship-diagram The following diagram shows the Data Export entity schema and their relationships: * Click the diagram to open it in a separate tab and you can use the browser zoom to view. Data Export - Entity Schema and Relationship Diagram # Downloading Data Export Files Locally Source: https://docs.m3ter.com/guides/data-exports/downloading-data-export-files-locally When a Data Export job has run, you can download the content of a data export file locally. Even if you omit a destination when setting up either an Export schedule or an ad-hoc Export, when the Export job runs and has succeeded a file download button is provided on the Export jobs page. This topic explains how to download a data export file locally using an example of creating an ad-hoc operational Data Export. **Notes:** * **Download Window** The export file is available for 24 hours after the Export job has completed. * **Using API for Downloading Export File Locally?** You can use the [Get Data Export File Download URL](/api/exportdestination/get-data-export-file-download-url) endpoint to obtain a pre-signed URL that is valid for 15 minutes for downloading a data export file by Export job id. **To create an ad-hoc Operational Data export for local download:** 1. Select **Data exports**: The **Data exports** page opens. 2. On the **Export schedules** panel, select **Run ad-hoc export**. The **Run ad-hoc export** page opens. 3. Follow the steps to configure an ad-hoc data export given in the above [Running Ad-Hoc Operational Data Exports](/guides/data-exports/running-ad-hoc-operational-data-exports) topic, but note that you can omit selection of a **Destination** for the export: Data Export95 In this example, we've: * Selected `.CSV` as the export file format. * Selected to export the operational data for any **Accounts** created or modified in the **Last 30 days**. 4. Select **Run ad-hoc export**. You are returned to the main **Data export** page and a message will appear stating that the Export job has been successfully queued. 5. Open the **Exports job** page: 6. When the Export job has run and succeeded, you can use a **Download** button for the export file: Data Export96 The data export file downloads locally. **Note: Download Button Inactive for Export Job?** The download button for data export file local download is *only available* on the **Export jobs** page for those Export schedules and ad-hoc Exports which ran *in the past 24 hours*. # Reviewing and Managing Export Schedules Source: https://docs.m3ter.com/guides/data-exports/reviewing-and-managing-export-schedules From the Data export page you can manage your Export Schedules to review or edit a schedule's details and delete a schedule if you no longer want to use it to export data. **To view details, edit, or delete an Export schedule:** 1. Select **Data exports**: The **Data exports** page opens and lists any existing **Export schedules**. 2. If you want to review details of an **Operational data** Export schedule, on the **Export schedules** panel select the **Name** hotlink text: The **Export schedule details** page opens: Data Export94 * For an **Operational data** Export schedule, you can review the details and: * Check the **Export file format**. * Copy the schedule **ID** directly to your clipboard. * Select the hotlink text of any **Destinations** configured for the schedule and review the Destination details. * Under **Query**, read-off the entities whose operational data the export will contain. 3. If you want to review details of an **Usage data** Export schedule, on the **Export schedules** panel select the **Name** hotlink text. The **Export schedule details** page opens: Data Export91 * For a **Usage data** Export schedule, you can review the details and: * Check the **Export file format**. * Copy the schedule **ID** directly to your clipboard. * Select the hotlink text of any **Destinations** configured for the schedule and review the Destination details. * Under **Query**: * Read-off the **Accounts** and **Meters** the export will contain usage data for. * Check any **Dimension filters** that will be applied to the usage data. * Check any **Aggregations** that will be applied to the usage data. * If Aggregations are applied, check how the aggregated usage data is **Grouped by**. * If you want to check what usage data will be exported for the **Query** you've built, select **View in Data Explorer**. The **Usage Data Explorer** opens where the **Query** is loaded and performed. You can review what usage data is returned in the **Results row** table. 4. If you want edit an Export schedule, on the **Data export** page select the **Edit** icon: * Alternatively, if you've opened the **Export schedule details** page, you can **Edit** the schedule directly from there. The **Edit** page opens and you can update the **Export schedule details**. 5. When you've completed your editing changes, select **Update Export schedule**. 6. If you want to delete a schedule, select the **Delete** icon: A confirmation dialog appears. 7. Select **Yes** to confirm the delete action. **Tip**: Alternatively, you can use the **Edit** or **Delete** buttons at top right of the **Export schedule details** page. # Reviewing Export Jobs Source: https://docs.m3ter.com/guides/data-exports/reviewing-export-jobs *Export jobs* are created each time a usage or operational data export is due to run under an Export schedule or when you run an ad-hoc data export. You can review and check the status of Export jobs at any time, which are listed on the Export jobs page: * Read-off job status: * Pending * Running * Succeeded * Failed * Filter the list by job status. * Filter the list by specifying a date range by job start date. * Download data export files locally. This topic explains how to review Export jobs for your data exports, check their status, download data export files locally, and follow-up on failed jobs: * [Reviewing Export Jobs and Checking Status](/guides/data-exports/reviewing-export-jobs#reviewing-export-jobs-and-checking-status) * [Downloading Data Export Files](/guides/data-exports/reviewing-export-jobs#downloading-data-export-files) * [Following-Up on Failed Export Jobs](/guides/data-exports/reviewing-export-jobs#following-up-on-failed-export-jobs) ## Reviewing Export Jobs and Checking Status **To review Export jobs and check their status:** 1. Select **Data exports**: The **Data exports** page opens. 2. In the sidebar, select **Export jobs**: The **Export jobs** page opens and lists all the jobs created for your Export schedules and ad-hoc data exports: Data Export97 * For each Export job listed, you can read-off: * The **Start date** and time the export was scheduled to run. * The Export job **ID**, which you can **Copy** directly to your clipboard. * The **Source type** for the Export job. * Under **Schedule**, whether the job was created for an Export schedule or for an ad-hoc export. * The job **Status**. * You can open the **Details** page for an Export schedule using the **Schedule** hotlink text. **Notes:** **Schedule not showing?** If you delete an Export Schedule after an Export job has been run for the schedule, then **(Schedule not found)** will show under **Schedule**. * **Follow-up on Failed Export jobs?** You can make an API call to retrieve details of failed Export jobs - see the [section below](/guides/data-exports/reviewing-export-jobs#following-up-on-failed-export-jobs) for how to do this. 3. Export jobs with any **Status** are listed by default when the page opens. If you want to filter the list, use the **Status** drop-down: The page adjusts to show only those Export jobs with the selected **Status**. 3. Export jobs for any **Start date** are listed by default when the page opens, and ordered by timestamp with most recent job first. Use the **Start date** popup calendars to define a date range to filter the list to show only those Export jobs with a start date within the date range. ## Downloading Data Export Files On the **Export jobs** page, an *active download button* will be available for downloading the export file locally for an Export job that has succeeded for an Export schedule or ad-hoc Export *within the past 24 hours*. To download the data export file locally, simply select the active download button: Data Export96 **Tip: More Details?** See [Downloading Data Export Files Locally](/guides/data-exports/downloading-data-export-files-locally). ## Following-Up on Failed Export Jobs You can use the [List EventResponse](/api/events/list-eventresponse) API call to query for any events of type `dataexport.job.failure`. For example: `GET https://api.m3ter.com/organizations/{orgId}/events?eventName=dataexport.job.failure` The response gives details of the Export job failure event: ```json theme={null} { "data": [ { "id": "3bffe288-f04e-4a6f-8d0b-39c616faxyxy", "eventName": "dataexport.job.failure", "eventTime": "2024-10-28T10:02:23.892Z", "m3terEvent": { "eventData": { "jobId": "dc83dec1-94af-4611-b532-fd778b83xy99", "code": "NoSuchBucket", "sourceType": "USAGE", "startedAt": "2024-10-28T10:02:23.614Z", "eventType": "DataExportJobFailure", "orgId": "eb4d6f1e-0795-484e-a0b8-3640ca22xyxy", "scheduleId": "ed1f2303-87b3-4b43-bc27-0b6d70axyx0xa" }, "eventTime": "2024-10-28T10:02:23.892Z", "eventName": "dataexport.job.failure" } }, ... ] ``` # Running Ad-Hoc Usage Data Exports Source: https://docs.m3ter.com/guides/data-exports/running-ad-hoc-data-exports You can quickly set up and run a one-off, ad-hoc data export containing usage data collected for your Organization. Usage data exports contain the usage data measurements ingested into m3ter for the selected Meters and Accounts covering the specified time period, and you can select to aggregate the data for an export. **Important: Reviewing Usage Data Export Options!** Before attempting to run and ad-hoc usage data export, *please ensure you review* the options available for controlling the usage data the export will contain - see [Working with Usage Data Export Schedules](/guides/data-exports/creating-export-schedules#working-with-usage-data-export-schedules). **Notes and Tips:** * **Start in Usage Data Explorer?** You might want to first review the usage data returned for a query you plan to use for your Ad-Hoc Export. If so, you can start in the Usage Data Explorer and build and perform the query. If the data the query returns is the data you want to export, you can then select **Run ad-hoc export**. See [Using Queries for Data Export](/guides/data-explorer/usage-data-explorer-v2#using-queries-for-data-export) for more details. * **Legacy Usage data (legacy format) Ad-Hoc Exports?** If you were an early customer of Data Exports you might also still have access to the legacy usage format for Ad-Hoc data Exports. See [Running Ad-Hoc Legacy Usage Data Exports](/guides/data-exports/running-ad-hoc-data-exports/running-ad-hoc-legacy-data-exports). However, the legacy usage format is *NOT available* for new customers. ## Setting Up and Running Ad-Hoc Usage Data Export **To set up and run an ad-hoc Usage Data Export:** 1. Select **Data exports**: The **Data exports** page opens. 2. On the **Export schedules** panel, select **Run ad-hoc export**: The **Run ad-hoc export** page opens with **Usage data** selected by default as the **Source type**. 3. Enter the **Ad-hoc export details**: * **Destinations**. Use the drop-down to select the Export destinations to be used for the ad-hoc data export: * Select a destination. * If *No options* shows in the drop-down, you must first create at least one destination before you can set up an ad-hoc data export - see [Creating and Managing Export Destinations](/guides/data-exports/creating-data-export-destinations). * Alternatively, if you simply want to download the data export file locally, *do not select* a Destination. See [Downloading Data Export Files Locally](/guides/data-exports/downloading-data-export-files-locally) for more details. * **Export file format**. Select the format you require for the usage data export files: * **CSV** (*Default*) * **JSONL** 4. Under **Ad-hoc export data**: * **Source type**. For a usage data ad-hoc export, leave this as the default selection for **Usage data**. * **Time period**. Define a time period you want the ad-hoc data export to cover. This setting controls the range of usage data the export will contain: * **Custom**. Enter start and end date/times to define the time period. * **Today**. Data collected for the current day up until the time the export is run. (*Default setting*) * **Yesterday**. Data collected for the day before the export runs - that is, the 24 hour period from midnight to midnight of the day before. * **Week, Month, Year to date**. Data collected for the period covering the current week, month, or year period. For example, for **Week to date** setting weeks run Monday to Monday - if the export is run at 10 a.m. UTC on October 16th 2024, which is a Wednesday, it will contain all usage data collected starting Monday October 14th 2024 through to the Wednesday at 10 a.m. UTC of the current week. * **Previous week, month, quarter, year**. Data collected for the previous full week, month, quarter, or year period. For example, weeks run Monday to Monday - if the export is run on June 12th 2024, which is a Wednesday, the export will contain data for the period running from Monday, June 3rd to midnight on Sunday, June 9th 2024. * **Last 12 hours**. Data collected for the twelve hour period up to the start of the hour in which the export is run. * **Last 7 days, 30 days, 35 days, 90 days, 120 days, year**. Data collected for the selected period prior to the date the export is run. For example, if **Last 30 days** and the export is run for any time on June 15th 2024, it will contain usage data collected for the previous 30 days - starting May 16th 2024 through to midnight on June 14th 2024. * **Meters**. Add Meters for the data export: * Select the plus icon. A popup will show listing all Meters in your Organization and you can search the list. * Check the Meters whose usage data you want to include in the export and select **Add**. * The export will contain the usage data collected by the Meters you add for the specified **Time period**. (*Default is* ***All meters***) * Note that you can search the Meters list by name or enter an ID. * **Accounts**. Add Accounts for the data export: * Select the plus icon. A popup will show listing all Accounts in your Organization and you can search the list. * Check the Accounts whose usage data you want to include in the export and select **Add**. * The export will contain the usage data collected by the Meters you've added and for the Accounts you add for the specified **Time period**. (*Default is* ***All Accounts***) * Note that you can search the Accounts list be name or enter an ID. 5. If you want to use **Dimensions filters** for the usage data included in the export, select **Add dimension filter**. A menu appears and lists any Dimension fields for Meters selected for the export: * In the current example, a single Meter has one Dimension field configured. 6. Select the Meter Dimension field you want to use to filter the data returned for the export. For the current example, we'll select **Data Fields Meter 1 > Data File Type**. A dialog replaces the menu, which lists values used for this field when usage submissions were made for the Meter within the selected **Time period**. 7. Check the values used for the selected Meter Dimension field you want to use to filter the data returned for the export and then select **Add filter**: The dialog closes and the select Dimension field values are added under **Dimension filters**: 8. If you want to apply Aggregations to the usage data returned for export, under **Aggregations**, select **Add aggregation**. A menu listing available aggregation methods appears: 9. Select the Aggregation method you want to apply. For example, select **Sum**. A dialog replaces the menu and shows the fields on the Meters selected for the export which can have this aggregation method applied: 10. Select the Meter data field you want to apply the Aggregation method to. The selection is added under **Aggregations**. * For the current example, we've applied a **Sum** Aggregation to the numeric data field on the selected Meter. 11. If you've applied Aggregations to the returned usage data for export and you want to group the data, under **Aggregations**, select the **grouped by** plus icon. A menu appears: * In the current example, we select to group by a **Time**. The menu is replaced by a dialog showing the available options: 12. Select the time period you want to group the data by. The dialog closes and your **grouped by** selection is added under **Aggregations**. 13. When you have entered all details for the ad-hoc data export, select **Run ad-hoc export**: * In this example, we've selected a single Meter and two Accounts for which filtered and aggregated usage data grouped daily will be included in the ad-hoc usage data export. An Export job is scheduled for the ad-hoc usage data export you can check if the job succeeded on the **Export jobs** page - see [Reviewing Export Jobs](/guides/data-exports/reviewing-export-jobs). # Running Ad-Hoc Legacy Usage Data Exports Source: https://docs.m3ter.com/guides/data-exports/running-ad-hoc-data-exports/running-ad-hoc-legacy-data-exports You can quickly set up and run a one-off, ad-hoc data export containing usage data collected for your Organization. Usage data exports contain the usage data measurements ingested into m3ter for the selected Meters and Accounts covering the specified time period, and you can select to aggregate the data for an export. **Notes:** * **Note: Legacy Usage data (legacy format) Ad-Hoc Exports?** If you were an early customer of Data Exports you might also still have access to the legacy usage format for Ad-Hoc data Exports. However, the legacy usage format is *NOT available* for new customers. See [Running Ad-Hoc Usage Data Exports](/guides/data-exports/running-ad-hoc-data-exports). * **Reviewing Usage Data Export Options!** Before attempting to run and ad-hoc usage data export, please review the options available for controlling the usage data the export will contain - see [Working with Usage Data Export Schedules](/guides/data-exports/creating-export-schedules#working-with-usage-data-export-schedules). **To set up and run an ad-hoc Legacy Usage Data Export:** 1. Select **Data exports**: The **Data exports** page opens. 2. On the **Export schedules** panel, select **Run ad-hoc export**: The **Run ad-hoc export** page opens. 3. Enter the **Ad-hoc export details**: * **Destinations**. Use the drop-down to select the Export destinations to be used for the ad-hoc data export. Notes: * Select a destination. * If *No options* shows in the drop-down, you must first create at least one destination before you can set up an ad-hoc data export - see [Creating and Managing Export Destinations](/guides/data-exports/creating-data-export-destinations). * Alternatively, if you simply want to download the data export file locally, *do not select* a Destination. See [Downloading Data Export Files Locally](/guides/data-exports/downloading-data-export-files-locally) for more details. * **Export file format**. Select the format you require for the usage data export files: * **CSV**. (*Default*). * **JSON**. 4. Under **Ad-hoc export data**: * **Source type**. For a usage data ad-hoc export, select **Usage data (legacy format)**. The **Ad-hoc export details** panel adjusts. * **Time period**. Define a time period you want the ad-hoc data export to cover. This setting controls the range of usage data the export will contain: * **Custom**. Enter start and end date/times to define the time period. * **Today**. Data collected for the current day up until the time the export is run. (*Default setting*) * **Yesterday**. Data collected for the day before the export runs - that is, the 24 hour period from midnight to midnight of the day before. * **Week, Month, Year to date**. Data collected for the period covering the current week, month, or year period. For example, for **Week to date** setting weeks run Monday to Monday - if the export is run at 10 a.m. UTC on October 16th 2024, which is a Wednesday, it will contain all usage data collected starting Monday October 14th 2024 through to the Wednesday at 10 a.m. UTC of the current week. * **Previous week, month, quarter, year**. Data collected for the previous full week, month, quarter, or year period. For example, weeks run Monday to Monday - if the export is run on June 12th 2024, which is a Wednesday, the export will contain data for the period running from Monday, June 3rd to midnight on Sunday, June 9th 2024. * **Last 12 hours**. Data collected for the twelve hour period up to the start of the hour in which the export is run. * **Last 7 days, 30 days, 35 days, 90 days, 120 days, year**. Data collected for the selected period prior to the date the export is run. For example, if **Last 30 days** and the export is run for any time on June 15th 2024, it will contain usage data collected for the previous 30 days - starting May 16th 2024 through to midnight on June 14th 2024. * **Aggregation frequency** and **Aggregation**. If you want to aggregate ingested values for your usage data export, then use these options in combination: * **Aggregation frequency**. Select the frequency for aggregation - five options: * **Original**. No aggregation performed. (*Default*) * **Hourly**. * **Daily**. * **Weekly**. * **Monthly**. * **Aggregation**. Select the type of Aggregation you want to apply to the data values for the selected frequency - six options: * **Sum**. Adds the values. * **Minimum**. Uses the minimum value. * **Maximum**. Uses the maximum value. * **Count**. Counts the number of values. * **Latest**. Uses the most recent value, based on the timestamp - `ts` - values of ingested usage data measurements. * **Mean**. Uses the arithmetic mean of the values. **Aggregation for Usage Data exports - notes:** * **Aggregation type is required!** If you select an **Aggregation frequency** other than the default of **Original** (which means the data will *not be aggregated*), then you must select an **Aggregation** type. If you don't select a type, then you won't be able to create the ad-hoc export and an error will show. * **Aggregation vs. non-aggregated usage data for export?** If you choose to aggregate usage data for an ad-hoc export, this will affect what data is included in the export, and this is the same for both scheduled and ad-hoc exports. For details, please see the [Working with Usage Data Export Schedules](/guides/data-exports/creating-export-schedules#working-with-usage-data-export-schedules) section. * **Meters**. Add Meters for the data export: * Select the plus icon. A popup will show listing all Meters in your Organization and you can search the list. * Check the Meters whose usage data you want to include in the export and select **Add**. * The export will contain the usage data collected by the Meters you add for the specified **Time period**. (*Default is* ***All meters***) * Note that you can search the Meters list by name or enter an ID. * **Accounts**. Add Accounts for the data export: * Select the plus icon. A popup will show listing all Accounts in your Organization and you can search the list. * Check the Accounts whose usage data you want to include in the export and select **Add**. * The export will contain the usage data collected by the Meters you've added and for the Accounts you add for the specified **Time period**. (*Default is* ***All Accounts***) * Note that you can search the Accounts list be name or enter an ID. 5. When you have entered all details for the ad-hoc data export, select **Run ad-hoc export**: * In this example, we've selected a single Meter and two Accounts for which non-aggregated usage data will be included in the ad-hoc usage data export. An Export job is scheduled for the ad-hoc usage data export you can check if the job succeeded on the **Export jobs** page - see [Reviewing Export Jobs](/guides/data-exports/reviewing-export-jobs). # Running Ad-Hoc Operational Data Exports Source: https://docs.m3ter.com/guides/data-exports/running-ad-hoc-operational-data-exports You can quickly set up and run a one-off, ad-hoc data export containing operational data of selected entities in your Organization - such as Bills, Prepayments/Commitments, Accounts, and Balances. The data export will contain the operational data for the selected entities at the time the export runs. **Important!** * **Reviewing Operational Data Export Options**. Before attempting to run and ad-hoc operational data export, please review the options available for controlling the data the export will contain - see [Working with Operational Data Export Schedules](/guides/data-exports/creating-operational-data-export-schedules#working-with-operational-data-export-schedules). * **Data Export Entity Schema!** You can review the details of export schema for each entity available for operational data export - see [Data Export - Entity Schema and Relationship Diagram](/guides/data-exports/data-export-object-relationship-diagram). ## Creating and Running an Ad-Hoc Operational Data Export **To create and run an ad-hoc Operational Data export:** 1. Select **Data exports**: The **Data exports** page opens. 2. On the **Export schedules** panel, select **Run ad-hoc export**. The **Run ad-hoc export** page opens. 3. Enter the **Ad-hoc export details**: * **Destinations**. Use the drop-down to select the Export destinations to be used for the ad-hoc data export: * Select a destination. * If *No options* shows in the drop-down, you must first create at least one destination before you can set up an ad-hoc data export - see [Creating and Managing Export Destinations](/guides/data-exports/creating-data-export-destinations). * Alternatively, if you simply want to download the data export file locally, *do not select* a Destination. See [Downloading Data Export Files Locally](/guides/data-exports/downloading-data-export-files-locally) for more details. * **Export file format**. Select the format you require for the data export files: * **CSV**. (*Default*). * **JSONL**. 4. Under **Ad-hoc export data**: * **Source type**. Select the **Operational data** option. The page adjusts to allow you to select a **Time period** for the export and the **Operational data entities** you want the export to contain. 5. **Time period**. Define a time period using an *inclusive start date/time* to define the period you want the ad-hoc data export to cover and control the range of operational data that the export will contain. Only data created or modified from the specified start date/time until *now* - where this means *the date/time the Export runs* - will be included. As well as allowing you to set a custom start, several preset options are available: * **Custom**. Use the calendar selector to specify a start date/time. * **Today**. Data for the current day up until now. * **Week**, **Month**, or **Year to date**. Data for the period covering the current week, month, or year up until now. * **Last 12 hours**. Data collected for the twelve hour period prior to when you make the selection up to now. * **Last 7**, **30**, **35**, **90**, or **120 days**. Data for the selected number of days prior to when you make the selection up until now. * **Last year**. Data for the full year prior to when you make the selection up until now. * **All Time**. Unrestricted and the export contains all the operational data available for selected entities up until now. (*Default setting*) When you select the **Time period**, the inclusive start date is shown in brackets. For example, if **Today** is selected on June 9th 2025: 6. Under **Operational data entities**, select the plus icon and use the pop-up to select the entities whose data you want to include in the ad-hoc export: * **Accounts** * **Account Plans** * **Aggregations** * **Balances** * **Balance Transactions** * **Bills** * **Bill line items** * **Charges** * **Prepayments/Commitments** * **Compound Aggregations** * **Contracts** * **Meters** * **Plans** * **Plan Groups** * **Plan Group Links** * **Plan Templates** * **Pricing** * **Pricing Bands** * **Products** * **Transaction Types** **Tip: Exporting data for all entities?** If you want to export the operational data for all entities, use **Select all**. 7. Select **Add**. The selected entities are added to the **Ad-hoc export details**. 8. When you have entered all details for the ad-hoc data export, select **Run ad-hoc export**: * In this example for an ad-hoc export to run on May 15th 2025, we've selected to include the operational data for any **Accounts** and **Bills** created or modified in the previous week to be included. An Export job is scheduled for the ad-hoc operational data export and you can check if the job succeeded on the **Export jobs** page - see [Reviewing Export Jobs](/guides/data-exports/reviewing-export-jobs). # Developer Tools Source: https://docs.m3ter.com/guides/developer-tools Some developer tools are available to help you work with the m3ter platform: * [SDKs](/guides/developer-tools#sdks) * [Terraform Provider](#terraform-provider) ## SDKs m3ter SDKs reduce the development effort associated with integrating your applications with m3ter, and help ensure efficient behavior with the API. SDKs are available in the following languages to provide convenient access to our REST APIs and maintain feature parity with our APIs: * [Python](https://pypi.org/project/m3ter/) * [NodeJS](https://www.npmjs.com/package/m3ter-sdk) * [Java](https://central.sonatype.com/artifact/com.m3ter/sdk-java/overview) * [GoLang](https://github.com/m3ter-com/m3ter-sdk-go) Please follow the links for install and resources for each SDK. **Note: SDKs available for early access!** Please note that the m3ter SDKs are currently available for early access, and as such some features may be incomplete or change without warning. We welcome you to try them out and give feedback, but do not recommend their use for critical functionality. **Note: SDKs for Other Languages?** If you'd prefer an SDK for another language, please get in touch with [m3ter Support](https://m3ter.myfreshworks.com/login/auth/1662629775049?client_id=451980218021503405\&redirect_uri=https%3A%2F%2Fm3ter.freshdesk.com%2Ffreshid%2Fcustomer_authorize_callback%3Fhd%3Dm3ter.freshdesk.com) or your m3ter contact. ## Terraform Provider The m3ter Terraform provider allows you to manage m3ter resources using the popular [Infrastructure as Code tool from Hashicorp](https://developer.hashicorp.com/terraform): * **Organization configuration management**. Easily deploy a m3ter configuration across multiple Organizations - you can apply a configuration to a Sandbox Organization, test it, and then apply exactly the same configuration to the Production Organization. * **Reuse common configuration patterns**. Terraform modules give you the ability to package up and parameterize a set of resources. * **Integrating m3ter configuration with configuration for other services**. For example, the configuration for a Lambda function in AWS could now be alongside the configuration for the m3ter webhook that invokes it. You can find the provider [here](https://registry.terraform.io/providers/m3ter-com/m3ter/latest/docs). **Note: Terraform Provider available for early access!** Please note that the m3ter Terraform provider is currently available for early access, and as such some features may be incomplete or change without warning. We welcome you to try it out and give feedback, but do not recommend its use for critical functionality. # End-Customer Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts You can create *Account*s in the m3ter Console for end customers who consume your Products: * Accounts *do not belong to a Product* to allow for cases where an end customer takes more than one of your Products, and the charges for these Products differ. * You will typically attach a priced *Plan* or *Plan Template* to an Account before you generate bills for the Account. If an end customer consumes several of your Products, you can attach a priced Plan or Plan Template to the Account for charging against each Product. * An exception is a case where an Account is charged solely on the basis of an agreed Prepayment/Commitment amount but not all of the Prepayment is prepaid - you can use a customized billing schedule for outstanding fees without having to attach a Plan to the Account to generate Bills * When you have generated Bills against an Account, you can review the most recent ten Bills on the *Account Overview* tab. Charts are provided that track revenue and billed usage for these latest Bills. * For some of your end customer Accounts, you might want to apply a *Prepayment/Commitment* for those end customers who have agreed to pay a set amount over a fixed contract term for one of your Products. * You can create *Child Accounts* for end customers who hold multiple Accounts with you. You can then set up billing for the Parent/Child Account usage to have the end-customer billed once for the Parent Account, instead of having separate bills issued for usage against each of their multiple Accounts. Before you begin to work in the Accounts area, we *strongly recommend* you review some best practice notes we've put together for managing your end-customer Accounts. These notes are intended to help you avoid any unintended and unwanted issues with your Organization's Accounts, such as loss of usage data associated with an Account: * [Managing Accounts - Best Practices](/guides/end-customer-accounts/managing-accounts-best-practices) This remaining topics in this section explain how to create and work with your Organization's Accounts: * [Creating and Managing Accounts](/guides/end-customer-accounts/creating-an-account) * [Attaching Plans to an Account](/guides/end-customer-accounts/attaching-plans-to-an-account) * [Creating Custom Plans for Accounts](/guides/end-customer-accounts/creating-custom-account-plans) * [Attaching Plan Groups to an Account](/guides/end-customer-accounts/attaching-plan-groups-to-an-account) * [Creating Custom Plan Groups for Accounts](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts) * [Creating Prepayments for Accounts](/guides/end-customer-accounts/creating-prepayments-for-accounts) * [Working with Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts) * [Working with Balances for Accounts](/guides/end-customer-accounts/creating-balances-for-accounts) * [Creating Charges for Accounts](/guides/end-customer-accounts/creating-charges-for-accounts) * [Creating Counter Adjustments for Accounts](/guides/end-customer-accounts/creating-counter-adjustments-for-accounts) * [Submitting Usage Data for an Account](/guides/end-customer-accounts/submitting-usage-data-for-an-account) * [Working in Account Overview](/guides/end-customer-accounts/working-in-account-overview) * [Reviewing and Recalculating Bills for an Account](/guides/end-customer-accounts/reviewing-bills-for-an-account) * [Working with Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts) * [End-Dating Account Billing Entities](/guides/end-customer-accounts/end-dating-account-billing-entities) * [Creating and Managing External Mappings for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) **Important!** **Personally Identifiable Information (PII)**. Under the [Data Processing Agreement](https://www.m3ter.com/docs/legal/dpa), the only fields you are allowed to use for any of your end customer PII data in m3ter are the `name`, `address`, and `emailAddress` fields on the **Account** entity - see the [Create Account](/api/account/create-account) request schema as documented in our API Reference. See also section 4.2 of the [Terms of Service](https://www.m3ter.com/docs/legal/terms-of-service). # Attaching Plan Groups to an Account Source: https://docs.m3ter.com/guides/end-customer-accounts/attaching-plan-groups-to-an-account When you attach a Plan Group to an end customer Account, this creates a link between them to create an *Account Plan Group*. Attaching a Plan Group to an Account implicitly attaches all of the Plans included in the Group to the Account, and the Account is charged in accordance with those Plans. * **Active Account Plan Group**. You can set the start and end dates to define the period the Account Plan Group will be active for the Account. * **Account Plan Group Minimum Spend**. You can set a minimum spend amount for the Plan Group, which then acts as a cross-product minimum spend at billing for the Account. See [Plan Group vs Plan Minimum Spends](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups#plan-group-minimum-spend-vs-plans-minimum-spends) for more details. * **Attaching Multiple Plan Groups**. * **Default Organization setting**. You can attach more than one Plan Group to an Account to create multiple Account Plan Groups. However, the default Organization setting safeguards the rule that *only one attached Plan per Product can be active at any one time* *for an Account*. Multiple attached Plan Groups on an Account can have overlapping dates only if none of the Plan Groups contain a Plan belonging to the same Product. If you try to attach a Plan Group to an Account which contains a Plan belonging to the same Product as a Plan belonging to another Plan Group attached to the Account and the Plan Group attachment dates would overlap, then you'll receive an error and the attachment will be blocked. * **Overlapping Plans in Plan Groups**. If your billing use case requires you to attach more than one Plan Group to an Account and containing Plans for the same Product at the same time, then you must first enable the **Allow overlapping attached plans** setting for your Organization. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) for more details. * **Reviewing Plan Group Attachment:** * When you've attached a Plan Group to an Account, you can open a Plan Group Attachment page and review: * The details of the Account Plan Group created when you attached the Plan Group to the Account. * The Account Plan Group metadata for any Custom Fields, External Mappings, or Integration runs. * Details of the Plan Group itself. * **Add Plans to Plan Group and review Plan pricing:** * From the Plan Group Attachment page, you can also add Plans directly to the Plan Group. This saves you having to open the Plan Group separately and add Plans to it from there. * You can then select a Plan that belongs to the attached Plan Group and review: * The Plan's Details. * The Plan's Associated Pricing directly on the page, which saves you having to open the Pricing Editor. * Note that you cannot add *custom Plans* - that is, Account-specific Plans - to a global Plan Group. * **Replacing Plan Group Attachment**. You can quickly replace an existing attached Plan Group on an Account. When you do this, the start date you define for the replacement Plan Group is used to automatically end date the existing attached Plan Group. * **Custom Plan Group**. You can create a custom Plan Group for an Account, which means the Plan Group can only be attached to that Account. See [Creating Custom Plan Groups for Accounts](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts). **Important: Account Plan Group is type of Account Plan!** When you attach a Plan Group to an Account, this creates an *Account Plan Group*. However, the m3ter data model *does not support a separate Account Plan Group entity*, and an Account Plan Group is a type of Account Plan where a *Plan Group id* is used instead of a Plan id when it's created. See the [Create Account Plan API](/api/accountplan/create-accountplan) call. This topic explains how to attach a Plan Group to an Account and how to review and manage the Plan Group attachment: * [Attaching a Plan Group to Create an Account Plan Group](/guides/end-customer-accounts/attaching-plan-groups-to-an-account#attaching-a-plan-group-to-create-an-account-plan-group) * [Reviewing Plan Group Attachment](/guides/end-customer-accounts/attaching-plan-groups-to-an-account#reviewing-plan-group-attachment) * [Adding Plans to Plan Group and Reviewing Plan Pricing](/guides/end-customer-accounts/attaching-plan-groups-to-an-account#adding-plans-to-plan-group-and-reviewing-plan-pricing) * [Adding Attached Plan Groups to or Removing from Contracts](#adding-attached-plan-groups-to-or-removing-from-contracts) * [Replacing a Plan Group Attachment](#replacing-a-plan-group-attachment) If you want to delete an Account Plan Group from an Account, you can do this from the **Attached Plans** tab: * [Deleting an Account Plan Group](/guides/end-customer-accounts/attaching-plan-groups-to-an-account#deleting-an-account-plan-group) **Tip: More Details on Plan Groups?** See [Working with Plan Groups](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups). ## Attaching a Plan Group to Create an Account Plan Group **To attach a Plan Group to an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the **Account** to which you want to attach a Plan Group. The **Account** page opens with the **Overview** tab selected. 3. On the **Account actions** menu, select **Plans>Create plan attachment**: Alternatively: * Select the **Attached plans** tab. * On the **Active and pending attached plans** panel, select **Create plan attachment**. The **Create** page opens. 4. Select the **Plan group** radio button. The page adjusts. 5. On the **Plan group attachment details** card: * Select the **Plan group** you want to attach to the Account. * Select the **Start date** and **End date** to define the period you want the Plan Group to apply to the Account for billing purposes: * **Start date** is required. * If you omit an **End date**, the Account Plan Group will be applied to the Account perpetually or until such time as you delete the Account Plan Group. * End dates are *exclusive*. For example, if you set the **End date** of June 1st 2022, then the Account Plan Group ceases to be active for the Account at midnight on May 31st 2022, and any billing is calculated up to that point in time, NOT up to midnight on June 1st. If you want to include end customer Account usage occurring on June 1st for billing, you must set the **End date** to June 2nd. 6. On the **Plan group attachment settings** card, configure other optional settings: * If you want to set the date the first and subsequent Bills are due for the Account using the Plan Group, use the **Billing cycle date** option. For example, if the Plan Group is configured for monthly billing frequency and you set a **Billing cycle date** of January 14th, then a Bill will be created for the Account on January 14th and then every month from that date - on February 14th, March 14th, and so on. If you leave this blank then the start of billing defaults to the billing cycle date configured for the Account. * If you want to add the Account Plan Group to a Contract you've created for the Account, use the **Contract** drop-down to select it. For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts). * If the Account is either a Parent or a Child Account, you can select for **Account hierarchy billing mode**, which determines how billing will be handled and shown on bills for charges due for the Parent Account and charges due for Child Accounts: * **Bill parent account - bill line item per account**. Default setting. * **Bill parent account - single bill line item for all accounts**. * **Bill child account**. **Notes:** * The billing mode options are only operative if the Account is a Parent or Child Account. For a full explanation of what each means when attaching Plans to create Account Plans for Parent or Child Accounts, see [Billing Hierarchy Modes for Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts). * If you price a Plan using a Counter for unit-based pricing, then Parent/Account billing is not available for the charges or credits due under the pricing. 7. Add any required **Custom fields** to the Account Plan Group. For more on Custom Fields, see [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields). 8. Select **Create Plan group attachment**. You are returned to the **Account** page **Attached plans** tab and the Plan Group is listed in the **Active and pending attached plans** panel under **Plan groups**. Attaching a Plan Group to an Account creates an *Account Plan Group*. The Account Plan Group will show as **ACTIVE** or **INACTIVE** or **PENDING** and the **Start** and **End** dates are also shown: You now have an Account Plan Group on the Account, and Bills will be calculated for the Account in accordance with the priced Plans that belong to the Plan Group. ## Reviewing Plan Group Attachment When you've attached a Plan Group to an Account, you can open the Plan Group Attachment page and review details of the attachment. **To review Plan Group Attachment:** 1. On the **Account Details** page, select the **Attached plans** tab. 2. On the **Active and pending attached plans panel**, select the **NAME** hotlink text of the attached Plan Group you want to review. The **Plan group attachment** page opens: Attachplangroup45 3. For the *Account Plan Group* created when you attached the Plan to the Account, you can review the **Plan group attachment details**: * Check the dates for the period the Account Plan Group will be active for the Account. * Read-off the Account Plan Group **ID** with the option to **Copy** this directly to your clipboard. * Select **Edit** if you need to make any changes to the Account Plan Group, such as update the start and end dates. 4. You can also review the **Plan group attachment metadata**: **Custom Fields**. Any fields created for the Account Plan Group entity are listed: Attach Plan Group48 * Note that because an Account Plan Group is a type of Account Plan, any Custom Fields created at Organizational level for Account Plans will be listed and you can **Copy** the number or string value of a field directly to your clipboard. **External mappings**. Any mappings created for the Account Plan Group are listed: Attach Plan Group49 * The **External system** and **External table** mapped to are shown - such as **Chargebee - Item** in the above example. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Account Plan Group has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. * You can commence a workflow to **Create external mapping** for the Account Plan Group directly - see [Creating and Managing External Mappings for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) for an example. **Integration runs**. If you've set up an integration that synchronizes the Account Plan Group data with an external system, the date/time and status of the **Latest** integration run are shown. You can use a text hotlink to open details of this latest run or **View all runs**. See [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). 5. If you scroll down the page, on the **Plan group details** panel you can check the details of the Plan Group you attached to the Account to create an Account Plan Group: You can review the details of the Plan Group itself and: * Read-off the **ID** for the Plan Group and **Copy** it directly to your clipboard. * If you want to view a Plan belonging to the Plan Group or add a Plan to it and review the details and pricing configured for the Plan, you can do this directly. See the following section [Adding Plans to Plan Group and Reviewing Plan Pricing](/guides/end-customer-accounts/attaching-plan-groups-to-an-account#adding-plans-to-plan-group-and-reviewing-plan-pricing) for details. * Use hotlink texts to open: * The **Plan group details** page directly. * The **Product details** page for the **Standing charge accounting product** or the **Minimum spend accounting product**. ## Adding Plans to Plan Group and Reviewing Plan Pricing When you have attached a Plan Group to an Account, there are two ways you can add Plans to the Plan Group: * Go to **Pricing>Plan groups** and open the Plan Group you want to add a Plan to. On the **Included plans** panel, select **Add plans**. For more details, see the [Adding Plans to Plan Groups](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups#adding-plans-to-plan-groups) section in the [Working with Plan Groups](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups) topic. * When you've attached a Plan Group to an Account, open the **Plan group attachment** page from the **Account>Attached plans** tab and add Plans to the Plan Group directly from there. This section explains how to add Plans to a Plan Group directly from the **Plan group attachment** page. **To add Plans to Plan Group and review Plan pricing:** 1. Open the Account and on the **Account** page, select the **Attached plans** tab. 2. On the **Active and pending attached plans panel**, select the **NAME** hotlink text of the attached Plan Group you want to review Plans for. The **Plan group attachment** page opens. 3. Scroll down the **Plan group attachment** page and on the **Plan group details** panel, select **Add plans**. A **Select plans** dialog appears and lists all the Plans created for Products in your Organization and any custom Plans created for the Account you've created the Plan Group for. * Note that if no Plans have yet been added to the Plan Group, then a blue help text advising you is shown to warn you. 4. Select the Plans you want to add to the Plan Group and select **Confirm**. The **Select plans** dialog closes and: * The Plans are added to the **Select a plan** drop-down list on the **Plan details** panel, which is now enabled. * The blue help text advising you the Plan Group doesn't currently contain any Plans is no longer shown. * The **Edit linked plans** button on the **Plan group details** panel is enabled. **Warning: Constraints on Adding Plans to Plan Groups!** * **Only one Plan per Product:** If you try to add more than one Plan for the same Product to the Plan Group, you'll receive an error message. * **Custom Plans can't be added to a Global Plan Group:** If you try to add a custom Plan (a Plan that has been created exclusively for a specific Account) to a Global Plan Group (a Plan Group that can be attached to multiple Accounts) you'll receive an error message. 5. To review a Plan and its pricing that you've added to the Plan Group, select it from the **Select a plan** drop-down list on the **Plan details** panel: On the **Plan details** panel, you can: * Check the details of the Plan. * Use hotlink texts to open the Plan details page directly and the associated details page for the **Plan template** or **Product**. * Under **Associated pricing**: * If the Plan has been priced, this will be shown and you can review the pricing. * Select **Details** if you want to review full details of the pricing applied to the Plan. * Note that you cannot create or edit a pricing for the Plan, since it is not a custom Plan for the Account and might be attached to multiple Accounts. You must go the **Pricing Editor** or open the **Plan details** page to do this. At the bottom of **Plan details**, you can: * Read-off the Plan **ID** and **Copy** it to your clipboard. * Check the audit data for the Plan for who **Created** and **Last modified** the Plan and when. **Tip: Removing Plans from Plan Group?** To remove Plans from a Plan Group from the **Plan group attachment** page, on the **Plan group details** panel select **Edit linked plans**. The **Plan group details** page opens and the **Included plans** panel lists the Plans added to the Plan Group. From there you can remove Plans from the Plan Group - see [Removing Plans from Plan Group](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups#removing-plans-from-plan-groups). ## Adding Attached Plan Groups to or Removing from Contracts From *Plan group attachment details*, you can quickly add the attached Plan Group to a Contract or remove it from a Contract on the Account. This saves you having to open and edit the Plan Group attachment. **Updating a Contract to add or remove an attached Plan Group.** Alternatively, you can open the details page of a Contract and add an attached Plan Group to it or remove an attached Plan Group from it. See [Adding Account Plans or Account Plan Groups to Contracts](https://docs.m3ter.com/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts#adding-account-plans-or-account-plan-groups-to-contracts). If you do this, then the **Plan group attachment details** will update accordingly. **To add an attached Plan Group to or remove it from a Contract:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to add an attached Plan Group to or remove from a Contract. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Attached Plans** tab. 4. On the **Active and pending attached plans** panel, select the name hotlink text of the attached Plan Group you want to add to or remove from a Contract. The **Plan group attachment** page opens and on the **Plan group attachment details** panel: * If the attached Plan Group has not been added to a Contract, an **Add to contract** button is available. * If the attached Plan Group has been added to a Contract, a **Remove from contract** button is available. 5. To add the attached Plan Group to a Contract, select **Add to contract**. A **Select contract** modal opens and lists the Contracts created for the Account. 6. Select the Contract you want to add the attached Plan Group to and select **Confirm**. The modal closes and the Contract is shown under **Plan group attachment details**: Attach Plan Group50 7. To remove an attached Plan Group from a Contract, select **Remove from contract**. A confirmation popup appears: Attach Plan Group51 8. Select **Remove** to confirm. The popup closes and the Contract no longer shows under **Plan group attachment details**. ## Replacing a Plan Group Attachment From the *Plan group attachment* page you can quickly replace an existing attached Plan Group. When you do this, the start date you define for the replacement attached Plan Group is used to automatically end date the existing attached Plan Group. **To replace a Plan Group attachment:** 1. On the **Account** page, select the **Attached plans** tab. 2. On the **Active and pending attached plans** panel, select the name hotlink text of the attached Plan Group you want to replace: Attach Plan Group40 The **Plan group attachment** page opens: Attachplangroup47 2 3. Select **Replace plan group attachment**. The **Replace plan group attachment** page opens: * **Plan group attachment details**: * The existing attached **Plan group** will be pre-selected and you can edit this as required for the replacement. * Enter a required **Start date** and optionally an **End date**. * **Plan group attachment settings**. The settings of the existing attached Plan Group are shown and you can edit these as required for the replacement: * **Billing cycle date**. * **Contract**. * **Account billing hierarchy mode**. * **Custom fields**. Any Custom Fields created for the existing attached Plan Group are shown and you can add, edit, or remove as required for the replacement. **Important: Replacement start date must be before or equal to the existing end date!** If you enter a **Start date** for the replacement Plan Group attachment that is after the existing Plan Group attachment **End date**, you'll receive an error when you try to replace the existing Plan Group attachment. 4. Select **Replace plan group attachment**. You are returned to the **Plan group attachment** page for the replacement attached Plan Group: Attach Plan Group42 5. Return to the **Attached plans** tab for the Account: Attach Plan Group43 * We can see that the **Start date** entered for the replacement attached Plan Group has been used to update the **End date** for the originally attached Plan Group, which is now listed under **Previously attached plans**. ## Deleting an Account Plan Group **To delete an Account Plan Group:** 1. On the **Active and pending attached plans** panel, select **Delete**: A confirmation popup appears. 2. Select **Yes** to confirm the Account Plan Group deletion. 3. Alternatively, on the **Active and pending attached plans** panel, select the **Name** hotlink text of the Account Plan Group you want to delete. The **Plan group attachment** page opens. 4. Select **Delete**: Deletebutton A confirmation popup appears. 5. Select **Yes** to confirm the Account Plan Group deletion. You are taken back to the **Attached plans** tab. **Important!** Deleting the *Account Plan Group* does not mean the *Plan Group* is deleted - the Account Plan Group is created only when you attach a Plan Group to an Account and remains distinct from the Plan Group you attached. If you want to delete a Plan Group, you must go to **Pricing>Plan Groups**, and then delete it from there. 5. To add the attached Plan Group to a Contract, select **Add to contract**. A **Select contract** modal opens and lists the Contracts created for the Account. 6. Select the Contract you want to add the attached Plan Group to and select **Confirm**. The modal closes and the Contract is shown under **Plan group attachment details**: Attach Plan Group50 5. Etc. # Attaching Plans to an Account Source: https://docs.m3ter.com/guides/end-customer-accounts/attaching-plans-to-an-account When you attach a Plan to an Account, this creates a link between them to create an *Account Plan*. Attaching priced Plans to an Account determines the charges incurred by end customers who consume your Products: * **Active Account Plan**. You can set the start and end dates to define the period for which the Account Plan will be *active* for the Account. * **Plan per Product**. If the end customer Account consumes more than one of your Products, you can attach a Plan to the Account for each of the Products. * **Attaching Multiple Plans**: * **Default Organization setting**. The default Organization setting for attaching multiple Plans to the same account allows you to attach more than one Plan to an Account, but imposes the restriction that *only one attached Plan per Product can be active at any one time*. For example, you can attach a Product Plan to an Account to create an Account Plan that will active for the first six months, and attach another Plan for the same Product to create a second Account Plan that becomes active for the following twelve months. If you try to attach a Product Plan to an Account with start and end dates that overlap with an existing Account Plan for the same Product that is already active, you'll receive a notification with an option to end the currently active Account Plan on the start date you've set for the new Account Plan. * **Overlapping Plans**. If your billing use case requires you to attach more than one Plan to an Account for the same Product at the same time, then you must first enable the **Allow overlapping attached plans** setting for your Organization. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) for more details. * **Reviewing Plan Attachment**. When you've attached a Plan to an Account, you can open a Plan Attachment page and: * Review and edit the details of the Account Plan created when you attached the Plan to the Account. * Review the Account Plan metadata for any Custom Fields, External Mappings, or Integration runs. * Review details of the Plan itself and any associated pricing. * **Replacing Plan Attachment**. You can quickly replace an existing attached Plan on an Account. When you do this, the start date you define for the replacement Plan is used to automatically end date the existing attached Plan. * **Custom Plans and Custom Plan Groups**. You can create a custom Plan or a custom Plan Group for an Account, which means the Plan or Plan Group can only be attached to that Account. See [Creating Custom Plans for Accounts](/guides/end-customer-accounts/creating-custom-account-plans) and [Creating Custom Plan Groups for Accounts](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts). This topic explains how to attach a Plan to an Account, review the Plan attachment, add an attached Plan to or remove it from a Contract, and replace an attached Plan: * [Attaching a Plan to Create an Account Plan](/guides/end-customer-accounts/attaching-plans-to-an-account#attaching-a-plan-to-create-an-account-plan) * [Reviewing Plan Attachment](/guides/end-customer-accounts/attaching-plans-to-an-account#reviewing-plan-attachment) * [Adding Attached Plans to or Removing from Contracts](#adding-attached-plans-to-or-removing-from-contracts) * [Replacing a Plan Attachment](#replacing-a-plan-attachment) If you want to delete an Account Plan from the Account, you can do this from the **Attached Plans** tab: * [Deleting an Account Plan](/guides/end-customer-accounts/attaching-plans-to-an-account#deleting-an-account-plan) **Tip: Attach Plan before Pricing?** You can attach a Plan to an Account *before* you have configured Pricing for the Plan, and price the Plan at some later date. ## Attaching a Plan to Create an Account Plan You can attach a Plan to an Account to create an *Account Plan*. An Account Plan determines the charges incurred by end-customers who consume the Product the Plan is for. **To attach a Plan to an Account and create an Account Plan:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the **Account** to which you want to attach a Plan. The **Account** page opens with the **Overview** tab selected. 3. On the **Account actions** menu, select **Plans>Create plan attachment**: Alternatively: * Select the **Attached plans** tab. * On the **Active and pending attached plans** panel, select **Create plan attachment**. The **Create** page opens: Attachplans45 * **Plan** is selected by default for **Plan attachment type**. 4. Select **Next**. The **Create** page adjusts. 5. On the **Plan attachment details** card, enter the required details of the Plan you want to attach to the **Account**: Attachplans46 * First, select a **Product** from the drop-down list. The **Plan** drop-down list is populated with the Plans belonging to the selected Product: * Note that the **Plan** drop-down list will include any custom Plans you've created for the Account. * Second, select the Plan you want to attach to the Account from the drop-down list. * Now, select the **Start date** (*Required*) and **End date** (*Optional*) to define the period you want the Plan to apply to the Account for billing purposes: * If you omit an **End date**, the Account Plan will be applied to the Account perpetually or until such time as you delete the Account Plan. * End dates are *exclusive*. For example, if you set the **End date** of June 1st 2022, then the Account Plan ceases to be active for the Account at midnight on May 31st 2022, and any billing is calculated up to that point in time, NOT up to midnight on June 1st. If you want to include end customer Account usage occurring on June 1st for billing, you must set the **End date** to June 2nd. **Warning: Overlapping Attached Plans!** * **Default setting**. The default Organization setting imposes the contraint that an Account can only have one active Account Plan *per Product* - if you enter a **Start** **date** which would mean the new Account Plan overlaps with an Account Plan that is already active for the Account, then a warning will show and you'll be given the option to end the existing Account Plan on the **Start date** of the new Account Plan. * **Allow overlapping attached plans**. If your billing use case requires you to attach more than one Plan to an Account for the same Product at the same time, then you must first enable the **Allow overlapping attached plans** Organization setting. 6. For other optional settings, use the **Plan attachment settings** card: Attachplans47 * **Billing cycle date**. Optional setting, which sets the date when the first Bill is created and acts as a reference for when in the applied billing frequency period subsequent Bills are created for the Account: * For example, suppose you attach a Plan to the Account that is configured for monthly billing frequency and you've defined the period the Plan will apply to the Account to be from January 1st, 2022 until January 1st, 2023. You then set a **Billing cycle date** of February 15th, 2022. The first Bill will be created for the Account on February 15th, and subsequent Bills created on the 15th of the months following for the remainder of the billing period - March 15th, April 15th, and so on. * If you leave this blank, then the **Billing cycle date** set for the Account will be used instead - see [Creating, Editing, and Deleting Accounts](/guides/end-customer-accounts/creating-an-account). * If you want to add the Account Plan to a Contract you've created for the Account, use the **Contract** drop down to select it. For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts). * If the Account is either a Parent or a Child Account, you can select for **Account hierarchy billing mode**, which determines how billing will be handled and shown on bills for charges due for the Parent Account and charges due for Child Accounts: * **Bill parent account - bill line item per account**. Default setting. * **Bill parent account - single bill line item for all accounts**. * **Bill child account**. **Important!** * **Only Operative for Parent/Child Accounts**. The **Account hierarchy billing mode** options are only operative if the Account is a Parent or Child Account. For a full explanation of what each means when attaching Plans to create Account Plans for Parent or Child Accounts, see [Billing Hierarchy Modes for Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts). * **Parent/Child billing for Recurring Charges not supported**. If you price a Plan using a Counter to apply unit-based pricing for recurring subscription charges and attach the Plan to Parent or Child Accounts, Parent/Child billing is not supported for the recurring charges. 7. Add any required **Custom Fields** to the Account Plan. For more on Custom Fields, see [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields). 8. Select **Create Plan attachment**. You are returned to the Account page with the **Attached plans** tab selected. The Plan is listed under **Active and pending attached plans**: Attachplans48 * Note that if the **End date** selected when attaching the Plan is in the past, then the Plan is listed under **Previously attached plans**. * Attaching a Plan to an Account creates an *Account Plan*. The Account Plan will show as **ACTIVE** or **INACTIVE** or **PENDING**, and the **Start** and **End** dates are also shown: **Tip: Account Consumes Multiple Products?** In this example, the Account Plan is attached to a Product called **Premium Data Storage**. If the Account consumes more than one of your Products and you've attached Plans to create Account Plans for each Product, these will be grouped accordingly under respective Products. 9. If you want to edit the Account Plan, select the **Edit** icon: 10. Make your changes on the **Edit** page, and select **Update Plan attachment**. For example, you might want to add the Account Plan to a Contract you've created for the Account. The **Contract** is then shown against the Account Plan in the **Active and pending attached plans** panel: Attachplans49 11. If the end-customer Account consumes another of your Products, you can repeat steps 3 to 8 to attach a second Plan to the Account for the overall billing setup for the Account - Bills will be calculated for the Account in accordance with the Account Plans attached for each of your Products the Account consumes: Attachplans50 **Tip: Adding Custom Fields when attaching a Plan?** You can define Custom Fields when attaching a Plan to an Account to create an Account Plan. Note that: * These Custom Fields will be *specific to the Account Plan* - they are separate from any Custom Fields you might have already added either to the Account itself or to the Plan that was used to create the Account Plan. * Secondly, any Custom Fields you create for an individual Account Plan *override* those you've created for Account Plans at the Organizational level. See [Adding and Editing Custom Fields](/guides/organization-and-access-management/viewing-and-editing-organization/adding-and-editing-custom-fields). ## Reviewing Plan Attachment When you've attached a Plan to an Account, you can open a *Plan attachment* page and review details of the attachment. **To review a Plan attachment:** 1. On the **Account** page, select the **Attached plans** tab. 2. On the **Active and pending attached plans** panel, select the name hotlink text of the attached Plan you want to review. The **Plan attachment** page opens: Attachplans66 * For the *Account Plan* created when you attached the Plan to the Account, under **Plan attachment details** you can: * Check the dates for the period the Account Plan will be active for the Account. * Read-off the Account Plan **ID** with the option to **Copy** this directly to your clipboard. * If a Contract is linked to the Account Plan, this will be shown and you can use a hotlink text to open the Contract details page. **New Plan attachment page?** The new version of the **Plan attachment** page opens. If you prefer to work in the old version of the page, select **Use the old version**. 3. If you scroll down the page, you can review the **Plan attachment metadata**: **Custom Fields**. Any fields created for the Account Plan entity are listed: * If any Custom Fields have been created at the Organizational level, these are shown and you can **Copy** the number or string value to your clipboard: Attach Plans63 * If the fields have also been created for an individual Account Plan, then the values configured for those created at Organizational-level are struck out indicating clearly that the individual Account Plan’s values will be used: Attach Plans64 **External mappings**. Any mappings created for the Account Plan are listed: Attach Plans65 * The **External system** and **External table** mapped to are shown - such as **Netsuite - Item** in the above example. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Account Plan has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. * You can commence a workflow to **Create external mapping** for the Account Plan directly - see [Creating and Managing External Mappings for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) for an example. **Integration runs**. If you go on to set up an integration that synchronizes the Account Plan data with an external system, the date/time and status of the **Latest** integration run will be shown. You can use a text hotlink to open details of this latest run or **View all runs**. See [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). 4. Scroll further down the page to review the details of the Plan that was attached to the Account to create the Account Plan: Attachplans54 * On the **Plan details** panel, you can: * Check the details of the Plan. * Use hotlink text links to open the **Plan details** page and details pages for associated entities - **Plan template** and **Product**. 5. Further details of the Plan attached to the Account are shown: * **Standing charge**: Attachplans55 * **Pricing**: Attach Plans69 * **Adjustments**: Attachplans57 * **Plan metadata**: * **Custom fields** * **External mappings** * **Integration runs** **Plan metadata!** The *Plan's metadata* shown at the bottom of the page should not be confused with the *Account Plan's metadata*, which is also shown immediately below the **Plan attachment details** card. ## Adding Attached Plans to or Removing from Contracts From *Plan attachment details*, you can quickly add the attached Plan to a Contract or remove it from a Contract on the Account. This saves you having to open and edit the Plan attachment. **Updating a Contract to add or remove an attached Plan.** Alternatively, you can open the details page of a Contract and add an attached Plan to it or remove an attached Plan from it. See [Adding Account Plans or Account Plan Groups to Contracts](https://docs.m3ter.com/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts#adding-account-plans-or-account-plan-groups-to-contracts). If you do this, then the **Plan attachment details** will update accordingly. **To add an attached Plan to or remove it from a Contract:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to add an attached Plan to or remove from a Contract. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Attached Plans** tab. 4. On the **Active and pending attached plans** panel, select the name hotlink text of the attached Plan you want to add to or remove from a Contract. The **Plan attachment** page opens and on the Plan attachment details panel: * If the attached Plan has not been added to a Contract, an **Add to contract** button is available. * If the attached Plan has been added to a Contract, a **Remove from contract** button is available. 5. To add the attached Plan to a Contract, select **Add to contract**. A **Select contract** modal opens and lists the Contracts created for the Account. 6. Select the Contract you want to add the attached Plan to and select **Confirm**. The modal closes and the Contract is shown under **Plan attachment details**: Attachplans67 7. To remove an attached Plan from a Contract, select **Remove from contract**. A confirmation popup appears: Attach Plans68 8. Select **Remove** to confirm. The popup closes and the Contract no longer shows under **Plan attachment details**. ## Replacing a Plan Attachment From the *Plan attachment* page you can quickly replace an existing attached Plan. When you do this, the start date you define for the replacement attached Plan is used to automatically end date the existing attached Plan. **To replace a Plan attachment:** 1. On the **Account** page, select the **Attached plans** tab. 2. On the **Active and pending attached plans** panel, select the name hotlink text of the attached Plan you want to replace: Attachplans58 The **Plan attachment** page opens: Attachplans59 3. Select **Replace plan attachment**. The **Replace plan attachment** page opens: * **Plan attachment details**: * The **Product** and **Plan** of the existing attached Plan will be pre-selected and you can edit these as required for the replacement. * Enter a required **Start date** and optionally an **End date**. * **Plan attachment settings**. The settings of the existing attached Plan are shown and you can edit these as required for the replacement: * **Billing cycle date**. * **Contract**. * **Account billing hierarchy mode**. * **Custom fields**. Any Custom Fields created for the existing attached Plan are shown and you can add, edit, or remove as required for the replacement. **Important: Replacement start date must be before or equal to the existing end date!** If you enter a **Start date** for the replacement Plan attachment that is after the existing Plan attachment **End date**, you'll receive an error when you try to replace the existing Plan attachment. 4. Select **Replace plan attachment**. You are returned to the **Plan attachment** page for the replacement attached Plan: Attachplans60 5. Return to the **Attached plans** tab for the Account: Attachplans61 * We can see that the **Start date** entered for the replacement attached Plan has been used to update the **End date** for the originally attached Plan, which is now listed under **Previously attached plans**. ## Deleting an Account Plan **To delete an Account Plan:** 1. On the **Active and pending attached plans** panel, select **Delete**: A confirmation popup appears. 2. Select **Yes** to confirm the Account Plan deletion. 3. Alternatively, on the **Active and pending attached plans** panel, select the **Name** hotlink text of the Account Plan you want to delete. The **Plan attachment** page opens. 4. Select **Delete**: Deletebutton A confirmation popup appears. 5. Select **Yes** to confirm the Account Plan deletion. You are taken back to the **Attached plans** tab. **Important!** * **Deleting the Plan**. Deleting the *Account Plan* does not mean the *Plan* is deleted - the Account Plan is created only when you attach a Plan to an Account and remains distinct from the Plan you attached. If you want to delete a Plan, you must go to **Pricing>Plans**, select the **Product** you created the Plan for, and then delete it from there. See [Editing and Deleting Plan Templates and Plans](/guides/plans-and-pricing/working-with-plan-templates-and-plans/editing-plan-templates-and-plans). * **Removing or Changing Account Plans on Accounts**. If you remove or swap out Account Plans on and Account after Bills have been created on the basis of the Account Plans on the Account, simply recalculating those existing Bills will not reflect the change of Account Plans. You must first manually delete the previously created Bills and then re-run billing. See [Recalculating Bills after Billing Configuration Changes](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#recalculating-bills-after-billing-configuration-changes) in the [Troubleshooting Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills) topic. # Creating and Managing Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-an-account Your end customer **Accounts** will typically be created in m3ter as a result of an integration with one of your 3rd-party systems. However, you might need to create an Account manually during the set up phase of your Organization and for testing before you switch to a production environment. This topic explains how to create, manage, and delete Accounts in the Console: * [Creating Accounts](/guides/end-customer-accounts/creating-an-account#creating-accounts) * [Editing and Deleting Accounts](/guides/end-customer-accounts/creating-an-account#editing-and-deleting-accounts) * [Managing the Accounts Page](/guides/end-customer-accounts/creating-an-account#managing-the-accounts-page) **Tip: Accounts Created for Integrations?** In typical production settings, your end customer Accounts will be created in m3ter as a result of an Integration with one of your 3rd-party systems. For more details, see [m3ter Integrations](/guides/integrations/m3ter-integrations). ## Creating Accounts You can quickly create an Account manually in the Console. Accounts do not belong to Products to allow for cases where an end-customer consumes more that one of your products or services. **To create an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select **Create account**. The **Accounts>Create** page opens. 3. Enter the **Account details**: * **Name**. The customer’s name. Required field. * **Code**. Unique identifier for the **Account**. You will need this **Code** as a unique id for API calls, such as a call to make usage data submissions for the **Account**. It will also be used to identify the **Account** in any 3rd-party systems you integrate with m3ter. Required field. * **Email Address**. Required field. * **Parent account**. Optional - if you want the Account to be the Child of another Account, then select the Parent Account. For more details see [Working with Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts). **Warnings:** * **Only single tier Parent/Child Accounts are allowed!** An Account cannot be made a Child of another Child Account or made a Child of itself. If you select an Account that means the Account would become a *grandchild Account*, then you will receive an error when you try to save. * **Accounts selection list restricted to twenty!** If you have a large number (more than twenty) Accounts in your Organization, then the Account you want to select as the Parent might not show in the drop-down list. To find the Account you want, start to type the Account name and the list will be filtered to match the entered text string. 4. Enter the optional **Address** details for the Account: * **Address line 1**. * **Address line 2**. * **City / town**. * **Region / province**. * **Postcode / ZIP**. * **Country**. **Warning: Personally Identifiable Information (PII)!** Under the Data Processing Agreement, the only fields you are allowed to use for any of your end-customer's PII are **Name**, **Address**, and **Email Address**. See the [Personally Identifiable Information (PII)](/guides/end-customer-accounts/managing-accounts-best-practices#personally-identifiable-information-pii) section for more details. 5. Enter any **Bill settings** for the Account: * **Currency**. Use the drop-down list to select the currency you want to use as the billing currency for the Account. Note that: * If you select a currency for the Account, this will override the billing currency you've defined at Organizational level. * If you leave this blank, the billing currency defined at Organizational level will be used for billing on the Account. See [Creating and Managing Currencies](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies). * Note that if you attach a Plan to the Account that uses a different *pricing currency* to the selected *billing currency*, then you must add the relevant currency conversion rate at Organization level to ensure the billing process can convert line items calculated using the pricing currency into the selected billing currency. If you don't add these currency conversion rates, then bills will fail for the Account. See [Adding Currency Conversion Rates](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies#adding-currency-conversion-rates). * **Billing cycle date**. Optional setting, which sets the date when the first Bill is created and acts as a reference for when in the applied billing frequency period subsequent bills for the Account are created: * For example, suppose you attach a Plan to the Account that is configured for monthly billing frequency and you've defined the period the Plan will apply to the Account to be from January 1st, 2022 until January 1st, 2023. You then set a **Billing cycle date** of February 15th, 2022. The first Bill will be created for the Account on February 15th, and subsequent Bills created on the 15th of the months following for the remainder of the billing period - March 15th, April 15th, and so on. * If you leave this blank, then Epoch dates from your Organization's configuration will be used as the **Billing cycle date** for the Account instead - see [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * Note that you can override the **Billing cycle date** set for the Account when you attach a Plan to the Account to create an Account Plan - see [Attaching Plans to an Account](/guides/end-customer-accounts/attaching-plans-to-an-account). * **Credit application order**. Optional setting. Select to define the order in which any Prepayment or Balance credit amounts on the Account are to be drawn-down for billing: * **Use organization-wide configuration**. Default selection. If enabled, the setting selected at Organization level for credit draw-down order will be used - it will be shown in brackets. If you select any of the other four options, the Organization level setting will be overridden. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * **Prepayment then balance**. Draw-down against Prepayment credit before Balance credit. * **Balance then prepayment**. Draw-down against Balance credit before Prepayment credit. * **Prepayment only**. Only draw-down against Prepayment credit. * **Balance only**. Only draw-down against Balance credit. **Important!** If the Account belongs to a Parent/Child Account hierarchy, then the **Credit application order** settings are *not available*, and the draw-down order defaults always to Prepayment then Balance order. * **Days before bill due.** Optional setting. Enter the number of days after the Bill generation date that you want to show on Bills as the due date. This is useful for cases where you want Bills for different end-customer Accounts to show different due dates: * You can also define this at Organizational level - see [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). The setting at individual Account level takes precedence over any setting at Organizational level. * **Purchase order number**. Optional attribute. Allows you to assign an order number to an end-customer Account. The purchase order number will then come through into invoicing. For example, your financial systems might require this as a reference for clearing payments. **Warning: Changing Account Purchase Order Number!** If you have generated Bills for an Account that has a Purchase Order number assigned to it and then changed the number, when you recalculate Bills the old number will persist on **Bill Details** and not be updated. This is expected behavior. If you need a Bill to show the new Purchase Order number, you must delete the Bill and regenerate it. 6. Enter any **Bill statements** settings for the Account. These are optional allowing you to define how you want Bill Statements to be generated for the Account. Any settings at Account level will override Organization level settings for Bill Statements: * **Statement definition**. Optional setting. Select a Statement definition on which Statements generated for the Account will be based. * **Auto-generate statements**. Optional setting. Select for the formats in which Statements for the Account will be generated when Bills for the Account are approved or locked - four options: * **Use organization-wide configuration**. Default selection. If enabled, the setting selected at Organizational-level for auto-generation of statements will be used - it will be shown in brackets. If you select any of the other three options, the Organization level setting will be overridden. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * **None**. Statements are not auto-generated. * **JSON**. Statements are generated only in JSON format. * **JSON and CSV**. Statements are generated in both JSON and CSV formats. **Tip: Bill Statements?** For more on setting up and generating Bill Statements for end customer Accounts, see [Working with Bill Statements](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements). 7. Create any **Custom fields** for the Account: * You can define **Custom Fields** when creating an Account or edit it at a later date to do this. Any Custom Fields you create for an Account override Custom Fields you've created for Accounts at Organizational level. We strongly recommend reviewing [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) before you create Custom Fields. 8. Select **Create account**. The **Account Details** page opens with the **Overview** tab selected. Note that: * The unique `id` generated for the new Account is listed under **Account Details** and you can copy this directly to your clipboard. * Any usage data ingested for the Account will be linked strictly to the Account `id`. * You can scroll down the page to review the **Account metadata**. See [Reviewing Account Metadata](/guides/end-customer-accounts/working-in-account-overview#reviewing-account-metadata) for more details. **Tip: Working in Account Overview?** For more details and guidance on the Account **Overview** tab, see [Working in Account Overview](/guides/end-customer-accounts/working-in-account-overview). ## Editing and Deleting Accounts You can edit or delete Accounts in the Console. **Warning: Deleting Accounts for which you've already submitted usage data!** If you delete an Account for which you've already submitted usage data, that usage data is *permanently dissociated* from the Account. Even if you recreate a new Account *with the same Code* as the Account you deleted earlier, the usage data ingested for the deleted Account is no longer available for billing against the newly created Account using the same Code. This means you'll have to re-submit the usage data for the recreated Account if you want to use the data for billing the Account. See [Editing and Deleting Accounts - Implications for Usage Data](/guides/end-customer-accounts/managing-accounts-best-practices#editing-and-deleting-accounts-implications-for-usage-data) for more details. **To edit or delete an Account:** 1. Select **Accounts**. The **Accounts** listing page opens. 2. Search for the Account you want to edit or delete. 3. If you want to edit the Account, select the **NAME** hotlink text. The **Account** page opens with the **Overview** tab selected. 4. On the **Account details** panel select **Edit**. The **Edit** page opens. 5. Make your editing changes, and click **Update account**. You are returned to the **Account** page. 6. If you want to delete the Account, stay on the **Accounts** listing page and select the **Delete** button for the Account: A confirmation popup opens: 7. Select **Yes** to confirm the delete action. ## Managing the Accounts Page When working with Accounts, you can quickly reorder columns or switch columns on or off to suit your current operational purposes. For example, you might want to show the **Created by** and **Last modified** dates as the first two columns or show additional columns for **Currency** and **Parent account**: * [Reordering Accounts Page Columns](/guides/end-customer-accounts/creating-an-account#reordering-accounts-page-columns) * [Switching Accounts Page Columns On and Off](/guides/end-customer-accounts/creating-an-account#switching-accounts-page-columns-on-and-off) ### Reordering Accounts Page Columns **To reorder columns for the Accounts page:** 1. Select **Accounts**. The **Accounts** page opens with columns in the default order. 2. Select the vertical **Columns** button on the right-hand side of the list: 3. On the reorder columns panel that appears, drag-and-drop columns to give the order you want to show on the page: * Repeat until you have a top-bottom order of columns that you want to appear in left-right order on the page. 5. Select **Columns** again. The reorder columns panel closes and the **Accounts** page shows the reordered columns: ### Switching Accounts Page Columns On and Off **To reorder columns for the Accounts page:** 1. Select **Accounts**. The **Accounts** page opens with columns in the default order. 2. Select the vertical **Columns** button on the right-hand side of the list: 3. Use the **Columns** panel that appears to switch on or off any columns you want to show or hide from the list: * In this example, we've switched on two additional columns for **Currency** and **Parent account** that are hidden in the default arrangement of the page. * Note that the **Name** and **Actions** columns are fixed and you cannot switch them off to hide them. 4. Select **Columns** again. The **Columns** panel closes and the **Accounts** page shows the columns you have switched on: # Creating and Managing External Mappings for Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts When you integrate your 3rd-party external systems with the m3ter platform, external system entities and fields are mapped to m3ter entities and fields. *External Mappings* are created and act as mapping reference lookups for which entities and fields have been mapped across two or more systems. As you set up and configure integrations, you might want to review, create, and manage the External Mappings created for a specific Account: * You can review the mappings created for an Account on the **Overview** tab of the Account's page, where they are listed under the **Account metadata** panel. * You can also create new External Mappings for the Account from panel. **Tip: External Mappings for your Integrations?** You can create and manage all External Mappings for your Integrations from the main **Integrations>External Mappings** page, including those that reference your m3ter Accounts - see [Creating and Managing External Mappings](/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings). **To create and manage External mappings for an Account:** 1. Select **Accounts**. The **Accounts** page opens 2. Select the **Name** text of the Account you want to review or create External mappings for. The **Account** page opens with the **Overview** tab selected. 3. Scroll down the page to **Account metadata**. 4. Select **External mappings**: Ext Mapping70 * The **External system** and **External table** mapped to are shown - such as **Xero - Contact** in the above example. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Account has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. 5. Select **Create** **external mapping**. * Alternatively, on the **Account actions** menu, select **External mappings>Create external mapping**: The **Create** page opens at **Stage 1 - Select mapping type** and the **Entity type** is preselected for **Account**. 6. Using the **External system** drop-down list, select the external system referenced for the mapping type. **Tip: Other External systems showing?** Note that you can configure mappings for any of the integrations with external systems set up for your m3ter Organization. This includes any custom integrations as well as native integrations 7. Using the **External table** drop-down list, select the table in the selected 3rd-party system that you want to use for the mapping type: * In this example, we've chosen to create an **Account \<> Customer** mapping for **m3ter \<> Chargebee**. 8. When you've completed the mapping type set up, select **Next**. You're taken to **Stage 2 - Add mapping IDs:** * The **m3ter entity type**, **External system**, and **External table** you configured for **Stage 1** are shown. 9. On **External mappings details**: * The **m3ter entity** drop-down is preselected for the **Name** of the Account you started the workflow from. * **Linked integration**. Note that because you started the create external mapping workflow from the Account metadata panel, the external mapping will *not be linked* to a specific integration with the selected external system. See [Creating Linked External Mappings](/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings#creating-linked-external-mappings) for more details. 10. In the **External entity ID** field, enter the ID of the external system entity you want to map to. **Tip: Possibles values might show!** Note that if the possible values for the **External entity ID** field can be fetched for the **External system**, then you can use a drop-down list to select the value for this field from the list of possible values returned. 11. Select **Create external mapping**. You are returned to the **Account details** page where the new mapping is listed for **Account metadata** under **External mappings**: Ext Mapping71 # Working with Parent/Child Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-and-working-with-child-accounts You can create *Child Accounts* for a main or *Parent Account* in m3ter. You might want to do this if your Organization has end customers with multiple Accounts and instead of issuing multiple Bills to the end customer, you want to provide them with a Bill for a single Parent Account that pools usage data across multiple Child Accounts. How Bills are calculated and compiled for Parent/Child Accounts depends upon: * The *Account Plan location* - whether it is on the Parent or Child Accounts. * The *billing mode settings* you use when you attach a priced Plan to Parent/Child Accounts to create Account Plans for the Accounts. For more details on the configuration options available for controlling billing for Parent/Child Accounts, see [Billing Hierarchy Modes for Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts). This topic explains how to create a Child Account and how to review and work with Child Accounts and their Parent Accounts in the Console: * [Creating Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts#creating-child-accounts) * [Reviewing Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts#reviewing-parentchild-accounts) * [Recalculating and Running Billing for Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts#recalculating-and-running-billing-for-parentchild-accounts) **Important!** * **Parent/Child billing for Recurring Charges not supported**. If you price a Plan using a Counter to apply unit-based pricing for recurring subscription charges and attach the Plan to Parent or Child Accounts, Parent/Child billing is not supported for the recurring charges. * **Limit on Child Accounts.** A Parent Account can have a maximum of 999 Child Accounts. * **Grandparent Account Creation is Blocked.** To prevent circular reference, if you try to create a Parent for an Account that has a Child Account, the request will be blocked. ## Creating Child Accounts You can define an Account as a Child Account either when you first create it or by updating an existing Account. See [Creating and Managing Accounts](/guides/end-customer-accounts/creating-an-account). ## Reviewing Parent/Child Accounts When you have created a Parent Account for one or more Child Accounts, you can go to the *Account Overview* page of the Parent Account and review its Child Accounts. **Tip: Is an Account a Child or a Parent?** If you want to check whether or not an Account is linked to another Account as Child or Parent, then open the Account - only Parent Accounts or Accounts that have *not been designated* as **Child Accounts** will have a **Child Accounts** tab. **To review Child Accounts:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Parent Account. The **Account** page opens with the **Overview** tab selected. 3. Select the **Child accounts** tab. The **Child accounts** panel lists any Accounts that are defined as children: 4. If you want to review the details of a Child Account, select its **Name** text. The Account page for the selected Child Account opens with the **Overview** tab selected and you can review any **Bills**, **Prepayments**, **Plans**, or **Contracts** for the Child Account: **Tip: Child Accounts don't have Child Accounts tab?** Since a Child Account cannot also be a Parent Account, the Child Account page doesn't carry a **Child Accounts** tab. 5. If you want to return to the Parent Account, on the **Account details** panel, select the hotlink text under **Parent account**. You are returned to the Parent **Account** page. 6. If you want to remove the Child Account from the Parent Account, select **Remove child account**. You'll receive a confirmation message that the Child has been removed. 7. If you want to review the details of any of the Parent Account's other Child Accounts, repeat steps 4 and 5. ## Recalculating and Running Billing for Parent/Child Accounts **Warning: Billing does not run for Child Accounts separately!** * **Recalculating Parent/Child Account Bills:** Only when you recalculate a Parent Account will its Child Accounts be recalculated. See [Reviewing and Recalculating Bills for an Account](/guides/end-customer-accounts/reviewing-bills-for-an-account). * **Running billing for Parent/Child Accounts:** Only when you run billing for a Parent Account will billing run for its Child Accounts. See [Running Bills Manually](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#running-bills-manually). # Billing Hierarchy Modes for Parent/Child Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts When you attach Plans to either a Parent or Child Account, you can use the **Account hierarchy billing mode** setting to chose for different *billing hierarchy* modes - for more details, see [Attaching Plans to Accounts](/guides/end-customer-accounts/attaching-plans-to-an-account). The billing hierarchy mode you select then determines how billing will be handled and shown on bills as between charges due for the Parent Account and charges due for Child Accounts. This topic explains the different billing hierarchy modes you can set up for Parent/Child Accounts. The way in which Bills are calculated and compiled for Parent and Child Accounts depends upon two conditions: * **Account Plan Location**. Whether you've attached a priced Plan to create an Account Plan for the Parent Account or for the Child Account: * If the Parent Account has an Account Plan and the Child Account does not, then any Child usage will be rated at the Parent level. Note that if Child usage is bundled up into a single block in this way, it means the Child Accounts might be able to take advantage of lower rates under a tiered pricing structure that, if rated independently, they would not have reached. See the [Rating Usage as a Block](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts#rating-usage-as-a-block) section below. * If a Child Account has an Account Plan, then its usage is rated independently. * **Billing Mode**. When you attach a priced Plan to either a Parent or a Child Account to create an Account Plan, billing mode settings allow you to control how Bills at either Parent or Child level are compiled from line items calculated for either Parent or Child usage. See the [Billing Modes](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts#billing-modes) sections below for full details. The combination of Account Plan location and Billing Mode settings gives you wide flexibility on how usage as between Parent and Child Accounts is charged and compiled into Bills. Some [Example Billing Scenarios](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts#example-billing-scenarios) are provided below to help you set up Parent/Child Account billing to correctly meet your specific billing use cases. **Important!** * **Parent/Child billing for Recurring Charges not supported**. If you price a Plan using a Counter to apply unit-based pricing for recurring subscription charges and attach the Plan to Parent or Child Accounts, Parent/Child billing is not supported for the recurring charges. **Tip: Billing for Prepayments drawdown when Parent/Child Accounts involved?** If you create a Prepayment for an Account that is a Parent or Child of another Account, you can select the same options to control how the billing of drawdown against the Prepayment amount is handled as between Parent and Child Accounts. See [Creating Prepayments for Accounts](/guides/end-customer-accounts/creating-prepayments-for-accounts). ## Billing Modes Billing mode settings are available when you attach a Plan to a Parent/Child Account to create an Account Plan. ### Billing Modes for Parent Accounts In the Console, when you attach a priced Plan to a *Parent Account* to create an Account Plan, you can use the **Account hierarchy billing mode** setting to control how bills for usage charges under the Account Plan are processed: * **Bill parent account - bill line item per account**. This creates a "Parent Bill Breakdown" billing format. Usage data is rated at the Parent level, and multiple line items are added to the Parent - one per Child - with an "average" unit price applied. Default setting. * **Bill parent account - single bill line item for all accounts**. This creates a "Parent Bill Summary" billing format. Usage data is rated at the Parent level - usage for children is treated as a single block of usage - and a single line item is added to the Parent bill representing the total of all the Child usage for the Plan. * **Bill child account**. Usage data is rated at the Parent level, but the line items appear on the Child bills instead of on the Parent. ### Billing Modes for Child Accounts In the Console, when you attach a priced Plan to a *Child Account* to create an Account Plan, you can use the **Account hierarchy billing mode** setting to control how bills for usage charges under the Account Plan are processed: * **Bill parent account - bill line item per account**. Usage data is rated at the Child level, and multiple line items are added to the Parent - one per Child - with an "average" unit price applied. Default setting. * **Bill parent account - single bill line item for all accounts**. Usage data is rated at the Child level - that is, each Child is rated for its own usage individually - and a single line item is added to the Parent bill representing the total of all the Child usage for the Plan: * **Note:** We only "summarize" line items for the **same plan**, so if different children each have their own custom Plans, it won't get summarized because we can't tell which line items should be merged with each other. * **Bill child account**. Usage data is rated at the Child level, but the line items appear on the Child bills rather than on the Parent. **Important! Child and Parent Accounts have same Account Plans!** If you attach the same priced Plan to *both Parent and Child*, then *double-billing* occurs - once rated against the Parent Account Plan and then again against the Child Account Plans. We strongly recommend caution if you intend to set up pricing for Parent and Child Accounts in this way. ### Setting Billing Mode using API Call You can use the `childBillingMode` request parameter in the [Create AccountPlan](/api/accountplan/create-accountplan) call to set the billing mode for your Parent Child Account: * `PARENT_SUMMARY` * `PARENT_BREAKDOWN` * `CHILD` ## Example Billing Scenarios This section describes six Parent/Child billing scenarios to help you decide which best suits your billing use case. **Scenario 1: Parent bill has single line item representing usage for all children, rated as a single block** * **Account Plan Location**: * Parent Account has Account Plan. * Child Accounts do not have Account Plans. * **Billing Mode**. When you create the Account Plan for the Parent Account, select **Bill parent account - single bill line item for all accounts**. This means: * Bills will be created for the Parent Account. * Usage data is rated at the Parent level. * All Child usage treated as a single block of usage. * A single line item is added to the Parent bill representing the total of all the Child usage for the Plan. **Scenario 2: Parent bill has single line item representing usage for all children, rated independently** * **Account Plan Location**: * Parent Account does not have Account Plan. * Child Accounts have same priced Plan attached for Account Plans. * **Billing Mode**. When you create Account Plans for Child Accounts, select **Bill parent account - single bill line item for all accounts**. This means: * Bills will be created for the Parent Account. * Usage data is rated at the Child level. * Each Child is rated for its own usage individually. * A single line item is added to the Parent bill representing the total of all the Child usage for the Plan. **Scenario 3: Parent bill has line item per child, rated as a single block** * **Account Plan Location**: * Parent Account has Account Plan. * Child Accounts do not have Account Plans. * **Billing Mode**. When you create the Account Plan for the Parent Account, select **Bill parent account - bill line item per account**. This means: * Bills will be created for the Parent Account. * Usage data is rated at the Parent level. * Multiple line items are added to the parent - one per child - with an "average" unit price applied. **Scenario 4: Parent bill has line item per child, rated independently** * **Account Plan Location**: * Parent Account does not have Account Plan. * Child Accounts have Account Plans. * **Billing Mode**. When you create Account Plans for Child Accounts, select **Bill parent account - bill line item per account**. This means: * Bills will be created for the Parent Account. * Usage data is rated at the Child level. * Each Child is rated for its own usage individually. * Multiple line items are added to the bill - one per child - with an "average" unit price applied. **Scenario 5: Child bills each have a line item representing their own usage, rated as a single block** * **Account Plan Location**: * Parent Account has Account Plan. * Child Accounts do not have Account Plans. * **Billing Mode**. When you create the Account Plan for the Parent Account, select **Bill child account**. This means: * Bills will be created for Child Accounts. * Usage data is rated at the Parent level and line items appear on the Child bills rather than on the Parent. **Scenario 6: Child bills each have a line item representing their own usage, rated independently** * **Account Plan Location**: * Parent Account does not have an Account Plan. * Child Accounts have Account Plans. * **Billing Mode**. When you create Account Plans for Child Accounts, select **Bill child account**. This means: * Bills will be created for the Child Account. * Usage data is rated at the Child level and line items appear on the Child bills rather than on the Parent. **Important! Child and Parent Accounts have same Account Plans!** If you attach the same priced Plan to *both Parent and Child*, then *double-billing* occurs - once rated against the Parent Account Plan and then again against the Child Account Plans. We strongly recommend caution if you intend to set up pricing for Parent and Child Accounts in this way. ## Rating Usage as a Block This section explains how usage rating as a block for Child Accounts will be calculated and compiled into bill line items. Some common use cases for Parent/Child Account billing where usage is rated as a block across all Child Accounts at the Parent level - such as Scenario 3 above - allow Child accounts to take advantage of discounted usage rates in higher tiers. These are those cases where they would not have qualified for the discounted usage rates, had they been rated independently. Here's a simple example to illustrate how this works. Suppose you have an end customer Parent Account with two Child Accounts - **A** and **B**: * The Account Plan you use to charge has the following two-tiered pricing structure: * **Tier 1**: \$1.00 per unit for usage up to the first 1000 units. * **Tier 2**: \$0.90 per unit for any usage above 1000 units. * For the current billing period: * **A** consumes 900 units. * **B** consumes 500 units. * If we attach the Account Plan to each of the Child Accounts and charge them independently: * **A** pays \$900 and **B** pays \$500 for a total of **\$1400**. * If we attach the Account Plan to the Parent Account and charge them as a single block of usage: * Total usage is 1400 units, and this is all rated as a block amount against the Account Plan - 1000 units @ \$1.00 and 400 units @ \$0.90. Total cost is therefore **\$1360** across both Child Accounts. * For billing when charging as a single block, the total payable is then split across the Child Accounts and proportionately to their respective usage: * **A** would be charged 1360\*(900/1400) = **\$874.29** (less than the \$900 when rated independently) * **B** would be charged 1360\*(500/1400) = **\$485.71** (less than the \$500 when rated independently) # Working with Balances for Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts You can create *Balances* for your end-customer Accounts. Customers can then draw-down against their Balance amount for any charges due for consuming your products and services throughout the period the Balance is active for their Account. You can include options to top-up the original Balance. Using Balances for end customer Accounts delivers other benefits, for example: * **Onboarding Balance/Free Trials.** You can offer an onboarding incentive to new customers by way of an initial free credit Balance on their Account to be used within a set time frame but which carries no further commitment. This can encourage customers to start using your service by drawing down against the Balance, and increases the likelihood they will sign-up as a fully onboarded customer. * **Balance as initial commitment.** Add a Balance amount to a new customer Account to act as an initial commitment, which allows them to start using the service and gain an accurate insight into their usage level. You can then have a well-informed discussion with them about the most suitable usage-based pricing contract to suit their projected usage level. * **Managing Customer Satisfaction**. Use Balances as credits that will be applied to subsequent Bills as compensation for acknowledged service delivery issues, rather than using credit notes. * **Facilitating Balance Adjustments**: * Apply negative amounts to immediately write-off outstanding Balances. * When setting up to migrate data into the m3ter service create a Balance total, which you can then adjust to accurately reflect the Balance at the precise cut-over date. This section explains how to create, work with, and manage Balances for your end-customer Accounts. You can create Balances for an end-customer Account in the Console from the Account details page: * [Understanding and Managing Billing for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances) * [Creating and Managing Account Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances) You can then add Transaction amounts to Balances to manage the amount available for drawing-down against charges due on the Account when Bills are calculated. Add single Transactions manually or set up a *Transaction Schedule* for Balances: * [Creating and Managing Transactions for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances) * [Setting Up Transaction Schedules for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances) You can create *Charges* for Balances to create single, one-off line items for Balance billing. Alternatively, you can set up a *Charge Schedule* for a Balance: * [Creating Charges for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances) * [Setting Up Charge Schedules for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances) You can run billing for either one-off Charges or scheduled Charges and view Bill details: * [Running and Viewing Bills for Balance Charges](/guides/end-customer-accounts/creating-balances-for-accounts/runnning-viewing-bill-for-balance-charges) When you have set up Balances for an Account, the Balances tab offers a very useful summary view with a timeline chart of the currently active, any future, and any past Balances on the Account: * [Reviewing Account Balances Summary](/guides/end-customer-accounts/creating-balances-for-accounts/reviewing-account-balances-summary) **Important: Review First!** Before setting up Balances for your end-customer Accounts, we *strongly recommend* that you first review the [Understanding and Managing Billing for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances) topic. **Grants available in Preview Release.** You can enable a Balance as a *Grant*. This means the Account is credited with an amount of *pre-rated usage*, which can be drawn-down to reduce the amount of usage that is rated and would result in charges against the Account. See the [Grants](/guides/end-customer-accounts/creating-balances-for-accounts/balance-grants) topic below in this section for more details. **Notes and Tips:** * **Note: Terminology?** *Balances*, *Credits*, and *Prepaid Drawdown*, are all terms used to describe the addition of funds to an end-customer Account in m3ter. * **Tip: API Calls for Balances?** We maintain a full set of API calls to create and manage Balances for your end-customer Accounts - see the [Balances](/api/balances/introduction) section in our API Ref Docs. * **Tip: Balances and Prepayments/Commitments?** You can use both Balances and Prepayments to help manage credit for end-customer Accounts, but they serve different purposes: * Use Prepayments for credit end-customers have agreed to pay for consuming your product or services across a full contract term. * In contrast, Balances - often referred to as a *Top-Up* or *Prepaid draw-down* - serve credit payment use cases in a more flexible way. Use Balances when a customers want to add credit to their Accounts or when you as service provider want to add credit to Accounts - such as "Free Credit" sign-up schemes to encourage sales or credit rebates to safeguard customer satisfaction when there have been issues delivering your service. * You can use Prepayments and Balances together on an Account, and control the order in which the credit is draw-down - Balance credit draw-down before or after Prepayment credit draw-down. See Balances Draw-Down Order Against Prepayments for more details. # Grants Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/balance-grants You can enable a Balance on an Account as a *Grant*. This means the Account is credited with an amount of *pre-rated usage*, which can be drawn-down to reduce the amount of usage that is rated and would result in charges against the Account. This topic provides a worked example to explain how to enable an Account Balance as a Grant allowance for pre-rated usage. Some example test data is then submitted against the Account and Bills are ran to show how pre-rated usage is draw-down against the Grant before rating is applied and charges billed against the Account: * [Worked Example for Grants](#worked-example-for-grants) * [Setting Up Rating and Pricing](#setting-up-rating-and-pricing) * [Setting Up a Balance as a Grant](#setting-up-a-balance-as-a-grant) * [Submitting Usage Data and Running Bills](#submitting-usage-data-and-running-bills) **Note: Grants in Preview Release!** Please note that the Grants feature is currently available only in Preview release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Preview release definition. ## Worked Example for Grants Suppose you offer a product for cloud storage and charge on the basis of gigabytes stored by your end-customers and which you bill on a monthly basis in US dollars (USD). However, you want to offer new customers a free pre-rated usage allowance at sign-up for your product - say 1000 gigabytes. Only when the customer's usage has exceeded this initial free usage allowance will they start to be charged at the normal pricing rates per gigabyte stored on your platform. In m3ter, you can enable a Balance as a Grant to implement a solution for this kind of use case. ## Setting Up Rating and Pricing The rating and pricing setup for an Account must be completed in a way that allows a Balance Grant to implement a free pre-rated usage allowance on an Account. The key part of the overall configuration is: * Create a custom currency for your Organization and define this as the unit of aggregated usage used to price a Product Plan attached to the Account. * When a Balance is enabled as a Grant for the Account with the Plan attached, use the *same custom currency* for the Grant as you've defined as the unit of aggregated usage. Here's the setup for pricing and rating we'll use for the worked example: * **Create Product**. We've created the **Standard Storage Free Allowance Product**. * **Create Product Plan Template and Plan**. We've created a Plan Template and used it for a Product Plan called **Standard Storage Allowance Plan 1**. Ensure the Plan Template is set up for monthly billing and uses **USD** as the billing currency. * **Create Product Meter and Aggregation**. We've created the **Standard Storage Allowance Aggregation 1** that targets the **Standard Storage Allowance Meter 1**, and we'll use this Aggregation to price the Product Plan to **SUM** the metered usage and defined a **Unit** of **GIB**: Balance Grant11 **Aggregation Unit**. When we set up a Grant, we'll select a currency that matches the Aggregation's **Unit**. * **Price Product Plan**. In the **Pricing Editor**, we've created a tiered pricing for **Standard Storage Allowance Plan 1** using **Standard Storage Allowance Aggregation 1**: Balance Grant3 * **Attach Plan to Account**. We've attached the priced **Standard Storage Allowance Plan 1** to the **Standard Storage Allowance Customer 1** Account: Balance Grant4 * **Custom Currency**. In **Settings>Currency settings**, we've created a Custom Currency for our Organization called **GIB** to match the **Unit** we defined for the **Standard Storage Allowance Aggregation 1**: Balance Grant1c ## Setting Up a Balance as a Grant With the required rating and pricing setup completed, we can now set up a Balance as a Grant on the Account for the worked example. **To enable a Balance as a Grant:** 1. Open the example Account: **Standard Storage Allowance Customer 1** and select the **Balances** tab. 2. Select **Create balance**. The **Create** form opens. 3. Under **Balance details** enter: * **Name** and **Code**. * Use the **Grant** switch to enable the Balance as a Grant. * Select the **GIB** for **Currency**. * This ensures the Grant **Currency** and Aggregation **Unit** match. * Note that when you enable the **Grant** switch, the **Create** form adjusts and an information text shows to remind you that the Grant currency must match the unit of the Aggregation used to price the Plan attached to the Account. You can select to **View aggregation units** to open an **Aggregation units** modal to help you check for and select the correct **Currency** for the Grant: Balance Grant16 * Enter a **Start date** and **End date**. * The remaining options can be omitted for the current worked example. 4. Select **Create balance**. The Balance is listed on the **Account balances** tab. 5. Select the **Name** hotlink text to open the **Balance details** page. 6. Scroll down the **Balance details** page and on the **Balance transactions** card, select **Create balance transaction**. 7. On the **Create** page under **Balance transaction details** enter details: * **Transaction type** * **Amount** - for the worked example, enter 1,000 GIB * **Transaction date** * **Applied date** **More details?** See [Creating and Managing Transactions for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances). 8. Select **Create balance transaction**: Balance Grant12 * We now have a Grant set up that can be used by the Account as a pre-rated usage allowance of 1,000 GIB. ## Submitting Usage Data and Running Bills In this section, we'll submit some test usage data for the example Account and then run billing to check that the Grant we've set up for the Account is being correctly drawn-down against. **To submit test usage data and run billing:** 1. Open the example Account: **Standard Storage Allowance Customer 1**. 2. Select **Submit usage**. 3. On the modal that appears, select the Meter set up for the example: **Standard Storage Allowance Meter 1**, and select **Next**. 4. On the **Submit usage data**, since billing frequency is monthly we'll submit a single **500** amount for January 2026 using the **Std Storage** measure Data Field that the **Standard Storage Allowance Aggregation 1** targets and will **SUM** as a **GIB** amount: Balance Grant6 5. Select **Submit usage**. 6. Open the **Bills** tab for the Account and select **Run billing**. 7. On the **Run billing** modal, for the **Invoice date** select the next monthly billing date - February 1st 2026 for current example - **Monthly** as the **Bill frequency**, and select **Run billing**. 8. When the Bill is generated, open it from the Account's **Bills** tab: Balance Grant14 * As expected, we can see that the Bill is zero and the Grant pre-rated usage allowance has a **Balance consumed** line item covering the 500 GIB usage amount for the single test submission. 9. If we return to the **Balance details** page, we can see that the draw-down against the Grant's pre-rated usage allowance on the Balance when the Bill was generated is entered on the **Balance transactions** ledger: Balance Grant8 10. To check that rating cuts in correctly for the Account if the Grant pre-rated usage allowance is exceeded, we can now make a second test usage submission of **700** for January and re-calculate the February 1st Bill: Balance Grant15 * The second test usage data submission takes the total aggregated usage amount to 200 GIB above the Grant's 1,000 GIB pre-rated usage allowance, and we can see that the Account has been correctly charged for the 200 GIB at the \$3.00 per GIB rate we configured for the priced Plan attached to the Account. # Creating and Managing Account Balances Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances You can create Balances for your end customer Accounts in m3ter directly from the Account details page. When you've added a Balance to an Account, you can open a Balance details page and from there: * Add Transactions for the Balance for credit or debit amounts. * Link Balances to Contracts on the Account. * Review Balance metadata. This topic explains how to create and manage Balances for your end-customer Accounts: * [Creating a Balance on an Account](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances#creating-a-balance-on-an-account) * [Adding Balances to or Removing from Contracts](#adding-balances-to-or-removing-from-contracts) * [Linking Balances to Contracts - Availability for Draw-Down](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances#linking-balances-to-contracts-availability-for-draw-down) * [Reviewing Balance Metadata](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances#reviewing-balance-metadata) * [Balances Draw-Down Order Against Prepayments](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances#balances-draw-down-order-against-prepayments) **Important: Understanding Billing for Balances!** Please review the [Understanding and Managing Billing for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances) topic above before creating Balances for your end-customer Accounts. ## Creating a Balance on an Account **To create a Balance for an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to create a Balance. The **Account** details page opens with the **Overview** tab selected. 3. On the **Account actions** menu, select **Balances>Create balance**: Alternatively: * Select the **Balances** tab and then select **Create balance**. The **Create** page opens. **Warning: You must create at least one Currency for your Organization before you can create a Balance!** If you haven't, the **Create** page will not open and you'll see a warning: * Select the **Manage currencies** hotlink text provided. This takes you directly to the **Create** page to create the Currency you want to use for the Balance. See [Creating and Managing Currencies](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies). * When you create the new Currency, you are taken directly back to the Balance **Create** page and the Currency is selected. 4. Enter the required **Balance details**: * **Name**. (*Required*) * **Code**. (*Required*) * **Grant**. Enable this switch if you want to treat the Balance as a Grant, allowing you to credit the Account with an amount of *pre-rated usage* and reduce the amount of usage that is rated and would result in charges against the Account. See [Grants](/guides/end-customer-accounts/creating-balances-for-accounts/balance-grants) for more details. * **Currency**. Use the drop-down list to select the currency you want to use for the Balance. (*Required*) * **Start date (inclusive)** and **End date (exclusive)**. Use the calendar pop-ups to set start and end dates/times to define the time period the Balance will be active for the Account. (*Required*) * **Consumptions accounting product**. For accounting purposes, select to link any *Balance consumed* draw-down Bill line items against the Balance to a particular Product for accounting purposes. (*Optional*) * If you omit a **Consumptions accounting product**, then then *Balance consumed* Bill line items will not be linked to a Product and will be listed under **Other line items**. * **Fees accounting product**. For accounting purposes, select to link any *Balance fee* Bill line items to a specific Product for Charges against the Balance. (*Optional*) * If an **Accounting product** has been selected for a Charge against the Balance, this takes precedence and will be used. * If an **Accounting product** has not been defined for a Charge and you omit **Fees accounting product** for the Balance, then *Balance fee* Bill line items will not be linked to a Product and will be listed under **Other line items**. * **Contract.** *(Optional)* If you want to add the Balance to a Contract you've created for the Account, use the drop-down to select it. For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts). **Important: Linking Balance to Contract - ensuring Balance is available for draw-down at billing!** Whether you need to link a Balance on an Account to a Contract is dependent on whether or not an Account Plan on the same Account has been linked to a Contract. For details, see the following section on [Linking Balances to Contracts](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances#linking-balances-to-contracts). * **Description**. Enter a description for the Balance. (*Optional*) 5. Enter **Balance draw-down** settings, which are optional: * **Draw-down products.** Select the Products whose consumption charges can be drawn-down against the Balance amount. **Note:** If you don't select any products for draw-down, by default the charges for *all products* consumed by the Account will be drawn-down against the Balance amount. * **Draw-down charge types.** Select the charge types that can be drawn-down against the Balance amount. Six options: * **Ad-hoc** * **Counter adjustment debit** * **Counter running total charge** * **Minimum spend** * **Standing charge** * **Usage** **Note:** If you don't select any charge types, by default at billing *all charge types* will be able to draw-down against the Balance amount. * **Draw-down description**. Enter a *custom description* that will appear against Bill line items for draw-down charges against the Balance. * Note that if you leave this blank, a *default description* will be used: \<*Balance name*>**:** **Balance Consumed**. **Tip: Draw-Down Order when Multiple Balances on Account?** * If an Account has multiple Balances, the order in which Balances are drawn-down against is determined by Balance end date - the Balance with the earlier end date is draw-down against first. * If you have multiple Balances ending on the same date and want to enforce a particular draw-down order, please contact m3ter Support so we can guide you toward the best solution based on your current configuration. 6. Enter **Balance overage and rollover** settings, which are optional: * **Rollover amount**. If the charges drawn-down against the Balance during the period the Balance is active for the Account don't exhaust the Balance, you can have whatever remains of the Balance rollover. This means charges continue to be drawn-down against the unused amount beyond the active end date set for the Balance. * If you want to enter a cap on any rollover amount used for a rollover or grace period, enter the amount here. * You'll need to enter a **Rollover end date** also to enable the rollover/grace period - if you only enter an amount for rollover without entering an end date, you'll receive an error when you try to save the Balance. * **Rollover end date**. If you want to allow a rollover or grace period where any unused Balance amount continues to be drawn-down against charges due after the defined active end date, then use the pop-up calendar to define an end date for the rollover or grace period. **Note: Rollover on Balance not required?** If you don't want a rollover on a Balance, simply leave **Rollover amount** and **Rollover end date** blank. * **Overage surcharge (%)**. Optionally, enter a value for the additional surcharge (in percent) added to bills for overages on the Balance amount: * Note that you can enter a *negative percentage* if you want to give a discount rate for usage to end customers who exceed their Balance amount. * **Overage description**. Optionally, enter a *custom description* to be used for Bill line items for Balance amount overage surcharge. **Tip: Balances overage pricing?** If you are using a tiered pricing structure when pricing Plans, you might want to set up overage pricing bands for **Balance/Prepayment overage pricing**, and instead of using a percentage addition/reduction on the standard pricing for usage. See [Creating Pricing for a Plan](/guides/plans-and-pricing/pricing-plans/pricing-plans#creating-a-pricing-for-a-plan). **Important! Balance Overage surcharge percentage overrides Balance Overage pricing.** If you have set up overage pricing on a tiered pricing structure when pricing a Plan that will apply to billing for the Account and you have *also set up* overage surcharge percentage when creating the Balance for an Account, any overage usage charges on the Account will be billed at the *overage surcharge percentage rate* and the Balance *overage pricing will be ignored*. See [Creating Pricing for a Plan](/guides/plans-and-pricing/pricing-plans/pricing-plans#creating-a-pricing-for-a-plan). 7. If required, add any **Custom fields** to the Balance: * Currently, you cannot create Custom Fields for Balances at the Organization-level, and therefore you cannot reference the Custom Fields values you create for an individual Balance in your calculations. * For more on Custom Fields, see [Adding and Editing Custom Fields](/guides/organization-and-access-management/viewing-and-editing-organization/adding-and-editing-custom-fields). We strongly recommend reviewing [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) before you create and use Custom Fields. 8. Select **Create balance**. You are returned to the **Balances** tab, where the new Balance is listed: Create Balance44 * In this example the new Balance is current and listed under **Active**. * The Balance **Amount** shows as zero and you'll now have to create Transactions for the Balance to add credit or debit amounts to the Balance. See [Creating and Managing Transactions for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances). **Reviewing Account Balances!** When you've set up Balances for an Account, the **Balances** tab offers a very useful summary view with a timeline chart of the active, future, and past Balances Balances on an Account. See [Reviewing Account Balances Summary](/guides/end-customer-accounts/creating-balances-for-accounts/reviewing-account-balances-summary) for more details. 9. If you want to review the details of the Balance, select the **Name** hotlink text. The **Balance details** page opens: Create Balance45 Note that on the **Balance details** card, you can read-off: * The **Current balance amount**. * The billing charge types that can draw-down against the Balance. * The Balance **ID** and **Copy** it directly to your clipboard. 10. Scroll down the page to the **Balance transactions summary** card: Create Balance46 You can quickly check various amounts for a Balance: * **Initial credit amount**. The initial credit amount created for the Balance. * **Total credit amount**. The sum of all credits created for the Balance. * **Total debit amount**. The sum of all debits created for the Balance. * **Balance consumed**. The sum of debits made against the Balance. Note that this amount is dynamic over time until either the Balance end date is reached or the available Balance amount reaches zero, after which it will be unchanged. * **Expired balance amount**. The amount of the Balance remaining at the time the Balance expires and which is not included in any configured Rollover amount. For example, suppose a Balance reaches its end date and \$1000 credit remains unused. If the Balance is configured to rollover \$800, then the **Expired balance amount** is calculated as \$1000 - \$800 = \$200. * **Rollover amount** and **Rollover remaining amount**. * **Rollover consumed**. The sum of debits made against the configured rollover amount. Note that this amount is dynamic over time until either the rollover end date is reached or the cap configured for the rollover amount is reached, after which it will be unchanged. If no rollover is configured for a Balance, then this is ignored. When an Account to which a Balance has been added starts to consume your Products and charges are drawn-down against the Balance, these amount fields are very useful for tracking and managing the Balance. **Next Step?** When you've created a Balance for an end customer Account, you can then create *Transactions* for the Balance to flexibly manage and maintain the Balance amount. See [Creating and Managing Transactions for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances). 11. If you want to edit the Balance's details, select the **Edit** button, make your changes, and click **Update Balance**. 12. Return to the **Balances** tab. 13. If you want to remove a Balance, select the **Delete** button for the Balance: A confirmation popup opens. 14. Select **Yes** to confirm the delete action. * Note that you can also use the **Delete** button at the top of the **Balance details** page. ## Adding Balances to or Removing from Contracts From a *Balance details* page, you can quickly add the Balance to or remove it from a Contract on the Account. This saves you having to open and edit the Balance. **Notes:** * **Adding or Removing Balances from Contract**. Alternatively, you can open the details page of the Contract you want to add a Balance to or remove a Balance from. See [Adding Balances to a Contract](https://docs.m3ter.com/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts#adding-balances-to-a-contract). If you do this, then the **Balance details** page will update accordingly. * **Important: Linking Balance to Contract - ensuring Balance is available for draw-down at billing!** Whether you need to link a Balance on an Account to a Contract is dependent on whether or not an Account Plan on the same Account has been linked to a Contract. For details, see the following section on [Linking Balances to Contracts](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances#linking-balances-to-contracts). **To add a Balance to or remove it from a Contract:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to add a Balance to or remove from a Contract. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Balances** tab. 4. Select the **Name** hotlink text of the Balance. The **Balance details** page opens: * If the Balance has not been added to a Contract, an **Add to contract** button is available. * If the Balance has been added to a Contract, a **Remove from contract** button is available. 5. To add the Balance to a Contract, select **Add to contract**. A **Select contract** modal opens and lists the Contracts created for the Account. 6. Select the Contract you want to add the Balance to and select **Confirm**. The modal closes and the Contract is shown under **Balance details**: Create Balance55 7. To remove a Balance from a Contract, select **Remove from contract**. A confirmation popup appears: Create Balance57 8. Select **Remove** to confirm. The popup closes and the Contract no longer shows under **Balance details**. ## Linking Balances to Contracts - Availability for Draw-Down Linking a Balance to a Contract on an Account is optional. However, if you have linked an Account Plan to a Contract or set up an ad-hoc Charge for the Account and linked the Charge to a Contract and you want to ensure the Balance is available for draw-down against billed charges on the Account - either usage or ad-hoc charges - you must either link the Balance to the same Contract or ensure the Balance is not linked to a Contract. The following table list the consequences for draw-down availability when linking Account Plans or ad-hoc Account Charges and Balances to Contracts: | Account Plan or ad-hoc Charge linked to Contract | Balance Linked to Contract | Balance Available for draw-down | | ------------------------------------------------ | -------------------------- | ------------------------------- | | NO | NO | YES | | Contract A | NO | YES | | NO | Contract A | NO | | Contract A | Contract A | YES | | Contract A | Contract B | NO | **Important: Linking Balances to Contracts on Child Accounts!** If a Contract has been added to a Parent Account, then Balances on any Child Accounts can be linked to that Contract also. ## Reviewing Balance Metadata On the *Balance details* page, you can review a Balance's metadata: * Custom Fields or External Mappings created for the Balance. * Integration runs linked to the Balance. **To review Balance metadata:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to review Balance metadata. The **Account** page opens. 3. Select the **Balances** tab. 4. On the **Balance** panel, select the **Name** text of the Balance you want to review metadata for. The **Balance details** page opens. 5. Scroll down the page to review **Balance metadata**: **Custom fields**. Any Custom fields created for the Balance are listed: Create Balance41 * You can **Copy** the *String* or *Number* value of a Custom Field to your clipboard. See [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) for more details. **External mappings**. Any existing mappings created for the Balance are listed: Create Balance42 * The **External system** and **External table** mapped to are shown - such as **NetSuite - Item** in the above example. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Balance has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. * You can commence a workflow to **Create external mapping** for the Balance directly - see [Creating and Managing External Mappings for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) for an example. **Integration runs**. If you've set up an integration that synchronizes the Balance data with an external system, the date/time and status of the **Latest** integration run are shown. You can use a text hotlink to open details of this latest run or **View all runs**. See [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). ## Balances Draw-Down Order Against Prepayments If you've added Balances and Prepayments as credits on an Account, you can define the order in which these credit amounts are drawn-down for billing the Account. Four options are available for this *credit application order* for Balances against Prepayments: * **Prepayment then balance**. Draw-down against Prepayment credit before Balance credit. Default. * **Balance then prepayment**. Draw-down against Balance credit before Prepayment credit. * **Prepayment only**. Only draw-down against Prepayment credit. * **Balance only**. Only draw-down against Balance credit. You can configure this in two places: * At Organization level as part of your Organization configuration. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * At individual Account level when creating or editing the Account to which the Prepayments and Balances have been added under **Bill settings**. See [Creating an Account](/guides/end-customer-accounts/creating-an-account). * If you configure this at Account level, the Account level setting takes precedence over any setting at Organizational level. **Important!** If the Account belongs to a Parent/Child Account hierarchy, then the **Credit application order** settings are *not available*, and the draw-down order defaults always to Prepayment then Balance order. # Creating and Managing Transactions for Balances Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances When you've created a Balance for an end customer Account, you can then create *Transactions* for the Balance to flexibly manage and maintain the Balance amount. The Balance amount will determine how much credit your customer has available to be drawn-down against any usage or other charges due for the period the Balance is active for the Account - and possibly for longer if you choose to allow rollovers on the Balance amount. When Transactions have been added to an Account Balance, the **Balance transactions** panel on the **Balance details** page in the Console acts as a *ledger* for tracking credit and debit Transactions made against the Balance. This topic explains how to create Transactions for Balances and how to work with the Balance transactions ledger: * [Creating Transactions for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances#creating-transactions-for-balances) * [Working with the Balance Transactions Ledger](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances#working-with-the-balance-transactions-ledger) **Important: Understanding Billing for Balances!** Please review the [Understanding and Managing Billing for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances) topic above before creating Transactions for Balances on your end-customer Accounts. **Note: Transaction Schedules!** As well as creating single Transactions for a Balance, you can set up a *Transaction Schedule* for a Balance on an Account. This allows you to add multiple Transactions of a specific type and amount to a Balance at regular daily, weekly, monthly, or yearly intervals over a specified time period. See [Setting Up Transaction Schedules for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances) for more details. ## Creating Transactions for Balances **Important!** Before you can create a *Transaction* for a Balance on an Account, you must first set up *Transaction Types* for your Organization - see [Creating Transaction Types](/guides/organization-and-access-management/viewing-and-editing-organization/creating-transaction-types). **To create a Transaction for a Balance:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to add a Transaction to a Balance. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Balances** tab. 4. Select the **Name** text of the Balance you want to create a Transaction for. The **Balance details** page opens. The **Balance transactions** panel lists any Transactions that have been created for the Balance. 5. On the **Balance transactions** panel, select **Create balance transaction**. The **Create** page opens. 6. Enter the **Balance transaction details**: * **Transaction type**. Use the drop-down to select the Transaction Type. *(Required)* * **Amount**. The amount of the Transaction. *(Required)* * **Transaction date**. The date the Transaction will be logged for the Balance. (*Optional*). * If omitted, then current date is used. * **Applied date**. The date the Transaction will be applied to the Balance. (*Optional*) * If omitted, then current date is used. * **Description**. A description for the Transaction. (*Optional*) **Warning: You must create at least one Transaction Type for your Organization before you can create a Balance Transaction!** If you haven't, the **Transaction type** drop-down will not be available and you'll see a warning: * Select the **create a new Transaction Type** hotlink text provided. This takes you directly to the **Create** page to create the Transaction Type you want to use for the Balance Transaction. See [Creating Transaction Types](/guides/organization-and-access-management/viewing-and-editing-organization/creating-transaction-types). * When you create the new Transaction Type, you are taken directly back to the **Create** Balance Transaction page and the Transaction Type is selected. 7. If the amount billed to the end customer will differ from the Transaction amount or the currency of payment differs from the currency defined for the Balance, you can optionally use the **Balance transactions settings** panel to enter: * **Currency**. The currency in which payment was made. * **Amount**. The payment amount. This allows you to record the fact that an end customer has been credited for a Balance amount using another currency/amount. Examples - you might have agreed with one of your end customers: * To credit a Balance on their Account in the amount of \$200 USD and the end customer will then be billed for a payment in virtual currency credits of X amount. * To credit a Balance on their Account in the amount of \$200 USD and the end customer will then be billed for a payment of £100 GBP for that credit. * To credit a Balance on their Account in the amount of \$200 USD and the end customer will then be billed for a discounted payment of \$195 USD for that credit. 8. Select **Create balance transaction**. You are returned to the **Balance details** page where the new Transaction has been added to the Balance. 9. If you want to add further Transactions of different types to a Balance, repeat steps **5** to **8**: Create Balance47 The **Transactions** panel provides a ledger for the Balance. In this example: * We've manually added three credit Transactions of different amounts to a Balance. Note that the Transaction for \$100 USD credit amount will be billed to the end customer in the amount of £55 GBP. * There is a fourth debit Transaction, which shows an amount billed against the Account was drawn-down against the Balance. * **Source**. Note that in each case the **Source** column in the Transactions ledger identifies who or what was responsible for the Transaction being added - such as a **User** or **Bill**. * Note that if a Transaction is generated by a Transaction Schedule you've set up for a Balance, then the **Source** will be identified as: ***\*** (Scheduler). See [Setting Up Transaction Schedules for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances). For further details on working with the Transactions panel ledger, see the [following section](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances#working-with-the-balance-transactions-ledger). ## Working with the Balance Transactions Ledger The **Balance transactions** panel on the **Balance details** page provides a *ledger* for tracking credit and debit Transactions for the Balance, including billed amounts drawn-down against the Balance: Create Balance48 You can read-off details of each Transaction: * **Transaction date**. The date the Transaction was logged for the Balance. * **Applied date**. The date of application of the Transaction amount against the Balance. * Note that in the case of a manual Transaction - such as when an Organization User adds a top-up credit amount to an Account Balance, the **Transaction date** and the **Applied date** will often coincide. However, in cases such as billed amount debit draw-down against the Balance, these dates often differ. In the above example, the **Applied date** for the billing draw-down item is the date of the Bill responsible for the draw-down against the Balance. * **Description**. The *description entered* for the specific Transaction of that type. * **Transaction type**. * **Source**. The source of the Transaction: * If a manually credited/debited Transaction, this is shown as Organization **User**. * If a billing Transaction, this is shown as **Bill** with a hotlink text link allowing you to open the Bill responsible. * If a Transaction is generated by a Transaction Schedule you've set up for a Balance, then the **Source** will be identified as: ***\*** (Scheduler). See [Setting Up Transaction Schedules for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances). * **Amount**. The Transaction credit/debit amount, * **Balance**. Shows the running total for the Balance as credit or debit Transactions are registered against the Balance amount. # Creating Charges for Balances Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances You can create *Charges* for Balances to create single, one-off line items for Balance billing. Charges for Balances are: * Created for either debit or credit amounts. * Linked to a Product for accounting purposes. * Optionally linked to a Contract. * Given a specific date for billing. * When a bill job has run for the specified Charge bill date, a Charge appears as a *Balance fee* line item on the Bill. * Assigned a service period. * Available in any currency defined for your Organization. When you set up a Charge for a Balance, a *separate Bill* is created for the specified Charge billing date for the Account the Balance belongs to. If other billing charge types are due on the Account on that date, the Balance charge can be consolidated with those other charge types in a single Bill, and you'll have to set up consolidated billing if you don't want separate Balance Charge billing. See [Running and Viewing Bills for Balance Charges](/guides/end-customer-accounts/creating-balances-for-accounts/runnning-viewing-bill-for-balance-charges) for details. This topic explains how to create and manage Charges for Balances: * [Creating Balance Charges](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances#creating-balance-charges) * [Viewing Balance Charge Details](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances#viewing-balance-charge-details) * [Editing and Deleting Balance Charges](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances#editing-and-deleting-balance-charges) **Notes:** * **Charge Schedules!** You can set up a *Charge Schedule* for a Balance on an Account. This allows you to generate multiple Charges against a Balance at regular daily, weekly, monthly, or yearly intervals over a specified time period. See [Setting Up Charge Schedules for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances) for more details. * **Running and Viewing Bills for Balance Charges?** You can run billing for an Account that has a Balance with a Charge on it and check the billed amount and date. See [Running and Viewing Bills for Balance Charges](/guides/end-customer-accounts/creating-balances-for-accounts/runnning-viewing-bill-for-balance-charges) for more details. ## Creating Balance Charges You can create a one-off Charge for a Balance from the Balance details page. **To create a Balance Charge:** 1. Select **Accounts**. The **Accounts** page opens. 2. In the Accounts listing, search for and select the **Name** text of the Account with the Balance you want to create a Charge for. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Balances** tab. 4. Select the **Name** hotlink text of the Balance you want to create a Charge for. The **Balance details** page opens. 5. Scroll down to the **Balance charges** panel and select **Create balance charge**. The **Create** page opens. 6. Complete **Balance charge details**: * **Name**. *(Required)* * **Code**. *(Required)* * **Currency**. Use the drop-down list to select the currency you want to use for the Charge. *(Required)* * **Amount**. Enter the Charge amount. *(Required if Units/Unit price not provided)* * **Units** and **Unit price**. Enter if you haven't entered an **Amount**. At billing, the Charge amount will be calculated as the number of **Units** multiplied by the **Unit price**. *(Required if Amount not provided)* **Warning!** You cannot *provide both* an **Amount** and **Units/Unit price**. * **Service period start date (inclusive)** and **Service period end date (exclusive)**. Use the calendar pop-ups to define a service period for the Charge. *(Required)* * **Bill date**. Enter the date the Charge will be billed against the Balance. *(Optional)* * You can omit a specific date for billing the Charge in cases where you want to create the Charge against the Balance but the exact date it will be billed is not yet determined. 7. Enter optional **Balance charge settings**: * **Accounting product**. For accounting purposes, select a Product to link the Charge *Balance fee* line item on the Bill to. *(Optional)* * Note that if you omit an **Accounting product** for a Balance Charge, the **Fees accounting product** defined for the Balance is used. * **Contract**. Use this if you want to add the Balance Charge to a Contract on the Account. For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts). *(Optional)* * **Description**. Enter a *custom description* that will appear for the bill line item for the Charge. (*Optional*) * Note that if you leave this blank, a *default description* will be used: **Balance fee charge**. * **Notes**. Use this to enter any notes for the Balance Charge. These will not appear on any Bills, but can be referred to for audit purposes. *(Optional)* In this example a **Charge** will be created against the Balance for a connection service fee of \$75: * A service period of one day - April 15th - is defined to allow for connection testing for a new service setup. * The **Charge** will be billed the same day - April 15th. 8. Select **Create balance charge**. You are returned to the **Balance details** page and the Charge is listed on the **Balance charges** panel: Note that: * You can read-off the **Source** of a Balance Charge: * **User** - when an Organization User has created the Charge and as shown in the above example. * When the Charge results from a Charge Schedule, then the **Source** will be identified as: ***\*** (Scheduler), such as Charges listed in the following example: * When the Bill for a Balance Charge has been generated, this will be shown in the **Bill** column and you can open the Bill directly: ## Viewing Balance Charge Details When you've created Charges for an Account Balance, you can open to review Balance Charge details in two ways: * From the Account's **Balances** tab. * From the Account's **Charges** tab. **To view Balance Charge details:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account that the Balance belongs to. The **Account details** page opens. 3. Select the **Balances** tab. 4. Select the **Name** text hotlink of the Balance. The **Balance details** page opens. 5. Scroll down the **Balance details** page and on the **Balance charges** panel, select the **Name** text hotlink of the Charge you want to review. The **Balance charge details** page opens: Balance Charge11 You can review and check the details for the Balance Charge: * Read-off the **Service period** and **Bill date**. * If a Bill for the Charge has been generated, use a text hotlink to open the **Bill**. * Use a text hotlink to open the **Balance** the Charge is for. * Use a text hotlink to open the **Accounting product** for the Charge. * Copy the **ID** of the Charge directly to your clipboard. 6. Alternatively, on the **Account details** page, select the **Charges** tab. Both ad-hoc Charges created for the Account and Charges created for Account Balances are listed. 7. Select **Balance charges** to filter the **Charges** list: Balance Charge10b 8. Select the **Name** hotlink text to open the **Balance charge details** page. ## Editing and Deleting Balance Charges **To edit or delete a Balance Charge:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account that the Balance belongs to. The **Account details** page opens. 3. Select the **Balances** tab. 4. Select the **Name** text hotlink of the Balance. The **Balance details** page opens. 5. If you want to edit a Balance Charge, on the **Balance charges** panel select the edit icon: The **Edit** page opens. 6. Make the required editing changes and select **Update balance charge**. Your updates are saved and you are returned to the **Balance charges** tab. 7. If you want to delete a Balance Charge, select the **Delete** icon: A confirmation popup appears 8. Select **Yes** to confirm and complete the deletion. **Note: Deleting Billed Charges?** If a Bill for a Balance Charge has already been generated, you won't be able to delete the Charge and an error message will show. You must first delete any Bills generated for a Balance Charge before attempting to delete it. # Reviewing Account Balances Summary Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/reviewing-account-balances-summary An Account's *Balances* tab offers a helpful summary of the Balances created for the Account over time where you can quickly review key details for each Balance and their timelines. **To review Account Balances Summary:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account you want to review the Balances summary for. The **Account details** page opens. 3. Select the **Balances** tab: Create Balance50 On review for this example: * The Account has two currently **Active** Balances, two **Past** Balances, and one **Future** Balance. * The **Remaining total** is given for the currently **Active**, **Future**, and **Past** Balances. 4. On the **Timeline** chart, you can use the paging arrows to move backwards or forwards in time to review **Past** Balances: Create Balance51 or **Future** Balances: Create Balance52 * Note that you can also scroll the **Timeline** chart for Balances on an Account. 5. If you want to review further details of a Balance select it in the **Timeline** chart to open the **Balance details** page: Create Balance53 6. Also provided is a detailed view of the **Active**, **Future**, and **Past** Balances for an Account. In the current example, the **Active**: Create Balance54 You can quickly check: * The period configured for a Balance: * For **Active** Balances, the percentage of the period to date, and the number of days remaining. * For **Future** Balances, that the period sits at zero percentage and the number of days before the period starts. * For **Past** Balances, that the period is has reached 100% and the number of days elapsed since the period ended. * Any **Contract** the Balance has been linked to. * The **Draw-down products** configured for the Balance. 7. If you want to review further details of a Balance, select the name hotlink text to open the **Balance details** page. # Running and Viewing Bills for Balance Charges Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/runnning-viewing-bill-for-balance-charges You can run billing for an Account that has a Balance with a Charge on it and check the billed amount and date. How Bills are generated for Accounts with Balance Charges depends on whether or not you have selected to consolidate Bills for your Organization: * **Separate Bills for Charges**. If you *haven't selected to consolidate Bills* for your Organization, you can run billing for an Account for the Balance Charge bill date and generate a *separate Bill* for the Charge. * Note that in this case, even if the Balance Charge bill date coincides with a regular billing date set up for the Account - such as the first of a month for an Account on a monthly billing frequency with billing dates of the first day of month - the Balance Charge *will not appear* on the regular monthly Bill covering other charge types due against the Account, such as usage charges, and a separate Bill is generated. * **Consolidated Bills for Charges**. If you *have selected to consolidate Bills* for your Organization and the Balance Charge bill date coincides with a regular bill date set up for the Account, then the Balance Charge *will appear* on the regular monthly Bill covering other charge types due against the Account, such as usage charges. * Note that in this case, if the Balance Charge bill date doesn't coincide with one of the Account's regular billing dates, you can generate a separate bill for the Balance Charge by running billing for the specific Charge bill date. This topic gives some examples to show how to generate Bills for Account with Balance Charges: * [Viewing Separate Bills for Balance Charges](/guides/end-customer-accounts/creating-balances-for-accounts/runnning-viewing-bill-for-balance-charges#viewing-separate-bills-for-balance-charges) * [Viewing Consolidated Bills for Balance Charges](/guides/end-customer-accounts/creating-balances-for-accounts/runnning-viewing-bill-for-balance-charges#viewing-consolidated-bills-for-balance-charges) ## Viewing Separate Bills for Balance Charges **To view separate Bills for Balance Charges:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account with the Balance Charge you want to view the Bill for. The **Account details** page opens. 3. Select the **Bills** tab. 4. On the **Bills** panel, select **Run billing**. The **Run billing** modal opens. 5. On the **Run billing** modal: * For **Invoice date**, select the **Bill date** defined for the Balance Charge. * For **Bill frequency**, select **Ad hoc**. * For **Target currency**, select the **Currency** configured for the Balance charge: 6. Select **Run billing**. The Bill for the Balance Charge is generated and is listed on the **Bills** panel: 7. Select the **Reference** text hotlink for the Bill. The Bill opens in **Bill management**: Balance Charge12 In this example, we've run billing for the Balance Charge example created in the [Creating Charges for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances#creating-balance-charges) topic, which was in the amount of \$75 and had a Bill date of April 15th 2025. When the Bill is opened: * The Charge line item **TYPE** is shown as **Balance fee**. * Although we configured an Amount for the Charge, this is shown for the Bill line item as **NO. OF** **UNITS** = **1** and as a **UNIT PRICE** = **Amount**. * If you expand the Charge line item, a **Balance** text hotlink opens the **Balance details** page. * You can use either of two text hotlinks to open the **Balance charge details** page: * A **DESCRIPTION** hotlink text for the Charge line item. * If you expand the Charge line item, a **Balance charge** hotlink text. * The **Product** shown for the **Balance fee** line item is the **Accounting product** selected for the Balance Charge: **Revive Graph Standard**. If required, you can use the Display options menu to group line items by Accounting Product: 8. If the Balance Charge has been generated for a Charge Schedule you've set up for the Balance, you can follow the same steps and use the **Run billing** modal using the **billing date** for the scheduled Charge: Balance Charge13 In this example, we've run billing for a \$50 Balance Charge generated under a Charge Schedule and dated May 1st 2025: * The line item **TYPE** is shown as **Balance fee**. * Text hotlinks allows you to open: * The **Balance details** page. * The **Balance charge details** page. * The **Accounting Product** page. **Note: Charges for Accounts?** You can also create Charges for Accounts. If you've done this and the Account Charge bill date is the same as the Balance Charge bill date and you run billing on the Account for the joint bill date for Ad hoc frequency, then the *Ad-hoc* line item for the Account Charge will also appear on the Bill. See [Viewing Bills for Account Charges](/guides/end-customer-accounts/creating-charges-for-accounts#viewing-bills-for-account-charges). ## Viewing Consolidated Bills for Balance Charges In the following example, we have an Account set up for monthly billing frequency in arrears and the billing cycle date for the first and subsequent billing as March 1st 2025. The Account has a Balance on it and a Charge of \$150 has been created for the Balance with a Bill date of April 1st 2025, which coincides with the second monthly bill for the Account. **Important: Switch on Consolidated Bills for Organization!** If you want to show Balance Charges line items on the same Bills as other line item types - such as usage charges set up to be billed at monthly frequencies - you must switch on the **Consolidate bills** setting on in your Organization configuration. This will ensure different billing frequencies are consolidated into the same Bill. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) for more details. **To view consolidated Bills for Balance Charges:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account the Balance with the Charge belongs to. The **Account details** page opens. 3. Select the **Bills** tab. 4. On the **Bills** panel, select **Run billing**. The **Run billing** modal opens. 5. On the **Run billing** modal: * For **Invoice date**, select the regular billing date which the Balance Charge bill date coincides with - for the current example, April 1st 2025. * For **Target currency**, select the **Currency** configured for the ad-hoc charge. * Note that because **Consolidating bills** is enabled, charges for all billing frequencies will be shown on the generated Bill and there is no option to select a **Bill frequency** on the **Run billing** modal. 6. Select **Run billing**. The Bill for the selected date is generated and listed on the **Bills** panel: 7. Select the **Reference** text hotlink for the Bill. The Bill opens in **Bill management**: Balance Charge14 In this example of a consolidated Bill: * The Balance fee line item for the Balance Charge is shown under the Balance the Charge was created for. * Line items for **Usage** charges that have accrued during March and a monthly **Standing charge** are also shown under the **Revive Graph Standard** Product. # Setting Up Charge Schedules for Balances Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances You can set up a *Charge Schedule* for a Balance on an Account. This allows you to generate Charges for billing a Balance at regular daily, weekly, monthly, or yearly intervals over a specified time period. This topic explains how to set up and manage Charge Schedules for your Account Balances: * [Creating Balance Charge Schedules](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances#creating-balance-charge-schedules) * [Reviewing Balance Charge Schedules](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances#reviewing-balance-charge-schedules) * [Viewing and Managing Scheduled Charges for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances#viewing-and-managing-scheduled-charges-for-balances) **Note: Balance Charge Schedules in Beta Release!** Please note that the Balance Charge Schedules feature is currently available only in Beta release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Beta release definition. **Notes:** * **One-Off Charges!** You can create one-off Charges for a Balance on an Account. See [Creating Charges for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances) for more details on creating one-off Charges and on using Balance Charges. * **Running and Viewing Bills for Balance Charges?** You can run billing for an Account that has a Balance with a Charge on it and check the billed amount and date. See [Running and Viewing Bills for Balance Charges](/guides/end-customer-accounts/creating-balances-for-accounts/runnning-viewing-bill-for-balance-charges) for more details. ## Creating Balance Charge Schedules **To create a Charge Schedule for a Balance:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account with the Balance you want to set up a Charge Schedule for. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Balances** tab. 4. Select the **Name** text of the Balance. The **Balance details** page opens. 5. On the **Balance charges** panel, select **Create charge schedule**. * Alternatively, scroll down the page and on the **Active and pending balance schedules** panel select **Create charge schedule**. The **Create** page opens. 6. Enter the **Balance charge schedule details**: * **Name**. *(Required)* * **Code**. *(Required)* * **Currency**. Use the drop-down list to select the currency you want to use for the Charge Schedule. *(Required)* * **Amount**. Enter the amount for Charges generated for the Schedule. *(Required if Units/Unit price not provided)* * **Units** and **Unit price**. **Units** and **Unit price**. Enter if you haven't entered an **Amount**. At billing, the Charge amount will be calculated as the number of **Units** multiplied by the **Unit price**. *(Required if Amount not provided)* * Note that you cannot *provide both* an **Amount** and **Units/Unit price**. * **Service period start date (inclusive)** and **Service period end date (exclusive)**. Use the calendar pop-ups to define a service period for the Charge Schedule. *(Required)* 7. Enter billing options: * **Bill frequency**. Specify the daily, weekly, monthly, or yearly intervals for when Bills for Charges against the Balance under the Schedule are generated for the Account. Default setting is every month. *(Required)* * **Billing cycle date**. Optional setting, which sets the date when the first Bill is created for Balance Charges under the Schedule, and also acts as a reference for when in the Schedule period subsequent bills are created: * For example, suppose the Charge Schedule is configured for monthly billing frequency and a time period of a calendar year of February 1st to February 1st. You then set a **Billing cycle date** of February 15th. The first Bill will be created for the Balance Charge under the Schedule Account on February 15th, and subsequent Bills created on the 15th of the months following for the remainder of the period - March 15th, April 15th, and so on. * If you leave this blank, then Epoch dates from your Organization's configuration will be used as the **Billing cycle date** instead. * **Charge billing**. Select to have Charges billed in arrears or in advance. *(Required)* * **Bill in arrears (end of each billing period)** Default setting. * **Bill in advance (start of each billing period)** * **Charge description**. Enter a description used for Bill line items for Charges billed against the Balance under the Schedule. (*Required*) In this example, a Charge Schedule for a Balance is set up for generating Charges of \$100 against the Balance for billing at monthly intervals in arrears throughout the defined time period for the schedule: * The first Charge will be generated for the Balance on April 1st 2025, and then on the 1st of every month following throughout the defined Charge Schedule time period. 8. If you want to check the Charges that will be created for the Balance under the Charge Schedule configuration, expand the **Balance charge schedule preview**. 9. If required, add any **Custom fields** to the Charge Schedule: * Currently, you cannot create Custom Fields for Charge Schedules at the Organization-level, and therefore you cannot reference the Custom Fields values you create for an individual Charge Schedule in your calculations. * For more on Custom Fields, see [Adding and Editing Custom Fields](/guides/organization-and-access-management/viewing-and-editing-organization/adding-and-editing-custom-fields). We strongly recommend reviewing [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) before you create and use Custom Fields. 10. Select **Create balance charge schedule**. You are returned to the **Balance details** page where the new Charge Schedule is listed on the **Active and pending balance schedules** panel under **Active and pending balance charge schedules**: 11. If you want to edit the Charge Schedule, select the **Edit** button: 12. Make your changes, and click **Update balance charge schedule** and return to the **Active and pending balance schedules** panel. 13. If you want to remove a Charge Schedule, select the **Delete** button: A confirmation popup opens. 14. Select **Delete** to confirm. ## Reviewing Balance Charge Schedules You can review the Charge Schedules you've set up for a Balance. **To review Charge Schedules for a Balance:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account with the Balance you want to review Charge Schedules for. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Balances** tab. 4. Select the **Name** text of the Balance. The **Balance details** page opens. 5. Scroll down the page and on the **Active and pending balance schedules** panel any Charge Schedules set up for the Balance will be listed under **Active and pending balance charge schedules**. 6. Select the **Name** hotlink text of the Charge Schedule you want to review. The **Balance charge schedule details** page opens: Balance Charge Schedule13 On the **Balance charge schedule details** card, you can: * Read-off the Charge Schedule **ID**, and copy it directly to your clipboard. * Check at-a-glance the **Next/Previous charge generation dates** under the schedule. 7. Use the **Scheduled balance charges** card to review a list of the Charges already generated for the Balance to date: * Note that the Charge for the current billing service period - in this example for the January 1st Bill - is generated in advance to allow for scheduling billing. 8. Scroll down the page and expand the **Balance charge schedule preview** card. Note that you can scroll and page the list to review the entire series: **Note: Viewing Recently Created Balance Charge Schedule Details!** The Scheduler service runs every hour, approximately a few minutes after the hour. If you have only very recently - within the past hour - created a Balance Charge Schedule with a start date in the past: * The **Scheduled balance charge** card *might remain empty*. When the Scheduler service next runs, the **Scheduled balance charge** card will refresh automatically and show any Charges generated for past dates under the Schedule. * The **Balance schedule charge preview** card *might show* *all Charges*, including past ones. When the Scheduler service next runs, the **Balance schedule charge preview** card will refresh automatically and show only future Charges due under the Schedule. 9. Scroll further down the page and you can review **Balance charge schedule metadata**: * **Custom Fields**. Any Custom Fields created for the Charge Schedule are listed: Balance Charge Schedule14 * You can **Copy** the *String* or *Number* value of a field to your clipboard. See [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) for more details. 10. Return to the **Balance details** page. If a Balance has multiple Charge Schedules set up, from the **Active and pending transaction schedules** panel you can select to **View all**: The **Balance charge schedules** page opens: From this page, you can review all Charge Schedules set up for a Balance and: * Create a new Charge Schedule for the Balance. * Select the **Name** hotlink text to open an existing Charge Schedule and review its details. ## Viewing and Managing Scheduled Charges for Balances When you have set up a Charge Schedule for a Balance and Charges have been generated for the Schedule, you can review specific Charge details and manage these Charges: * [Reviewing Scheduled Charge Details](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances#reviewing-scheduled-charge-details) * [Editing and Deleting Scheduled Charges](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances#editing-and-deleting-scheduled-charges) ### Reviewing Scheduled Charge Details **To review Scheduled Charge details:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account with the Balance you want to review Scheduled Charges for. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Balances** tab. 4. Select the **Name** text of the Balance. The **Balance details** page opens. 5. Scroll down the page and on the **Balance charges** card, any Charges created for the Balance - either one-off Charges or Scheduled Charges are listed: In this example of a Balance we set up a Charge Schedule for in the [previous section](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances#creating-charge-schedules-for-balances), we can see: * There is a single one-off Charge. * To date, four scheduled Charges have been generated. Note that: * The **Name** for a scheduled Charge is the name of the Charge Schedule with the date of the Charge appended. * The **Source** for each Charge is clearly identified as **(Scheduler)** with a hotlink text for the Charge Schedule also provided. 6. Select the **Name** hotlink text of the scheduled Charge you want to review details for. * Alternatively, on the **Balance details** page scroll down to the **Active and pending balance schedules** card and under **Active and pending balance charge schedules**, select the **Name** hotlink text of the Charge Schedule you want to reviewing Charges for. The **Charge schedule details** page opens. * On the **Scheduled balance charges** card select the scheduled Charge **Name** hotlink text: The **Balance charge details** page opens: Balance Charge Schedule15 You can review and check the details scheduled Charge generated for the Balance: * Read-off the **Service period** and **Bill date**. * If a Bill for the scheduled Charge has been generated, use a text hotlink to open the **Bill**. * Use a text hotlink to open the **Balance** the scheduled Charge is for. * Use a text hotlink to open the **Balance charge schedule** for the Charge. * Copy the **ID** of the scheduled Charge directly to your clipboard. ### Editing and Deleting Scheduled Charges **To edit or delete a Scheduled Charge for a Balance:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account that the Balance belongs to. The **Account details** page opens. 3. Select the **Balances** tab. 4. Select the **Name** text hotlink of the Balance. The **Balance details** page opens. 5. If you want to edit a scheduled Charge, on the **Balance charges** panel select the edit icon: The **Edit** page opens. 6. Make the required editing changes and select **Update balance charge**. Your updates are saved and you are returned to the **Balance charges** tab. 7. If you want to delete a scheduled Charge, select the **Delete** icon: A confirmation popup appears 8. Select **Delete** to confirm. # Setting Up Transaction Schedules for Balances Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances You can set up a *Transaction Schedule* for a Balance on an Account. This allows you to generate Transactions of a specific type for a Balance at regular daily, weekly, monthly, or yearly intervals over a specified time period. This topic explains how to set up and manage Transaction Schedules for your Account Balances: * [Creating Transaction Schedules for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances#creating-transaction-schedules-for-balances) * [Reviewing Transaction Schedules for a Balance](/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances#reviewing-transaction-schedules-for-a-balance) **Note: Balance Transaction Schedules in Beta Release!** Please note that the Balance Transaction Schedules feature is currently available only in Beta release version. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Beta release definition. ## Creating Transaction Schedules for Balances **To create a Transaction Schedule for a Balance:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account with the Balance you want to set up a Transaction Schedule for. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Balances** tab. 4. Select the **Name** text of the Balance. The **Balance details** page opens. 5. On the **Balance transactions** panel, select **Create transaction schedule**. * Alternatively, scroll down the page and on the **Active and pending balance schedules** panel select **Create transaction schedule**. The **Create** page opens. 6. Enter the **Balance transaction schedule details**: * **Name**. *(Required)* * **Code**. *(Required)* * **Transaction type**. Use the drop-down to select the Transaction Type. *(Required)* * **Amount**. The amount of each Transaction created for the Balance under the schedule. *(Required)* * **Start date (inclusive)** and **End date (exclusive)**. Use the calendar pop-ups to set start and end dates/times to define a time period for the Transaction Schedule. *(Required)* * **Frequency**. Specify the daily, weekly, monthly, or yearly intervals for when Transactions are generated for the Balance throughout the defined time period. Default setting is every month. *(Required)* In this example, a Transaction Schedule is set up for monthly Transactions of \$100 to be created for the Balance throughout the defined time period for the schedule: Balance Schedule16 * The first Transaction will be created March 1st 2026, and then one on the 1st of each month following with a final Transaction created on March 1st 2027, a total of 13. Note that since the end date defined for the Schedule of April 1st 2027 is *exclusive*, a Transaction *will not be created* on that date. **Warning: You must create at least one Transaction Type for your Organization before you can create a Balance Transaction Schedule!** If you haven't, the **Transaction type** drop-down will not be available and you'll see a warning: * Select the **create a new Transaction Type** hotlink text provided. This takes you directly to the **Create** page to create the Transaction Type you want to use for the Balance Transaction Schedule. See [Creating Transaction Types](/guides/organization-and-access-management/viewing-and-editing-organization/creating-transaction-types). * When you create the new Transaction Type, you are taken directly back to the **Create** page and the Transaction Type is selected. 7. If the amount to be paid differs from the Transaction or the currency of payment differs from the currency defined for the Balance you can optionally use the **Balance transactions settings** panel to enter: * **Currency**. The currency in which payment was made. * **Amount**. The payment amount. This allows you to record the fact that an end customer has been credited for a Balance amount using another currency/amount. For example, you might credit an end customer in the amount of 200 USD for a payment they've made in virtual currency credits of X amount. 8. If you want to check the transactions that will be created for the Balance under the Transaction Schedule configuration, expand the **Balance transaction schedule preview** card. 9. If required, add any **Custom fields** to the Transaction Schedule: * Currently, you cannot create Custom Fields for Transaction Schedules at the Organization-level, and therefore you cannot reference the Custom Fields values you create for an individual Transaction Schedule in your calculations. * For more on Custom Fields, see [Adding and Editing Custom Fields](/guides/organization-and-access-management/viewing-and-editing-organization/adding-and-editing-custom-fields). We strongly recommend reviewing [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) before you create and use Custom Fields. 10. Select **Create balance transaction schedule**. You are returned to the **Balance details** page where the new Transaction Schedule is listed on the **Active and pending balance schedules** panel under **Active and pending balance transaction schedules**: Balance Schedule17 11. If you want to edit the Transaction Schedule, select the **Edit** button: 12. Make your changes, and click **Update balance transaction schedule** and return to the **Active and pending balance schedules** panel. 13. If you want to remove a Transaction Schedule, select the **Delete** button: A confirmation popup opens. 14. Select **Yes** to confirm the delete action. ## Reviewing Transaction Schedules for a Balance You can review the Transaction Schedules you've set up for a Balance. **To review Transaction Schedules for a Balance:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account with the Balance you want to review Transaction Schedules for. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Balances** tab. 4. Select the **Name** text of the Balance. The **Balance details** page opens. 5. Scroll down the page and on the **Active and pending balance schedules** panel any Transaction Schedules set up for the Balance will be listed under **Active and pending balance transaction schedules**: Balance Schedule18 6. Select the **Name** hotlink text of the Transaction Schedule you want to review. The **Balance transaction schedule details** page opens: Balance Schedule19 Note that on the **Balance transaction schedule details** card, you can: * Read off the Transaction Schedule **ID**, and copy it directly to your clipboard. * Check at-a-glance the **Next/Previous transaction generation dates** under the schedule. 7. Use the **Scheduled balance transactions** card to review a list the Transactions already generated for the Balance to date. 8. Scroll down the page and expand the **Balance transaction schedule preview** card. Note that you can scroll and page the list to review the entire series: Balance Schedule23 **Note: Viewing Recently Created Balance Transaction Schedule Details!** The Scheduler service runs every hour, approximately a few minutes after the hour. If you have only very recently - within the past hour - created a Balance Transaction Schedule with a start date in the past: * The **Scheduled balance transaction** card *might remain empty*. When the Scheduler service next runs, the **Scheduled balance transaction** card will refresh automatically and show any Transactions generated for past dates under the Schedule. * The **Balance schedule transaction preview** card *might show* *all Transactions*, including past ones. When the Scheduler service next runs, the **Balance schedule transaction preview** card will refresh automatically and show only future Transactions due under the Schedule. 9. Scroll further down the page and you can review **Balance transaction schedule metadata**. * **Custom fields**. Any Custom Fields created for the Transaction Schedule are listed: Balance Schedule12 * You can **Copy** the *String* or *Number* value of a field to your clipboard. See [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) for more details. 10. Return to the **Balance details** page. If a Balance has multiple Transaction Schedules set up, on the **Active and pending transaction schedules** panel you can select to **View all**: Balance Schedule21 The **Balance transaction schedules** page opens: Balance Schedule22 From this page, you can review all Transaction Schedules set up for a Balance and: * Create a new Transaction Schedule for the Balance. * Select the **Name** hotlink text to open an existing Transaction Schedule and review its details. # Understanding and Managing Billing for Balances Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances Before setting up Balances for your end-customer Accounts, we *strongly recommend* that you review this topic, which explains in details how charges are drawn-down against Balance amounts for billing purposes: * [Understanding Charges Draw-Down against Balances for Billing](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#understanding-charges-draw-down-against-balances-for-billing) Secondly, if you intend to use both Prepayments and Balances on your end-customer Accounts, *please review* this section on how to control the draw-down order against them for billing: * [Balances Draw-Down Order Against Prepayments](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#balances-draw-down-order-against-prepayments) ## Understanding Charges Draw-Down Against Balances for Billing When you create Balances for an end customer Account, it's important to know how the Balance amounts are handled for billing purposes: * [Draw-Down Charge Types](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#draw-down-charge-types) * [Balance Active Period](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#balance-active-period) * [Balance Consumption](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#balance-consumption) * [Balance Transactions Ledger](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#balance-transactions-ledger) * [Multiple Balances on Account](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#multiple-balances-on-account) * [New Unified Balance Drawdown](#new-unified-balance-drawdown) * [Balances in Parent/Child Account Hierarchy](#balances-in-parent-child-account-hierarchy) * [Period for Charges Draw-Down](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#period-for-charges-draw-down) ### Draw-Down Charge Types A Balance amount on an Account can be applied to Bills that contain any of the following charge types and made available for draw-down: * **Usage** * **Standing Charge** * **Minimum Spend** * **Recurring Charges**: * **Counter running total charge** * **Counter adjustment debit** **Notes:** * **Controlling the charge types for draw-down?** When you create or edit a Balance, you can select the charge types you want to be made available for draw-down against the Balance. If you select none, then by default all are made available for draw-down against the Balance. * **Balance and Prepayments on an Account?** If you have both Balances and Prepayments added to an end-customer Account, then you can specify the order in which charges are drawn-down against them. See the [following section](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#balances-draw-down-order-against-prepayments) for details. ### Balance Active Period For billing purposes, usage, standing charges, minimum spend, or recurring charges on an Account with a Balance can only be drawn-down against the Balance amount for the period the Balance is *active for the Account*. * Importantly, note that if you create a Balance on an Account and the Balance is active for only *part of the normal billing period* set up for the Account, then only the charges for usage, standing charge, minimum spend or recurring charges that are due for *the period the Balance is active* will be drawn down against the Balance, not charges due for the entire normal billing period for the Account * You can also optionally define a rollover or grace period, with a restricted rollover amount specified, to allow any unused Balance amounts to continue to be drawn-down against for billing purposes beyond the defined active period for the Balance. See the [following section](#period-for-charges-draw-down) for details. ### Balance Consumption When applied to a Bills, the Balance amount will be drawn down until it is fully consumed: * **First and subsequent Bills**. If the Balance amount is greater than the first Bill amount and the Balance remains active for some or all of the following billing periods, the remaining Balance amount will be applied to subsequent bills. * **Draw-down applied to Bill line items is proportional to usage**. If an Account Bill contains several line items each of which is eligible to draw-down against a Balance on the Account, then the Balance amount is allocated proportionally against each line item: * For example, if the Account Balance amount is \$20 and the Bill contains three line items in the amount of \$30, \$35, and \$35 for a total Bill of \$100, the entire Balance amount of \$20 is not simply used for draw-down against the first line item. The \$20 is distributed proportionally for draw-down across all three line items: the first line item gets 30% of \$20, the second gets 35% of \$20, and the third gets 35% of \$20. * This method of draw-down in also applied if the Account has multiple Balances available for draw-down at billing. However, the rule that the Balance that expires first will be applied first - see below [Multiple Balances on Account](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#multiple-balances-on-account). * **Linking Balances to Contracts**. Linking a Balance to a Contract on an Account is optional. However, if you have linked an Account Plan to a Contract or set up an ad-hoc Charge for the Account and linked the Charge to a Contract and you want to ensure the Balance is available for draw-down against billed charges on the Account - either usage or ad-hoc charges - you must either link the Balance to the same Contract or ensure the Balance is not linked to a Contract. See [Linking Balances to Contracts](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances#linking-balances-to-contracts) for more details. ### Balance Transactions Ledger Each Transaction that makes up the Balance, for example, an addition of credit, consumption of credit against a Bill, or adjustment of credit, are all recorded against a *ledger*, so that a complete record of all Transaction movements is known. The **Balance transactions** panel on a **Balance details** page acts as a ledger. For example, if a Bill draws-down against a Balance for charges due on the Account during the Balance active period, then this will automatically show as a Bill Transaction with a link out to view the Bill. See [Working with the Balance Transactions Ledger](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances#working-with-the-balance-transactions-ledger) for more details. ### Multiple Balances on Account You can set up multiple Balances for a single Account. If you do this, there are some key points to note: * **Draw-down order**. If you have created more than one Balance for an Account, the order in which Balances are drawn-down against is determined by Balance end date - the Balance with the earlier end date is draw-down against first. * Importantly, please note that if you've set up multiple Balances on an Account and a Balance has a *Rollover end date* defined, then *this date will be used instead of the Balance end date* for the purpose of determining the draw-down order. * For cases where Balances have exactly the same end date (and this includes cases where for one Balance it is the *Balance end date* and for another it is the *rollover end date*), they are drawn-down against in the order they happen to come back from data storage, which is deterministic in the sense that it won't change if the Balances are not changed. However, the order is not predictable, in that you can't tell by looking at the Balances which one would be draw-down against first. * If you have multiple Balances ending on the same date and want to enforce a particular draw-down order, please contact m3ter Support so we can guide you toward the best solution based on your current configuration. * If your pricing use case requires multiple overlapping Balances on Accounts, please contact m3ter Support so we can guide you toward the best solution to meet your requirements. * **Overage surcharge percentage must be configured for last Balance drawn-down**. As stated above, if you have multiple Balances on an end-customer Account, the draw-down order is determined by the end date on the different Balances - the Balance with earliest expiry date is drawn-down against first. However, if an overage surcharge is *not configured* for the last Balance that will be drawn-down against for overages, then *no overage surcharge* that might be configured on Balances drawn-down previously will be applied. **Important: Frequently Recalculating Bills for Accounts with Multiple Balances!** If you have end-customer Accounts with multiple Balances ending on the same date and your accounting operations require Bills for those Accounts to be frequently recalculated during the service period of the Balances, then, as stated above, the draw-down order can change between successive Bills. ### New Unified Balance Drawdown A new and enhanced Balance drawdown model called "Unified Drawdowns" is now available. It's currently opt-in via an Organization Setting, and over time will become the default. This unified draw-down model is designed to maximize credit use, but also opens up the opportunity to implement many other optimizations and capabilities. If enabled, the billing engine considers *all* eligible Balances on an Account together as a group rather than one at a time. A max-flow algorithm with iterative optimizations is then applied to achieve the best coverage for draw-down against the Account's available grouped Balance credit. There are some key points to note when enabling this unified Balance draw-down mode: * Where proportional distribution of credit is necessary, the system will use best-efforts to proportionally distribute Balance credit draw-down across line items. * This is a necessary side-effect of maximizing coverage and one of the main reasons small amounts of credit could be left unused. The system still uses best-effort to distribute line items draw-down across multiple Balances proportionally, but will sacrifice it in favor of coverage if necessary. * When drawing-down against Balances within Parent/Child Account hierarchies, the system no longer prioritizes Parent Account credit use. * As far as possible, the system distributes proportionally between all consumers of the credit - that is, the system doesn’t prioritize either Parent or Child usage. Other enhancements this model unlocks are: * Surcharge items are added per line item that is in overage (similar to overage pricing). * Previously the system would group surcharge by Commitment and add a single overage line item. * Overage pricing, when defined, is used even when there is no Balance or Commitment. * This a change in logic that’s been requested and outstanding for some time - overage pricing should be used whenever the usage isn’t being covered by a Balance, regardless of whether one exists or if it existed and was exhausted during that billing cycle. * Child Accounts will now draw-down from both Child and Parent Balances and Commitments. **Important:** * **Preview Release**. Please note the Unified Balance Drawdown feature is currently in Preview release. See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Preview feature guidance. * **Test in non-production first!** If you intend to enable Unified Balance Drawdown, we *strongly recommend* that you test Balance draw-down behavior thoroughly in a non-production (Sandbox) Organization before switching to your production Organization, and especially if you're using a complex balance/credit model. * **Prepayments and Balances on an Account?** If you have set up both Balances and Prepayments credit on the same Account and enabled Unified Drawdowns, your preferred [**Credit application order**](#balance-draw-down-order-against-prepayments) option can be applied to control the order in which the available Account credit is drawn-down against at billing - the credit for any Balances configured for the Account is considered as a group and the credit for any Prepayments is also considered as a separate group with the aim of maximizing overall draw-down coverage. If you are intending to set up both Balances and Prepayments credit on a single Account, for Account management and operational simplicity we would recommend using only Balances. Please get in touch with your m3ter contact or reach out to m3ter Support to discuss. ### Balances in Parent/Child Account Hierarchy If you intend to create Balances on Accounts that belong to a Parent/Child Account hierarchy, then the availability of Balance amounts for draw-down against charges at billing will depend on a combination of factors: * Whether the Balance is on the Parent or the Child Account. * Which billing mode you have selected when attaching Plans to Parent or Child Accounts. It's important to consider this when setting up your Parent/Child Accounts for billing and you expect to also create Balances for either Parent or Child Accounts. For example, suppose: * The Parent Account: * Has a Balance with available credit amount. * Does not have an attached Plan. * The Child Account: * Does not have a Balance. * Does have an attached Plan where the **Account billing hierarchy mode** is set to the default option: **Bill parent account - bill line item per account**. With this set up, if in a given billing period usage data is ingested for the Child Account's product consumption, then the Balance amount on the Parent Account is made available to draw-down against Child Account charges on the Parent bill: Balances16 However, if the **Account billing hierarchy mode** on the attached Plan of the Child Account is updated and set to: **Bill child account**, then the Parent Account Balance will not be made available to draw-down against the Child Account charges at billing for the separate Child Account Bill that is now generated: Balances18 For another example scenario that changes the original set up to locate the Balance on the Child Account instead of on the Parent Account: * The Parent Account: * Does not have a Balance. * Does not have an attached Plan. * The Child Account: * Has a Balance with available credit amount. * Does have an attached Plan where the **Account billing hierarchy mode** is set to the default option: **Bill parent account - bill line item per account**. With this alternative set up, if in a given billing period usage data is ingested for the Child Account's product consumption, then the Balance amount on the Child Account is *not made available to draw-down against* Child Account charges on the Parent bill: Balances18 1 However, if the **Account billing hierarchy mode** on the attached Plan of the Child Account is updated and set to: **Bill child account**, then the Child Account Balance will be made available to draw-down against the Child Account charges at billing for the separate Child Account Bill that is now generated: Balances20 **Test Parent/Child Account billing setup!** If you intend to use Parent/Child Account hierarchies and want to use Balances on either Parent or Child Accounts, then we *strongly recommend* that you test the overall billing setup in your sandbox/pre-production environment before implementing in production. See also: [Billing Hierarchy Modes for Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts). ### Period for Charges Draw-Down The following diagrams illustrate how the effective period for charges draw-down against Balance amounts on an Account are determined for billing purposes: * **Active Balance Period by Date.** No rollover or grace periods for consuming the Balance amount defined: * **Active Balance Period by Date with Grace Periods**. Rollover periods defined for consuming the Balance amount: * **Active Balance Period by Date/Time**. No rollover or grace periods defined for consuming the Balance amount: > Note that the end date/time is exclusive to the second, meaning that in this example the Balance amount can be used for draw-down against charges due up to and including 11:59:59 on 30th June. ## Balances Draw-Down Order Against Prepayments If you have added Balances and Prepayments as credits on an Account, you can define the order in which these credit amounts are drawn-down for billing the Account. Four options are available for this *credit application order* for Balances against Prepayments: * **Prepayment then balance**. Draw-down against Prepayment credit before Balance credit. Default. * **Balance then prepayment**. Draw-down against Balance credit before Prepayment credit. * **Prepayment only**. Only draw-down against Prepayment credit. * **Balance only**. Only draw-down against Balance credit. You can configure this in two places: * At Organization level as part of your Organization configuration. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * At individual Account level when creating or editing the Account to which the Prepayments and Balances have been added under **Bill settings**. See [Creating an Account](/guides/end-customer-accounts/creating-an-account). * If you configure this at Account level, the Account level setting takes precedence over any setting at Organizational level. **Important!** If the Account belongs to a Parent/Child Account hierarchy, then the **Credit application order** settings are *not available*, and the draw-down order defaults always to Prepayment then Balance order. # Creating Charges for Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-charges-for-accounts You can create *Charges* for your end-customer Accounts to serve use cases that require ad-hoc or one-off line items for Account billing. Charges are: * Created for either debit or credit amounts. * Linked to a Product for accounting purposes. * Optionally linked to a Contract. * Given a specific date for billing. * When a bill job has run for the specified Charge bill date, a Charge appears as an *Ad-hoc* line item on a Bill. * Assigned a service period. * Available in any currency defined for your Organization. When you set up a Charge for an Account, a new Bill is created for the specified billing date or, if other billing charge types are due on the Account on that date, can be consolidated with those other charge types in a single Bill. This topic sets out some common use cases where Charges can be used, explains how to create and manage Charges for your end-customer Accounts, and gives some examples of how to view Bills for Account Charges: * [Charges: Common Use Cases](/guides/end-customer-accounts/creating-charges-for-accounts#charges-common-use-cases) * [Creating and Managing Charges](/guides/end-customer-accounts/creating-charges-for-accounts#creating-and-managing-charges) * [Viewing Bills for Account Charges](/guides/end-customer-accounts/creating-charges-for-accounts#viewing-bills-for-account-charges) ## Charges: Common Use Cases The following use cases illustrate where Charges can enhance your revenue operations, providing your business with greater control over billing workflows without modifying core pricing plans: * [One-Time Fees and Ad hoc Adjustments](/guides/end-customer-accounts/creating-charges-for-accounts#one-time-fees-and-ad-hoc-adjustments) * [Discounts, Refunds, and Service Credits](/guides/end-customer-accounts/creating-charges-for-accounts#discounts-refunds-and-service-credits) * [Contract-Specific Custom Charges](/guides/end-customer-accounts/creating-charges-for-accounts#contract-specific-custom-charges) ### One-Time Fees and Ad hoc Adjustments #### Scenario A business wants to add *manual, one-time fees* to customer invoices outside of standard usage-based billing. #### How Charges solve this Scenario Users can create *Adhoc Charges* that appear as one-time line items on bills. Examples include: * *Setup fees* for new accounts. * *Manual service fees* (for example, consulting charges). * *Penalty fees* for late payments. #### Example A SaaS company charges a one-time custom onboarding fee of \$500 when a new customer signs up. Instead of modifying the contract, they create an *Adhoc Charge* linked to the *Onboarding Service product* and assign it to the customer’s next bill. ### Discounts, Refunds, and Service Credits #### Scenario A business wants to issue *discounts, refunds, or credits* directly to customer bills without altering contracts or subscription plans. #### How Charges solve this Scenario * *Negative Charges (credits)* can be applied to offset fees. * *Discounts* can be linked to *specific products or contracts* for accounting accuracy. * *Service credits* can be *applied to future bills* using a scheduled charge. #### Example A telecom provider issues a *\$50 refund* to a customer due to a *service outage*. Instead of modifying the plan, they create a *credit charge* for -\$50 and link it to the next billing cycle. ### Contract-Specific Custom Charges #### Scenario Businesses need to *apply charges tied to specific contracts* rather than general billing rules. #### How Charges solve this Scenario * Charges *can be linked to contracts* for tracking and auditing. * Ensures alignment with *contractual obligations, service levels, or penalties*. #### Example A managed services provider includes a clause in a contract for *custom engineering support fees* at an hourly rate. When support is provided, an *Adhoc Charge is created under the contract’s ID* and added to the next bill. ## Creating and Managing Account Charges You can create ad-hoc Charges for your end-customer Accounts in m3ter directly from the Account details page. When you've created Charges for an Account, from the Charges tab you can review Charge details and edit or delete a Charge: * [Creating a Charge for an Account](/guides/end-customer-accounts/creating-charges-for-accounts#creating-a-charge-for-an-account) * [Viewing Charge Details](/guides/end-customer-accounts/creating-charges-for-accounts#viewing-charge-details) * [Editing and Deleting Charges](/guides/end-customer-accounts/creating-charges-for-accounts#editing-and-deleting-charges) * [Filtering the Charges List](#filtering-the-charges-list) **Note: Balance Charges.** You can also create Charges for Account Balances, and these will also be listed on the **Account>Charges** tab. See [Creating Charges for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances) for more details. ### Creating a Charge for an Account **To create a Charge for an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. In the Accounts listing, search for and select the **Name** text of the Account you want to create a Charge for. The **Account** details page opens with the **Overview** tab selected. 3. On the **Account actions** menu: Select **Charges>Create charge**: Alternatively: * Select the **Charges** tab. * On the **Charges** panel, select **Create charge**. The **Create** page opens. 4. Complete the **Charge details**: * **Name**. Enter a name for the Charge. (*Required*) * **Code**. Enter a code for the Charge. (*Required*) * **Currency**. Use the drop-down list to select the currency you want to use for the Charge. (*Required*) * **Amount**. Enter the Charge amount to be billed. (*Required* *if Units/Unit price not provided*) * **Units** and **Unit price**. Enter if you haven't entered an **Amount**. At billing, the Charge amount will be calculated as the number of **Units** multiplied by the **Unit price**. (*Required if Amount not provided*) * Note that you cannot *provide both* an **Amount** and **Units/Unit price**. * **Service period start date (inclusive)** and **Service period end date (exclusive)**. Use the calendar pop-ups to define a service period for the charge. (*Required*) * **Bill date**. Enter the date the Charge will be billed against the Account. (*Optional*) * You can omit a specific date for billing the Charge in cases where you want to create the Charge against the account but the exact date it will be billed is not yet determined. 5. Enter optional **Charge settings**: * **Accounting product**. For accounting purposes, select a Product to link the Charge Bill line item to. *(Optional)* * **Description**. Enter a *custom description* that will appear for the bill line item for the Charge. (*Optional*) * Note that if you leave this blank, a *default description* will be used: **Ad hoc charge**. * **Contract**. If you want to add the Charge to a Contract you've created for the Account, use the drop-down to select it. For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts). (*Optional*) * **Description**. Enter a *custom description* that will appear for the bill line item for the Charge. (*Optional*) * Note that if you leave this blank, a *default description* will be used: **Ad hoc charge**. * **Notes**. Use this to enter any notes for the Charge. These will not appear on any Bills, but can be referred to for audit purposes. (*Optional*) In this example a **Charge** will be created for a one-off onboarding fee of \$500 against a new customer: * A service period of two days - March 14th and 15th - is defined to allow for setting up and testing the new service setup. * The **Charge** will be billed the day after the two-day service period - March 16th. 6. Select **Create charge**. You are returned to the **Charges** tab where the new Charge is listed: Charges18 ### Viewing Charge Details **To view Charge details:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account with the Charge you want to review. The **Account details** page opens. 3. Select the **Charges** tab. 4. On the **Charges** panel, select the **Name** text hotlink of the Charge you want to review. The **Charge details** page opens: Charges22 You can check the details for the Charge: * Read-off the **Service period** and **Bill date** for the Charge. * Use a text hotlink to open the **Bill** for the Charge. * Use a text hotlink to open the **Accounting product** for the Charge. * Copy the **ID** of the Charge directly to your clipboard. ### Editing and Deleting Charges **To edit or delete a Charge on an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account with the Charge you want to review. The **Account details** page opens. 3. Select the **Charges** tab. 4. If you want to edit a Charge, on the **Charges** panel select the edit icon for the Charge: The **Edit** page opens. 4. Make the required editing changes and select **Update charge**. Your updates are saved and you are returned to the **Charges** tab. 5. If you want to delete a Charge, select the **Delete** icon: A confirmation popup appears 6. Select **Yes** to confirm and complete the deletion. **Note: Deleting Billed Charges?** If a Bill for a Charge has already been generated, you won't be able to delete the Charge and an error message will show. You must first delete any Bills generated for a Charge before attempting to delete it. ### Filtering the Charges List An Account's Charges tab lists both ad-hoc and Balance Charges. You can filter the Charges list to meet your current requirements. **To filter the Charges list on an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account with the Charges you want to filter for review. The **Account details** page opens. 3. Select the **Charges** tab. By default **All charges**, both ad-hoc and Balance Charges, are listed. 4. You can filter the list to show only **Ad-hoc charges** created for the Account: Charges19 * The list is filtered: Charges20 5. Alternatively, you can filter the list to show only **Balance charges**: Charges21 ## Viewing Bills for Account Charges You can run billing for an Account with an ad-hoc Charge on it and check the billed amount and date. How Bills are generated for Accounts with ad-hoc Charges created for them depends on whether or not you have selected to consolidate Bills for your Organization: * **Separate Bills for Charges**. If you *haven't selected to consolidate Bills* for your Organization, you can run billing for an Account for the ad-hoc Charge bill date and generate a *separate Bill* for the Charge. * Note that in this case, even if the Charge bill date coincides with a regular billing date set up for the Account - such as the first of a month for an Account on a monthly billing frequency with billing dates of the first day of month - the Charge *will not appear* on the regular monthly Bill covering other charge types due against the Account, such as usage charges, and a separate Bill is generated. * **Consolidated Bills for Charges**. If you *have selected to consolidate Bills* for your Organization and the ad-hoc Charge bill date coincides with a regular bill date set up for the Account, then the Charge *will appear* on the regular monthly Bill covering other charge types due against the Account, such as usage charges. * Note that in this case, if the Charge bill date doesn't coincide with one of the Account's regular billing dates, you can generate a separate bill for the Charge by running billing for the specific Charge bill date. This section gives examples to show how to generate Bills for Account with ad-hoc Charges: * [Viewing Separate Bills for Ad-Hoc Charges](/guides/end-customer-accounts/creating-charges-for-accounts#viewing-separate-bills-for-ad-hoc-charges) * [Viewing Consolidated Bills for Ad-Hoc Charges](/guides/end-customer-accounts/creating-charges-for-accounts#viewing-consolidated-bills-for-ad-hoc-charges) ### Viewing Separate Bills for Ad- Hoc Charges **To view separate Bills for ad-hoc Charges:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account with the ad-hoc Charge for which you want to view Bill. The **Account details** page opens. 3. Select the **Bills** tab. 4. On the **Bills** panel, select **Run billing**. The **Run billing** modal opens. 5. On the **Run billing** modal: * For **Invoice date**, select the **Bill date** defined for the ad-hoc Charge. * For **Bill frequency**, select **Ad hoc**. * For **Target currency**, select the **Currency** configured for the ad-hoc charge: 6. Select **Run billing**. The Bill for the ad-hoc Charge is generated and is listed on the **Bills** tab: Charges23 7. Select the **Reference** text hotlink for the Bill. The Bill opens in **Bill management**. 8. Under **Display options**, select to **Group by accounting product**: Charges25 The Bill adjusts: Charges26 In this example, we've run billing for the ad-hoc Charge example created for an Account in the [previous section](/guides/end-customer-accounts/creating-charges-for-accounts#creating-a-charge-on-an-account) in the amount of \$500, which had a Bill date of March 16th 2025. When the Bill is opened: * The line item **Type** is shown as **Ad-hoc**. * Because we set up the Charge as an **Amount**, the line item shows **No. of units** = **1** and a **Unit price** in the **Amount** specified. * A text hotlink allows you to open the **Charge details** page directly from the Bill. Suppose now that other ad-hoc Charges had been created for the same Account with the same Bill date. For example, the new customer was eligible for a discount against the normal onboarding fee for taking early sign-on. A negative ad-hoc Charge could be created for the Account and for the same Accounting product to cover this kind of case: Charges27 If we now go back to the **Bills** tab and re-run billing for **Ad-hoc** Charges on the same Account for March 16th **Invoice date** and open the recalculated Bill, then the new ad-hoc negative discount Charge is shown: Charges28 **Note: Charges for Balances?** You can also create Charges for Balances on an Account. If you've done this and the Balance Charge bill date is the same as the Account Charge bill date and you run billing on the Account for the joint bill date for Ad-hoc frequency, then the *Balance fee* line item for the Balance Charge will also appear on the Bill. See [Running and Viewing Bills for Balance Charges](/guides/end-customer-accounts/creating-balances-for-accounts/runnning-viewing-bill-for-balance-charges). ### Viewing Consolidated Bills for Ad-Hoc Charges In the following example, we have an Account set up for monthly billing frequency and the billing cycle date for the first and subsequent billing as March 1st 2025. The Account was onboarded mid-February 2025 and an ad-hoc onboarding charge was created with a Bill date of March 1st 2025: Charges11d **Important: Switch on Consolidated Bills for Organization!** If you want to show ad-hoc Charges line items on the same Bills as other line item types - such as usage charges set up to be billed at monthly frequencies - you must switch on the **Consolidate bills** setting on in your Organization configuration. This will ensure different billing frequencies are consolidated into the same Bill. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) for more details. **To view consolidated Bills for ad-hoc Charges:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text hotlink of the Account with the ad-hoc Charge for which you want to view a consolidated Bill. The **Account details** page opens. 3. Select the **Bills** tab. 4. On the **Bills** panel, select **Run billing**. The **Run billing** modal opens. 5. On the **Run billing** modal: * For **Invoice date**, select the regular billing date which the ad-hoc Charge bill date coincides with - for the current example, March 1st 2025. * For **Target currency**, select the **Currency** configured for the ad-hoc charge: * Note that because **Consolidating bills** is enabled, charges for all billing frequencies will be shown on the generated Bill and there is no option to select a **Bill frequency** on the **Run billing** modal. 6. Select **Run billing**. The Bill for the selected date is generated and listed on the **Bills** panel: 7. Select the **Reference** text hotlink for the Bill. The Bill opens in **Bill Management**: Charges29 In this example of a consolidated Bill: * The ad-hoc Charge line item is shown under the **Onboarding Service Product**. * Usage charges that have accrued since the new end-customer Account was onboarded mid-month are shown under the **Premium Data Store** product. # Working with Contracts for Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-contracts-for-accounts If you expect to have end-customers who will consume several different services or product packages you offer, you can create *Contracts* for these end-customer Accounts. Depending on your accounting operations and invoicing requirements, when you create a Contract for an Account you can choose to use it for Account reporting purposes or for billing the Account on a Contract basis: * **Accounts Reporting**. If your invoicing requirements do not include billing end-customers on a Contract basis, you can create a Contract on an Account without enabling the Account for Contract billing. To serve your general accounting operations and processes, you can then report on total Contract values for the Account and the Contract has no effect on billing for the Account. * **Contract Billing**. If your invoicing requirements include billing on a Contract basis, you can set up a Contract for billing when you create it for an end-customer Account. Various billing entities associated with an Account can then be linked to the Contract to meet your specific Contract billing use cases. This section explains how to create and manage Contracts for your end-customer Accounts and how to set up Contract billing for Accounts: * [Creating and Managing Contracts](/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts) * [Setting Up Contract Billing](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing) A *Contracts* page is available which lists the Contracts created for your Organization by Account and where you can quickly review their completion status: * [Reviewing Organization Contracts](/guides/end-customer-accounts/creating-contracts-for-accounts/reviewing-organization-contracts) **Contract Billing in Preview Release!** Please note that the Contract Billing feature is currently available in Preview release version: * See [Feature Release Stages](/guides/getting-started/feature-release-stages) for Preview release definition and guidance. * If you're interested in previewing Contract Billing, please get in touch with m3ter Support or your m3ter contact. # Creating and Managing Contracts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts If you expect to have end-customers who will consume several different services or product packages you offer, you can create *Contracts* for these Accounts to meet either your general Accounts reporting requirements or to meet invoicing requirements for billing these Accounts on a Contract basis. When you create a Contract for an end customer Account, you can: * Set the start and end dates and define the Contract period: * For Accounts reporting, can be used for auto-renewal of the customer's Contract - for example on an annual renewal basis. * For Contract billing, can be used to limit any charges to the Contract period and exclude charges on the Account dated outside of the period. * To enable Contract billing, you can link Account Plans attached to the Account to the Contract or Contracts you want to use to bill the Account. * If the Account is a Parent Account, you can add Account Plans or Account Plan Groups on Child Accounts to Parent Account Contracts. * Add other entities associated with the Account to the Contract: * Prepayment/Commitments. * Balances and Balance Charges. * Charges * Review Contract metadata for any Custom Fields or External Mappings created for the Contract. * End date billing entities associated with the Account you've created the Contract for or end date the Contract itself. For more details, see [End Dating Account Billing Entities](/guides/end-customer-accounts/end-dating-account-billing-entities). This topic explains how to create and manage Contracts for your end-customer Accounts: * [Creating Contracts](/guides/end-customer-accounts/creating-contracts-for-accounts#creating-contracts) * [Adding Account Plans or Account Plan Groups to Contracts](/guides/end-customer-accounts/creating-contracts-for-accounts#adding-account-plans-or-account-plan-groups-to-contracts) * [Adding Child Account Plans or Account Plan Groups to Parent Account Contract](/guides/end-customer-accounts/creating-contracts-for-accounts#adding-child-account-plans-or-account-plan-groups-to-parent-account-contract) * [Adding Prepayments to a Contract](/guides/end-customer-accounts/creating-contracts-for-accounts#adding-prepayments-to-a-contract) * [Adding Balances to a Contract](/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts#adding-balances-to-a-contract) * [Editing and Deleting Contracts](/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts#editing-and-deleting-contracts) * [Reviewing Contract Metadata](/guides/end-customer-accounts/creating-contracts-for-accounts#reviewing-contract-metadata) **Note: Adding Billing Entities to Contracts!** Currently you cannot add some billing entities associated with an Account to a Contract directly from the *Contract details* page. You must add these entities to a Contract when you create or edit them: * **Charges**. See [Creating Charges for Accounts](/guides/end-customer-accounts/creating-charges-for-accounts). * **Balance Charges**. See [Creating Charges for Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances). ## Creating Contracts You can create Contracts for an end customer Account from the **Accounts** page. **Note: Contract billing?** This section explains how to create a Contract for an Account and assumes you don't want enable the Contract for billing. If you want to bill Accounts on a Contract basis, please see the [Setting Up Contract Billing - Examples](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing) topic for details of how to do this with worked examples. **To create a Contract for an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to create a Contract. The **Account** page opens. 3. On the **Account actions** menu, select **Contracts>Create contract**: Alternatively: * Select the **Contracts** tab. * On the **Active and pending contracts** panel, select **Create contract**. The **Create** page opens. 4. Enter the **Contract details**: Attach Contract105 * **Name.** Descriptive name for the Contract. (*Required*) * **Code.** Unique identifier for the Contract. (*Required*) * **Start date (inclusive)** and **End date (exclusive)**. Use the popup calendars to select the start and end dates for the Contract. (*Required*) * Note that the **End date** is *exclusive* - if you want the contract to end at midnight on June 30th 2023, set the **End date** to July 1st 2023. * **Description.** (*Optional*) * **Purchase order number.** (*Optional*) Allows you to assign an order number to the Contract. For example, your financial systems might require this as a reference for clearing payments. **Note: Contract Purchase Order Number and Account Purchase Order Number?** These are entirely separate Purchase Order Numbers and are in no sense connected in the m3ter system. 5. Enter **Contract billing details**. The **Create** page opens with default settings of Contract billing not enabled: * These settings are optional and allow you to control Contract billing. If you want to implement billing based on a Contract, please see the following [Setting Up Contract Billing](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing) topic. 6. If you are implementing Contract billing, you can add any required **Usage filters**. Define up to three filters to control the usage billed against the Account for the Contract: * See the following [Setting Up Contract Billing](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing) topic for details on how to add and configure **Usage filters**. 7. If required, add any **Custom fields** to the Contract: * For more on Custom Fields, see [Adding and Editing Custom Fields](/guides/organization-and-access-management/viewing-and-editing-organization/adding-and-editing-custom-fields). We strongly recommend reviewing [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) before you create and use Custom Fields. 8. Select **Create contract**. You are returned to the **Contracts** tab, where the new Contract is listed on the **Active and pending contracts** panel: ## Adding Account Plans or Account Plan Groups to Contracts You can add Account Plans or Account Plan Groups that you've attached to an end-customer Account to a Contract. **To add attached Plans/Plan Groups to a Contract:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to add attached Plans for a Contract. The **Account** page opens. 3. Select the **Contracts** tab. 4. On the **Active and pending contracts** panel, select the **Name** text of the Contract to which you want to add attached Plans. The **Contract details** page opens: Attach Contract106 5. Scroll down the page to the **Contract attached plans** panel and select **Add attached plans**. A **Select account plans** dialog appears and lists the Account Plans/Account Plan Groups attached to the Account. **Notes and Tips:** * **Account Plans or Account Plans Groups Already Show?** If you've already added an Account Plan or Account Plan Group to the Contract when you attached Plans/Plan Groups to the Account, these will show in the **Contract attached plans** panel. See [Attaching Plans to an Account](/guides/end-customer-accounts/attaching-plans-to-an-account) and [Attaching Plan Groups to an Account](/guides/end-customer-accounts/attaching-plan-groups-to-an-account). * **Adding Account Plans or Account Plan Groups from Child Accounts?** If the Contract belongs to a parent Account, when you open the **Select account plans** dialog, you'll be able to select any Child accounts and then select Account Plans or Account Plan Groups attached to the Child Account to add them to the Contract on the Parent Account. 6. Use the check boxes to select the attached Account Plans/Account Plan Groups you want to add to the Contract, and select **Confirm**. 7. The dialog closes and you are returned to the **Contract details** page and the selected Account Plans/Account Plan Groups are listed in the **Contracts attached plans** panel: 8. If you now select the attached Plan **Name** hotlink text, the **Plan attachment details** page opens and the **Contract** is shown: 9. If you return to the Account page, on the **Attached plans** tab the Contract an attached Plan has been added to is also shown on the **Active and pending attached plans** panel: ## Adding Child Account Plans or Account Plan Groups to Parent Account Contract If you want to add Account Plans or Account Plan Groups attached to a Child Account to a Contract on the Parent Account, you can do this from the Child Account's *Plan attachment* page or *Plan group attachment* page. **Tip:** The following procedure explains how to add a Child **Account Plan** to a Parent Account Contract. To add a Child **Account Plan Group** to a Parent Account Contract, you can follow similar steps. **To add Child Account Plans/Plan Groups to a Parent Account Contract:** 1. Select **Accounts**. The **Accounts** page opens. 2. Search for and open the Child Account. 3. Select the **Attached plans** tab. 4. On the **Active and pending attached plans** panel, select the name text of the attached Account Plan that you want to add to the Parent Account Contract. The **Plan attachment** page opens 5. Under **Plan attachment details**, select **Add to parent contract**: A **Select one contract** dialog opens and lists the Contracts on the Parent Account. 6. Select the Contract on the Parent Account that you want to attach the Child Account Plan to and select **Confirm**. A message appears confirming that the Child Account Plan has been successfully attached to the Parent Account Contract and the selected Contract is now shown for the Account Plan: 7. If you open the **Contract details** page for the Parent Contract, the **Contract Plans** panel will now show the Child Account Account Plan: ## Adding Prepayments to a Contract You can add a Prepayment/Commitment amount you've created for an Account to a Contract. **To add a Prepayment to a Contract:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to add a Prepayment amount to a Contract. The **Account** page opens. 3. Select the **Contracts** tab. 4. On the **Active and pending contracts** panel, select the **Name** text of the Contract to which you want to add the Prepayment amount. The **Contract details** page opens. 5. On the **Contract prepayments** panel, select **Add prepayments**. A **Select prepayments** dialog appears and lists the Prepayment amounts created for the Account. **Notes and Tips:** * **Prepayment Already Shows?** If you've already added a Prepayment to the Contract, this will show in the **Contract prepayments** panel. See [Creating Prepayments for Accounts](/guides/end-customer-accounts/creating-prepayments-for-accounts). * **Adding Prepayments from Child Accounts?** If the Contract belongs to a parent Account, when you open the **Select prepayments** dialog, you'll be able to select any Child accounts and then select Prepayments attached to the Child Account to add them to the Contract on the Parent Account. 6. Use the check boxes to select the Prepayment amount you want to add to the Contract, and select **Confirm**. 7. The dialog closes and you are returned to the **Contract details** page and the selected Prepayment amount is listed in the **Contracts prepayments** panel: **Important: Prepayment Contract and Account Plan Contract must match!** If you associate a Prepayment with a Contract you must ensure the Account Plan attached to the Account has the same Contract associated with it. If the Account Plan Contract and Prepayment Contract do not match, then at billing the Prepayment amount will not be drawn-down against. See [Linking Prepayments to Contracts - Availability for Draw-Down](/guides/end-customer-accounts/creating-prepayments-for-accounts#linking-prepayments-to-contracts-availability-for-draw-down). ## Adding Balances to a Contract You can add a Balance you've created for an Account to a Contract. **To add a Balance to a Contract:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to add a Balance to a Contract. The **Account** page opens. 3. Select the **Contracts** tab. 4. On the **Active and pending contracts** panel, select the **Name** text of the Contract to which you want to add the Balance. The **Contract details** page opens. 5. On the **Contract balances** panel, select **Add balances**. A **Select balances** dialog appears and lists the Balances created for the Account. **Notes and Tips:** * **Balance Already Shows?** If you've already added a Balance to the Contract, this will show in the **Contract balances** panel. See [Creating and Managing Account Balances](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances). * **Adding Balances from Child Accounts?** If the Contract belongs to a parent Account, when you open the **Select balances** dialog, you'll be able to select any Child accounts and then select Balances attached to the Child Account to add them to the Contract on the Parent Account. 6. Use the check boxes to select the Balance you want to add to the Contract, and select **Confirm**. 7. The dialog closes and you are returned to the **Contract details** page and the selected Balance is listed in the **Contracts balances** panel: **Important: Balance Contract and Account Plan Contract must match!** If you associate a Balance with a Contract you must ensure the Account Plan attached to the Account has the same Contract associated with it. If the Account Plan Contract and Balance Contract do not match, then at billing the Balance amount will not be drawn-down against. See [Linking Balances to Contracts - Availability for Draw-Down](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances#linking-balances-to-contracts-availability-for-draw-down). ## Editing and Deleting Contracts You can manage an existing Contract to edit or delete it from an Account from the **Contracts** tab. **To edit or delete Account Contracts:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to edit or delete. The **Account** page opens. 3. Select the **Contracts** tab. 4. If you want to edit a Contract, on the **Active and pending contracts** panel select the **Edit** icon: The **Edit** page opens. 5. Make any required editing changes and select **Update contract**. 6. If you want to delete a Contract, select the **Delete** icon: A confirmation dialog appears. 7. Select **Delete** to confirm. * Note that if you attempt to delete a Contract that is linked to another entity associated with the Account, such as an Account Plan or Prepayment, you will not be able to and an error will show. **Tip: Managing Contracts from the Contracts page**. You can edit or delete a Contract directly from the Contracts page. See [Reviewing Organization Contracts](/guides/end-customer-accounts/creating-contracts-for-accounts/reviewing-organization-contracts). ## Reviewing Contract Metadata On the *Contract details* page, you can review **Contract metadata**: * Custom Fields or External Mappings created for the Contract. * Integration runs linked to the Contract. **To review Contract metadata:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to review Contract metadata. The **Account** page opens. 3. Select the **Contracts** tab. 4. On the **Active and pending contracts** panel, select the **Name** text of the Contract you want to review metadata for. The **Contract details** page opens. 5. Scroll down the page to review the Contract's metadata: **Custom fields**. Any Custom fields created for the Contract are listed: Attach Contract107 * You can **Copy** the *String* or *Number* value of a Custom Field to your clipboard. See [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) for more details. **External mappings**. Any existing mappings created for the Contract are listed: Attach Contract108 * The **External system** and **External table** mapped to are shown - such as **NetSuite - Item** in the above example. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Contract has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. * You can commence a workflow to **Create external mapping** for the Contract directly - see [Creating and Managing External Mappings for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) for an example. **Integration runs**. If you've set up an integration that synchronizes the Contract data with an external system, the date/time and status of the **Latest** integration run are shown. You can use a text hotlink to open details of this latest run or **View all runs**. See [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). # Reviewing Organization Contracts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-contracts-for-accounts/reviewing-organization-contracts A *Contracts* page is available which lists the Contracts you have created for your Organization where you can review and manage them. You can search for individual Contracts or for those belonging to a specific Account, check a Contract's period, and quickly read-off a Contract's percentage completion. This topic explains how to access the Contract's page for your Organization and review your Account Contracts. **To access the Contracts page and review Account Contracts:** 1. In the Console top navigation, select **Accounts**: The **Accounts** page opens. 2. Select **Contracts**: 3. The **Contracts** page opens: Attach Contract118 From here, you can: * Use the **Name** hotlink text to open a Contract's details page. * Use the **Account** hotlink text to open the page of the Account the Contract belongs to. * Check the **Start date(inclusive)** and **End date(exclusive)** configured for a Contract. * Under **Completion %** read-off the timeline percentage completion to date of the Contract's period: * If the Contract is still active, the number of days remaining to completion is given. * If the Contract has ended, the number of days since it ended is given. 4. Use **Search contracts** to search for individual Contracts: Attach Contract119 5. Use the **Select account** drop-down list to filter the list by Account: 6. If you want to manage a Contract directly, under **Actions** you can **Edit** or **Delete** a Contract. See [Creating and Managing Contracts](/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts). # Setting Up Contract Billing Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing When you create a Contract for an Account, you can use it to bill the Account on a Contract basis: * For billing Product *usage* - you must add Account Plans or Account Plan Groups attached to the Account to the Contract. * For billing one-off *Charges* you've created for the Account - you must add those Charges to the Contract. The capability to bill your end-customer Accounts on a Contract basis gives you wide flexibility to fulfill invoicing requirements for cases where you offer customers a specific product package agreement to consume several of your core products. You can bill Accounts wholly and exclusively according to the scope of a specific contractual agreement. This topic explains how to set up Contracts for billing and how to use the available options to ensure any Contract billing you implement meets your specific billing use case: * [Setting Up Contracts for Billing - Configuration Options](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing#setting-up-contracts-for-billing-configuration-options) Some Contract billing worked examples are also provided, which show how you can enable Contract billing and to illustrate the various configuration options m3ter offers for controlling how Contract Bills are generated to meet different invoicing requirements: * [Example 1 - Multiple Product Contract Billing](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing#example-1-multiple-product-contract-billing) * [Example 2 - Mixed Grouping Contract Billing](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing#example-2-mixed-grouping-contract-billing) * [Example 3 - Usage Filtering for Contract Billing](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing#example-3-usage-filtering-for-contract-billing) **Important: Allowing Overlapping Account Plans!** For some Contract billing use case, you might want to be able to attached overlapping Plans to an Account. For example, if you intend to bill your end-customer Accounts on a Contract basis and your billing use case requires some charges for a Product to be billed under one Contract and other charges for the same Product to be billed under a different Contract, you'll require different and overlapping Account Plans to be attached to an Account for the same Product but linked to different Contracts. To do this, you must enable the **Allow overlapping attached plans** option at Organization level. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). ## Setting Up Contracts for Billing - Configuration Options When you want to use Contract billing, several options are available to ensure your billing use case is fulfilled: * [Independent vs. Collective Billing](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing#independent-vs-collective-billing) * [Apply Contract Period](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing#apply-contract-period) * [Define Usage Filters](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing#define-usage-filters) ### Independent vs. Collective Billing You can determine how charges due on the Account and linked to Contracts will be billed: * **Bill Independently**. A separate Bill will be created for any charge amounts linked to the Contract. This is useful if you have multiple Contracts associated with an Account, but you want separate Bills generated for each of the different Contracts. * **Bill Collectively**. Charges linked to the Contract can be billed collectively on a shared Bill and together with charges linked to other Contracts and any other charges due. To control how the Bills for Contracts will be generated you assign them *Bill grouping keys*. There are two types: * *Exclusive* grouping keys are used for independent Contract billing. * *Non-exclusive* grouping keys are used for collective Contract billing. This allows for mixed Contract bill grouping. Suppose you have three Contracts associated with a single Account and you want to bill the charges under one Contract separately and charges due under the other two Contracts collectively. You can assign an exclusive grouping key to one Contract and assign the same non-exclusive key to the other two Contracts. #### Configuring Independent Billing When you create or edit a Contract, you can quickly enable it for independent billing. **To enable a Contract for independent billing:** 1. Open the Account the Contract belongs to and select the **Contracts** tab. 2. Either select **Create contract** or select to **Edit** an existing Contract. The **Create** or **Edit** page opens. 3. On the **Contract billing details** card, enable the **Bill contract independently** switch: Attach Contract114 4. Select **Create contract** or **Update contract**. You are returned to the **Contracts** tab. 5. Select the name hotlink text of the Contract. The **Contract details** page opens: Attach Contract109 * A **Bill grouping key** has been automatically created using the Contract's name, assigned to the Contract, and marked as **EXCLUSIVE**. * When Bills are generated for the Account the Contract belongs to, any charges due and linked to this Contract will be on a separate Bill. 6. If you later decide that you no longer want to use the Contract for billing, edit it and disable the **Bill contract independently** switch. The **Bill grouping key** is removed: Attach Contract110 * Note that the **Bill grouping key** created automatically and assigned to the Contract is *not deleted* and can be re-assigned to the Contract if at a later date you want to re-enable the Contract for independent billing. #### Configuring Collective Billing If your Contract billing use case requires that charges due on the Account linked to multiple Contracts are collectively billed, then you can assign a common Bill grouping key to each of the Contracts. **To enable a Contract for collective billing:** 1. Open the Account the Contract belongs to and select the **Contracts** tab. 2. Either select **Create contract** or select to **Edit** an existing Contract. The **Create** or **Edit** page opens. 3. On the **Contract billing details** card, select **Advanced**. The card adjusts to show a **Bill grouping key** selection/add drop-down: Attach Contract112 * Any existing Bill grouping keys - both exclusive and non-exclusive - are shown in the drop-down selection list. * For this example, we'll **Add** a new grouping key called **Premium Key**. An information text appears when we add the key: Attach Contract111 4. Select **Create contract** or **Update contract**. You are returned to the **Contracts** tab. 5. Select the name hotlink text of the Contract. The **Contract details** page opens: Attach Contract113 * The **Bill grouping key** we added has been created, assigned to the Contract, and is marked as **NON-EXCLUSIVE**. 6. If we now open a second Contract on the Account and edit it, we can assign the same non-exclusive **Premium Key** by selecting it from the **Bill grouping key** drop-down list: 7. Select **Create contract** or **Update contract**. You are returned to the **Contracts** tab. 8. Select the name hotlink text of the second Contract. The **Contract details** page opens: * Any charges due on the Account and linked to either **Premium Contract 1** or **Premium Support Contract** will appear together on single collective Bill. ### Apply Contract Period When you create or edit a Contract that you've enabled for billing, you can restrict the charges billed to the period you've defined for the Contract using the **Apply contract period limits** switch on the **Contract billing details** card: Attach Contract115 * **Enabled**. Contract billing for the Account will be restricted to charge amounts that fall within the defined Contract period. * **Disabled**. The period for amounts billed under the Contract will be determined by the Account Plan attached to the Account and linked to the Contract. ### Define Usage Filters As a further option for controlling Contract billing and giving added flexibility, you can define up to three **Usage filters** to either include or exclude charges for usage associated with specific Meter dimensions. #### Using Contract Code vs. Custom Value The Create/Edit forms are designed for setting up a default usage filter. The default assumes you've set up a dimension data field on one or more Meters to ensure that only the usage data submissions that use the Contract's code as value for the dimension will be included in billing for the Contract: * When you **Add** the first **Usage Filter**, the form defaults to show the Contract's code entered as the **Value** and to **Include** usage for billing as the **Usage filter mode**: Attach Contract96a * You can then select the Meter **Dimension code** you want to filter by, for example: Attach Contract97a * Alternatively, if you don't want to filter usage in this way, you can select to use a **Custom value** for a Meter **Dimension code** to filter by - either to **Include** or **Exclude** usage - for example: Attach Contract98a #### Multiple Meters with Same Dimension Fields If you have multiple Meters with dimension data fields that use the *same code*, then any usage filters you set up for Contract billing will include/exclude usage collected by *all Meters* and which uses the specific **Value** you've entered for the dimension. The **Dimension code** drop-down list identifies instances where there are multiple Meters with dimension fields that use the same code and gives the number of Meters: Attach Contract102 For a worked example showing how to set up usage filters for Contract billing, see below [Example 3](#example-3-usage-filtering-for-contract-billing). ## Example 1 - Multiple Product Contract Billing Suppose you offer several core Products and your end-customers typically enter into a contractual agreement to take one or more of these Products. You want to invoice each customer for the specific product package they sign-up for. This example shows how to set things up in m3ter for billing multiple products under a single contract and review generated Bills. ### Setting Up Multiple Product Contract Billing **To set up multiple product Contract billing:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account you want to set up multiple product Contract billing for. The Account page opens with the **Overview** tab selected. 3. Select the **Attached plans** tab and attach priced Product Plans to the Account: * In this example, we've attached two priced Plans for billing the Account for consumption of two different Products. 4. Select the **Contracts** tab and create the Contract you want to use to bill the Account for multiple Products. For the current example, under **Contract billing details**: * Leave the **Bill contract independently** switch disabled. In this example, only one Contract will be associated with the Account and we don't need to use Bill grouping keys. * **Apply contract period limits**. Leave this switch in the default disabled position. 5. **Usage filters**. Do not attempt to set any usage filters: 6. Select **Create contact** and then from the **Contracts** tab select the name hotlink text of the Contract to open the **Contract details** page: * We can see that no **Bill grouping key** is assigned to the Contract. 7. Scroll down to the **Contract plans** panel and add the two Product Plans attached to the Account to the Contract: 8. Return to the **Account>Attached plans** tab: * The Plans attached to the Account for different Products are now linked to the same Contract. Next, we can submit some test data and generate a Bill for the Account and view Contract billing. ### Running and Viewing Contract Billing for Multiple Products **To run and view multiple product Contract billing:** 1. Open the **Meter details** page for each of the Meters used to collect usage data for Products the example Account consumes: * Select the Account - for the current example: **Revive Graph Customer 1**. * Under **Submit measurements>Submit usage data**, enter some test data for the Meter Data Fields targeted by the Aggregations you've used to price the Product Plans attached to the Account. 2. Open the example Account page and select the **Bills** tab. 3. Select **Run billing** and use the **Run billing** modal to generate a Bill for the Account for the next **Invoice date** covering the period in which you submitted the test data for the Product Meters: * Because we used the **No grouping key** setting for the Contract, a single Bill is generated and appears on the **Bills** tab. 4. Select the **Reference** hotlink text to open the Bill in **Bill Management**. For example: Attach Contract120 * The Bill opens and by default groups line items by **Product**. * If we expand each of the line items, we can see that they are both linked to the same Contract: Attach Contract121 Attach Contract122 5. Open the **Display options** menu and enable **Group by contract**. The Bill adjusts to show line items for multiple Products billed under the same **Contract**. For the current example: Attach Contract123 ## Example 2 - Mixed Grouping Contract Billing This worked example develops the multiple Product Contract billing given in Example 1, and supposes that you want to invoice customers by Contract for multiple Products they have agreed to consume but to create *separate invoices by Contract* for those Products. In this example we'll use the Bill grouping key setting to ensure that: * Charges for two Products consumed by an Account are grouped together and appear on a single Contract Bill. * Charges for a third Product consumed by the same Account appear on a separate Contract Bill. ### Setting Up Mixed Grouping Contract Billing **To set up grouped Contract billing:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account you want to set up grouped Contract billing for. The Account page opens with the **Overview** tab selected. 3. Select the Contracts tab and ensure two **ACTIVE** Contracts have been created for the Account. For example: * For this example, we want charges due under **Training Contract 1** to appear on a separate Bill and independently of any billing of charges due under **Standard Contract 1**. 4. Edit the Contract you want to be billed separately and under **Contract billing details**, enable the **Bill contract independently** switch. 5. Select **Update contract** and on the **Contracts** tab select the name hotlink text of the Contract to open the **Contract details** page: * For the example, we can now see that a **Bill grouping key** using the Contract's name has been created, assigned to **Training Contract 1**, and is marked as **EXCLUSIVE**. * Note that for **Standard Contract 1** we can leave this without a grouping key for the example because this is the only other Contract associated with the Account. 6. Return to the **Account** page, select the **Attached plans** tab, and attach priced Product Plans to the Account: * Note that two of the attached Plans are added to **Standard Contract 1** and one attached Plan is added to **Training Contract 1**. Next, we can submit some test data and generate Bills for the Account and view the resultant mixed grouping Contract billing. ### Running and Viewing Contract Billing for Mixed Grouping Contract Bills **To run and view grouped Contract Bills:** 1. Open the **Meter details** page for each of the Meters used to collect usage data for Products the example Account consumes: * Select the Account - for the current example: **Revive Graph Customer 1**. * Under **Submit measurements>Submit usage data**, enter some test data for the Meter Data Fields targeted by the Aggregations you've used to price the Product Plans attached to the Account. 2. Open the example Account page and select the **Bills** tab. 3. Select **Run billing** and use the **Run billing** modal to generate Bills for the Account for the next **Invoice date** covering the period in which you submitted the test data for the Product Meters: * Because we selected **Bill contract independently** for **Training Contract 1** and assigned an exclusive **Bill grouping key** to it, two separate Bills are generated and appear on the **Bills** tab. 4. Select the **Reference** hotlink text of the **Standard Contract 1** Bill to open it in **Bill Management**: Attach Contract124 * The **Standard Contract 1** Bill opens with line items grouped by the two Products for the attached Plans added to the Contract and we can then open the **Display options** menu and enable **Group by contract**: Attach Contract125 5. Select the **Reference** hotlink text of the **Training Contract 1** Bill to open it in **Bill Management**: Attach Contract126 * The **Training Contract 1** Bill opens with line items grouped by the single Product for the attached Plan added to the Contract and we can then open the **Display options** menu and enable **Group by contract**: Attach Contract127 ## Example 3 - Usage Filtering for Contract Billing This worked example develops the multiple Product Contract billing given in Example 1, and supposes that you want to implement Contract billing for Products but filter the metered usage and charge at billing only for usage where Product Meter dimensions equal specific defined values. You can do this by adding usage filters for the Contract you will use to bill the Account. ### Running and Viewing Contract Billing without Usage Filters First, we'll review the setup for the example and run billing without Contract usage filters applied to check that all usage is charged for. **To run and view Contract billing without Usage Filters:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Attached plans** tab: Two Product Plans are attached to the Account and both have been added to **Standard Contract 1:** * **Revive Graph Standard Plan 1X1** is attached for charging the Account for consuming the **Revive Graph Standard** Product. * **Revive Graph Support Plan 2X2** is attached for charging the Account for consuming the **Revive Graph Support** Product. **Revive Graph Standard** Product - Meter and Pricing: * The Meter that collects usage for this Product has two Data Fields: * A **MEASURE** field called **GIGABs** to collect the size in GBs of files uploaded for storage. * A **WHAT** dimension field called **FileFormat** to collect the type of files uploaded - permitted types are **RAW** or **JPEG** format. * The Aggregation used to price the attached Product Plan targets the **GIGABs** Meter field and applies a **SUM** method to give the billing metric. * The **Revive Graph Standard Plan 1X1** is priced at the flat rate of **\$0.75** per GB stored. **Revive Graph Support** Product - Meter and Pricing: * The Meter that collects usage for this Product has two Data Fields: * A **MEASURE** field called **Support Calls** to collect the number of support calls by customers. * A **WHERE** dimension field called **Country** to log which country the support call originates from - customers are located in either the UK or the US. * The Aggregation used to price the attached Product Plan targets the **Support Calls** Meter field and applies a **SUM** method to give the billing metric. * The **Revive Graph Support Plan 2X2** is priced at the flat rate of **\$1.25** per call. 3. Submit some test data to the Account using the Meters set up for the example. For the current example: **Revive Graph Standard** Meter - three usage data measurements submitted for the example Account: * GIGABs = **300**, FileFormat = **RAW** * GIGABs = **400**, FileFormat = **JPEG** * GIGABs = **500**, FileFormat = **RAW** * Total charge is **1200 x \$0.75 = \$900** **Revive Graph Support** Meter - three usage data measurements submitted for the example Account: * Support Calls = **26**, Where = **UK** * Support Calls = **36**, Where = **US** * Support Calls = **46**, Where = **UK** * Total charge is **108 x \$1.25 = \$135** 4. Open the example Account page and select the **Bills** tab. 5. Select **Run billing** and use the **Run billing** modal to generate a Bill for the Account for the next **Invoice date** covering the period in which you submitted the test data for the Product Meters: 6. Select the **Reference** hotlink text to open the Bill in **Bill Management**: Attach Contract130 * We can see the Bill has been correctly calculated for the usage submitted for each of the Products and we can then open the **Display options** menu and enable **Group by contract**: Attach Contract131 ### Setting Up Contract Billing with Usage Filters Suppose that for the current example, you want to maintain Contract billing for the two Products but accommodate variation in the contractual agreement made with different customers. For example, some customers will be charged only for storage of RAW files and for support calls made from the UK. **Defining Usage Filters?** Please first review the [above section](#defining-usage-filters) explaining how to define usage filters. **To set up Contract billing with Usage Filters:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Contracts** tab and select to edit **Standard Contract 1**. 3. On the **Contract details** panel under **Usage filters**, we'll add two filters to the Contract: * Select **Add**. The panel adjusts. * The first filter defaults to using an **Include** filter for **Contract code** as **Value**. For the current example, select **Custom value** as the **Value** instead. The panel adjusts again. 4. Use the **Dimension code** drop-down list to select a Meter dimension you want to use for filtering usage. Then enter the **Value** of the selected Meter Dimension you want to filter by and, for the current example, select **Include** for **Usage filter mode**. 5. Select **Add** again to add a second usage filter for the example: Attach Contract104 6. Select **Update contract**. ### Running and Viewing Contract Billing with Usage Filters Now that we've applied usage filters to **Standard** **Contract 1**, we can recalculate the Contract Bill to check that the charges are calculated correctly according to the filtered Product usage: Revive Graph Standard Meter - two usage data measurements were submitted for the example Account and the Contract usage filtering we've configured should include: * GIGABs = **300**, FileFormat = **RAW** * GIGABs = **500**, FileFormat = **RAW** * Total charge is **800 x \$0.75 = \$600** Revive Graph Support Meter - two usage data measurements were submitted for the example Account and the Contract usage filtering we've configured should include: * Support Calls = **26**, Where = **UK** * Support Calls = **46**, Where = **UK** * Total charge is **72 x \$1.25 = \$90** **To run and view Contract billing with Usage Filters:** 1. Open the example **Account** page and select the **Bills** tab. 2. Select the Bill that was generated without usage filters applied to the Contract and select **Recalculate selected**. 3. Select the **Reference** hotlink text to open the Bill in **Bill Management**: Attach Contract128 * The Bill has been correctly recalculated for the filtered usage submitted for each of the Products. We can then open the **Display options** menu and enable **Group by contract**: Attach Contract129 # Creating Counter Adjustments for Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-counter-adjustments-for-accounts If you've attached a Product Plan to an end-customer Account and the Plan is priced using a *Counter* for unit-based recurring subscription charges, you can then use the *Counter Adjustments* tab on the Account page to create adjustments for the number of Counter units the Account subscribes to. The Counter Adjustments on an Account for a given billing period will then determine the recurring charges calculated for that period's Bill. For full details on how to work in the Counter Adjustments tab to create and manage Counter Adjustments for your end-customer Accounts, please see the [Understanding and Creating Counter Adjustments for Accounts](/guides/recurring-charges-counters/creating-counter-adjustments-for-accounts) topic in the [Recurring Charges](/guides/recurring-charges-counters) section. **Important!** Before you attempt to price your Product Plans for unit-based pricing, attach those Plans to Accounts, and then create Counter Adjustments for Accounts, we *strongly recommend* that you review all of the topics in the [Recurring Charges](/guides/recurring-charges-counters) section, which explains how to work with Counters for pricing Plans and manage Counter Adjustments on Accounts for recurring charges billing. # Creating Custom Plans for Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-custom-account-plans You can create custom Plans for an Account: * Custom Plans can only be attached to that specific Account. * When you create custom Plans, they are attached to the Account to create an Account Plan based on the start and end dates you have entered. * You can add Aggregations or Counters and price the custom Plan straight away in the Plan details page. * Lastly, you might then want to edit the details of the Account Plan you've created for the Account using the custom Plan, such as first bill date or adding it to a Contract that's linked to the Account. **Attaching Plans to Accounts!** We strongly recommend you review the [Attaching Plans to an Account](/guides/end-customer-accounts/attaching-plans-to-an-account) topic for more details before you proceed to create custom Plans for an Account. Creating a custom Plan for an Account and performing the required configuration work to prepare the attached Plan for charging the Account involves four stages: * Stage 1: [Creating Custom Plan](/guides/end-customer-accounts/creating-custom-account-plans#creating-custom-plan) * Stage 2: [Attaching Custom Plan to Create Account Plan](/guides/end-customer-accounts/creating-custom-account-plans#attaching-custom-plan-to-create-account-plan) * Stage 3: [Pricing the Custom Plan](/guides/end-customer-accounts/creating-custom-account-plans#pricing-custom-plans) * Stage 4: [Editing Account Plan Details](/guides/end-customer-accounts/creating-custom-account-plans#editing-account-plan-details) You can delete an Account Plan from an Account on the **Attached Plans** tab: * [Deleting an Account Plan](/guides/end-customer-accounts/creating-custom-account-plans#deleting-an-account-plan) ## Creating Custom Plan **To create a custom Plan for an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the **Account**. The **Account** page opens with the **Overview** tab selected. 3. On the **Account actions** menu, select **Plans>Create custom plan**: Alternatively: * Select the **Attached plans** tab. * On the **Active and pending attached plans** panel, select the actions **Menu** button. * On the menu, select **Create custom plan**. The **Create** page opens for **Stage 1: Create plan**. 4. On the **Plan details** card, use the **Product** drop-down list to select the Product for the custom Plan you're creating for the Account: * If the Product you select doesn't have any Plan Templates created for it, then you must first create one before you can create a Plan for the Product. You'll see a warning with a hotlink **create plan template** text, which you can use to go directly to the **Plan Templates>Create** page. When you've created a Plan Template for the Product, you'll be brought straight back to the **Create** custom plan page to proceed. * If the selected Product has Plan Templates created for it, you can proceed and create a custom Plan based on one of the templates. 5. Use the **Plan Template** drop-down list to select the template you want to use for the custom Plan. 6. Enter the details of the custom Account Plan: * **Name**. Descriptive name for the custom Plan. When you create a custom Plan for an Account, a default name is loaded, which prefixes the Account name. You can edit this name text as required. * **Code**. Unique identifier for the custom Plan. When you create a custom Plan for an Account, a default code string is loaded. You can edit this code string as required. 7. Use the **Standing charge** card to enter settings for the custom Plan: * **Standing charge**. You can override the value inherited from the **Plan Template**. For example, enter **20**. The **Value from template** value is struck through. * **Standing charge billing**. If you want to override the **Use configuration from plan template** setting for billing either in arrears or in advance - shown in brackets - then select the setting you want for the custom Plan. * **Standing charge accounting product**. For accounting purposes, select a Product that will be linked to any *Standing charge* line items on Bills. (*Optional*) * Note that if you leave this blank, then the Product the Plan belongs will be used. * **Standing charge description**. You can enter a description for any Standing charge amounts billed. This will override any description entered for the Plan template and will appear against this type of bill line item. 8. Use the **Minimum spend** card to enter settings for the custom Plan: * **Product minimum spend**. You can override the value inherited from the **Plan Template**. For example, enter **125**. * **Minimum spend billing**. If you want to override the **Use configuration from plan template** setting for billing either in arrears or in advance for minimum spend amount - shown in brackets - select the setting you want for the custom Plan. * **Minimum spend accounting product**. For accounting purposes, select a Product that will be linked to any *Minimum spend* or *Minimum spend adjustment* line items on Bills. (*Optional*) * Note that if you leave this blank, then the Product the Plan belongs to will be used. * **Minimum spend description**. You can enter a description for any Minimum spend amounts charged at billing. This will override any description entered for the Plan template and will appear against this type of bill line item. 9. Select **Next**. The page adjusts to show that **Stage 1: Create plan** is completed and you can now move to [**Stage 2: Attach plan**](/guides/end-customer-accounts/creating-custom-account-plans#attaching-custom-plan-to-create-account-plan-and-price-plan) to the Account to create an Account Plan. ## Attaching Custom Plan to Create Account Plan When you have completed **Stage 1: Create plan**, the **Create** page adjusts to allow you to complete for **Stage 2: Attach plan**. **To attach a Custom plan to an Account:** 1. On the **Plan attachment settings** card, enter **Start date** and **End date** to define the period you want the custom Plan to be active for the Account for charging for Product usage: * A **Start date** is required. * If you omit an **End date**, the Account Plan will be applied to the Account perpetually or until such time as you delete the Account Plan. * Note that **End dates** are treated *exclusively*. For example, if you set the **End date** of June 1st 2022, then the Account Plan ceases to be active for the Account at midnight on May 31st 2022, and any billing is calculated up to that point in time, NOT up to midnight on June 1st. If you want to include end customer Account usage occurring on June 1st for billing, you must set the **End date** to June 2nd. **Warning: Overlapping Attached Plans!** * **Default setting**. The default Organization setting imposes the contraint that an Account can only have one active Account Plan *per Product* - if you enter a **Start** **date** which would mean the new Account Plan overlaps with an Account Plan that is already active for the Account, then a warning will show and you'll be given the option to end the existing Account Plan on the **Start date** of the new Account Plan. * **Allow overlapping attached plans**. If your billing use case requires you to attach more than one Plan to an Account for the same Product at the same time, then you must first enable the **Allow overlapping attached plans** Organization setting. 2. If you want to set the date the first and subsequent Bills are due for the selected Account using the Account Plan, use the **Billing cycle date** option. For example, if the Plan is configured for monthly billing frequency and you set **Billing cycle date** as February 14th, then m3ter will create a first bill for the Account on that date and every month from that date - March 14th, April 14th, and so on. If left blank, then start of billing defaults to the billing cycle date configured for the Account. *(Optional)* 3. If you want to add the Account Plan to a Contract you've created for the Account, use the **Contract** drop down to select it.*(Optional)* **Notes:** * Once you've attached a Plan to an Account, you can quickly add it to a Contract from **Plan attachment details**. * For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts). 4. If the Account is either a Parent or a Child Account, you can select for **Account hierarchy billing mode**, which determines how billing will be handled and shown on bills for charges due for the Parent Account and charges due for Child Accounts: * **Bill parent account - bill line item per account**. Default setting. * **Bill parent account - single bill line item for all accounts**. * **Bill child account**. **Notes:** * The billing mode options are only operative if the Account is a Parent or Child Account. For a full explanation of what each means when attaching Plans to create Account Plans for Parent or Child Accounts, see [Billing Hierarchy Modes for Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts). * If you Price the Custom Plan using a Counter for unit-based pricing, then Parent/Account billing is *not available for the charges or credits due under the pricing*. 5. Select **Create plan and attach** to complete **Stage 2**: * The custom Plan is created for the Account - it's created as an *Account specific Plan*, which means you can only attach it to this Account. * The custom Plan is attached to the Account and an Account Plan is created. * The **Plan attachment** details page opens: Createcustomplan70 For the *Account Plan* created when you attached the custom Plan to the Account, under **Plan attachment details** you can: * Check the dates for the period the Account Plan will be active for the Account. * Read-off the Account Plan **ID** with the option to **Copy** this directly to your clipboard. * Manage linking of the Account Plan to a Contract: * If not previously added to a Contract, select **Add to contract**. * If previously added to a Contract, select **Remove from contract**. * Select **Edit** if you need to make any changes to the Account Plan, such as update the start and end dates. 6. If you scroll down the page, you can review **Plan attachment metadata** metadata: **Custom Fields**. Any fields created for the Account Plan entity are listed. * If any Custom Fields have been created at the Organizational level, these are shown and you can **Copy** the number or string value to your clipboard: Attach Plans63 **External mappings**. You can commence a workflow to **Create external mapping** for the Account Plan directly - see [Creating and Managing External Mappings for Accounts](https://docs.m3ter.com/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) for an example of how to do this: Attach Plans65 * The **External system** and **External table** mapped to are shown - such as **Netsuite - Item** in the above example. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Account Plan has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. **Integration runs**. If you go on to set up an integration that synchronizes the Account Plan data with an external system, the date/time and status of the **Latest** integration run will be shown. You can use a text hotlink to open details of this latest run or **View all runs**. See [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). 7. If you scroll further down the page, you can review details of the custom Plan that was attached to the Account to create the Account Plan. This saves you having to navigate away or open the Plan details page in a separate tab: * **Plan details**: * Check the details of the Plan. * Use hotlink text links to open the **Plan details** page and details pages for associated entities - **Plan template** and **Product**. * Read-off the Plan **ID** and **Copy** it to your clipboard. * Check the audit data for the Plan for who **Created** and **Last modified** the Plan and when. Createcustom Plan71 * Plan **Standing charge**: Createcustomplan72 * Plan **Pricing**: * For the new Custom Plan **Add usage-based pricing** or **Add counter-based pricing** directly. For example, select an **Aggregation** and add usage-based pricing for the Plan - see the [following section](#pricin-custom-plans): Create Custom Plan83 * Plan **Adjustments**: Createcustomplan74 * **Plan metadata**: * **Custom fields** * **External mappings** * **Integration runs** **Plan metadata!** The *Plan's metadata* shown at the bottom of the page should not be confused with the *Account Plan's metadata*, which is also shown immediately below the **Plan attachment details** card. 8. If you return to the **Accounts** page and select the **Attached plans** tab, you'll see that an Account Plan has been created for the Account using the new custom Plan to charge for the Product, and which is listed on the **Active and pending attached plans** panel: Createcustomplan75 ## Pricing Custom Plans When you have completed **Stage 2: Attach plan**, you can complete **Stage 3: Price plan** - price custom Plans you've created for an Account from the **Plan attachment** page under **Pricing**. This section explains how to add *usage-based pricing* to an Account's custom plan from the **Plan attachment** page: * You can follow similar steps to add usage-based pricing from the **Plan details** page of the custom Plan. * Alternatively, you can add *counter-based pricing* from either the **Plan attachment** page or the custom **Plan details** page **Warning: Custom Plans cannot be priced directly in the Pricing Editor!** If you open the **Pricing Editor** and select the Product the custom Plan belongs to and then select to **Add plans**, only non-custom Plans created for the Product will be available for selection. You must price custom Plans from the **Plan Attachment** page or from the **Plan details** page. **To price a Custom plan for an Account:** 1. From the Account's **Attached plans** tab on the **Active and pending attached plans** panel, select the Account Plan name text hotlink. The **Plan attachment** page opens. 2. Under **Pricing** on the Plan details panel, select add usage-based pricing: Createcustomplan76 * A **Select aggregations** modal opens with **Aggregation** pre-selected as the **Aggregation type**: * Select **Compound aggregation** if you want to use this **Aggregation type** for the Plan pricing. 3. Select **Next**. The modal adjusts. 4. Select the Aggregation you want to use to price the Plan and select **Confirm**. The modal closes and the Aggregation is loaded into the **Pricing** panel: Create Custom Plan84 6. Select **create new pricing**. The **Pricing>Create** page opens and you can create a pricing in the usual way - as if you had reached this page from the Pricing Editor when pricing a non-custom Plan. **Tip: More details on pricing Plans?** * If you're pricing the Plan using Aggregations, see the [Creating a Pricing for a Plan](/guides/plans-and-pricing/pricing-plans/pricing-plans#creating-a-pricing-for-a-plan). * If you're pricing the Plan using Counters, see [Creating Counters and Pricing Plans](/guides/recurring-charges-counters/creating-counters). 7. When you've completed the pricing configuration you want to apply to the custom Plan, select **Create pricing**. The **Pricing>Create** page closes and you are returned to the **Plan attachment** page where the custom Plan's new usage-based pricing now shows under **Pricing**: Create Custom Plan86 * In this example, we've set up the custom Plan for tiered pricing with two pricing bands. ## Editing Account Plan Details When you have completed **Stage 3: Price plan**, you can complete **Stage 4: Edit plan details**. **To edit Account plan details:** 1. From the Account's **Attached plans** tab on the **Active and pending attached plans** panel, select the Account Plan name text hotlink to open the **Plan attachment** page. 2. Select **Edit**. The **Edit** page opens and you can edit the Account Plan and define settings. 3. Edit **Start date** and **End date**, as required. 4. If you want to set the date the first Bill is due for the selected Account using the Account Plan, you can use the **Billing cycle date** option. Subsequent billing will be determined from the first date you define. For example, if the Plan is configured for monthly billing frequency and you set **Billing cycle date** as February 14th 2022, then m3ter will create a first bill for the Account on that date and every month from that date. If left blank, then start of billing defaults to the billing cycle date configured for the Account. *(Optional)* 5. If you want to add the Account Plan to a Contract you've created for the Account, use the **Contract** drop down to select it. For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts). *(Optional)* 6. If the Account is either a Parent or a Child Account, you can select for **Account hierarchy billing mode**, which determines how billing will be handled and shown on bills for charges due for the Parent Account and charges due for Child Accounts: * **Bill parent account - bill line item per account**. Default setting. * **Bill parent account - single bill line item for all accounts**. * **Bill child account**. **Notes:** * The billing mode options are only operative if the Account is a Parent or Child Account. For a full explanation of what each means when attaching Plans to create Account Plans for Parent or Child Accounts, see [Billing Hierarchy Modes for Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts). * If you Price a Custom Plan using a Counter for unit-based pricing, then Parent/Account billing is not available for the charges or credits due under the pricing. 7. Add any required **Custom fields** to the Account Plan. For more on Custom Fields, see [Adding and Editing Custom Fields](/guides/organization-and-access-management/viewing-and-editing-organization/adding-and-editing-custom-fields). 8. Select **Update plan attachment** to complete the final stage of your custom Plan set up for the Account. You now have a fully configured Account Plan on the Account - Bills will be calculated for the Account in accordance with the Account Plans on the Account for each of your Products the Account consumes. **Tip: Adding Custom Fields when attaching a Plan?** You can define Custom Fields for the Account Plan created when you attached a custom Plan to an Account. Note that: * These Custom Fields will be *specific to the Account Plan* - they are separate from any Custom Fields you might have already added either to the Account itself or to the custom Plan that you're attaching and that was used to create the Account Plan. * Secondly, any Custom Fields you create for an individual Account Plan *override* those you've created for Account Plans at the Organizational level. See [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields). ## Deleting an Account Plan **To delete an Account Plan:** 1. On the **Active and pending attached plans** panel, select **Delete**: A confirmation popup appears. 2. Select **Yes** to confirm the Account Plan deletion. 3. Alternatively, on the **Active and pending attached plans** panel, select the **Name** hotlink text of the Account Plan you want to delete. The **Plan attachment** page opens. 4. Select **Delete**: Deletebutton A confirmation popup appears. 5. Select **Yes** to confirm the Account Plan deletion. You are taken back to the **Attached plans** tab. **Important!** Deleting the *Account Plan* does not mean the *Plan* is deleted - the Account Plan is created only when you attach a Plan to an Account. The Account Plan and Plan are therefore separate entities. If you want to delete a Plan, you must go to **Pricing>Plans**, select the **Product** you created the Plan for, and then delete it from there. # Creating Custom Plan Groups for Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts You can create custom Plan Groups for an Account: * Custom Plan Groups can only be attached to that specific Account. * When you create custom Plan Groups, they are attached automatically to the Account to create an *Account Plan Group* based on the start and end dates you have entered. * You can then edit the details of the Account Plan Group you've created for the Account, such as first bill date or adding the Account Plan Group to a Contract that's linked to the Account. * When you create the custom Plan Group, you can add Plans to the Plan Group and review and edit the pricing of these Plans straightaway. **Important!** * **Creating Custom Plan Groups for Accounts.** We strongly recommend you review the [Attaching Plan Groups to an Account](/guides/end-customer-accounts/attaching-plan-groups-to-an-account) and [Working with Plan Groups](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups) topics before you proceed to create custom Plan Groups for an Account. * **Account Plan Group is type of Account Plan.** When you attach a Plan Group to an Account, an Account Plan Group is created. However, the m3ter data model *does not support a separate Account Plan Group entity*, and an Account Plan Group is a type of Account Plan where a *Plan Group id* is used instead of a Plan id when it's created. See the [Create Account Plan API](/api/accountplan/create-accountplan) call. Creating a custom Plan Group for an Account and performing the required configuration work to prepare the attached Plan Group for charging the Account involves four stages: * Stage 1: [Creating Custom Plan Group](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts#creating-custom-plan-group) * Stage 2: [Attaching Custom Plan Group to Create Account Plan Group](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts#attaching-custom-plan-group-to-create-account-plan-group) * Stage 3: [Adding Plans to Group and Reviewing and Pricing Plans](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts#adding-plans-to-group-and-reviewing-and-pricing-plans) * Stage 4: [Editing Account Plan Group Details](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts#editing-account-plan-group-details) You can delete an Account Plan Group from an Account on the **Attached Plans** tab: * [Deleting an Account Plan Group](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts#deleting-an-account-plan-group) ## Creating Custom Plan Group **To create a custom Plan Group for an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the **Account**. The Account page opens with the **Overview** tab selected. 3. On the **Account actions** menu, select **Plans>Create custom plan group**: Alternatively: * Select the **Attached plans** tab. * On the **Active and pending attached plans** panel, select the actions **Menu** button. * On the menu, select **Create custom plan group**. The **Create** page opens. 4. Enter the required **Plan group details**: * **Name**. Descriptive name for the Account Plan Group. When you create a custom Account Plan Group, a default name is loaded for which prefixes the Account name. You can edit this name text as required. * **Code**. Unique identifier for Account Plan Group. When you create a custom Account Plan Group, a default code string is loaded. You can edit this string as required. * **Currency**. Select the currency for the Plan Group: **Warning: You must create at least one Currency for your Organization before you can create a Custom Plan Group!** If you haven't, the **Currency** drop-down list will not be available and you'll see a warning: * Select the **create a new currency** hotlink text provided. This takes you directly to the **Create** page to create the Currency you want to use for the Plan Group. See [Creating and Managing Currencies](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies). * When you create the new Currency, you are taken directly back to the Custom Plan Group **Create** page and the Currency is selected. 5. Enter **Standing charge** settings for the custom Plan Group, which are optional: * **Standing charge**. Optional field to set standing charge to be applied for Plan Group. * **Standing charge billing**. If you want to override the default **Use organization-wide configuration** setting for billing either in arrears or in advance for standing charges, and which is shown in brackets, select the setting you want for the Plan Group. * **Standing charge accounting product**. If your accounting operations require it, you can use this to link the standing charge on the Account to a particular Product. *(Optional)* * **Standing charge description**. You can enter a description for any Standing charge amounts, which will appear in the bill line item *(Optional)*: 6. Enter **Minimum spend** settings for the custom Plan Group, which are optional: * **Minimum spend**. Optional field to define minimum spend across all Plans included in the Plan Group. * **Minimum spend billing**. If you want to override the default **Use organization-wide configuration** setting for billing either in arrears or in advance for minimum spend amount, and which is shown in brackets, select the setting you want for the Plan Group. * **Minimum spend accounting product**. If your accounting operations require it, you can use this to link the minimum spend on the Account to a particular Product. *(Optional)* * **Minimum spend description**. You can enter a description for any Minimum spend amounts, which will appear in the bill line item *(Optional)*: 7. Select **Next** to complete **Stage 1: Create plan group**. The page adjusts to allow you to complete **Stage 2: Attach plan group**- see [next section](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts#attaching-custom-plan-group-to-create-account-plan-group). ## Attaching Custom Plan Group to Create Account Plan Group When you've created a custom Plan Group for the Account, you can complete **Stage 2: Attach plan group** to create an *Account Plan Group*. **To attach custom Plan Group and create Account Plan Group:** 1. Under **Plan group attachment settings**, enter **Start date** and **End date** to define the period you want the Account Plan Group to be active for the Account for charging for Product usage: * If you omit an **End date**, the Account Plan Group will be applied to the Account perpetually or until such time as you delete the Account Plan Group. * End dates are *exclusive*. For example, if you set the **End date** of June 1st 2022, then the Account Plan Group ceases to be active for the Account at midnight on May 31st 2022, and any billing is calculated up to that point in time, NOT up to midnight on June 1st. If you want to include end customer Account usage occurring on June 1st for billing, you must set the **End date** to June 2nd: 2. If you want to set the date the first Bill is due for the selected Account using the Plan Group, you can use the **Billing cycle date** option. This allows you to set the date of first billing against the end-customer Account using the Plan Group. Subsequent billing will be determined from this first date. For example, if the Plan Group is configured for monthly billing frequency and you set **Billing cycle date** as February 14th 2022, then m3ter will create a first bill for the Account on that date and every month from that date. If left blank, then start of billing defaults to the billing cycle date configured for the Account. *(Optional)* 3. If you want to add the Account Plan Group to a Contract you've created for the Account, use the **Contract** drop down to select it. **Notes:** * Once you've attached a Plan Group to an Account, you can quickly add it to a Contract from **Plan group attachment details**. * For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts). For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts). *(Optional)* 4. If the Account is either a Parent or a Child Account, you can select for **Account hierarchy billing mode**, which determines how billing will be handled and shown on bills for charges due for the Parent Account and charges due for Child Accounts: * **Bill parent account - bill line item per account**. Default setting. * **Bill parent account - single bill line item for all accounts**. * **Bill child account**. **Notes:** * The billing mode options are only operative if the Account is a Parent or Child Account. For a full explanation of what each means when attaching Plans to create Account Plans for Parent or Child Accounts, see [Billing Hierarchy Modes for Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts). * If you price a Plan using a Counter for unit-based pricing, then Parent/Account billing is not available for the charges or credits due under the pricing. 5. Add any required **Custom fields** to the Account Plan Group. For more on Custom Fields, see [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields). 6. Select **Create plan group and attach** to complete **Stage 2: Attach plan group**: * The custom Plan Group is created for the Account - it's created as an *Account specific Plan Group*, which means you can only attach it to this Account. * The custom Plan Group is attached to the Account and an Account Plan Group is created. * You are taken directly to the **Plan group attachment** page of the newly created and attached Plan Group: Createcustomplangroup63 7. For the Account Plan Group created when you attached the Plan Group to the Account, under **Plan group attachment details** you can: * Check the dates for the period the Account Plan Group will be active for the Account. * Read-off the Account Plan Group **ID** with the option to **Copy** this directly to your clipboard. * Manage linking of the Account Plan Group to a Contract: * If not previously added to a Contract, select **Add to contract**. * If previously added to a Contract, select **Remove from contract**. * Select **Edit** if you need to make any changes to the Account Plan Group, such as update the start and end dates. 8. If you scroll down the page, you can review the **Plan group attachment metadata**: **Custom Fields**. Any fields created for the Account Plan Group entity are listed: Attach Plan Group48 * Note that because an Account Plan Group is a type of Account Plan, any Custom Fields created at Organizational level for Account Plans will be listed and you can **Copy** the number or string value of a field directly to your clipboard. **External mappings**. Any mappings created for the Account Plan Group are listed: Attach Plan Group49 * The **External system** and **External table** mapped to are shown - such as **Stripe - Pricing** in the above example. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Account Plan Group has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. * You can commence a workflow to **Create external mapping** for the Account Plan Group directly - see [Creating and Managing External Mappings for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) for an example. **Integration runs**. If you go on to set up an integration that synchronizes the Account Plan Group data with an external system, the date/time and status of the **Latest** integration run will be shown. You can use a text hotlink to open details of this latest run or **View all runs**. See [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). 9. Scroll down the page to the **Plan group details** panel: For the new custom Plan Group you've just created, you can: * Check the details of the Plan Group and select **Edit** if you want to make any changes, such as update the minimum spend amount. * Read-off the Account Plan Group **ID** with an option to **Copy** this directly to your clipboard. * Use hotlink texts to open the **Plan group details** page directly or the **Account details** page directly. ## Adding Plans to Plan Group and Reviewing and Pricing Plans There are two ways you can add Plans to a custom Plan Group: * Go to **Pricing>Plan groups** and open the custom Plan Group you want to add a Plan to. On the **Included plans** panel, select **Add plan**. For more details, see the [Adding Plans to Plan Groups](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups#adding-plans-to-plan-groups) section in the [Working with Plan Groups](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups) topic. * When you've attached a custom Plan Group to an Account, open the **Plan group attachment details** page from the **Account>Attached plans** tab and add Plans to the custom Plan Group directly from there. This section explains how to add Plans to a custom Plan Group from the **Plan group attachment details** page. **To add Plans to Plan Group and review and price Plans:** 1. Go to **Accounts** and search for and open the Account. 2. Select the **Attached plans** tab. 3. On the **Active and pending attached plans panel**, select the **NAME** hotlink text of the attached custom Plan Group you want to add Plans to. The **Plan group attachment** page opens. 4. Scroll down the **Plan group attachment** page. * **Note**: If you have just created a new custom Plan Group and attached it to an Account, the new Plan Group will not yet have any Plans added and a blue help text will show to advise you. 5. On the **Plan group details** panel, select **Add plan**. A **Select plans** dialog appears and lists all the Plans created for Products in your Organization and any custom Plans created for the Account you've created the custom Plan Group for. 6. Select the Plans you want to add to the custom Plan Group and select **Confirm**. The **Select plans** dialog closes and: * The Plans are added to the **Select a plan** drop-down list on the **Plan details** panel. * The blue help text advising you the Plan Group doesn't currently contain any Plans is no longer shown. * The **Edit linked plans** button on the **Plan group details** panel is enabled. **Warning: Constraints on Adding Plans to Custom Plan Groups:** * **Only one Plan per Product!** If you try to add more than one Plan for the same Product to the Plan Group, you'll receive an error message. * **Custom Plans for other Accounts can't be added to a Custom Plan Group**. The **Select plans** dialog lists only Custom Plans belonging to the same Account as the Custom Plan Group and any non-Custom Plans. 7. To review a Plan and its pricing that you've added to the Plan Group, select it from the **Select a plan** drop-down list: On the **Plan details** panel, you can: * Check the details of the Plan. * Use hotlink texts to open the **Plan details** page directly and the associated details page for the **Plan template** or **Product**. * Under **Associated pricing**: * If the Plan is a *custom Plan* for the Account, then: * If you've already priced the Plan, the pricing is shown and you can **Edit**, **Delete**, or review the **Details** of the existing pricing - as in the above example. * If you've not already priced the Plan, you can **Create Plan pricing**. See [Pricing Plans and Plan Templates](/guides/plans-and-pricing/pricing-plans/pricing-plans) and [Creating Counters and Pricing Plans](/guides/recurring-charges-counters/creating-counters). * If the Plan is *not a custom Plan* for the Account, then: * If you've already priced the Plan, the pricing is shown but you cannot edit the pricing but can select to review the **Details** of the pricing. * If you've not already priced the Plan, then you cannot price it but must open the non-custom Plan in the **Pricing Editor** and price it there. At the bottom of **Plan details**, you can: * Read-off the Plan **ID** and **Copy** it to your clipboard. * Check the audit data for the Plan for who **Created** and **Last modified** the Plan and when. 8. When you have added the required Plans to the Plan Group and priced them, return to the **Attached plans** tab to complete **Stage 3: Adding plans to group and Reviewing and Pricing Plans.** The **Active and pending attached plans** panel shows the new custom Account Plan Group: **Tip: Removing Plans from Plan Group?** To remove Plans from a Plan Group from the **Plan group attachment** page, on the **Plan group details** panel select **Edit linked plans**. The **Plan group details** page opens and the **Included plans** panel lists the Plans added to the Plan Group. From there you can remove Plans from the Plan Group - see [Removing Plans from Plan Group](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups#removing-plans-from-plan-groups). ## Editing Account Plan Group Details **To edit Account Plan Group details:** 1. On the **Active and pending attached plans** panel, select **Edit**: The **Edit** page opens. 2. On the **Plan group attachment details** card, edit **Start date** and **End date**, as required: 3. On the **Plan group attachment settings** card: * If you want to set the date the first Bill is due for the selected Account using the Plan Group, you can use the **Billing cycle date** option. Allows you to set the date of first billing against the end customer Account using the Plan Group. Subsequent billing will be determined from this first date. For example, if the Plan Group is configured for monthly billing frequency and you set **Billing cycle date** as February 14th 2022, then m3ter will create a first bill for the Account on that date and every month from that date. If left blank, then start of billing defaults to the billing cycle date configured for the Account. *(Optional)* * If you want to add the Account Plan Group to a Contract you've created for the Account, use the **Contract** drop down to select it. For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts). *(Optional)* * If the Account is either a Parent or a Child Account, you can select for **Account hierarchy billing mode**, which determines how billing will be handled and shown on bills for charges due for the Parent Account and charges due for Child Accounts: * **Bill parent account - bill line item per account**. Default setting. * **Bill parent account - single bill line item for all accounts**. * **Bill child account**. **Notes:** * The billing mode options are only operative if the Account is a Parent or Child Account. For a full explanation of what each means when attaching Plans to create Account Plans for Parent or Child Accounts, see [Billing Hierarchy Modes for Parent/Child Accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts). * If you price a Plan using a Counter for unit-based pricing, then Parent/Account billing is not available for the charges or credits due under the pricing. 4. Add or edit any **Custom fields** required for the Account Plan Group. 5. Select **Update Plan group attachment** to complete **Stage 4: Edit Account Plan Group Details**. You now have a fully configured custom Account Plan Group on the Account and Bills will be calculated for the Account in accordance with the priced Plans that belong to the Plan Group. ## Deleting an Account Plan Group **To delete an Account Plan Group:** 1. On the **Active and pending attached plans** panel, select **Delete**: A confirmation popup appears. 2. Select **Yes** to confirm the Account Plan Group deletion. 3. Alternatively, on the **Active and pending attached plans** panel, select the **Name** hotlink text of the Account Plan Group you want to delete. The **Plan group attachment** page opens. 4. Select **Delete**: Deletebutton A confirmation popup appears. 5. Select **Yes** to confirm the Account Plan Group deletion. You are taken back to the **Attached plans** tab. **Important: Deleting or Editing the Custom Plan Group!** Deleting or editing the *Account Plan Group* that is created automatically when you create a custom Plan Group for an Account does not mean the custom *Plan Group* is deleted or edited. If you want to delete or edit a custom Plan Group you've created for an Account, you must go to **Pricing>Plan groups**, and then delete or edit the Plan Group there. Similarly, if you have added several Plans to the custom Plan Group, you must go to **Pricing>Plan groups**, select the custom Plan Group, and delete the linked Plans under **Included plans**. # Creating Prepayments for Accounts Source: https://docs.m3ter.com/guides/end-customer-accounts/creating-prepayments-for-accounts You can apply a *Prepayment/Commitment* to an end customer Account for cases where the end customer has agreed to pay a fixed amount over the duration of their contract with you to consume one or more of your products or services. The amount is understood as payable regardless of the actual usage they become liable to pay for during the contract period. However, a Prepayment contrasts with a simple agreed minimum spend amount defined for an Account, since an agreed minimum spend will typically be assessed on a bill-by-bill basis whereas the Prepayment spans across multiple bills for the entire contract period. Depending on the payment use case you want to implement, you can exploit various configuration options when setting up Prepayments for your end-customer Accounts: * If not all of an agreed Prepayment amount is paid at the start of a customer service period, you can choose one of two options for billing the outstanding fees due: * Select a Product *Plan to bill with*. * Define a *schedule of billing dates*. * When setting up a Prepayment on an Account, you can include a surcharge rate to be applied for any overage on the Prepayment amount that occurs during the service period. **Tip: Balances and Prepayments/Commitments?** You can use both Balances and Prepayments to help manage credit amounts for your end-customer Accounts, but they serve different purposes. Prepayments are used for amounts end-customers have agreed to pay for consuming your product or services across a full contract term. In contrast, a Balance - often referred to as a *Top-Up* or *Prepaid draw-down* - is used when a customer wants to add a credit amount to their Account or you as service provider want to add a credit to a customer Account. This Balance credit can then be drawn-down against for billing the Account for usage. Balances therefore serve payment use cases in a more flexible way, for example to be used as a "Free Credit" sign-up scheme to encourage sales or to enhance customer satisfaction by adding credit to an Account when there have been issues delivering your service. You can use Prepayments and Balances together, with the option to draw-down against the Balance credit amount before or after any Prepayment amounts on an Account. See below [Prepayments Draw-Down Order Against Balances](/guides/end-customer-accounts/creating-prepayments-for-accounts#prepayments-draw-down-order-against-balances). This topic provides an example to illustrate how any Prepayments/Commitments you apply to a customer Account will be handled in m3ter for Billing against the Account, and explains how you can create Prepayments for your customer Accounts: * [Example Prepayment](/guides/end-customer-accounts/creating-prepayments-for-accounts#example-prepayment) * [Creating Prepayments](/guides/end-customer-accounts/creating-prepayments-for-accounts#creating-prepayments) * [Prepayment Billing with a Plan](/guides/end-customer-accounts/creating-prepayments-for-accounts#prepayment-billing-with-a-plan) * [Prepayment Billing on a Schedule](/guides/end-customer-accounts/creating-prepayments-for-accounts#prepayment-billing-on-a-schedule) When you have created Prepayments for Accounts, you can open a details page to check fees and usage, fee dates, review a chart that tracks Prepayment consumption over the active period for the Account, and review the Prepayment's metadata: * [Viewing Prepayment Details](/guides/end-customer-accounts/creating-prepayments-for-accounts#viewing-prepayment-details) If you want to renew a contract with an existing end customer Account and want to include a Prepayment in the customer's contract renewal, you can quickly duplicate either an active or pending Prepayment you've already created for the Account: * [Duplicating Prepayments](/guides/end-customer-accounts/creating-prepayments-for-accounts#duplicating-prepayments) If you want to add a Prepayment to or remove it from a Contract on the Account, you can quickly do this from the *Prepayment details* page: * [Adding Prepayments to or Removing from Contracts](#adding-prepayments-to-or-removing-from-contracts) If you have linked an Account Plan attached to the Account to a Contract and you want to ensure the Prepayment is available for draw-down against billed charges on the Account, you must link the Prepayment to the same Contract: * [Linking Prepayments to Contracts - Availability for Draw-Down](/guides/end-customer-accounts/creating-prepayments-for-accounts#linking-prepayments-to-contracts-availability-for-draw-down) If you have added both Prepayment and Balance credit amounts to an Account, you can define the order in which these credits amount are drawn-down against for billing the Account: * [Prepayments Draw-Down Order Against Balances](/guides/end-customer-accounts/creating-prepayments-for-accounts#prepayments-draw-down-order-against-balances) ## Example Prepayment Suppose you have a customer who has agreed to pay a fixed amount over a year's contract for one of your products, say \$15,000, and to pay this total incrementally over the 12-month term in equal monthly billed amounts of \$1,250. You charge for your product on the basis of transactions at a rate of \$0.46 per transaction. The customer also agrees to pay a surcharge of 1% for any transactions payable over the agreed Prepayment amount: * **Month 1**. The Account logs 20,000 transactions. At \$0.46 per transaction this comes to \$9,200 chargeable. This usage remains below the agreed Prepayment for the Account, so the transactions charge for usage is \$0. However, the regular monthly amount of \$1,250 is still due and the Bill for this first month is issued in this amount. * **Month 2**. The Account makes another 20,000 transactions. At \$0.46 per transaction this comes to a further \$9,200 chargeable. The total chargeable is therefore \$18,400, which exceeds the Prepayment amount by \$3,400. Since a surcharge on any overage of 1% was agreed, this becomes \$3,434. So the Bill for this second month is issued in the amount of: \$1,250 + \$3,434 = \$4,684. * **Month 3**. The Account makes another 20,000 transactions. At \$0.46 per transaction this comes to a further \$9,200 chargeable. The cumulative chargeable over the three-month period is now \$27,600, which exceeds the Prepayment amount by \$12,600. The monthly overage for this month is \$12,600 - \$3,400 = \$9,200, since month two's overage of \$3,400 was charged under that month's Bill. With the overage surcharge applied, this month's usage charge is \$9,292. So the Bill for this month is issued in the amount of: \$1,250 + \$9,292 = \$10,542. ## Creating Prepayments You can create Prepayments for an end customer Account from the **Account** page. **To create a Prepayment for an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to create a Prepayment. The **Account** page opens. 3. On the **Account actions** menu, select **Prepayments>Create prepayment**: Alternatively: * Select the **Prepayments** tab. * On the **Active and pending prepayments** panel, select **Create prepayment**. The **Create** page opens. **Warning: You must create at least one Currency for your Organization before you can create a Prepayment!** If you haven't, the **Create** page will not open and you'll see a warning: * Select the **Manage currencies** hotlink text provided. This takes you directly to the **Create** page to create the Currency you want to use for the Prepayment. See [Creating and Managing Currencies](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies). * When you create the new Currency, you are taken directly back to the Prepayment **Create** page and the Currency is selected. 4. Enter the required **Prepayment details**: * **Start date (inclusive)** and **End date (exclusive)**. Use the popup calendars to select. *(Required)* * Note that the end date is treated *exclusively* and will be applied as midnight of the selected date, where midnight is understood as the *start of that date*. This means that if you set the **End date** of June 1st 2022, then the Prepayment ceases to be active for the Account at the end of May 31st 2022, and any prepayment fees due are calculated up to that point in time. * **Accounting product.** Use the drop-down to select a Product. *(Required)* * You can use this to link the Prepayment on the Account to a particular Product for accounting purposes: * If you omit a **Draw-downs accounting product** for **Prepayment drawdown**, then the **Accounting product** will be used for *Prepayment consumed* line items on Bills. * If you omit a **Fees accounting product** when setting up billing for the Prepayment - either for billing with a Plan or on a Schedule - then the **Accounting product** will be used for *Prepayment fee* line items on Bills. **Important!** If you're planning to set up an integration for sending Bills to an external accounts receivable system, please check requirements for your chosen system. Some systems, such as NetSuite, require a Product to be linked with any Bill line items associated with Account Prepayments, and the integration will fail if this is not present. * **Currency**. Use the drop-down list to select the currency you want to use for the Prepayment. *(Required)* * **Contract**. *(Optional)* If you want to add the Prepayment to a Contract you've created for the Account, use the drop-down to select it. For more details on Contracts, see [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts). **Important: Linking Prepayment to Contract - ensuring Prepayment is available for draw-down at billing!** Whether you need to link a Prepayment on an Account to a Contract is dependent on whether or not an Account Plan on the same Account has been linked to a Contract. For details, see the following section on [Linking Prepayments to Contracts](/guides/end-customer-accounts/creating-prepayments-for-accounts#linking-prepayments-to-contracts-availability-for-draw-down). 5. Enter the **Billing configuration** settings. * **Amount**. Enter the Prepayment amount. *(Required)* * **Fully prepaid**: * Enable this switch if the Prepayment is to be fully prepaid. The **Billing Configuration** panel will close since you don't need to set up billing for any remainder amount that has not been prepaid. Move to **Step 6** below for Prepayment Restrictions. * Leave this switch disabled if only some or none of the Prepayment amount is to be prepaid. The **Billing Configuration** panel remains open ready for you to set up billing for the remainder amount of the Prepayment amount minus any prepaid amount. Default setting. * Since in this example, nothing is prepaid against the Prepayment amount, you'll have to configure how you want to bill against the Prepayment for this Account. Two options: * **Bill with plan**. See following section for [Prepayment Billing with Plan](/guides/end-customer-accounts/creating-prepayments-for-accounts#prepayment-billing-with-a-plan). * **Bill on a schedule**. See following section for [Prepayment Billing on a Schedule](/guides/end-customer-accounts/creating-prepayments-for-accounts#prepayment-billing-on-a-schedule). * **Amount pre-paid**. Enter the amount prepaid against the Prepayment. 6. Enter **Prepayment drawdown** settings, which are optional: * **Draw-down Products**. Use the drop-down to select any **Products** to which you want to apply the Prepayment. **Note:** If you don't select any Products for draw-down, by default the charges for *any Product* consumed by the Account will be drawn-down against the Prepayment amount. * **Draw-down charge types**. Use the drop-down to select the types of charge that can draw-down against the Prepayment amount when the Account is billed. Six options: * **Ad-hoc** * **Counter adjustment debit** * **Counter running total charge** * **Minimum spend** * **Standing charge** * **Usage** **Note:** If you leave the **Draw-down charge types** field empty, then charges due at billing for any of the charge types can be drawn-down against. * **Draw-downs accounting product**. For accounting purposes, select a Product that will be linked to any *Prepayment consumed* line items on Bills. *(Optional)* * Note that if you leave this blank, then the **Accounting product** selected for the Prepayment will be used instead. 7. Enter the remaining **Usage settings**, which are optional: * **Usage description**. Enter a *custom description* used for Bill line items for Prepayment consumption for usage. * Note that if you leave this blank, then a *default description* will be used. See [Bill Line Items - Default Descriptions](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-default-descriptions) for details. * **Overage surcharge (%)**. Enter a value for the additional surcharge (in percent) added to bills for overages on the Prepayment: **Note:** You can enter a *negative percentage* if you want to give a discount rate for usage to end customers who exceed their Prepayment amount. * **Overage description**. Optionally, enter a *custom description* to be used for Bill line items for Prepayment overage surcharge: * Note that if you leave this blank, then a *default description* will be used. See [Bill Line Items - Default Descriptions](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-default-descriptions) for details. * **Overage usage**. If you have not entered a value for **Overage surcharge (%)** or you have entered a value of **0**, you can use a switch to enable **Separate bill line item for overage usage** on Bills. This means that if a Prepayment amount has been consumed by an Account, any subsequent line items on Bills against the Account for usage will show as separate "overage usage" charges, not simply as "usage" charges. Note: * If you have entered a value other than **0** in the **Overage surcharge (%)** field, then this option will be grayed out and unavailable. * If you have set up overage pricing on a tiered pricing structure when pricing a Plan that will apply to billing for the Prepayment and you enable **Separate bill line item for overage usage**, then overage usage charges for separate line items will be rated according to this overage pricing. * **Account hierarchy drawdown mode**. If the Account is either a Parent or a Child Account, you can control on which Bill Prepayment fee and draw-down line items will appear: * **Drawdown parent account - bill line item per account**. A separate bill line item per Account and appear as separate line items on the Parent Bill - one per Child. *(Default)* * **Drawdown parent account - single bill line item for all accounts**. A single bill line item for all Accounts and appears as a single separate line item on the Parent Bill. * **Drawdown child account**. Child Accounts are billed and appear as line items on each Child Account Bill. **Important!** * **Only Operative for Parent/Child Accounts**. The **Account hierarchy drawdown mode** options are only operative if the Account is a Parent or Child Account. * **Parent/Child billing for Recurring Charges not supported**. If you price a Plan using a Counter to apply unit-based pricing for recurring subscription charges and attach the Plan to Parent or Child Accounts, Parent/Child billing is not supported for the recurring charges. **Important! Prepayment Overage surcharge percentage overrides Prepayment Overage pricing.** If you have set up overage pricing on a tiered pricing structure when pricing a Plan that will apply to billing for the Prepayment and you have *also set up* overage surcharge percentage when creating the Prepayment for an Account, any overage usage charges on the Account will be billed at the *overage surcharge percentage rate* and the Prepayment *overage pricing will be ignored*. See [Creating Pricing for a Plan](/guides/plans-and-pricing/pricing-plans/pricing-plans#creating-a-pricing-for-a-plan). **Tip: Prepayment/Commitment fee - billing in arrears or in advance?** You can configure this at the Organizational level - see [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). 8. Select **Create prepayment**. You are returned to the **Prepayments** tab, where the Prepayment is listed on the **Active and pending prepayments** panel: **Tip: Reviewing Prepayments?** At any time, you can open the **Prepayment Details** page for a Prepayment/Commitment on an Account - see below, [Viewing Prepayment Details](/guides/end-customer-accounts/creating-prepayments-for-accounts#viewing-prepayment-details). Also, you can query for Prepayments and review the returned data using the Data Explorer. See [Performing Prepayments Queries and Reviewing Results](/guides/data-explorer/performing-commitments-queries-and-reviewing-results). ## Prepayment Billing with a Plan If the customer Account has opted not to pay the agreed Prepayment in total upfront and the **Amount pre-paid** is less than the Prepayment **Amount**, then under **Billing for remaining** you can select to **Bill with plan** for the outstanding Prepayment amount. The **Billing Configuration** panel adjusts and you can enter billing details for adding line items for Prepayment fees to Bills in each billing period over the duration of the Prepayment: * **Plan**. Use the drop-down to select which pricing Plan you want the Prepayment fees to be added for billing purposes. Note that this is to allow for cases where a customer Account has been placed on more than one pricing Plan, some of which are billed weekly and some of which are billed monthly. * **First bill fee**. Enter a Prepayment fee amount to be paid in the first Bill. The remainder due under the Prepayment will be evenly split across subsequent Bills up to the end of the Prepayment contract period. * **Billing cycle date**. Optional setting, which sets the date when the first Bill is created and acts as a reference for when in the applied billing frequency period subsequent bills for the Account are created: * For example, suppose a Plan is configured for monthly billing frequency. You then set a **Billing cycle date** of February 15th, 2022. The first Bill will be created for the Account on February 15th, and subsequent Bills created on the 15th of the months following for the remainder of the billing period - March 15th, April 15th, and so on. * If you leave this blank, then Epoch dates from your Organization's configuration will be used as the **Billing cycle date** for the Account instead - see [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * **Fee billing interval**. How often the Prepayment fees are applied to bills. For example, if the plan you've selected using the **Bill with plan** setting means that bills are issued every three months and the **Fee billing interval** is set to **2**, then the Prepayment fees are applied every six months. * **Fee billing offset**. Defines an offset for when the Prepayment fees are first applied to bills on the Account. For example, if the bill is issued every three months and the **Fee billing offset** is set to **0**, then the charge is applied to the first bill (at three months); if set to **1**, it would be applied to the next bill (at six months), and so on. * **Fee billing**. Allows you to control whether any Prepayment fees due are billed in arrears or in advance: * **Use organization-wide configuration**. Default selection. If enabled, the setting selected at Organization level for Fee billing will be used - it will be shown in brackets. If you select either of the other two options, the Organization level setting will be overridden. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * **Bill in arrears (end of each billing period)** * **Bill in advance (start of each billing period)** * **Fees accounting product**. For accounting purposes, select a Product that will be linked to any *Prepayment fee* line items on Bills. (*Optional*) * Note that if you leave this blank, then the **Accounting product** selected for the Prepayment will be used instead. * **Fee description**. Optionally, enter a *custom description* used for Bill line items for Prepayment fees. * Note that if you leave this blank, then a *default description* will be used. See [Bill Line Items - Default Descriptions](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-default-descriptions) for details. **Warning: Ensure Prepayment service period extends for required Billing Period!** If you choose to **Bill with plan** for any outstanding Prepayment fees, please ensure the Prepayment service period you define extends over the full billing period required for your Prepayment billing use case. See the [Billing Dates Issues](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#billing-dates-issues) section of the [Troubleshooting Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills) topic for an example where this can go wrong and give unexpected Bill amounts. ## Prepayment Billing on a Schedule If the customer Account has opted not to pay the agreed Prepayment in total upfront and the **Amount prepaid** is less than the Prepayment **Amount**, then you can select to **Bill on a schedule** for the outstanding Prepayment amount. The **Billing Configuration** panel adjusts and you can set up a schedule for Bill dates where each Bill covers a portion of the outstanding Prepayment amount which will be used to cover usage for a defined service period. **Important!** The total of the scheduled Bill amounts should equal the outstanding Prepayment amount. If they don't, you won't be able to save the Prepayment and you'll receive an error message. 1. Select **Add**. The **Billing panel** adjusts to allow you to enter the details of the first Bill: * **Date**. Use the calendar pop-up to select the date of the first Bill. * **Amount**. Enter the portion of the outstanding Prepayment amount that will be allocated for usage recorded during the defined service period of the first Bill. * **Service period start date (inclusive)** and **Service period end date (exclusive)**. Use the calendar pop-up to set the service period for the first Bill. 2. If you want to set up subsequent Bills for the schedule, select **Add** again and repeat step 1. > In this example, where the Prepayment spans two calendar years, we've set up a Bill schedule for two billing dates, each covering half of the outstanding Prepayment amount - one at the outset for the first year; the second on December 1st, which is a month before the second service period for billing commences on January 1st of the second calendar year. 3. Optional settings: * **Fees accounting product**. For accounting purposes, select a Product that will be linked to any *Prepayment fee* line items on Bills. * Note that if you leave this blank, then the **Accounting product** selected for the Prepayment will be used instead. * **Fee description**. Enter a *custom description*, which will appear against Bill line items for Prepayment fees. * Note that if you leave this blank, then a *default description* will be used. See [Bill Line Items - Default Descriptions](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-default-descriptions) for details. **Important! Billing for Prepayments on a Schedule - please note:** * **Adjusting Prepayment Schedule after generating Bills?** Suppose you've set up a schedule for Prepayment billing for an Account and a Bill has already been generated for one of the Prepayment fee dates on that schedule, a Bill that might also includes usage charges for priced Plans attached to the Account. If you then change the dates for the Prepayment schedule, when you recalculate the existing Bill the Prepayment fee due under the original schedule will still be included. You must first delete the old Bill generated for the original Prepayment fee schedule and then run billing again - the new Bill will then be generated in accordance with the updated Prepayment schedule. If you are using [Scheduled Billing](/guides/billing-and-usage-data/running-viewing-and-managing-bills/scheduling-billing), please ensure you check for this after updating a Prepayment schedule. * **Usage charges exceed Prepayment amount?** If the Account you've created the Prepayment for has a priced Account Plan attached and the usage chargeable under the Account Plan exceeds the Prepayment amount charged for a service period on a scheduled Bill, then subsequent Bills will include the required Prepayment overage charges. To extend the example, if the Account uses a monthly frequency Account Plan and, by the first few days into July 2024, usage recorded on the Account begins to exceed the \$7, 500 Prepayment billed in advance on the 1st December 2023 for the 2024 service period, then the remaining Bills for that year - July through December - will show Prepayment overage line items for any usage throughout those months. * **Service period start and end dates for scheduled Prepayment fee billing dates**: * If you try to set the **Service period start date (inclusive)** *after* the **Service period end date (excusive)**, then you'll receive an error. * You can set the **Service period start date (inclusive)** and the **Service period end date (exclusive)** to the same date without receiving an error, but *please be sure* your Prepayment billing use case requires this. ## Viewing Prepayment Details If you want to review a Prepayment on an Account, you can do this from the Prepayments tab by opening a **Prepayment details** page where you can also view: * **Fees and Usage** * **Fee Dates** * **Prepayment Consumption** * **Prepayment metadata** **To view Prepayment details:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the Account for which you want to view the details of a Prepayment. The **Account** page opens with the **Overview** tab selected. 3. Select the **Prepayments** tab. The page adjusts and shows any active, pending, or previous Prepayments created for the Account. 4. Select the **Amount** text of the Prepayment whose details you want to review: In this example, we've selected to open the details for an **ACTIVE** Prepayment on an Account. The **Prepayment details** page opens, where you can review the Prepayment: * Details, including which user **Created** and which **Last modified** the Prepayment: Prepayments40 * **Fees and usage** details and **Fee dates**. For example: 5. If consumption data is available for the Prepayment, you can scroll down the details page and review a **Prepayment consumption** chart that shows: * Actual consumption to date with consumption trend. * Minimum expected consumption over the entire active period. * The percentage active period passed with number of days remaining * The percentage consumption with amount remaining. Here's an example: Prepayments36 If a Prepayment is fully consumed and overages are incurred, then this is clearly shown, for example: Prepayments37 6. If you scroll further down the page, you can review **Prepayment metadata**: Select **External mappings** - any existing mappings created for the Prepayment are listed: Prepayments39 * The **External system** and **External table** mapped to are shown - such as **Netsuite - Item** in the above example. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Prepayment has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. * You can commence a workflow to **Create external mapping** for the Prepayment directly - see [Creating and Managing External Mappings for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) for an example. Select **Integration runs** - if you've set up an integration that synchronizes the Prepayment data with an external system, the date/time and status of the **Latest** integration run are shown. You can use a text hotlink to open details of this latest run or **View all runs**. See [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). 7. When you are finished viewing details, you can select to return to the main **Prepayments** tab. ## Duplicating Prepayments You can duplicate a Prepayment/Commitment you've created for an Account. This is useful if you want to renew a contract with an end-customer Account and again include a Prepayment amount in the contract but adjust some of the details, such as renew with reduced Prepayment. You can do this for either an **Active** or a **Pending** Prepayment. **To duplicate a Prepayment for an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to create a Prepayment. The **Account** page opens with the **Overview** tab selected. 3. Select the **Prepayments** tab. On the **Active and pending prepayments** panel any active or pending Prepayments created for the Account are shown. 4. Select **Duplicate** for the Prepayment you want to duplicate for the Account: The **Create** page opens and the details of the existing Prepayment are shown. 5. Edit the details as required for the duplicate. 6. Select **Create prepayment**. You are returned to the **Prepayments** tab and the duplicate Prepayment is listed. **Tip: Overview tab?** You can also duplicate a Prepayment from the **Overview** tab in the same way using the **Active and pending prepayments** panel. ## Adding Prepayments to or Removing from Contracts From a *Prepayment details* page, you can quickly add the Prepayment to or remove it from a Contract on the Account. This saves you having to open and edit the Prepayment. **Notes:** * **Adding or Removing Prepayments from Contract**. Alternatively, you can open the details page of the Contract you want to add a Prepayment to or remove a Prepayment from. See [Adding Prepayments to a Contract](https://docs.m3ter.com/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts#adding-prepayments-to-a-contract). If you do this, then the **Prepayment details** page will update accordingly. * **Important: Linking Prepayment to Contract - ensuring Prepayment is available for draw-down at billing!** Whether you need to link a Prepayment on an Account to a Contract is dependent on whether or not an Account Plan on the same Account has been linked to a Contract. For details, see the following section on [Linking Prepayments to Contracts](/guides/end-customer-accounts/creating-prepayments-for-accounts#linking-prepayments-to-contracts-availability-for-draw-down). **To add a Prepayment to or remove it from a Contract:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account for which you want to add a Prepayment to or remove from a Contract. The **Account** details page opens with the **Overview** tab selected. 3. Select the **Prepayments** tab. 4. Select the hotlink text of the Prepayment. The **Prepayment details** page opens: * If the Prepayment has not been added to a Contract, an **Add to contract** button is available. * If the Prepayment has been added to a Contract, a **Remove from contract** button is available. 5. To add the Prepayment to a Contract, select **Add to contract**. A **Select contract** modal opens and lists the Contracts created for the Account. 6. Select the Contract you want to add the Prepayment to and select **Confirm**. The modal closes and the Contract is shown under **Prepayment details**: Prepayments41 7. To remove a Prepayment from a Contract, select **Remove from contract**. A confirmation popup appears: Prepayments42 8. Select **Remove** to confirm. The popup closes and the Contract no longer shows under **Prepayment details**. ## Linking Prepayments to Contracts - Availability for Draw-Down Linking a Prepayment to a Contract on an Account is optional. However, if you have linked an Account Plan attached to the Account to a Contract and you want to ensure the Prepayment is available for draw-down against billed charges on the Account, you must link the Prepayment to the same Contract. The following table list the consequences for draw-down availability when linking Account Plans and Prepayments to Contracts: | Account Plan linked to Contract | Prepayment linked to Contract | Prepayment available for draw-down? | | ------------------------------- | ----------------------------- | ----------------------------------- | | NO | NO | YES | | Contract A | NO | NO | | NO | Contract A | NO | | Contract A | Contract A | YES | | Contract A | Contract B | NO | ## Prepayments Draw-Down Order Against Balances If you have added Prepayments and Balances as credits on an Account, you can define the order in which these credit amounts are drawn-down for billing the Account. Four options are available for this *credit application order* for Prepayments against Balances: * **Prepayment then balance**. Draw-down against Prepayment credit before Balance credit. Default. * **Balance then prepayment**. Draw-down against Balance credit before Prepayment credit. * **Prepayment only**. Only draw-down against Prepayment credit. * **Balance only**. Only draw-down against Balance credit. You can configure this in two places: * At Organization level as part of your Organization configuration. See [Viewing and Editing Organization Configuration](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration). * At individual Account level when creating or editing the Account to which the Prepayments and Balances have been added under **Bill settings**. See [Creating an Account](/guides/end-customer-accounts/creating-an-account). * If you configure this at Account level, the Account level setting takes precedence over any setting at Organizational level. **Important!** If the Account belongs to a Parent/Child Account hierarchy, then the **Credit application order** settings are *not available*, and the draw-down order defaults always to Prepayment then Balance order. # End Dating Account Billing Entities Source: https://docs.m3ter.com/guides/end-customer-accounts/end-dating-account-billing-entities You can apply an end date to billing entities associated with an end-customer Account: * Account Plans * Contracts * Counter Pricings * Prepayments * Pricings This capability to collectively end date billing entities associated with an Account is very useful in cases where you need to create new agreements with end-customers - such as for renewals or mid-service term amendments - and for service cancellations. You can apply an end date to billing entities on an Account directly from the Account or via a Contract you've created for the Account: * [Applying End Date to Account Billing Entities](/guides/end-customer-accounts/end-dating-account-billing-entities#applying-end-date-to-account-billing-entities) * [Applying End Date to Account Billing Entities via Contract](/guides/end-customer-accounts/end-dating-account-billing-entities#applying-end-date-to-account-billing-entities-via-contract) ## Applying End Date to Account Billing Entities You can use the *Account actions* menu to apply an end date to billing entities. **To apply an end date to Account billing entities:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the Account you want to end date billing entities for. The **Account** page opens with the **Overview** tab selected. 3. On the **Account actions** menu, select **Account>End Account billing entities**: The **End Account billing entities** modal appears. 4. On the modal, select the **Billing entities** associated with the Account that you want to end date: * **Account plan** * **Contract** * **Counter pricings** * **Prepayment** * **Pricings** 5. If you also want to apply the end date to the same billing entities associated with any Child Accounts, enable the **Apply to children** switch. * **Note**: This switch will only show for Accounts with at least one Child Account set up. 6. Use the **End date** field pop-up calendar to select the end date you want to apply. * Note that the end date will be applied as midnight of the selected date, where midnight is understood as the *start of that date*. This means that if you select August 31st 2023, then billing entities for the Account will be active until the end of August 30th. 7. Select **End account billing entities**. The modal closes and the end dates for each of the selected billing entities associated with the Account are updated. **Warning: Billing Entities must be Active on specified End date!** Only those billing entities of the selected type which are active for the Account on the end date specified will be updated. If all of the currently active entities have end dates that fall before the end date specified and therefore none are found to be active on that date, then you'll receive a message to inform you none have been updated. ## Applying End Date to Account Billing Entities via Contract If you have created a Contract for an end-customer Account, you can apply an end date to billing entities associated with the Account via the Contract **To apply an end date to Account billing entities via a Contract:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the Account you want to end date billing entities for. The **Account** page opens with the **Overview** tab selected. 3. Select the **Contracts** tab. 4. On the **Active and pending contracts** panel, select the name hotlink text of the Contract you want to use to apply an end date to billing entities. The **Contract Details** page opens. 5. On the **Contract details** panel, select **End contract billing entities**. An **End contract billing entities** modal appears. 6. On the modal, select the **Billing entities** associated with the Account that you want to end date: * **Account plan** * **Contract** * **Counter pricings** * **Prepayment** * **Pricings** 7. If you also want to apply the end date to the same billing entities associated with any Child Accounts, enable the **Apply to children** switch. * **Note**: This switch will only show for Accounts with at least one Child Account set up. 8. Use the **End date** field pop-up calendar to select the end date you want to apply. * Note that the end date will be applied as midnight of the selected date, where midnight is understood as the *start of that date*. This means that if you select August 31st 2023, then billing entities for the Account will be active until the end of August 30th. 9. Select **End contract billing entities**. The modal closes and the end dates for each of the selected billing entities associated with the Account are updated. **Tip: Which billing entities are end dated?** * **Contract**. If you select to update the Contract, then *ONLY* the Contract itself will be end dated. If the Account has other Contracts associated with it, these will not be end dated. * **Account Plans, Prepayments, Counter Pricings, and Pricings**. When you create a Contract for an Account, you can link Account Plans and Prepayments associated with the Account to the Contract. When you select to end date any of these types of billing entities, *ALL* Account Plans, Prepayments, Counter Pricings, and Pricings associated with the Account are end dated, and not *ONLY* those that have been linked to the Contract itself. # Managing Accounts - Best Practices Source: https://docs.m3ter.com/guides/end-customer-accounts/managing-accounts-best-practices This topic offers some notes on best practices for managing the Accounts in your Organization. These notes are intended to help you avoid any unintended and unwanted issues with your end-customer Accounts: * [Personally Identifiable Information (PII)](/guides/end-customer-accounts/managing-accounts-best-practices#personally-identifiable-information-pii) * [Editing and Deleting Accounts - Implications for Usage Data](/guides/end-customer-accounts/managing-accounts-best-practices#editing-and-deleting-accounts-implications-for-usage-data) ## Personally Identifiable Information (PII) Under the [Data Processing Agreement](https://www.m3ter.com/docs/legal/dpa), the only fields you are allowed to use for any of your end customer PII data in m3ter are the `name`, `address`, and `emailAddress` fields on the **Account** entity. For more details see: * The request schema for the [Create Account](/api/account/create-account) API call as documented in our API Reference. * The following [Creating and Editing Accounts](/guides/end-customer-accounts/creating-an-account) topic. * Section 4.2 of the [Terms of Service](https://www.m3ter.com/docs/legal/terms-of-service). **Best Practice:** * Please comply with these constraints on the use of *Personally Identifiable Information (PII)* when creating end-customer Accounts for your m3ter Organization. ## Editing and Deleting Accounts - Implications for Usage Data The Usage Data measurements ingested for Accounts are key to the usage-based pricing applied to Product Plans used to charge and Bill Accounts that consume your Products. It's important to understand clearly how that usage data is associated with Accounts and what the implications are when it comes to editing or deleting Accounts. ### How are the usage data ingested for an Account linked to the Account? When usage data measurements are ingested into the platform, you submit them using the relevant Meter and Account *Codes*. However, once ingested, and for subsequent configuration and data management purposes, the usage data is linked strictly to the Account and Meter *ids*. **Note: Auto-created Accounts?** For usage data submission you make when the Account does not yet exist for your Organization, the system will [auto-create an Account](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-for-non-existent-accounts) for you. But the result is the same as when the Account does already exist - the usage data is linked strictly to the new Account's id. ### When is the Account id created and how do I find out what it is? To create an Account, you supply the *Code* you want to use for the Account. On successful creation, the system generates a unique `id` and assigns it to the new Account: * If you open an Account's Details page in the Console, the Account `id` is listed and you can copy it directly to your clipboard. * Alternatively, you can submit a [List Accounts](/api/account/list-accounts) API call and use a `codes` query parameter for a specific Account. The response schema will contain the Account `id`. ### What are the consequences if I delete an Account after submitting usage data for the Account? If you delete the Account, any submitted usage data linked to the Account's `id` are *permanently dissociated* from it. ### If I have no option but to delete and recreate an Account, what are the consequences? In this sort of case, the key issue to consider is whether or not you have already submitted usage data for the Account: * If you *have not*, then you can delete the Account and recreate it and begin submitting usage data, which will then be linked to the Account `id` in the normal way. * If you *have*, you cannot use that previously ingested usage data for billing against the recreated Account. You will have to re-submit the usage data to the recreated Account for the data to become available for billing against the Account. **Note: Recreated Account uses same Code?** This is the case even if you use the *same Code* for the recreated Account as the Code that was used for the original and now deleted Account. ### What happens to any Bills that have been generated for an Account if I then delete the Account? Any Bills generated for an Account will still be available to view in Bill Management after the Account is deleted - see [Running Bills and Viewing Bill Details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details). However, even if you recreate the Account with the same code, this new Account will be assigned a *different Account* `id`. This means that existing Bills generated for the old deleted Account *will not be re-associated* with the new Account. **Best Practice:** * In view of these considerations, we *strongly recommend* that wherever possible you avoid *deleting Accounts* and instead *update Accounts*. You can edit and update an Account, including the Code, and continue to submit and ingest usage data seamlessly for the Account with the data continuously linked to the Account's unique `id`. # Reviewing and Recalculating Bills for an Account Source: https://docs.m3ter.com/guides/end-customer-accounts/reviewing-bills-for-an-account If Bills have been produced for an Account, you can: * Review them in the **Account** page and open full Bill details for a particular Bill. * Recalculate selected Bills. **To review and recalculate Bills for an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **Name** text of the Account. The **Account** page opens with the **Overview** tab selected. The **Latest bills** panel lists the most recent Bills created for the Account. You can: * Select the **Reference** text of a bill to open the **Bill Management** page and review full Bill details. * Select **View all** to go directly to open the **Bills** tab and view a full list of Account Bills. 3. Alternatively, select the **Bills** tab. All Bills created for the Account are listed in the **Bills** panel: * Bills are listed by date order with the most recent Bill at the top. * The following details are shown for each Bill: * **Reference** * **External reference** * **External invoice date** * **Total** * **Status** * **Locked** 4. If you want to check more details of a particular Bill, select its **Reference** text. The **Bill Management** page for the selected Bill opens and you can review full Bill details. **Tip: Bill Management?** For more on Bill details and working in Bill Management, see [Running, Viewing, and Managing Bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills). 5. On the **Bills** tab, if you want to recalculate a single Bill or collection of Bills from the list, use the checkboxes to select them and then select **Recalculate selected**. **Warning: Child Account Bills can't be recalculated separately!** If you've opened the **Bills** tab for a Child Account, you can't recalculate Bills separately from the Parent Account. A Child Account Bill is only recalculated when its Parent Account Bill is recalculated. 6. If you want to run billing manually for the Account, select **Run billing**. The **Run billing** modal opens and you can create a Bill job by: * **Invoice Date** * **Bill Frequency** * **Currency** **Warning! Bill Frequency option not showing?** If you have enabled **Consolidate Bills** for your Organization, then the **Bill Frequency** option when running Bills will be unavailable. 7. Select **Run billing**. The Bill job is sent and you can open the **Running Tasks** panel to review its progress: **Warning: Billing does not run for Child Accounts separately!** Only when you run billing for a Parent Account will billing run for its Child Accounts. 8. If you want to delete a single Bill or collection of Bills from the list, use the checkboxes to select them and then select **Delete selected**. # Submitting Usage Data for an Account Source: https://docs.m3ter.com/guides/end-customer-accounts/submitting-usage-data-for-an-account When you've set up pricing for your Product Plans and attached these to an Account, you might want to generate some test Bills for the Account before you move to production. To do this, you'll need to feed some sample usage data for the Account into m3ter in readiness for generating test Bills against the Account. You can do this directly in the Console from the Account page. **Tip: Checking for Submitted Usage Data?** Usage Data you've submitted for ingest into the m3ter platform can be queried for and viewed using the Data Explorer. See [Performing Usage Queries and Reviewing Results](/guides/data-explorer/performing-usage-queries-and-reviewing-results) for details. **Tip: Submit Test Usage Data for a Meter?** Alternatively, you can follow similar steps to those explained here to submit usage data for a specific Account directly from **Meter Details** pages. See [Submitting and Checking Test Usage Data](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data). **To submit usage data for an Account:** 1. Select **Accounts**. The **Accounts** page opens. 2. Select the **NAME** text of the Account for which you want to submit usage data. The **Account** page opens with the **Overview** tab selected. 3. You can start the submit usage workflow in two ways: * Select the **Submit usage** button above the **Account details** panel. * Alternatively, on the **Account actions** menu, select **Account>Submit usage**: A **Submit usage data** dialog appears. 4. For **Step 1 - Select a meter** on the dialog, use the **Meter** drop-down list to select the Meter whose Data Fields were Target Fields for an Aggregation used for pricing a Plan you've attached to the Account. 5. Select **Next**. The dialog adjusts to show **Step 1** completed and moves you to **Step 2 - Define measurements and send**: * The default method to complete **Step 2** is **Simple**: * A measurement **UID** is entered automatically. **Note:** If you edit this string, it must be *unique* and *immutable*. * A **Timestamp** date/time is entered for the current date and time. You can adjust this and enter a date/time value that is in the past for your submission. This is useful if you need to adjust billing on an Account retrospectively. For more details, see [Using Timestamp to Submit Usage Data Adjustments](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data#using-timestamp-to-submit-usage-data-adjustments). (*Required*) * **End timestamp**. Can be used in those cases where a usage event needs to have an explicit start and end rather than being instantaneous. (*Optional*) * The *Code* strings for the **Meter** and **Account** are entered automatically - these are required parameters for a [Submit Measurements API call](/api/measurements/submit-measurements) to the m3ter Ingest API. * Enter a **Value** for each of the Meter Data fields as required for the usage data submission. In this example, the selected Meter has a single **MEASURE** numeric Data Field. * Note that a **Log** of your submissions will be built at the right-hand side as you submit measurements: * Alternatively, you can switch to **Advanced**, where you can edit the raw JSON for the usage data submission: **Important!** * The [Submit Measurements](/api/measurements/submit-measurements) call to the Ingest API requires the Account *Code* string for the `"account"` request parameter. On the **Simple** format, the Account *Name* is used, but when you switch to the **Advanced** format, you'll see that it's the Account *Code* that is being used. * Any change you make to the **Ingest request body** JSON in **Advanced** format before submitting - such as changing the `“account”` parameter value - will persist and be reflected in the **Simple** format. * For JSON well-formedness, do not have a trailing comma after the last Data Field parameter entry. If you do, then your **Submit usage** call will be rejected as invalid. 6. Select **Submit usage**. If the submission succeeds, under **Log** you'll see: * A confirmation message that the measurement was accepted:`{"result" : "accepted"}` * The measurement **UID** has been regenerated allowing you to quickly enter new Values for Meter Data Fields as required and submit a further measurement: 7. Re-enter second set of measure values for the Meter Data Fields. 8. Select **Submit usage** again to submit a second set of usage data. **Tip: Account consumes several Products?** If the Account for which you want to test Billing consumes more that one of your Products, you can select **Back** to select a Meter that is set up to collect usage data for a different Product, and repeat these steps for each of the Meters used as the basis for pricing each of the Product Plans attached to the Account. **Tip: Using Data Explorer to check usage data ingest:** * Submitted usage data can be queried for and then viewed using the Data Explorer. See [Performing Usage Queries and Reviewing Results](/guides/data-explorer/performing-usage-queries-and-reviewing-results) for details. * However, please note that in the *special case* where, after submitting some usage data for an Account, you have: * Deleted the Account and recreated it using the same Code. * Submitted further usage data for the recreated Account. * Then, usage data queries using the Data Explorer will not be synchronized fully with the usage data linked to the Account for Billing purposes. * This is because the usage data linked to the now deleted Account is no longer available for Billing against the new recreated Account, but remains available for Data Explorer queries using the same Account Code. * As a matter of best practice when managing your customer Accounts, we *strongly recommend* against deleting and recreating Accounts using the *same Code*. Please see [Managing Accounts - Best Practices](/guides/end-customer-accounts/managing-accounts-best-practices) for more on the implications of doing this. # Working in Account Overview Source: https://docs.m3ter.com/guides/end-customer-accounts/working-in-account-overview When you first open an Account page, the *Overview* tab is selected. From here, you can quickly review key aspects of the current setup and state of the Account: * The latest Bills for the Account are listed and you can view charts that track revenue, billed usage data, and billed recurring charges data for the service period covered by the latest Bills. * Linked entities on the Account are listed and you can review and manage these directly from the tab: * Prepayments * Attached Plans * Contracts * Charges * Account usage by selected Aggregation. * Metadata for any Custom Fields, External Mappings, or Integrations runs linked to the Account are shown. This topic explains how to work in the Account Overview tab to review latest Bills on an Account and review and manage linked entities on an Account: * [Reviewing Latest Bills on Accounts](/guides/end-customer-accounts/working-in-account-overview#reviewing-latest-bills-on-account) * [Reviewing Linked Account Entities](/guides/end-customer-accounts/working-in-account-overview#reviewing-linked-account-entities) * [Checking Account Usage](#checking-account-usage) * [Reviewing Account Metadata](/guides/end-customer-accounts/working-in-account-overview#reviewing-account-metadata) ## Reviewing Latest Bills on Account When you open an Account's **Overview** tab, on the **Latest bills** card the latest ten Bills for the Account are listed ordered by Bill date with the most recent Bill at the top: * A chart tracking revenue for the **Latest bills** is also loaded: Latest Bills15 * Hover over a Bill date to check the **Total billed** amount. * If you want to review all Bills for the Account, select **View all**. The Account **Bills** tab opens. You can also bring up billed quantities charts for **Latest bills**. These show the quantities used for billed amounts - either for usage charges by an Aggregation used to price Account Plans or for recurring charges by a Counter used to price Account Plans. * For the **Billed usage** chart, select an **Aggregation**: Latest Bills16 * The usage data measures used for billed usage are loaded into the chart, and you can hover over a data point to read-off a specific measure: Latest Bills17 * For the **Billed recurring charges** chart, select a **Counter**: * The Counter values used for billed recurring charges are loaded into the chart, and you can hover over a data point to read-off a specific value: Latest Bills18 * Note that the same zoom controls and download functions available on the revenue tracker chart are available on these billed quantities charts also. **Tip: Charts not Showing?** There are cases where charts will not show on the Account Overview tab: * The revenue tracking chart for an Account's **Latest bills** will not show if the Bills listed are in mixed currencies. * The **Billed usage** and **Billed recurring charges** charts will not show if all of the Account's **Latest bills** are made up of standing charge, minimum spend, Prepayment fees, or Balance draw-down charge line items, since non of these charges are based on aggregated usage measures or Counter values. ## Reviewing Linked Account Entities When you scroll down the **Overview** tab, you can review and manage entities linked to the Account: * [Reviewing Prepayments](#reviewing-prepayments) * [Reviewing Attached Plans](#reviewing-attached-plans) * [Reviewing Contracts](#reviewing-contracts) * [Reviewing Charges](#reviewing-charges) ### Reviewing Prepayments The **Active and pending prepayments** card lists any Prepayments created for the Account: * You can manage any of the Prepayments listed directly from here: * Select the hotlink text of a Prepayment to open the **Prepayment details** page. See [Viewing Prepayment Details](/guides/end-customer-accounts/creating-prepayments-for-accounts#viewing-prepayment-details). * Duplicate a Prepayment for the Account. See [Duplicating Prepayments](/guides/end-customer-accounts/creating-prepayments-for-accounts#duplicating-prepayments). * **Edit** or **Delete** a Prepayment. * If you want to add a new Prepayment to the Account, select **Create prepayment**. The **Prepayments>Create** page opens for the Account. See [Creating Prepayments for Accounts](/guides/end-customer-accounts/creating-prepayments-for-accounts). * If you want to go to the **Account>Prepayments tab**, select **View all**. ### Reviewing Attached Plans The **Active and pending attached plans** card lists any Plans attached to the Account: * You can manage any of the attached Account Plans listed directly from here: * Select the hotlink text of an attached Plan to open the **Plan attachment** page and review the Account Plan details. * **Edit** or **Delete** an attached Account Plan. * If you want attach another Plan to the Account, select **Create plan attachment**. The **Attached plans>Create** page opens. See [Attaching Plans to an Account](/guides/end-customer-accounts/attaching-plans-to-an-account). * If you want to create a custom Account Plan or custom Account Plan Group for the Account, use the three-dot menu at top-right. The **Attached plans>Create** page opens. See [Creating Custom Plans for Accounts](/guides/end-customer-accounts/creating-custom-account-plans) or [Creating Custom Plan Groups for Accounts](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts): * If you want to go to the **Account>Attached plans tab**, select **View all**. ### Reviewing Contracts The **Active and pending contracts** card lists any Contracts added to the Account: * You can manage any of the Contracts listed: * Select the hotlink text of a Contract to open the **Contract Details** page. * **Edit** a Contract or **Delete** a Contract from the Account. * If you want to add a new Contract to the Account, select **Create contract**. The **Contracts>Create** page opens for the Account. See [Creating Contracts for Accounts](/guides/end-customer-accounts/creating-contracts-for-accounts). * If you want to go to the **Account>Contracts** tab, select **View all**. ### Reviewing Charges The **Charges** card lists any Charges created for the Account: * You can manage any of the Charges listed: * Select the hotlink text of a Charge to open the **Charge details** page. * **Edit** a Charge or **Delete** a Charge from the Account. * If you want to add a Charge to the Account, select **Create charge**. The **Charges>Create** page opens. See [Creating Charges for Accounts](/guides/end-customer-accounts/creating-charges-for-accounts). * If you want to go to the **Account>Charges** tab, select **View all**. ## Checking Account Usage On the **Usage** panel, you can select a simple, non-segmented Aggregation to open a chart tracking Account usage: Account Overview14 * You can hover a data point to read-off the value. * If additional usage is ingested into the system during the selected time period for the Meter the selected Aggregation targets and while you are viewing the chart, the chart will automatically update. * You can manually refresh the chart at any time using the button against the **Last updated** date/time stamp: Account Overview15 The default time period for usage to be shown is **Last 30 days** but you can select a different time period either before you select an Aggregation or after the chart has loaded: Account Overview10 Options are: * **Today** or **Yesterday** * **Week**, **Month**, or **Year to date** * **Previous week**, **month**, **quarter**, or **year** * **Last 12 hours** * **Last 7**, **30**, **35**, **90**, or **120 days** * **Last year** If you want to review the ingested usage data directly, you can select **View in Data Explorer**. The **Usage Data Explorer** opens and runs a query for the Account against the Meter the selected Aggregation targets and for the selected time period - for the current example: Account Overview13 ## Reviewing Account Metadata When you scroll down the **Overview** tab, you can review **Account metadata**: **Custom fields**. Any Custom Fields created for the Account are listed: Account Overview2 * You can **Copy** the *String* or *Number* value of a Custom Field to your clipboard. See [Working with Custom Fields](/guides/creating-and-managing-products/working-with-custom-fields) for more details. **External mappings**. Any existing mappings created for the Account are listed: Account Overview4 * For each mapping, the **External system** and **External table** mapped to are shown. The **External entity ID** mapped to is also shown. * If a listed External mapping is linked to an Integration, under **Linked integration** a hotlink text will be shown which you can use to open the Integration. * Under **Actions**, you can edit or delete the External mapping. * If the Account has multiple External mappings created for it, you can use *Search external mappings* to search by **External table** and **External entity ID** and filter the list. * You can commence a workflow to **Create external mapping** for the Account directly - see [Creating and Managing External Mappings for Accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) for an example. **Integration runs**. If you've set up an integration that synchronizes the Account with an external system, the date/time and status of the **Latest** integration run are shown. You can use a text hotlink to open details of this latest run or **View all runs**. See [Reviewing Integration Run Details](/guides/integrations/setting-up-integrations/reviewing-integration-run-details). # Getting Started Source: https://docs.m3ter.com/guides/getting-started Use this section to get started working in the m3ter platform: * [Quick Start](/guides/getting-started/quick-start-worked-example). Follow a first pass Console quick start workflow to see how easy it is to set up metered billing for customer usage on your products and services. * [m3ter Console](/guides/getting-started/working-in-the-m3ter-console). Take a comprehensive tour of the Console, including a video orientation. * [Configuration Workflow](/guides/getting-started/previewing-main-configuration-steps). Review the core configuration workflow needed to achieve the production of Account Bills rated in accordance with the usage-based pricing you've set up for your Products. * [Worked Examples](/guides/getting-started/metering-for-production-worked-examples). Review examples for implementing usage-based pricing solutions, presented as easy-to-follow video tutorials to ramp up your m3ter expertise level. * [Dates in m3ter - Quick Reference Starter](/guides/getting-started/working-with-dates-in-m3ter-easy-reference). Check how dates are handled in m3ter for key configuration and operational contexts, such as when defining dates for billing operations * [Feature Release Stages](/guides/getting-started/feature-release-stages). m3ter releases some features as Beta or Preview prior to General Availability. Please review this topic to ensure you are aware of what each of these release stages mean. * [Knowledge Index](/guides/getting-started/knowledge-index). Bookmark this page as a handy index listing to quickly find information about specific m3ter entities or areas of functionality. * [Contacting m3ter Support](/guides/getting-started/contacting-m3ter-support). You can contact m3ter Support to report an incident, request technical support, ask billing or account questions, submit general feature requests, and log defects **Working with m3ter APIs!** Please review the [m3ter APIs](/guides/m3ter-apis) section before you start to work with our APIs. The [Getting Started with API Calls](/guides/m3ter-apis/getting-started-with-api-calls) topic offers quick start guidance and provides some examples. Instructions are also given for [Importing m3ter Collections into your Postman Workspace](/guides/m3ter-apis/getting-started-with-api-calls#importing-m3ter-collections-into-your-postman-workspace). # Contacting m3ter Support Source: https://docs.m3ter.com/guides/getting-started/contacting-m3ter-support Contact [m3ter Support](https://m3ter.myfreshworks.com/login/auth/1662629775049?client_id=451980218021503405\&redirect_uri=https%3A%2F%2Fm3ter.freshdesk.com%2Ffreshid%2Fcustomer_authorize_callback%3Fhd%3Dm3ter.freshdesk.com) by submitting a support request using the channels available to you as set out in the [Support Terms](https://www.m3ter.com/docs/legal/support-terms) and as advised during your onboarding process (depending on your m3ter Support entitlement). ## Submitting a Support Request You can report an incident, request technical support, ask billing or account questions, submit general feature requests, and log defects. Please provide as much information as possible when you raise a support request: | What to Include | Details | | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Organization ID | The relevant Organization ID, which you can get from the URL when you access the m3ter Console. In the Console, you can also read-off the ID at: Settings>Organization>Configuration>Organization details and copy it from there. | | Organization Type | Whether the relevant Organization is a Production, Non-Production, or Sandbox m3ter Organization. | | Issue Impact | For service issues, a measure of the impact the issue is having on your normal operations. | | Account ID | The relevant end-customer Account ID (if the issue relates to a specific end-customer). | | User ID | If this is a service issue, the User ID of the logged in user at time of issue. Otherwise, the most relevant User ID in relation to the request. | | Start Time | If an issue has occurred, when did you notice it start? | | Area of Interaction | What were you trying to do when the issue occurred? Were you using the Console, if so which area? Were you attempting to make and API call and, if so, which endpoint were you trying to call? | | Service Function | If the issue is with the m3ter service, which part of the service were you using? (Ingest, Billing & Rating, Analytics, and so on) | | Description | What were you trying to accomplish? As much detail as you can provide regarding what the support request is about. | | Steps to Reproduce | If this is a service issue - please describe the exact steps required to reproduce the issue. | | Expected and Actual Behavior | If this is a service issue - what did you expect to happen and what actually did happen? | | Additional Information | Include any screenshots or other files such as logs if these will help us to better understand the issue. | **Important:** **Exclusions!** m3ter Support does not cover directly any third-party software connected via our integrations. Any m3ter created integration is supported, should the problem be related to the integration itself. # Feature Release Stages Source: https://docs.m3ter.com/guides/getting-started/feature-release-stages m3ter releases some features as Beta or Preview prior to General Availability. There are some important differences between these release stages that you should be aware of before using them: * [Beta Release](/guides/getting-started/feature-release-stages#beta-release) * [Preview Release](/guides/getting-started/feature-release-stages#preview-release) **Note: Documentation - release stage reminders.** Topics in this user documentation that cover Beta or Preview release features will carry a reminder and link you back to these definitions. ## Beta Release ### Definition We use the Beta release stage as a mechanism to give customers early sight of a feature and collect feedback. Beta features are typically made available to customers with relevant use cases who are often actively working with us on the feature’s development, but they are sometimes made available to all customers. ### Constraints Beta features may change in backwards-incompatible ways, and configuration may not persist from the Beta to future stages. We therefore recommend against using features at the Beta release stage for critical functionality. ## Preview Release ### Definition Preview features are in the final stages of testing. ### Constraints Preview features are typically stable and only minor changes are made prior to becoming Generally Available. However, we recommend customers discuss with us prior to relying on them for critical functionality because backwards-incompatible changes do occasionally need to be made. ## Service and Support Service and Support Level Agreements (SLAs) are not applicable to Beta and Preview features. # Knowledge Index Source: https://docs.m3ter.com/guides/getting-started/knowledge-index Use this index listing to quickly find information about specific m3ter entities or areas of functionality. **AI Assistant!** Have you tried our AI Assistant to obtain the information you need? In the Console, you can quickly open the **Help** panel, select **Ask AI**, and then type in a search term or a specific question you have to obtain the information you need - see [Help Links](https://docs.m3ter.com/guides/getting-started/working-in-the-m3ter-console#help-links) for more details. ## Accounts Represents one of your end-customer accounts: * [attaching Plans to](/guides/end-customer-accounts/attaching-plans-to-an-account) * [attaching Plan Groups to](/guides/end-customer-accounts/attaching-plan-groups-to-an-account) * [best practices for managing](/guides/end-customer-accounts/managing-accounts-best-practices) * [billing for Parent/Child accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts) * [creating and managing](/guides/end-customer-accounts) * [creating Balances for](/guides/end-customer-accounts/creating-balances-for-accounts) * [creating Child Accounts for](/guides/end-customer-accounts/creating-and-working-with-child-accounts) * [creating Contracts for](/guides/end-customer-accounts/creating-contracts-for-accounts) * [creating Custom Plans for](/guides/end-customer-accounts/creating-custom-account-plans) * [creating Custom Plan Groups for](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts) * [creating Prepayments for](/guides/end-customer-accounts/creating-prepayments-for-accounts) * [creating External Mappings for](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) * [defining day before bills due for](/guides/end-customer-accounts/creating-an-account) * [end dating Account billing entities](/guides/end-customer-accounts/end-dating-account-billing-entities) * [reviewing Bills for](/guides/end-customer-accounts/reviewing-bills-for-an-account) * [submitting usage data for](/guides/end-customer-accounts/submitting-usage-data-for-an-account) ## Account Plans Plans are attached to Accounts to create Account Plans, which then determine the charges incurred by your end customer. * [creating by attaching Plan to Account](/guides/end-customer-accounts/attaching-plans-to-an-account) * [defining active period for Account](/guides/end-customer-accounts/attaching-plans-to-an-account) ## Account Plan Groups Plan Groups are attached to Accounts to create Account Plan Groups, which then determine the charges incurred by your end customer. * [creating by attaching Plan Group to Account](/guides/end-customer-accounts/attaching-plan-groups-to-an-account) * [defining active period for Account](/guides/end-customer-accounts/attaching-plan-groups-to-an-account) ## Aggregations Aggregations define how to convert into a single number individual usage data measurements collected by Meter fields. They are used to configure pricing for Product Plans. * [creating Compound Aggregations](/guides/usage-data-aggregations/compound-aggregations) * [creating Custom SQL Aggregations](/guides/usage-data-aggregations/custom-sql-aggregations) * [creating Global Aggregations](/guides/usage-data-aggregations/creating-global-aggregations) * [creating Product Aggregations](/guides/usage-data-aggregations/creating-aggregations) * [creating Segmented Aggregations](/guides/usage-data-aggregations/segmented-aggregations) * [defining aggregation method for:](/guides/usage-data-aggregations/reviewing-aggregation-options#configuring-aggregations) * [use Sum of values](/guides/usage-data-aggregations/reviewing-aggregation-options#configuring-aggregations) * [use Min or Max values](/guides/usage-data-aggregations/reviewing-aggregation-options#configuring-aggregations) * [use Count of number of values](/guides/usage-data-aggregations/reviewing-aggregation-options#configuring-aggregations) * [use Mean of values](/guides/usage-data-aggregations/reviewing-aggregation-options#configuring-aggregations) * [use Latest value](/guides/usage-data-aggregations/reviewing-aggregation-options#configuring-aggregations) * [use Count of Unique values](/guides/usage-data-aggregations/reviewing-aggregation-options#configuring-aggregations) * [use Custom SQL query result value](/guides/usage-data-aggregations/reviewing-aggregation-options#configuring-aggregations) * [pricing Plans with](/guides/plans-and-pricing/pricing-plans/pricing-plans#setting-up-to-price-plansplan-templates-in-the-pricing-editor) * [reviewing options for](/guides/usage-data-aggregations/reviewing-aggregation-options) ## APIs The m3ter platform supports two HTTP-based REST APIs returning JSON encoded responses: * The **Config API**, which you can use for configuration requests and management. * The **Ingest API**, which you can use for submitting raw data measurements. We impose limits on the calls you make to both of our APIs to maintain optimum performance and high availability for all customers. * [call for submitting usage data](/guides/billing-and-usage-data/submitting-usage-data/api-calls-for-data-ingest) * [getting started with](/guides/m3ter-apis/getting-started-with-api-calls) * [http error codes returned](/guides/m3ter-apis/http-error-codes) * [limits for Config API](/guides/m3ter-apis/config-api-limits) * [limits for Data Explorer](/guides/m3ter-apis/config-api-limits#date-explorer-request-rate-limits) * [limits for Ingest API](/guides/m3ter-apis/ingest-api-limits) * [optimizing Ingest submissions](/guides/m3ter-apis/ingest-api-limits) * [API reference docs](https://m3ter.com/docs/api) * [supported APIs](/guides/m3ter-apis) ## Authentication The m3ter platform supports several authentication methods: * [service authentication for API calls](/guides/authenticating-with-the-platform/service-authentication) * [single sign-on for federated identities](/guides/authenticating-with-the-platform/m3ter-single-sign-on) * [user/password for login to console](/guides/authenticating-with-the-platform/user-password-authentication) ## Balances *Balances* are created for end customer Accounts. You use Transactions to add and flexibly manage Balance amounts on Accounts. End-customers can then draw-down against their Balance amounts for any charges due throughout the period the Balance is active for the Account and a Transactions ledger is maintained for the Balance: * [adding transactions to](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances) * [creating for accounts](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances) * [draw-down order against prepayments/commitments](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#understanding-charges-draw-down-against-balances-for-billing) * [overage pricing for](/guides/plans-and-pricing/pricing-plans/reviewing-pricing-options-and-pricing-plans) * [overage surcharge percentage for](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances) * [selecting charge types for](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#draw-down-charge-types) * [selecting products for](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances) * [understanding charges draw-down against for billing](/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances#understanding-charges-draw-down-against-balances-for-billing) * [working with balance transactions ledger](/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances#working-with-the-balance-transactions-ledger) ### Balance Transaction Schedules You can set up a *Transaction Schedule* for a Balance. This allows you to generate Transactions of a specific type for a Balance at regular daily, weekly, monthly, or yearly intervals over a specified time period: * [setting up transaction schedules](/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances) * [reviewing transaction schedules](/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances#reviewing-transaction-schedules-for-a-balance) ### Balance Charges You can create *Charges* for Balances to create single, one-off line items for Balance billing: * [creating charges](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances) * [viewing charge details](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances#viewing-balance-charge-details) * [editing and deleting charges](/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances#editing-and-deleting-balance-charges) ### Balance Charge Schedules You can set up a *Charge Schedule* for a Balance on an Account. This allows you to generate Charges for billing a Balance at regular daily, weekly, monthly, or yearly intervals over a specified time period: * [setting up charge schedules](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances) * [reviewing charge schedules](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances#reviewing-balance-charge-schedules) * [viewing and managing scheduled charges](/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances#viewing-and-managing-scheduled-charges-for-balances) ## Bills & Billing Bills are generated for an Account based on the usage-based pricing Plan that has been attached to the Account for charging the Account for consuming a Product. Plan Templates/Plans offer settings to control billing on Accounts that Product Plans are attached to for charging the Accounts. * [adding debit line items to bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-debit-line-items-to-bills) * [adding credit line items to bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-credit-line-items-to-bills) * [approving](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle) * [auto-approval for](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle#auto-approving-bills) * [bill line item types explained](/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-item-types) * [bills for accounts:](/guides/end-customer-accounts/reviewing-bills-for-an-account) * [reviewing](/guides/end-customer-accounts/reviewing-bills-for-an-account) * [recalculating](/guides/end-customer-accounts/reviewing-bills-for-an-account) * [billing for parent/child accounts](/guides/end-customer-accounts/creating-and-working-with-child-accounts#billing-for-parentchild-accounts) * [currency conversion rates for](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [dates for billing](/guides/getting-started/working-with-dates-in-m3ter-easy-reference#dates-for-billing-and-pricing) * [downloading](/guides/billing-and-usage-data/running-viewing-and-managing-bills/managing-bills) * [filtering](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#filtering-bills-by-status) * [global lock date for](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle#setting-global-lock-date) * [lifecycle for](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle) * [locking](/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle) * [managing](/guides/billing-and-usage-data/running-viewing-and-managing-bills/managing-bills) * [pro-rated charges](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills#pro-rated-charges) * [reviewing bills for an account](/guides/end-customer-accounts/reviewing-bills-for-an-account) * [running](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details) * [running billing manually using modal](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#running-bills-manually) * [scheduling](/guides/billing-and-usage-data/running-viewing-and-managing-bills/scheduling-billing) * [settings for billing at organization level:](/guides/organization-and-access-management/viewing-and-editing-organization#viewing-details-and-editing-configuration) * [billing reference settings](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [bill prefix](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [bill sequence start](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [consolidate bills across billing frequencies](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [external invoice date for](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [days before due](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [scheduled bill interval](/guides/organization-and-access-management/viewing-and-editing-organization#viewing-details-and-editing-configuration) * [suppress generation of empty bills](/guides/organization-and-access-management/viewing-and-editing-organization#viewing-details-and-editing-configuration) * [settings for billing using Plan Templates/Plans](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates): * [bill currency](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates#plan-template-options) * [bill frequency](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates#plan-template-options) * [bill interval](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates#plan-template-options) * [standing charge](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#standing-charge) * [standing charge interval](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#standing-charge) * [standing charge offset](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#standing-charge) * [product minimum spend](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#minimum-spend) * [statements for](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) * [troubleshooting](/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills) * [viewing details](/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details) * [viewing history](/guides/m3ter-calculation-engine) ## Calculation Engine You can exploit the m3ter platform's powerful *Calculation Engine* as you create calculations for *Meter Derived Fields*,\* Compound Aggregations\*, or *Notification Rules*. * [m3ter calculation engine](/guides/m3ter-calculation-engine) ## Charges You can create *Charges* for your end-customer Accounts to create ad-hoc or one-off line items for Account billing. * [common use cases for](/guides/end-customer-accounts/creating-charges-for-accounts#charges-common-use-cases) * [creating](/guides/end-customer-accounts/creating-charges-for-accounts) * [viewing bills for](/guides/end-customer-accounts/creating-charges-for-accounts#viewing-bills-for-charges) ## Child Accounts A Child Account is an Account that has a Parent Account defined. End customers with multiple Accounts can be issued with a single Bill for a Parent Account. * [creating](/guides/end-customer-accounts/creating-and-working-with-child-accounts) * [reviewing Parent/Child](/guides/end-customer-accounts/creating-and-working-with-child-accounts#reviewing-parentchild-accounts) * [billing for Parent/Child](/guides/end-customer-accounts/creating-and-working-with-child-accounts#billing-for-parentchild-accounts) ## Compound Aggregations A Compound Aggregation allows you to to derive numerical measures from usage data by applying a calculation to one or more simple Aggregations. The calculation can also reference Custom Fields. You can then use these calculated measures as pricing metrics to set up usage-based pricing Plans for your Products. * [creating](/guides/usage-data-aggregations/compound-aggregations) * [bill period variables for calculations](/guides/m3ter-calculation-engine#referencing-bill-period-variables) * [referencing segmented aggregations in calculations](/guides/usage-data-aggregations/compound-aggregations#compound-aggregations-referencing-values-and-fields-and-supported-syntax) * [referencing values and fields in calculations](/guides/usage-data-aggregations/compound-aggregations#compound-aggregations-referencing-values-and-fields-and-supported-syntax) * [syntax for calculations](/guides/usage-data-aggregations/compound-aggregation-calculations) * [worked example for](/guides/getting-started/metering-for-production-worked-examples/example-2-compound-aggregation-for-sign-up-bonus) ## Contracts Contracts are created for Accounts. For end customers who consume several different service or product packages, the total Contract value can be reported for accounting purposes. You can bill end-customer Accounts on a Contract basis, giving wide flexibility to fulfill invoicing requirements for cases where you offer customers a specific product package agreement to consume several of your core products. * [adding attached Plans/Plan Groups to](/guides/end-customer-accounts/creating-contracts-for-accounts#adding-prepayments-to-a-contract) * [adding Prepayments to](/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts#adding-prepayments-to-a-contract) * [creating and managing](/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts) * [end dating Contract and Account billing entities](/guides/end-customer-accounts/end-dating-account-billing-entities) * [setting up contract billing](/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing) ## Counters Counters are used to create unit-based pricing for Plans and apply [recurring subscription charge](/guides/getting-started/knowledge-index#recurring-charges) rates for your Products. * [creating](/guides/recurring-charges-counters/creating-counters) * [creating counter adjustments on accounts](/guides/recurring-charges-counters/creating-counter-adjustments-for-accounts) * [pricing plans with](/guides/recurring-charges-counters/creating-counters) * [using for hybrid pricing](/guides/recurring-charges-counters/recurring-charges-example-2-hybrid-pricing) * [using for seat-based pricing](/guides/recurring-charges-counters/reviewing-bills-for-recurring-charges) ## Credits You can create and define *Credit Reasons* for your Organization. For Bill adjustments, Credit Reasons can then be used to add a Credit for an existing bill line item or apply a product Credit manually to a Bill. * [adding credit line items to bills](/guides/organization-and-access-management/viewing-and-editing-organization/creating-debit-reasons) * [creating credit reasons](/guides/organization-and-access-management/viewing-and-editing-organization/creating-credit-reasons) ## Currency Currency for *billing* can be set at Organization level or individual Account level. You can also define a different *pricing* currency for your Plans at the Plan Template level. If you do this, the Organization or Account setting is used for billing and you must configure currency conversion rates to determine how charge amounts in the Plan pricing currency are converted into billing currency amounts. If any required currency conversion rates from pricing into billing currency are omitted, billing will fail. * [adding conversion rates for](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies#adding-currency-conversion-rates) * [archiving](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies) * [creating and managing](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies) * [setting for Organization](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [setting for Plan Templates](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates) ## Custom Fields Custom Fields allow you to attach custom data to your Organization and some other individual m3ter entities. * [adding](/guides/organization-and-access-management/viewing-and-editing-organization/adding-and-editing-custom-fields) * [referencing in meter derived field calculations](/guides/m3ter-calculation-engine#derived-fields-referencing-fields) * [referencing in compound aggregation calculations](/guides/m3ter-calculation-engine#compound-aggregations-referencing-values-and-fields) * [understanding and working with](/guides/creating-and-managing-products/working-with-custom-fields) ## Data Explorers The m3ter Data Explorers allows you to query data collected for your Organization in the m3ter platform for Usage, Billing, and Prepayments/Commitments. * [billing data explorer: querying & reviewing billing data](/guides/data-explorer/performing-billing-queries-and-reviewing-results) * [exporting query results](/guides/data-explorer/exporting-usage-query-results) * [prepayment data explorer: querying & reviewing prepayments data](/guides/data-explorer/performing-commitments-queries-and-reviewing-results) * [saving, updating, reusing queries](/guides/data-explorer/saving-queries) * [usage data explorer: querying & reviewing usage data](/guides/data-explorer/performing-usage-queries-and-reviewing-results) ## Data Exports The Data Export service allows you to export usage data and operational data from your m3ter Organization directly into your AWS S3 buckets. Currently available in preview release. * [data export entity schema relationship diagram](/guides/data-exports/data-export-object-relationship-diagram) * [creating destinations for](/guides/data-exports/creating-data-export-destinations) * [creating operational data export schedules](/guides/data-exports/creating-operational-data-export-schedules) * [creating usage data export schedules](/guides/data-exports/creating-export-schedules) * [reviewing export jobs](/guides/data-exports/reviewing-export-jobs) * [running ad-hoc operational data exports](/guides/data-exports/running-ad-hoc-operational-data-exports) * [running ad-hoc usage data exports](/guides/data-exports/running-ad-hoc-data-exports) ## Data Fields Data Fields are added to Meters and define a raw usage data collection fields. * [adding to meter](/guides/usage-data-meters/creating-meters) * [types of data collected](/guides/usage-data-meters/reviewing-meter-options#data-field-options) ## Dates * [for billing](/guides/getting-started/working-with-dates-in-m3ter-easy-reference#dates-for-billing-and-pricing) * [for pricing](/guides/getting-started/working-with-dates-in-m3ter-easy-reference#dates-for-billing-and-pricing) * [for usage data submission](/guides/getting-started/working-with-dates-in-m3ter-easy-reference#dates-for-usage-data) * [quick reference on](/guides/getting-started/working-with-dates-in-m3ter-easy-reference) * [setting organization epoch dates](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [setting organization timezone](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) ## Debits You can create and define *Debit Reasons* for your Organization. For Bill adjustments, Debit Reasons can then be used to add a Debit for an existing bill line item or apply a product Debit manually to a Bill. * [adding debit line items to bills](/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-debit-line-items-to-bills) * [creating debit reasons](/guides/organization-and-access-management/viewing-and-editing-organization/creating-debit-reasons) ## Derived Fields Derived Fields are configured for Meters and use calculations on other fields to define usage data collection fields. Calculations can reference Meter Data Fields, Custom Fields, and system timestamp fields. * [adding to meter](/guides/usage-data-meters/creating-meters) * [examples of](/guides/usage-data-meters/derived-fields-for-meters-examples-and-supported-syntax) * [calculations for](/guides/usage-data-meters/derived-fields-for-meters-examples-and-supported-syntax#derived-field-calculations-supported-syntax-and-referencing-fields) * [referencing values and fields for](/guides/usage-data-meters/derived-fields-for-meters-examples-and-supported-syntax#derived-field-calculations-supported-syntax-and-referencing-fields) * [syntax for](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#linking-notification-rules-to-destinations-to-create-notification-integration-configurations) ## Developer Tools Developer tools are available to help you work with the m3ter platform: * [developer tools](/guides/developer-tools) * [SDKs](/guides/developer-tools#sdks) * [terraform provider](/guides/developer-tools#terraform-provider) ## Entity Metadata On the Details page for an entity, you can review the entity's metadata: * [reviewing](/guides/getting-started/working-in-the-m3ter-console#reviewing-entity-metadata) ## Error Codes * [HTTP error codes](/guides/m3ter-apis/http-error-codes) ## Events and Notifications You can use *Events* generated in m3ter as the basis for setting up and sending Notifications into your external systems when those Events occur and the specific conditions you've defined for triggering a Notification are satisfied. * [understanding events and notifications framework](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships) * [utilizing events for notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications) ### Events * [creating scheduled events](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events) * [event types](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls) * [ingest validation failure events](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events) * [integration error events](/guides/integrations/setting-up-integrations/reviewing-and-resolving-integration-events) ### Notifications * [creating calculations for](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#creating-calculations) * [creating and managing](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications) * [creating notification rules](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#creating-notification-rules) * [linking notification rules to destinations](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#linking-notification-rules-to-destinations-to-create-notification-integration-configurations) * [reviewing events for notifications](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications#reviewing-events-for-notifications) ## External Mappings External Mappings are mapping reference lookups, which store unique ids for matched objects across two or more systems. * [creating and managing for accounts](/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts) * [creating and managing for integrations](/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings) * [creating bulk mappings](/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings#creating-bulk-external-mappings) * [creating linked external mappings](/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings#creating-linked-external-mappings) ## Global Meters Global Meters do not belong to a specific Product, and are used to set up usage-based pricing across different Products. * [creating](/guides/usage-data-meters/creating-global-meters) ## Grants You can enable a Balance on an Account as a *Grant*. This allows you to credit the Account with an allowance of *pre-rated usage*, which can be drawn-down to reduce the amount of usage that is rated and would result in charges against the Account: * [enabling balances as grants](https://m3ter.mintlify.app/guides/end-customer-accounts/creating-balances-for-accounts/balance-grants) * [worked example](https://m3ter.mintlify.app/guides/end-customer-accounts/creating-balances-for-accounts/balance-grants) ## Integrations Integrations exploit m3ter's open-API framework allowing you to quickly map and synchronize data held in any 3rd-party systems you use for core business operations. * [creating configurations for](/guides/integrations/setting-up-integrations/creating-and-managing-integration-configurations) * [creating credentials for](/guides/integrations/setting-up-integrations/managing-integration-credentials) * [Chargebee integration credentials](/guides/integrations/setting-up-integrations/managing-integration-credentials/creating-chargebee-integration-credentials) * [NetSuite integration credentials](/guides/integrations/setting-up-integrations/managing-integration-credentials/creating-netsuite-integration-credentials) * [Paddle integration credentials](/guides/integrations/setting-up-integrations/managing-integration-credentials/creating-paddle-integration-credentials) * [QuickBooks integration credentials](/guides/integrations/setting-up-integrations/managing-integration-credentials/creating-quickbooks-integration-credentials) * [Stripe integration credentials](/guides/integrations/setting-up-integrations/managing-integration-credentials/creating-stripe-integration-credentials) * [Xero integration credentials](/guides/integrations/setting-up-integrations/managing-integration-credentials/creating-xero-integration-credentials) * [Salesforce integration credentials](/guides/integrations/setting-up-integrations/managing-integration-credentials/creating-salesforce-integration-credentials) * [creating outgoing webhooks for](/guides/integrations/setting-up-integrations/creating-and-managing-destinations) * [creating linked external mappings for](/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings#creating-linked-external-mappings) * [m3ter integrations - overview](/guides/integrations/m3ter-integrations) * [external mappings for](/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings) * [managing configurations for](/guides/integrations/setting-up-integrations/creating-and-managing-integration-configurations) * [managing credentials for](/guides/integrations/setting-up-integrations/managing-integration-credentials) * [managing multiple third party destinations for](/guides/integrations/setting-up-integrations/managing-multiple-destinations-for-integrations) * [setting up integrations in console](/guides/integrations/setting-up-integrations) * [Chargebee](/guides/integrations/setting-up-integrations/configuring-chargebee-integrations) * [NetSuite](/guides/integrations/setting-up-integrations/configuring-netsuite-integrations) * [Paddle](/guides/integrations/setting-up-integrations/configuring-paddle-integrations) * [QuickBooks](/guides/integrations/setting-up-integrations/configuring-quickbooks-integrations) * [Stripe](/guides/integrations/setting-up-integrations/configuring-stripe-integrations) * [Xero](/guides/integrations/setting-up-integrations/configuring-xero-integrations) * [Salesforce](/guides/integrations/setting-up-integrations/configuring-sf-entity-data-integrations) * [AWS Marketplace](/guides/integrations/setting-up-integrations/configuring-aws-integrations) * [Azure Marketplace](/guides/integrations/setting-up-integrations/configuring-azure-marketplace-integrations) * [reviewing and resolving error Events for](/guides/integrations/setting-up-integrations/reviewing-and-resolving-integration-events) * [reviewing integration runs](/guides/integrations/setting-up-integrations/reviewing-integration-run-details) * [salesforce - m3ter Connector for](/guides/m3ter-connector-for-salesforce) ## Lookup Tables Lookup Tables enable you to manage dynamic data mappings that your calculations reference. Use them for currency conversion, pricing tiers, discount rates, and similar scenarios where you require values to change operationally but for calculation logic to remain constant: * [creating and managing](/guides/lookup-tables/creating-and-managing-lookup-tables) * [lookup table revisions - adding data to and publishing](/guides/lookup-tables/adding-data-to-and-publishing-table-revisions) * [lookup tables - worked example](/guides/lookup-tables/worked-example-variable-usage-discounting) * [lookup functions](/guides/lookup-tables/lookup-functions) ## Meters Meters define the Data Fields that your system will submit to the m3ter service as usage data. They can be created as Product-specific Meters or as Global Meters. * [creating for product](/guides/usage-data-meters/creating-meters) * [creating global](/guides/usage-data-meters/creating-global-meters) * [custom fields for](/guides/usage-data-meters/reviewing-meter-options#custom-fields) * [data fields for](/guides/usage-data-meters/reviewing-meter-options#data-field-options) * [derived fields for](/guides/usage-data-meters/reviewing-meter-options#derived-fields) * [options for](/guides/usage-data-meters/reviewing-meter-options) ## m3sh The m3sh platform underpins and drives m3ter's interoperability and automation capabilities, encompassing Events and Notifications, Integrations, Workflows, and Apps: * [exploring workflows](/guides/m3sh-automation/reviewing-m3sh-workflow-runs) * [introduction and overview](/guides/m3sh-automation) * [creating m3sh workflows](/guides/m3sh-workflows/m3sh-workflows) * [reviewing workflow runs](/guides/m3sh-automation/reviewing-m3sh-workflow-runs) ## Notifications You can set up Notifications to be triggered and sent into external systems on the basis of m3ter-generated Events. This includes the capability to create rule sets to define the precise conditions under which a Notification will be triggered and sent out when a specific Event occurs: * [configuring](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#notification-config) * [destination and credentials for](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships#integration-destination-and-credentials) * [example](/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event) * [understanding](/guides/alerts-events-and-notifications/utilizing-events-and-notifications) > **Note:** Also see index entries above for [Events and Notifications](/guides/getting-started/knowledge-index#events-and-notifications). ## Organizations An Organization represents your company as a direct customer of the m3ter service. * [editing config](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [creating credit reasons for](/guides/organization-and-access-management/viewing-and-editing-organization/creating-credit-reasons) * [creating debit reasons for](/guides/organization-and-access-management/viewing-and-editing-organization/creating-debit-reasons) * [creating Service Users for](/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users) * [currencies for](/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies) * [granting support access](/guides/organization-and-access-management/managing-users/granting-m3ter-support-access-to-organization) * [managing](/guides/organization-and-access-management/viewing-and-editing-organization) * [transaction types for](/guides/organization-and-access-management/viewing-and-editing-organization/creating-transaction-types) * [viewing details](/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration) * [viewing Permission Policies](/guides/organization-and-access-management/managing-users/viewing-and-managing-permission-policies) * [viewing and editing Users](/guides/organization-and-access-management/managing-users/managing-users-and-assigning-permission-policies) ## Permission Policies Permission Policies allow you to control what users who have authenticated with the service are allowed to do in your Organization. * [adding to Service Users](/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users#adding-permission-policies-to-service-users) * [creating and managing](/guides/organization-and-access-management/creating-and-managing-permissions) * [viewing and managing](/guides/organization-and-access-management/managing-users/viewing-and-managing-permission-policies) ## Plans Plans represent a pricing and billing plan for end customers who consume your products or services. They are derived from Plan Templates. * [creating](/guides/plans-and-pricing/working-with-plan-templates-and-plans/creating-plans) * [creating custom for Accounts](/guides/end-customer-accounts/creating-custom-account-plans) * [editing](/guides/plans-and-pricing/working-with-plan-templates-and-plans/editing-plan-templates-and-plans) * [pricing](/guides/plans-and-pricing/pricing-plans/pricing-plans) * [reviewing options for](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates): * [billing currency](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates#plan-template-options) * [billing frequency](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates#plan-template-options) * [billing interval](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates#plan-template-options) * [standing charge](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#standing-charge) * [standing charge interval](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#standing-charge) * [standing charge offset](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#standing-charge) * [product minimum spend](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#minimum-spend) * [reviewing pricing options for](/guides/plans-and-pricing/pricing-plans/reviewing-pricing-options-and-pricing-plans) * [understanding billing options for](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans) * [viewing details of](/guides/plans-and-pricing/working-with-plan-templates-and-plans/editing-plan-templates-and-plans) ## Plan Groups Plan Groups allow you to group together Plans for different Products and define a minimum spend for the Group. * [adding plans to](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups#adding-plans-to-plan-groups) * [example use case for](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups#example-use-case-for-plan-groups) * [creating](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups#creating-plan-groups-and-adding-plans) * [creating custom for Accounts](/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts) * [understanding billing options for](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans) * [understanding minimum spend for](/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups#plan-group-minimum-spend-vs-plans-minimum-spends) ## Plan Templates Plan Templates allow you to configure default billing and pricing settings for your Plans, avoiding repetition in configuration work when setting up Plans. * [creating](/guides/plans-and-pricing/working-with-plan-templates-and-plans/creating-plan-templates) * [editing](/guides/plans-and-pricing/working-with-plan-templates-and-plans/editing-plan-templates-and-plans) * [pricing](/guides/plans-and-pricing/pricing-plans/pricing-plans) * [reviewing options for](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates): * [billing currency](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates#plan-template-options) * [billing frequency](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates#plan-template-options) * [billing interval](/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates#plan-template-options) * [standing charge](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#standing-charge) * [standing charge interval](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#standing-charge) * [standing charge offset](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#standing-charge) * [product minimum spend](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans#minimum-spend) * [reviewing pricing options for](/guides/plans-and-pricing/pricing-plans/reviewing-pricing-options-and-pricing-plans) * [understanding billing options for](/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans) * [viewing details of](/guides/plans-and-pricing/working-with-plan-templates-and-plans/editing-plan-templates-and-plans) ## Prepayments/Commitments Prepayments/Commitments allow you to assign an amount to an Account that the end customer has agreed to pay over the duration of their contract with you. * [billing with plan](/guides/end-customer-accounts/creating-prepayments-for-accounts#prepayment-billing-with-a-plan) * [billing on schedule](/guides/end-customer-accounts/creating-prepayments-for-accounts#prepayment-billing-on-a-schedule) * [creating for Account](/guides/end-customer-accounts/creating-prepayments-for-accounts) * [draw-down order against Balances for](/guides/end-customer-accounts/creating-prepayments-for-accounts#prepayments-draw-down-order-against-balances) * [duplicating](/guides/end-customer-accounts/creating-prepayments-for-accounts#duplicating-prepayments) * [example of](/guides/end-customer-accounts/creating-prepayments-for-accounts#example-prepayment) * [overage pricing for](/guides/plans-and-pricing/pricing-plans/reviewing-pricing-options-and-pricing-plans) * [overage surcharge for](/guides/end-customer-accounts/creating-prepayments-for-accounts#creating-prepayments) * [reviewing details of](/guides/end-customer-accounts/creating-prepayments-for-accounts#viewing-prepayment-details) * [setting draw-down charge types for](/guides/end-customer-accounts/creating-prepayments-for-accounts) ## Pricing A Pricing allows you to use Aggregations as pricing metrics to configure the cost of usage data consumed under Product Plans. * [deleting](/guides/plans-and-pricing/pricing-plans/managing-and-editing-priced-plans-or-plan-templates#deleting-pricing) * [editing priced Plans/Plan Templates](/guides/plans-and-pricing/pricing-plans/managing-and-editing-priced-plans-or-plan-templates) * [pricing Plans/Plan Templates](/guides/plans-and-pricing/pricing-plans/pricing-plans): * [using negative pricing for](/guides/plans-and-pricing/pricing-plans/pricing-plans#using-negative-pricing-for-plans) * [pricing readiness - prerequisites for](/guides/plans-and-pricing/pricing-plans/pricing-plans#pricing-readiness-completing-prerequisites) * [removing Aggregations from](/guides/plans-and-pricing/pricing-plans/managing-and-editing-priced-plans-or-plan-templates#removing-aggregations-from-the-pricing-editor) * [reviewing options for](/guides/plans-and-pricing/pricing-plans/reviewing-pricing-options-and-pricing-plans) * [seat-base pricing - derived field for](/guides/usage-data-meters/derived-fields-for-meters-examples-and-supported-syntax#example-7-derived-field-for-seat-based-pricing) * [viewing historic and future pricing for Plans](/guides/plans-and-pricing/pricing-plans/pricing-plans#viewing-historic-and-future-pricing-on-a-plan) * [viewing schedule for priced Plans/Plan Templates](/guides/plans-and-pricing/pricing-plans/managing-and-editing-priced-plans-or-plan-templates#viewing-pricing-schedule) * [using segmented aggregations for](/guides/plans-and-pricing/pricing-plans/pricing-plans-using-segmented-aggregations) ## Products Products represent in your m3ter Organization the products or service you offer to end customers. * [creating and managing](/guides/creating-and-managing-products) * [creating entities for](https://docs.m3ter.com/guides/creating-and-managing-products#creating-product-entities) ## Recurring Charges The Recurring Charges feature in m3ter allows you to use [Counters](/guides/getting-started/knowledge-index#counters) to set up unit-based for your products and services. * [creating counters for](/guides/recurring-charges-counters/creating-counters) * [creating counter adjustments on accounts](/guides/recurring-charges-counters/creating-counter-adjustments-for-accounts) * [creating unit-based pricing for plans](/guides/recurring-charges-counters/creating-counters) * [using for hybrid pricing](/guides/recurring-charges-counters/recurring-charges-example-2-hybrid-pricing) * [using for seat-based pricing](/guides/recurring-charges-counters/reviewing-bills-for-recurring-charges) ## Salesforce Managed Package The [m3ter Connector for Salesforce](/guides/m3ter-connector-for-salesforce) managed package allows you to map and synchronize data in your Salesforce systems with the m3ter platform. You can quickly set up a connective framework between Salesforce CRM and CPQ to streamline and accelerate the process of connecting your Salesforce systems to your m3ter infrastructure with one simple, fully supported, and managed integration. * [configuring](/guides/m3ter-connector-for-salesforce/configuring-m3ter-salesforce-connector) * [metadata mappings for](/guides/m3ter-connector-for-salesforce/reviewing-and-managing-metadata-mappings) * [custom metadata mappings](/guides/m3ter-connector-for-salesforce/creating-metadata-mappings) * [sync to m3ter invocable action](/guides/m3ter-connector-for-salesforce/setting-up-invocable-action-for-event-driven-sync) * [testing sync setup for](/guides/m3ter-connector-for-salesforce/testing-sync-setup-from-salesforce-to-m3ter) * [troubleshooting syncs](/guides/m3ter-connector-for-salesforce/checking-sync-logs-and-troubleshooting) ## Segmented Aggregations Segmented Aggregations allow you to segment the usage data collected by a single Meter and price your Plans by these segment values. * [billing for](/guides/usage-data-aggregations/segmented-aggregations#billing-for-segmented-aggregations) * [creating](/guides/usage-data-aggregations/segmented-aggregations#creating-segmented-aggregations) * [example use case for](/guides/usage-data-aggregations/segmented-aggregations) * [using to price Plans](/guides/plans-and-pricing/pricing-plans/pricing-plans-using-segmented-aggregations) * [using wildcard values for](/guides/usage-data-aggregations/segmented-aggregations#using-wildcards-or-defaults-in-segmented-aggregations) * [worked example for](/guides/getting-started/metering-for-production-worked-examples/example-3-segmented-aggregation-on-single-meter-usage) ## Service Users Service Users represent automated processes that you want to grant direct API access to your Organization. * [adding Permission Policy to](/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users#adding-permission-policies-to-service-users) * [creating and configuring](/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users) * [generating secret and access key for](/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users#generating-access-keys-for-service-users) * [obtaining bearer token for](/guides/authenticating-with-the-platform/service-authentication#obtaining-a-bearer-token-using-basic-auth) ## Statement Definitions Statement Definitions allow you to define how the usage data collected by a Meter for a billing period is broken down. You can then use Statement Definitions to generate Bill Statements for specific Bills and append these to your end-customer invoices. * [creating](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements#creating-statement-definitions) * [using](/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements#using-statement-definitions) ## Transactions You can create and define *Transaction Types* for your Organization. Transaction Types can then be used to create specific *Transaction amounts* for Balances on end-customer Accounts. In this way, you can use Transactions to flexibly manage Balance amounts on end-customer Accounts, with a Transaction ledger being maintained for individual Balances. * [creating transaction amounts for balances](/guides/end-customer-accounts/creating-balances-for-accounts#creating-transactions-for-a-balance) * [creating transaction types for organization](/guides/organization-and-access-management/viewing-and-editing-organization/creating-transaction-types) * [working with balance transaction ledger](/guides/end-customer-accounts/creating-balances-for-accounts#working-with-the-balance-transaction-ledger) ## Usage Data You can create and configure *Meters* in m3ter to collect your end customer usage data. When you have set up Meters, you can define *Aggregations* of that data to give the pricing metrics to price Plans for your Products. You can submit test usage data right in the Console and generate test Bills for that usage data. If usage data measurements you submit to the platform fail to ingest properly, an ingest failure Event is generated and a log file is made available to review and troubleshoot the ingest failure: * [aggregating to price by](/guides/usage-data-aggregations/reviewing-aggregation-options) * [file upload by meter](/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter) * [file upload service API for](/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api) * [getting usage data into m3ter](/exploring-m3ter-getting-to-know-the-platform/getting-usage-data-into-m3ter-quick-reference-starter) * [reviewing and resolving ingest failure events for](/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events) * [setting up Meters to collect](/guides/usage-data-meters) * [submitting](/guides/billing-and-usage-data/submitting-usage-data) * [submitting for non-existent accounts](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-for-non-existent-accounts) * [submitting and checking test usage data](/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data) * [using timestamp to submit usage data adjustments](/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp) ## Users Users represent a person you allow to authenticate with and have access to your Organization. * [authentication for](/guides/authenticating-with-the-platform) * [creating permission policies for](/guides/organization-and-access-management/creating-and-managing-permissions) * [creating user groups for](/guides/organization-and-access-management/managing-users/creating-and-managing-user-groups) * [deactivating and reactivating](/guides/organization-and-access-management/managing-users/managing-users-and-assigning-permission-policies#deactivating-and-reactivating-users) * [editing profile](/guides/organization-and-access-management/managing-users/managing-users-and-assigning-permission-policies#editing-user-profile) * [inviting to join your organization](/guides/organization-and-access-management/managing-users/inviting-users-to-organization) * [managing and assigning permission policies to](/guides/organization-and-access-management/managing-users/managing-users-and-assigning-permission-policies) * [single sign-on (SSO) for](/guides/authenticating-with-the-platform/m3ter-single-sign-on) * [tracking user activity in organization](/guides/organization-and-access-management/managing-users/tracking-user-activity-in-organization) * [viewing and editing](/guides/organization-and-access-management/managing-users/managing-users-and-assigning-permission-policies) ## Webhooks In the Integrations section of the Console, you can create *Outgoing webhooks*. If you've defined a Notification Rule based on a system event, you can link this to an Outgoing webhook as the endpoint for the Notification and to create a Notification Webhook integration: * [creating and managing outgoing webhooks](/guides/integrations/setting-up-integrations/creating-and-managing-destinations) * [setting up authentication for connecting to](/guides/integrations/setting-up-integrations/creating-and-managing-destinations#webhook-authentication-for-m3ter-_-signed_request) # Worked Examples Source: https://docs.m3ter.com/guides/getting-started/metering-for-production-worked-examples Discover m3ter's usage-based pricing examples: for simple cloud storage, allowing for sign-up bonuses, and usage segmentation. In this section, you can review some worked examples with video walkthroughs. These are designed to illustrate the wide scope and flexibility the m3ter platform offers for gathering usage data and defining pricing metrics to meet the specific usage-based pricing requirements for your products and services: * [Example 1: Cloud Storage and File Cleanup](/guides/getting-started/metering-for-production-worked-examples/worked-example-1-cloud-storage-and-file-cleanup) * [Example 2: Compound Aggregation for Sign-Up Bonus](/guides/getting-started/metering-for-production-worked-examples/example-2-compound-aggregation-for-sign-up-bonus) * [Example 3: Segmented Aggregation on Single Meter Usage](/guides/getting-started/metering-for-production-worked-examples/example-3-segmented-aggregation-on-single-meter-usage) # Example 2: Compound Aggregation for Sign-Up Bonus Source: https://docs.m3ter.com/guides/getting-started/metering-for-production-worked-examples/example-2-compound-aggregation-for-sign-up-bonus Follow a worked example using a Compound Aggregation for pricing. Suppose your SaaS company provides a "build-and-host" application service, one which allows customers to develop and run software applications and host these applications on your service: * You'll charge customers by total number of requests made to all of their applications being hosted with your service in any given billing period. * However, you want to offer customers a sign-up bonus for the first three months of using your service. The first 100 requests made to an application they host with you are free for each billing period - for example, if a customer has 3 applications hosted with you during the first billing period, they are due 300 free requests for the first Bill. * The sign-up bonus will be generous in this sense - if a new customer reaches a maximum of 5 applications hosted in a billing period, but by the end of the billing period has taken down 2 of them, their bonus will be calculated for the maximum number of hosted applications reached in the billing period at 500 free requests. This topic provides a worked example to illustrate how you can use a Compound Aggregation to provide a suitable metric for pricing Product Plans and easily satisfy this SaaS UBP use case - the pricing metric the Compound Aggregation provides will ensure the sign-up bonus is allowed for when billing is run for Accounts placed on the priced Product Plans. The example goes on to show how to submit some test data against a test Account and then generate a Bill for the test Account and check billed amounts against submitted usage. ## 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 **App Hosting Standard**: 3. Select **Create product**. The **App Hosting Standard** Product can now serve as a container for any Meters, Aggregations, Plan Templates, Plans, or Pricings we'll need to create and configure for the example. > **More Details:** [Creating and Managing Products](/guides/creating-and-managing-products) ## Step 2: Set up Meters *Meters* define the Data Fields that your system will use to submit usage data 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 this example, we'll create two Meters each with a single simple Data Field. * You can create Product-specific Meters or Global Meters. For the example, we'll create two Meters for the **App Hosting Standard** Product. **To create Meters:** 1. Select **Metering**. The **Meters** page opens. 2. In the **Product** drop-down, select **App Hosting Standard**. 3. Select **Create meter**. Here's the set up for the first Meter to support the pricing model we want to use in the example: For the example, we've set up **App Hosting Meter 1** and added the single Data Field called **Number Apps** to capture usage data. 4. Select **Create meter**. 5. Return to the **Meters** pages and repeat steps **2** and **3** to set up a second Meter: We've set up a second **App Hosting Meter 2** and added a single Data Field called **Number Requests** to capture usage data. 6. Select **Create meter**. We now have a two Meters for the example, which we can use to collect usage data on any Account that consumes the **App Hosting Standard** Product. This metered usage data will serve as the basis for the Compound Aggregation pricing metric we want to apply to rate Product consumption yet allow for a sign-up bonus. > **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 two simple Aggregations based on the usage data collected by our two Meters - **App Hosting Meter 1** and **App Hosting Meter 2**. Each simple Aggregation will target a different Meter and field to define a metric: * For the maximum number of hosted applications, we'll target the **Number Apps** Data Field on **App Hosting Meter 1**. * For the total number of requests made to hosted applications, we'll target the **Number Requests** Data Field on **App Hosting Meter 2**. We'll then create a Compound Aggregation that references these two simple Aggregations and uses a calculation to ensure the sign-up bonus is factored into the pricing metric it provides. **To create two simple Aggregations:** 1. Select **Metering>Aggregations**: The **Aggregations** page opens. 2. In the **Product** drop-down, select **App Hosting Standard**. 3. Select **Create aggregation**. Here's the setup for the first simple Aggregation: * **Aggregation details**: * **Meter settings**: * **Aggregation settings**: The **Max Apps Hosted** Aggregation targets the **Number Apps** Data Field on **App Hosting Meter 1** and uses the **Maximum** value of the field. 4. Select **Create aggregation**. 5. Repeat steps **3.** and **4.** to create a second Aggregation. Here's the setup for the second Aggregation: * **Aggregation details**: * **Meter settings**: * **Aggregation settings**: The **Number App Requests** Aggregation targets the **Number Requests** Data Field on **App Hosting Meter 2** and uses the **Sum** of values of the field. 6. Select **Create aggregation**. We can now use these two simple Aggregations to set up a Compound Aggregation that provides the pricing metric we need to meet the sign-up bonus UBP use case. **To create a Compound Aggregation:** 1. Select **Metering>Compound aggregations**: The **Compound aggregations** page opens. 2. In the **Product** drop-down, select **App Hosting Standard**. 3. Select **Create compound aggregation**. Here's the setup for the Compound Aggregation: * **Compound aggregation details**: * **Compound aggregation settings**: Note that for the Calculation: * We've switched to **Advanced**. * Entered a valid expression that references our two simple Aggregations using the format: `aggregation.<>`. The Calculation will ensure that the pricing metric the Compound Aggregation provides subtracts the appropriate numbers of requests for the promised sign-up bonus. **Tip: Working with Calculations?** For more details on working with calculations for Compound Aggregations, see [Compound Aggregations - Referencing Values and Fields and Supported Syntax](/guides/usage-data-aggregations/compound-aggregations#compound-aggregations-referencing-values-and-fields-and-supported-syntax). 4. Select **Create compound aggregation**. We can now use the **App Requests Minus Free** Compound Aggregation to price a Plan for the **App Hosting Standard** Product. > **More Details:** [Reviewing Aggregation Options](/guides/usage-data-aggregations/reviewing-aggregation-options), [Creating Aggregations](/guides/usage-data-aggregations/creating-aggregations), and [Compound Aggregations](/guides/usage-data-aggregations/compound-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 **App Hosting Standard** Product. We'll configure the Plan Template: * For monthly billing using a specific billing currency. * Omit any **Standing charge** or **Minimum spend** amounts to be applied for each billing period. * Second, we'll create a Product Plan based on the Plan Template. **To create a Product Plan Template:** 1. Select **Pricing>Plan templates**: The **Plan templates** page opens. 2. In the **Product** drop-down, select **App Hosting Standard**. 3. Select **Create plan template**. The **Create** page opens. Here's the setup for our Product Plan Template: For the **App Hosting Plan Template 1** we've: * Chosen **US dollars** as the billing currency. * Note that if **US Dollar** doesn't appear for selection in the **Currency** drop-down when you are creating your Plan Template, you'll need to create it for your Organization: * Select **Settings>Organization** and open the **Currencies** tab. * Click **Create currency** and on the **Create** page add **USD - US Dollar (\$)** as a **Standard currency**. You can define the **Maximum decimal places** for the currency also. Click **Create** - **US Dollar** will now be available for selection across your Organization. * 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. * Ignore the settings **Standing charge** and **Minimum spend**, which allow you to set up amounts for billing, neither of which are required for the example pricing model. 4. Select **Create plan template**. You are returned to the **Plan template details** page. We can now create a Product Plan for the example based on this template. **To create a Product Plan:** 1. Select **Pricing>Plans**. The **Plans** page opens. 2. In the **Product** drop-down, select **App Hosting Standard**. 3. Select **Create plan**. The **Create** page opens. Here's the setup for our Product Plan: * Note that no **Standing charge** or **Minimum spend** amounts are required for the example. 4. Select **Create plan**. The **Plan details** page opens for our new Product Plan. We can now price this Plan using our **App Requests Minus Free** Compound Aggregation. > **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 m3ter Console to quickly price up our Product Plan to meet the pricing requirements for the example. **To price Product Plan:** 1. Select **Pricing>Pricing editor**: The **Pricing editor** page opens. 2. In the **Product** drop-down, select **App Hosting Standard**. 3. Select **Add plans**. The **Select plans** dialog opens and lists all Plans created for the **App Hosting Standard** Product. 4. Check **App Hosting Plan 1** and select **Confirm**. The dialog closes and the Plan is added to the **Pricing** **editor** page. We'll use the Compound Aggregation we created at **Step 3** for the usage-based metric to price the Plan in accordance with the requirements set out in the example. 5. Click **Add compound aggregations**. A **Select compound aggregations** dialog appears and lists all Compound Aggregations created for the **App Hosting Standard** Product. * Note that you might also see *global* Compound Aggregations listed for selection. Global Compound Aggregations are not tied to any specific Product and can be used to price Plans across all Products. 6. On the **Select compound aggregations** dialog check **App Requests Minus Free**. 7. Click **Confirm**. The dialog closes and the selected Compound Aggregation is added to the **Pricing editor** page for the added Plan. You'll see that no **Active pricing** has been configured for the Plan using this Compound Aggregation. 8. In the pricing grid, select **Create Plan pricing** for **App Requests Minus Free**. The **Create** pricing page opens: * You can read off details of the Compound Aggregation being used to create the pricing at the top of the page. * You can **Switch to wizard** to follow an alternative streamlined pricing workflow by **Pricing type**. For the example workflow, we'll continue with the default *advanced pricing format*. 9. Under **Pricing settings** enter: * **Start** and **End** dates for the period the pricing is active for the Plan. * An **Accounting product** to link any Bill line items resulting from the pricing to a specific product line for your accounting purposes. * A **Description** that will appear for any usage charge line items on Bills, such as **Requests Charges**. 10. Ignore the **Minimum spend settings**, which are not required for the current example. 11. Under **Pricing settings**: * Leave the **Apply as** setting as the default - **Debit**. * **Pricing type**: * The pricing requirement was to charge at a flat rate by number of requests minus the free requests per billing period under the sign-up bonus offer. We have set things up carefully to ensure the Compound Aggregation factors in the appropriate number of free requests. * We can therefore implement this pricing, using a **Tiered** pricing structure with a single pricing band configured: 12. Ignore the **Prepayment/Balance overage pricing settings**. We are not setting up any Prepayments or Balances on Accounts in the current example. 13. Select **Create pricing**. The **Create** pricing page closes and you are returned to the **Pricing editor** page: 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 An *Account* represents one of your end-customers, and contains the end-customer name and contact details: * When you attach a priced Plan to an Account, this creates a link between them to create an *Account Plan*. Attaching priced Plans to an Account determines the charges incurred by customers who are put on the Plan when they consume one of your Products. 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 details of the new Account: * **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. * **Other settings**. These are optional fields, such as physical address settings, which you can add later by editing the Account. 4. Select **Create account.** The **Account details** page for the new Account opens with the **Overview** tab selected: For the worked example, we've created the **App Hosting 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 the default setting and enter the **Plan attachment details** for the Account Plan: * Use the **Product** drop-down to select the Product, which is **App Hosting Standard** for the example. The Plan drop-down selection field is enabled. * Use the **Plan** drop-down to select the Plan, which is **App Hosting Plan 1** for the example. * Use the pop-up calendars to enter **Start date** and **End date**, which will define the period the Account Plan is active for the Account. 8. Ignore the **Plan attachment settings** - these can be left as the defaults for the current example. 9. Select **Create plan attachment**. Back on the **Attached plans** tab, the Account Plan is shown on the **Active and pending attached plans** panel: We now have a test Account set up that will be billed according to the pricing schema we've configured for the Plan for any metered usage of the Product. > **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 data to our test account for **App Hosting Meter 1** and **App Hosting Meter 2**, which will allow us to generate a Bill for the test Account and check that the usage charges on the Bill for the submitted test data are correct. 1. Select **Accounts**. On the **Accounts** page, select the **Name** hotlink text of the **App Hosting Customer 1** test Account we created at **Step 6**. The **Account details** page opens with the **Overview** tab selected. 2. Select **Submit usage**: A **Submit usage data** dialog appears. To submit usage data measurements for the Account, you must complete two stages using the dialog. 3. Under stage **1: Select a meter**, use the **Meter** drop-down to select **App Hosting Meter 1** 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 single Data Field we set up for the Meter is shown with an empty **Value** field. 4. Enter a test data **Value** for the **Number Apps** Data Field: 5. Select **Submit usage**. If the measurement is ingested successfully, under **Log** you'll see a `{"result" : "accepted"}` message under the **Log** section of the **Submit usage data** dialog. * Note that the **Submit usage data** dialog refreshes with a new measurement **UID** and readied for another data submission. W Ex2screen27 6. For the example, repeat steps **3**. to **5**. to submit two more measures for the **App Hosting Meter 1>Number Apps** Data Field: * **7** * **5** **Tip: Record the Test Data Values!** Keep a record of the test **Values** you've submitted. You can then calculate manually what the respective charges should be when you generate a sample Bill for the Account. 7. Close the **Submit usage data** dialog. 8. Repeat Steps **2** to **7**, to re-open the **Submit usage data** dialog, but this time select **App Hosting Meter 2** and submit a series of measures for the **Number Requests** Data Field we set up on that Meter: * **250** * **270** * **120** * **750** 9. Go to the test Account details page and select the **Bills** tab. 10. On the **Bills** tab, select **Run billing**. The **Run billing** dialog appears. 11. In the example, we are using monthly billing and the test data was submitted in May 2025, so we select: * **June 1st** **2025** for **Invoice date**. * Note - before running bills, it can be worth double-checking that your Organization configuration has the **Month Epoch** set to run Bills from the 1st of a month. * **Monthly** for **Bill Frequency**. 12. 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, whic: * This opens the **Running tasks** panel and you can follow the status of your Bill job. 13. 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 the usage-based pricing we've implemented: * **Number Apps**. We submitted 3 values - **8**, **7**, and **5** - for this Data Field and configured the **Max Apps Hosted** simple Aggregation to target this field and give the **Maximum** = **8**. * **Number Requests**. We submitted **4** values - **250**, **270**, **120**, and **750** - for this Data Field and configured the **Number App Requests** simple Aggregation to target this field and give the **Sum** = **1390**. * Our **App Request Minus Free** Compound Aggregation references these two simple Aggregations and applies a calculation to yield a value that allows for the sign-up bonus discount. For the test data this should mean the Account is charged for **1390** - **(8 x 100)** = **590** requests at the rate of **\$0.50** per request = **\$295**. 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: **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. **Tip: Billing beyond the first three months after sign-up bonus period expires?** To ensure billing is adjusted from the fourth month of service forward, you can create a new Pricing for the same Plan that uses the **Number App Requests** simple Aggregation, and set a **Start date** for this Pricing at the 1st of the fourth month of service for the Account. > **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) # Example 3: Segmented Aggregation on Single Meter Usage Source: https://docs.m3ter.com/guides/getting-started/metering-for-production-worked-examples/example-3-segmented-aggregation-on-single-meter-usage Detailed example using a segmented Aggregation for pricing.