This topic gives some examples of Compound Aggregation calculations as guidance on how to work with them to achieve the precise pricing you need for products and services:
Further details on creating Compound Aggregation Calculations. For details on the types of fields you can reference in your calculations, see Working with Compound Aggregations Calculations.
Compound Aggregation Calculations Use Base Values of Simple Aggregations. If a simple Aggregation referenced by a Compound Aggregation has a Quantity per unit defined for pricing and billing purposes or a Rounding defined, then these will not be factored into the value used by the calculation. For example, if a simple Aggregation referenced has a base value of 100 and has a Quantity per unit set at 10, any Compound Aggregation calculation that references it will use the base value of 100 and not 10.
Example 1 - Combining Aggregations in Seconds to Minutes
Suppose your production environment contains three Meters each collecting usage data for time duration measures in seconds. You have set up simple Aggregations to SUM each of these Meter Data Fields:
Watch duration: watch_seconds
Testing duration: test_seconds
Live duration: live_seconds
However, you want to set up pricing on a Product that charges your end-customers on the basis of their combined usage duration per billing period across all three simple Aggregations, and to charge by the minute, not by the second.To satisfy this pricing use-case, you can use a Compound Aggregation that adds together the simple Aggregation values and then divides the total by 60:
Example 2 - Calculating Credits for Reduced Product Usage
Suppose you a run a cloud service company which offers end customers computing capabilities. You’ll set up pricing for products to charge on a monthly basis with a usage measure of total Gigabytes-per second used per month together with a monthly standing charge. However, as a sign-up bonus you want to offer credits to new customers for the first six months whereby they receive a credit rebate each month if they log into their accounts fewer than 20 times that month per user - roughly, that is, at least once for every user they have for every working day in a month. For each time fewer than the expected number of user logins, they’ll receive a $10 credit rebate on their Bill. To implement this and incorporate it into your pricing schema, you therefore need a way to count the number of user logins fewer than 20 each month for each user registered under a customer Account. This might seem like a difficult use case to satisfy as part of your overall UBP model, but by using the following Compound Aggregation in m3ter you can quickly implement it.First we set up two simple Aggregations:
The total number of registered users under the end customer Account at the end of each monthly billing period: number_regusers
The total actual number of logins recorded for all the registered users on the Account in a given month: total_reguserlogins
We can then create a Compound Aggregation that references these two simple Aggregations:
This calculation yields the required count of the number of fewer than expected registered user logins in the month:
We take the number of registered users for the Account and multiply this by 20 (using this as a rough average of the number of working days per month) to generate an expected number of user logins (one login per user per working day).
We then subtract the actual number of user logins from the number of expected user logins to generate a number of credits to rebate the Account that month.
We use a Math.max() function to give a zero (no credits) if the number of actual user logins exceeds the number of expected logins for that Account.
Tip: Negative Pricing! Note that since we suppose there will be positive charges applied under the pricing applied for usage and standing charge, you can set the pricing configured using this Compound Aggregation as a negative pricing (-$10 per unit) to have it show as a credit on the monthly Bills.
Example 3 - Global Compound Aggregation for Product Bundling
Suppose you a run a cloud service company which offers financial institutions products designed to prevent them becoming victims of online fraudulent behavior:
A service to catch and block suspect attempts to gain access to their online services - either by login attempts that use bogus accounts or login attempts using registered accounts that show suspicious traits. In either case, the login attempt is blocked and the attempt logged. You market this under the product name: “Account Secure”.
A service that checks payments submitted by legitimate account holders using credit cards. If the payment details are not validated, the payment attempt is rejected and logged. You market this second service under the product name: “Payments Check”.
Your pricing schema for both these services will be similar:
For both services, you will charge on the basis of the number of events where your protection service has been activated during the agreed billing period:
For customers who take the Account Secure product: a count of the number of events where your service activated, identified something suspicious, and blocked an attempt at login.
For customers who take the Payment Check product, a count of the number of events where your service was activated, checked submitted payment details and, finding those details to be false, rejected the payment submission.
In addition for both products, you differentiate within the total count of these events by recording the country of origin of the online users, which is useful when reviewing and analyzing bogus login attempts and attempts to pay using false credit card details. For the sake of the example, we suppose your customers operate across these three countries - the United States, Canada, and the United Kingdom.To price each product, we can now use a Compound Aggregation that simply adds the simple Aggregations that count events across the three countries of operation:Account Secure Product: we create three simple Aggregations to count bogus login attempts for each country:
account_uslogins
account_canlogins
account_uklogins
We can now create a Compound Aggregation for this product, which adds together the values of these three simple Aggregations:
This is now available to price Plans for your Account Secure product and for charging end customer Accounts that consume this product.Payment Check: we create three simple Aggregations to count payments that tried to use false credit card details for each country:
payment_ussubmit
payment_cansubmit
payment_uksubmit
We can now create a Compound Aggregation for this product, which adds together the values of these three simple Aggregations:
This is now available to price Plans for your Payment Check product and for charging end customer Accounts that consume this product.However, a new customer approaches you and wants to take both products as a combined contract and you’ll likely want to offer them discounted rates across both products. For this use case, we can now set up a global Compound Aggregation - one that is not tied to a specific product - and adds together both sets of simple Aggregations we used for pricing a specific product, and therefore creates a Compound Aggregation that forms a cross-product bundle:
This is now available to price Plans for your product bundle offering and for charging end customer Accounts that consume both products under the bundle.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"m3ter Documentation","description":"Guides, learning resources and API reference for integrating with m3ter","colors":{"primary":"#4caf4c","dark":"#449d44"},"logo":{"light":"https://mintcdn.com/m3ter/t6C65JBQiQOFtjBy/images/m3ter-logo-blue-sf.svg?fit=max\u0026auto=format\u0026n=t6C65JBQiQOFtjBy\u0026q=85\u0026s=3928db28c84ec6950e43caf96e635d80","dark":"https://mintcdn.com/m3ter/t6C65JBQiQOFtjBy/images/m3ter-logo-white-sf.svg?fit=max\u0026auto=format\u0026n=t6C65JBQiQOFtjBy\u0026q=85\u0026s=a018cb782e49a2fbdd811276476d0605"},"favicon":"https://mintcdn.com/m3ter/T0RRts393DSUkWFc/favicon.svg?fit=max\u0026auto=format\u0026n=T0RRts393DSUkWFc\u0026q=85\u0026s=9492b54cc98df6775983b287b6f865cd","navbar":{"links":[{"href":"https://m3ter.freshdesk.com","label":"Support"},{"href":"https://console.m3ter.com","label":"Console"}],"primary":{"type":"button","label":"Schedule a demo","href":"https://www.m3ter.com/contact"}},"footer":{"socials":{"linkedin":"https://uk.linkedin.com/company/m3ter","x":"https://x.com/m3terHQ","github":"https://github.com/m3ter-com"},"links":[{"items":[{"label":"Website","href":"https://www.m3ter.com"},{"label":"Legal","href":"https://www.m3ter.com/legal"},{"label":"Security","href":"https://www.m3ter.com/security"},{"label":"Trust Center","href":"https://trust.m3ter.com"}]}]},"fonts":{"family":"Montserrat"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","latex":false},"integrations":{"ga4":{"measurementId":"G-V9C7TTPRQT"}},"contextual":{"options":["copy","view"],"display":"header"},"thumbnails":{"fonts":{"family":"Montserrat"}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"m3ter","hasAudioNarration":false,"actualSubdomain":"m3ter","customDomains":["docs.m3ter.com"],"gitSource":{"type":"github","owner":"m3ter-com","repo":"m3ter-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4b3832e4c4b8ea8e5ac1c","collectionId":"f4691807-992d-43f9-aab2-d179e798824c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4b3832e4c4b8ea8e5ac1c"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae9a09c36175fbf7124961d","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Guides","count":400},{"language":"default","tag":"API Reference","count":393},{"language":"default","tag":"Endpoints","count":387},{"language":"default","tag":"Integrations","count":66},{"language":"default","tag":"m3sh Function Reference","count":66},{"language":"default","tag":"Synthetic functions","count":50},{"language":"default","tag":"m3ter","count":50},{"language":"default","tag":"m3sh","count":43},{"language":"default","tag":"End-Customer Accounts","count":27},{"language":"default","tag":"m3ter Connector for Salesforce","count":24}]},"assistantConfig":{"enableAskAiButton":true,"enableStarterQuestions":false,"enableAskAiSearchBar":false},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"guides/usage-data-aggregations/compound-aggregations-examples","slug":"/guides/usage-data-aggregations/compound-aggregations-examples","pageMetadata":{"title":"Compound Aggregations - Examples","description":null,"href":"/guides/usage-data-aggregations/compound-aggregations-examples"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,em:`em`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Tip,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This topic gives some examples of Compound Aggregation calculations as guidance on how to work with them to achieve the precise pricing you need for products and services:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/guides/usage-data-aggregations/compound-aggregations-examples#example-1-combining-aggregations-in-seconds-to-minutes`,children:`Example 1 - Combining Aggregations in Seconds to Minutes`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/guides/usage-data-aggregations/compound-aggregations-examples#example-2-calculating-credits-for-reduced-product-usage`,children:`Example 2 - Calculating Credits for Reduced Product Usage`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/guides/usage-data-aggregations/compound-aggregations-examples#example-3-global-compound-aggregation-for-product-bundling`,children:`Example 3 - Global Compound Aggregation for Product Bundling`})}),`\n`]}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Important!`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Further details on creating Compound Aggregation Calculations`}),`. For details on the types of fields you can reference in your calculations, see `,_jsx(_components.a,{href:`/guides/usage-data-aggregations/compound-aggregation-calculations`,children:`Working with Compound Aggregations Calculations`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Compound Aggregation Calculations Use Base Values of Simple Aggregations`}),`. If a simple Aggregation referenced by a Compound Aggregation has a `,_jsx(_components.strong,{children:`Quantity per unit`}),` defined for pricing and billing purposes or a `,_jsx(_components.strong,{children:`Rounding`}),` defined, then these `,_jsx(_components.em,{children:`will not be factored into the value used by the calculation`}),`. For example, if a simple Aggregation referenced has a base value of 100 and has a `,_jsx(_components.strong,{children:`Quantity per unit`}),` set at 10, any Compound Aggregation calculation that references it will use the base `,_jsx(_components.em,{children:`value of 100 and not 10`}),`.`]}),`\n`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`example-1-combining-aggregations-in-seconds-to-minutes`,children:`Example 1 - Combining Aggregations in Seconds to Minutes`}),`\n`,_jsxs(_components.p,{children:[`Suppose your production environment contains three Meters each collecting usage data for time duration measures in seconds. You have set up simple Aggregations to `,_jsx(_components.strong,{children:`SUM`}),` each of these Meter Data Fields:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Watch duration: `,_jsx(_components.code,{children:`watch_seconds`})]}),`\n`,_jsxs(_components.li,{children:[`Testing duration: `,_jsx(_components.code,{children:`test_seconds`})]}),`\n`,_jsxs(_components.li,{children:[`Live duration: `,_jsx(_components.code,{children:`live_seconds`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:`However, you want to set up pricing on a Product that charges your end-customers on the basis of their combined usage duration per billing period across all three simple Aggregations, and to charge by the minute, not by the second.`}),`\n`,_jsx(_components.p,{children:`To satisfy this pricing use-case, you can use a Compound Aggregation that adds together the simple Aggregation values and then divides the total by 60:`}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Calculation:`}),` `,_jsx(_components.code,{children:`aggregation.watch_seconds`}),` + `,_jsx(_components.code,{children:`aggregation.test_seconds`}),` + `,_jsx(_components.code,{children:`aggregation.live_seconds`}),`/60`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`example-2-calculating-credits-for-reduced-product-usage`,children:`Example 2 - Calculating Credits for Reduced Product Usage`}),`\n`,_jsx(_components.p,{children:`Suppose you a run a cloud service company which offers end customers computing capabilities. You’ll set up pricing for products to charge on a monthly basis with a usage measure of total Gigabytes-per second used per month together with a monthly standing charge. However, as a sign-up bonus you want to offer credits to new customers for the first six months whereby they receive a credit rebate each month if they log into their accounts fewer than 20 times that month per user - roughly, that is, at least once for every user they have for every working day in a month. For each time fewer than the expected number of user logins, they’ll receive a $10 credit rebate on their Bill. To implement this and incorporate it into your pricing schema, you therefore need a way to count the number of user logins fewer than 20 each month for each user registered under a customer Account. This might seem like a difficult use case to satisfy as part of your overall UBP model, but by using the following Compound Aggregation in m3ter you can quickly implement it.`}),`\n`,_jsx(_components.p,{children:`First we set up two simple Aggregations:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The total number of registered users under the end customer Account at the end of each monthly billing period: `,_jsx(_components.code,{children:`number_regusers`})]}),`\n`,_jsxs(_components.li,{children:[`The total actual number of logins recorded for all the registered users on the Account in a given month: `,_jsx(_components.code,{children:`total_reguserlogins`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:`We can then create a Compound Aggregation that references these two simple Aggregations:`}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Calculation:`}),` `,_jsx(_components.code,{children:`Math.max(20*aggregation.number_regusers - aggregation.total_reguserlogins,0)`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This calculation yields the required count of the number of fewer than expected registered user logins in the month:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`We take the number of registered users for the Account and multiply this by 20 (using this as a rough average of the number of working days per month) to generate an expected number of user logins (one login per user per working day).`}),`\n`,_jsx(_components.li,{children:`We then subtract the actual number of user logins from the number of expected user logins to generate a number of credits to rebate the Account that month.`}),`\n`,_jsxs(_components.li,{children:[`We use a `,_jsx(_components.code,{children:`Math.max()`}),` function to give a zero (no credits) if the number of actual user logins exceeds the number of expected logins for that Account.`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tip: Negative Pricing!`}),` Note that since we suppose there will be positive charges applied under the pricing applied for usage and standing charge, you can set the pricing configured using this Compound Aggregation as a negative pricing (-$10 per unit) to have it show as a credit on the monthly Bills.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`example-3-global-compound-aggregation-for-product-bundling`,children:`Example 3 - Global Compound Aggregation for Product Bundling`}),`\n`,_jsx(_components.p,{children:`Suppose you a run a cloud service company which offers financial institutions products designed to prevent them becoming victims of online fraudulent behavior:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A service to catch and block suspect attempts to gain access to their online services - either by login attempts that use bogus accounts or login attempts using registered accounts that show suspicious traits. In either case, the login attempt is blocked and the attempt logged. You market this under the product name: “Account Secure”.`}),`\n`,_jsx(_components.li,{children:`A service that checks payments submitted by legitimate account holders using credit cards. If the payment details are not validated, the payment attempt is rejected and logged. You market this second service under the product name: “Payments Check”.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Your pricing schema for both these services will be similar:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`For both services, you will charge on the basis of the number of events where your protection service has been activated during the agreed billing period:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`For customers who take the Account Secure product: a count of the number of events where your service activated, identified something suspicious, and blocked an attempt at login.`}),`\n`,_jsx(_components.li,{children:`For customers who take the Payment Check product, a count of the number of events where your service was activated, checked submitted payment details and, finding those details to be false, rejected the payment submission.`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`In addition for both products, you differentiate within the total count of these events by recording the country of origin of the online users, which is useful when reviewing and analyzing bogus login attempts and attempts to pay using false credit card details. For the sake of the example, we suppose your customers operate across these three countries - the United States, Canada, and the United Kingdom.`}),`\n`,_jsx(_components.p,{children:`To price each product, we can now use a Compound Aggregation that simply adds the simple Aggregations that count events across the three countries of operation:`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Account Secure Product`}),`: we create three simple Aggregations to count bogus login attempts for each country:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`account_uslogins`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`account_canlogins`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`account_uklogins`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`We can now create a Compound Aggregation for this product, which adds together the values of these three simple Aggregations:`}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Calculation:`}),` `,_jsx(_components.code,{children:`aggregation.account_uslogins + aggregation.account_canlogins + aggregation.account_uklogins`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This is now available to price Plans for your Account Secure product and for charging end customer Accounts that consume this product.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Payment Check`}),`: we create three simple Aggregations to count payments that tried to use false credit card details for each country:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`payment_ussubmit`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`payment_cansubmit`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`payment_uksubmit`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`We can now create a Compound Aggregation for this product, which adds together the values of these three simple Aggregations:`}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Calculation:`}),` `,_jsx(_components.code,{children:`aggregation.payment_ussubmits + aggregation.payment_cansubmits + aggregation.payment_uksubmits`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This is now available to price Plans for your Payment Check product and for charging end customer Accounts that consume this product.`}),`\n`,_jsxs(_components.p,{children:[`However, a new customer approaches you and wants to take both products as a combined contract and you’ll likely want to offer them discounted rates across both products. For this use case, we can now set up a `,_jsx(_components.em,{children:`global`}),` Compound Aggregation - one that is not tied to a specific product - and adds together both sets of simple Aggregations we used for pricing a specific product, and therefore creates a Compound Aggregation that forms a cross-product bundle:`]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Calculation:`}),` `,_jsx(_components.code,{children:`aggregation.account_uslogins + aggregation.account_canlogins + aggregation.account_uklogins + aggregation.payment_ussubmits + aggregation.payment_cansubmits + aggregation.payment_uksubmits`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This is now available to price Plans for your product bundle offering and for charging end customer Accounts that consume both products under the bundle.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Compound Aggregations - Examples","description":null,"href":"/guides/usage-data-aggregations/compound-aggregations-examples"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Example 1 - Combining Aggregations in Seconds to Minutes","slug":"example-1-combining-aggregations-in-seconds-to-minutes","depth":2,"children":[]},{"title":"Example 2 - Calculating Credits for Reduced Product Usage","slug":"example-2-calculating-credits-for-reduced-product-usage","depth":2,"children":[]},{"title":"Example 3 - Global Compound Aggregation for Product Bundling","slug":"example-3-global-compound-aggregation-for-product-bundling","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"m3ter","siteName":"m3ter Documentation","title":"Compound Aggregations - Examples - m3ter Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T15:11:25.054Z","originalFileLocation":"guides/usage-data-aggregations/compound-aggregations-examples.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"m3ter Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Compound Aggregations - Examples - m3ter Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"m3ter Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations-examples\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://m3ter.mintlify.app/_mintlify/api/og/v2?division=Pricing+Metrics%3A+Aggregations\u0026amp;title=Compound+Aggregations+-+Examples\u0026amp;theme=a12cf6d8598fbb808e7ba8a7\u0026amp;signature=514d7c5c178a9a0184a84b6a934e2013150b5a0fea2f486dba3626752251f636\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Compound Aggregations - Examples - m3ter Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://m3ter.mintlify.app/_mintlify/api/og/v2?division=Pricing+Metrics%3A+Aggregations\u0026amp;title=Compound+Aggregations+-+Examples\u0026amp;theme=a12cf6d8598fbb808e7ba8a7\u0026amp;signature=514d7c5c178a9a0184a84b6a934e2013150b5a0fea2f486dba3626752251f636\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"m3ter Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4caf4c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations-examples\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/usage-data-aggregations/compound-aggregations-examples.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.m3ter.com/#organization\",\"name\":\"m3ter Documentation\",\"url\":\"https://docs.m3ter.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/m3ter/t6C65JBQiQOFtjBy/images/m3ter-logo-blue-sf.svg?fit=max\u0026auto=format\u0026n=t6C65JBQiQOFtjBy\u0026q=85\u0026s=3928db28c84ec6950e43caf96e635d80\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.m3ter.com#website\",\"name\":\"m3ter Documentation\",\"url\":\"https://docs.m3ter.com\",\"publisher\":{\"@id\":\"https://docs.m3ter.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations-examples#webpage\",\"url\":\"https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations-examples\",\"name\":\"Compound Aggregations - Examples\",\"dateModified\":\"2026-10-30T15:11:25.054Z\",\"isPartOf\":{\"@id\":\"https://docs.m3ter.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations-examples#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations-examples#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.m3ter.com/guides/getting-started/quick-start-worked-example\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pricing Metrics: Aggregations\",\"item\":\"https://docs.m3ter.com/guides/usage-data-aggregations\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Compound Aggregations - Examples\",\"item\":\"https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations-examples\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations-examples#article\",\"headline\":\"Compound Aggregations - Examples\",\"name\":\"Compound Aggregations - Examples\",\"url\":\"https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations-examples\",\"mainEntityOfPage\":{\"@id\":\"https://docs.m3ter.com/guides/usage-data-aggregations/compound-aggregations-examples#webpage\"},\"dateModified\":\"2026-10-30T15:11:25.054Z\",\"publisher\":{\"@id\":\"https://docs.m3ter.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.m3ter.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"m3ter Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"m3ter Documentation","nav":{"global":null,"tabs":[{"tab":"Exploring m3ter","pages":[{"title":"Exploring m3ter","href":""}]},{"tab":"Guides","pages":[{"group":"Guides","pages":[{"group":"Getting Started","root":{"title":"Getting Started","href":"/guides/getting-started"},"expanded":false,"pages":[{"title":"Quick Start","href":"/guides/getting-started/quick-start-worked-example"},{"title":"m3ter Console","href":"/guides/getting-started/working-in-the-m3ter-console"},{"title":"Configuration Workflow","href":"/guides/getting-started/previewing-main-configuration-steps"},{"group":"Worked Examples","expanded":false,"pages":[{"title":"Worked Examples","href":"/guides/getting-started/metering-for-production-worked-examples"},{"title":"Example 1: Cloud Storage and File Cleanup","href":"/guides/getting-started/metering-for-production-worked-examples/worked-example-1-cloud-storage-and-file-cleanup"},{"title":"Example 2: Compound Aggregation for Sign-Up Bonus","href":"/guides/getting-started/metering-for-production-worked-examples/example-2-compound-aggregation-for-sign-up-bonus"},{"title":"Example 3: Segmented Aggregation on Single Meter Usage","href":"/guides/getting-started/metering-for-production-worked-examples/example-3-segmented-aggregation-on-single-meter-usage"}]},{"title":"Dates in m3ter - Quick Reference Starter","href":"/guides/getting-started/working-with-dates-in-m3ter-easy-reference"},{"title":"Feature Release Stages","href":"/guides/getting-started/feature-release-stages"},{"title":"Knowledge Index","href":"/guides/getting-started/knowledge-index"},{"title":"Contacting m3ter Support","href":"/guides/getting-started/contacting-m3ter-support"}]},{"group":"Authentication","root":{"title":"Authentication","href":"/guides/authenticating-with-the-platform"},"expanded":false,"pages":[{"title":"User/Password Authentication","href":"/guides/authenticating-with-the-platform/user-password-authentication"},{"title":"m3ter Single Sign-On","href":"/guides/authenticating-with-the-platform/m3ter-single-sign-on"},{"title":"Service Authentication","href":"/guides/authenticating-with-the-platform/service-authentication"}]},{"group":"Creating, Managing, and Reviewing Products","root":{"title":"Creating, Managing, and Reviewing Products","href":"/guides/creating-and-managing-products"},"expanded":false,"pages":[{"title":"Working with Custom Fields","href":"/guides/creating-and-managing-products/working-with-custom-fields"}]},{"group":"Usage Data: Meters","root":{"title":"Usage Data: Meters","href":"/guides/usage-data-meters"},"expanded":false,"pages":[{"title":"Reviewing Meter Options","mode":"default","href":"/guides/usage-data-meters/reviewing-meter-options"},{"title":"Creating Product Meters","href":"/guides/usage-data-meters/creating-meters"},{"title":"Creating Global Meters","href":"/guides/usage-data-meters/creating-global-meters"},{"title":"Working in Meter Details","href":"/guides/usage-data-meters/working-in-meter-details"},{"title":"Working with Meter Derived Fields and Examples","href":"/guides/usage-data-meters/derived-fields-for-meters-examples-and-supported-syntax"}]},{"group":"Pricing Metrics: Aggregations","root":{"title":"Pricing Metrics: Aggregations","href":"/guides/usage-data-aggregations"},"expanded":false,"pages":[{"title":"Reviewing Aggregation Options","href":"/guides/usage-data-aggregations/reviewing-aggregation-options"},{"title":"Creating Product Aggregations","href":"/guides/usage-data-aggregations/creating-aggregations"},{"title":"Creating Global Aggregations","href":"/guides/usage-data-aggregations/creating-global-aggregations"},{"title":"Compound Aggregations","href":"/guides/usage-data-aggregations/compound-aggregations"},{"title":"Working with Compound Aggregation Calculations","description":null,"href":"/guides/usage-data-aggregations/compound-aggregation-calculations"},{"title":"Compound Aggregations - Examples","href":"/guides/usage-data-aggregations/compound-aggregations-examples"},{"title":"Segmented Aggregations","description":" ","href":"/guides/usage-data-aggregations/segmented-aggregations"},{"title":"Custom SQL Aggregations","href":"/guides/usage-data-aggregations/custom-sql-aggregations"},{"title":"Reviewing Aggregation Details","href":"/guides/usage-data-aggregations/reviewing-aggregation-details"}]},{"group":"Recurring Charges: Counters","root":{"title":"Recurring Charges: Counters","href":"/guides/recurring-charges-counters"},"expanded":false,"pages":[{"title":"Creating Counters and Pricing Plans","href":"/guides/recurring-charges-counters/creating-counters"},{"title":"Understanding and Creating Counter Adjustments for Accounts","href":"/guides/recurring-charges-counters/creating-counter-adjustments-for-accounts"},{"title":"Recurring Charges Billing: Seat-Based Pricing","href":"/guides/recurring-charges-counters/reviewing-bills-for-recurring-charges"},{"title":"Recurring Charges Billing: Hybrid Pricing","href":"/guides/recurring-charges-counters/recurring-charges-example-2-hybrid-pricing"}]},{"group":"Plans and Pricing","root":{"title":"Plans and Pricing","href":"/guides/plans-and-pricing"},"expanded":false,"pages":[{"group":"Creating and Working with Plan Templates, Plans, and Plan Groups","root":{"title":"Creating and Working with Plan Templates, Plans, and Plan Groups","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans"},"expanded":false,"pages":[{"title":"Reviewing Options for Plans and Plan Templates","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates"},{"title":"Understanding Billing Options for Plan Templates/Plans","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans"},{"title":"Creating Plan Templates","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/creating-plan-templates"},{"title":"Creating Plans","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/creating-plans"},{"title":"Working in Plan Template and Plan Details","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-in-plan-details"},{"title":"Editing and Deleting Plan Templates and Plans","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/editing-plan-templates-and-plans"},{"title":"Working with Plan Groups","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups"}]},{"group":"Pricing and Managing Plans and Plan Templates","root":{"title":"Pricing and Managing Plans and Plan Templates","href":"/guides/plans-and-pricing/pricing-plans"},"expanded":false,"pages":[{"title":"Reviewing Pricing Options for Plans and Plan Templates","href":"/guides/plans-and-pricing/pricing-plans/reviewing-pricing-options-and-pricing-plans"},{"title":"Pricing Plans and Plan Templates","href":"/guides/plans-and-pricing/pricing-plans/pricing-plans"},{"title":"Pricing Plans Using Segmented Aggregations","href":"/guides/plans-and-pricing/pricing-plans/pricing-plans-using-segmented-aggregations"},{"title":"Managing and Editing Priced Plans and Plan Templates","href":"/guides/plans-and-pricing/pricing-plans/managing-and-editing-priced-plans-or-plan-templates"},{"title":"Duplicating Priced Plans and Plan Templates","href":"/guides/plans-and-pricing/pricing-plans/duplicating-priced-plans-or-plan-templates"}]}]},{"group":"End-Customer Accounts","root":{"title":"End-Customer Accounts","href":"/guides/end-customer-accounts"},"expanded":false,"pages":[{"title":"Managing Accounts - Best Practices","href":"/guides/end-customer-accounts/managing-accounts-best-practices"},{"title":"Creating and Managing Accounts","href":"/guides/end-customer-accounts/creating-an-account"},{"title":"Attaching Plans to an Account","href":"/guides/end-customer-accounts/attaching-plans-to-an-account"},{"title":"Creating Custom Plans for Accounts","href":"/guides/end-customer-accounts/creating-custom-account-plans"},{"title":"Attaching Plan Groups to an Account","href":"/guides/end-customer-accounts/attaching-plan-groups-to-an-account"},{"title":"Creating Custom Plan Groups for Accounts","href":"/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts"},{"title":"Creating Prepayments for Accounts","href":"/guides/end-customer-accounts/creating-prepayments-for-accounts"},{"group":"Working with Contracts for Accounts","root":{"title":"Working with Contracts for Accounts","href":"/guides/end-customer-accounts/creating-contracts-for-accounts"},"expanded":false,"pages":[{"title":"Creating and Managing Contracts","href":"/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts"},{"title":"Setting Up Contract Billing","href":"/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing"},{"title":"Reviewing Organization Contracts","href":"/guides/end-customer-accounts/creating-contracts-for-accounts/reviewing-organization-contracts"}]},{"group":"Working with Balances for Accounts","root":{"title":"Working with Balances for Accounts","href":"/guides/end-customer-accounts/creating-balances-for-accounts"},"expanded":false,"pages":[{"title":"Understanding and Managing Billing for Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances"},{"title":"Creating and Managing Account Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances"},{"title":"Creating and Managing Transactions for Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances"},{"title":"Setting Up Transaction Schedules for Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances"},{"title":"Creating Charges for Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances"},{"title":"Setting Up Charge Schedules for Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances"},{"title":"Running and Viewing Bills for Balance Charges","href":"/guides/end-customer-accounts/creating-balances-for-accounts/runnning-viewing-bill-for-balance-charges"},{"title":"Reviewing Account Balances Summary","href":"/guides/end-customer-accounts/creating-balances-for-accounts/reviewing-account-balances-summary"},{"title":"Grants","href":"/guides/end-customer-accounts/creating-balances-for-accounts/balance-grants"}]},{"title":"Creating Charges for Accounts","href":"/guides/end-customer-accounts/creating-charges-for-accounts"},{"title":"Creating Counter Adjustments for Accounts","href":"/guides/end-customer-accounts/creating-counter-adjustments-for-accounts"},{"title":"Submitting Usage Data for an Account","href":"/guides/end-customer-accounts/submitting-usage-data-for-an-account"},{"title":"Working in Account Overview","href":"/guides/end-customer-accounts/working-in-account-overview"},{"title":"Reviewing and Recalculating Bills for an Account","href":"/guides/end-customer-accounts/reviewing-bills-for-an-account"},{"group":"Working with Parent/Child Accounts","root":{"title":"Working with Parent/Child Accounts","href":"/guides/end-customer-accounts/creating-and-working-with-child-accounts"},"expanded":false,"pages":[{"title":"Billing Hierarchy Modes for Parent/Child Accounts","href":"/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts"}]},{"title":"End Dating Account Billing Entities","href":"/guides/end-customer-accounts/end-dating-account-billing-entities"},{"title":"Creating and Managing External Mappings for Accounts","href":"/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts"}]},{"group":"Billing and Usage Data","root":{"title":"Billing and Usage Data","href":"/guides/billing-and-usage-data"},"expanded":false,"pages":[{"group":"Submitting Usage Data","root":{"title":"Submitting Usage Data","href":"/guides/billing-and-usage-data/submitting-usage-data"},"expanded":false,"pages":[{"title":"API Calls for Data Ingest","href":"/guides/billing-and-usage-data/submitting-usage-data/api-calls-for-data-ingest"},{"title":"File Upload Service API","href":"/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api"},{"title":"Submitting and Checking Test Usage Data","href":"/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data"},{"title":"File Uploads for Usage Data by Meter","href":"/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter"},{"title":"Submitting Usage Data Adjustments Using Timestamp","href":"/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp"},{"title":"Submitting Usage Data for Non-Existent Accounts","href":"/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-for-non-existent-accounts"},{"title":"Reviewing and Resolving Ingest Events","href":"/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events"}]},{"group":"Running, Viewing, and Managing Bills","root":{"title":"Running, Viewing, and Managing Bills","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills"},"expanded":false,"pages":[{"title":"Running Bills and Viewing Bill Details","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details"},{"title":"Working with Bills in Bill Management","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/managing-bills"},{"title":"Approving and Locking Bills - Managing Bill Lifecycle","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle"},{"title":"Adding Credit Line Items to Bills","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-credit-line-items-to-bills"},{"title":"Adding Debit Line Items to Bills","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-debit-line-items-to-bills"},{"title":"Viewing Bill History","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/viewing-bill-history"},{"title":"Scheduling Billing","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/scheduling-billing"},{"title":"Working with Bill Statements","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements"},{"title":"Bill Line Item Types","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-item-types"},{"title":"Bill Line Items - Default Descriptions","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-default-descriptions"},{"title":"Bill Line Items - Mapping to Accounting Products","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products"},{"title":"Troubleshooting Bills","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills"}]}]},{"group":"m3sh","root":{"title":"m3sh","href":"/guides/m3sh-automation"},"expanded":false,"pages":[{"group":"m3sh Workflows","root":{"title":"m3sh Workflows","href":"/guides/m3sh-workflows/m3sh-workflows"},"pages":[{"title":"m3sh Workflows - Key Concepts and Options","href":"/guides/m3sh-workflows/m3sh-workflows-key-concepts-and-options"},{"title":"Exploring m3sh Workflows","href":"/guides/m3sh-automation/exploring-m3sh-workflows"},{"title":"Reviewing m3sh Workflow Runs","href":"/guides/m3sh-automation/reviewing-m3sh-workflow-runs"},{"title":"Getting to Know the Workflow Builder","href":"/guides/m3sh-workflows/getting-to-know-the-workflow-builder"},{"title":"Creating Event Notification Workflows","href":"/guides/m3sh-workflows/creating-event-notification-workflows"},{"title":"Creating Incoming Webhook Workflows","href":"/guides/m3sh-workflows/creating-incoming-webhook-workflows"},{"title":"Working with Global Parameters","href":"/guides/m3sh-workflows/working-with-global-parameters"},{"title":"Utilizing Workflow Managed Templates","href":"/guides/m3sh-workflows/utilizing-workflow-managed-templates"},{"title":"Testing and Troubleshooting Workflows","href":"/guides/m3sh-workflows/testing-and-troubleshooting-workflows"},{"title":"Exporting and Importing Workflows","href":"/guides/m3sh-workflows/exporting-and-importing-workflows"}]},{"group":"Utilizing Events and Notifications","root":{"title":"Utilizing Events and Notifications","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications"},"expanded":false,"pages":[{"title":"Key Concepts and Relationships","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships"},{"title":"Object Definitions and API Calls","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls"},{"title":"Creating, Managing, and Reviewing Notifications","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications"},{"title":"Example - Notification Setup for Commitment Updated Event","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event"},{"title":"Working with Scheduled Events","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events"}]},{"group":"Creating and Managing Credentials","root":{"title":"Creating and Managing Credentials","href":"/guides/integrations/setting-up-integrations/managing-integration-credentials"},"expanded":false,"pages":[{"title":"Creating Stripe Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-stripe-integration-credentials"},{"title":"Creating NetSuite Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-netsuite-integration-credentials"},{"title":"Creating Paddle Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-paddle-integration-credentials"},{"title":"Creating Chargebee Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-chargebee-integration-credentials"},{"title":"Creating QuickBooks Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-quickbooks-integration-credentials"},{"title":"Creating Xero Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-xero-integration-credentials"},{"title":"Creating Salesforce Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-salesforce-integration-credentials"},{"title":"Creating AWS Marketplace Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-aws-marketplace-integration-credentials"},{"title":"Creating Azure Marketplace Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-azure-marketplace-integration-credentials"}]},{"group":"Integrations","root":{"title":"Integrations","href":"/guides/integrations"},"expanded":false,"pages":[{"title":"m3ter Integrations - Overview","sidebarTitle":"m3ter Integrations","href":"/guides/integrations/m3ter-integrations"},{"group":"Setting Up and Managing Integrations","root":{"title":"Setting Up and Managing Integrations","href":"/guides/integrations/setting-up-integrations"},"expanded":false,"pages":[{"title":"Creating and Managing Integrations","href":"/guides/integrations/setting-up-integrations/creating-and-managing-integration-configurations"},{"title":"Configuring Stripe Integrations","href":"/guides/integrations/setting-up-integrations/configuring-stripe-integrations"},{"title":"Configuring NetSuite Integrations","href":"/guides/integrations/setting-up-integrations/configuring-netsuite-integrations"},{"title":"Configuring Paddle Integrations","href":"/guides/integrations/setting-up-integrations/configuring-paddle-integrations"},{"title":"Configuring Chargebee Integrations","href":"/guides/integrations/setting-up-integrations/configuring-chargebee-integrations"},{"title":"Configuring QuickBooks Integrations","href":"/guides/integrations/setting-up-integrations/configuring-quickbooks-integrations"},{"title":"Configuring Xero Integrations","href":"/guides/integrations/setting-up-integrations/configuring-xero-integrations"},{"title":"Configuring Salesforce Entity Data Sync Integrations","href":"/guides/integrations/setting-up-integrations/configuring-sf-entity-data-integrations"},{"title":"Configuring AWS Marketplace Integrations","href":"/guides/integrations/setting-up-integrations/configuring-aws-integrations"},{"title":"AWS Marketplace Integrations - Reconciliation Features","href":"/guides/integrations/setting-up-integrations/aws-marketplace-integrations-reconciliation-features"},{"title":"Configuring Azure Marketplace Integrations","href":"/guides/integrations/setting-up-integrations/configuring-azure-marketplace-integrations"},{"title":"Azure Marketplace Integrations - Reconciliation Features","href":"/guides/integrations/setting-up-integrations/azure-marketplace-integrations-reconciliation-features"},{"title":"Managing Multiple Third Party Destinations for Integrations","href":"/guides/integrations/setting-up-integrations/managing-multiple-destinations-for-integrations"},{"title":"Reviewing Integration Run Details","href":"/guides/integrations/setting-up-integrations/reviewing-integration-run-details"}]}]},{"title":"Creating and Managing Outgoing Webhooks","href":"/guides/integrations/setting-up-integrations/creating-and-managing-destinations"},{"title":"Reviewing and Resolving Integration Events","href":"/guides/integrations/setting-up-integrations/reviewing-and-resolving-integration-events"},{"title":"Creating and Managing External Mappings","href":"/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings"},{"title":"Creating and Managing Transformations","href":"/guides/m3sh-workflows/creating-and-managing-transformations"}]},{"group":"m3ter APIs","root":{"title":"m3ter APIs","href":"/guides/m3ter-apis"},"expanded":false,"pages":[{"title":"Config API Limits","href":"/guides/m3ter-apis/config-api-limits"},{"title":"Ingest API Limits and Optimizing Measurement Submissions","href":"/guides/m3ter-apis/ingest-api-limits"},{"title":"WAF Rules for HTTP Requests","href":"/guides/m3ter-apis/waf-rules-for-http-requests"},{"title":"Getting Started with API Calls","href":"/guides/m3ter-apis/getting-started-with-api-calls"},{"title":"HTTP Error Codes","href":"/guides/m3ter-apis/http-error-codes"}]},{"title":"m3ter Calculation Engine","href":"/guides/m3ter-calculation-engine"},{"group":"Lookup Tables","root":{"title":"Lookup Tables (Beta)","href":"/guides/lookup-tables"},"tag":"Beta","expanded":false,"pages":[{"title":"Creating and Managing Lookup Tables","href":"/guides/lookup-tables/creating-and-managing-lookup-tables"},{"title":"Adding Data to, Publishing, and Managing Lookup Table Revisions","href":"/guides/lookup-tables/adding-data-to-and-publishing-table-revisions"},{"title":"Worked Example - Variable Usage Discounting","href":"/guides/lookup-tables/worked-example-variable-usage-discounting"},{"title":"Worked Example - Variable Usage Discounting by Account","href":"/guides/lookup-tables/worked-example-variable-usage-discouting-by-account"},{"title":"Lookup Functions","href":"/guides/lookup-tables/lookup-functions"}]},{"title":"System Alerts","href":"/guides/alerts-events-and-notifications/viewing-and-managing-alerts"},{"group":"Organization and Access Management","root":{"title":"Organization and Access Management","href":"/guides/organization-and-access-management"},"expanded":false,"pages":[{"group":"Managing your Organization","root":{"title":"Managing your Organization","href":"/guides/organization-and-access-management/viewing-and-editing-organization"},"expanded":false,"pages":[{"title":"Viewing and Editing Organization Configuration","href":"/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration"},{"title":"Timezone Settings - Notes and Recommendations","href":"/guides/organization-and-access-management/viewing-and-editing-organization/timezone-settings-notes-and-recommendations"},{"title":"Creating and Managing Currencies","href":"/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies"},{"title":"Creating Credit Reasons","href":"/guides/organization-and-access-management/viewing-and-editing-organization/creating-credit-reasons"},{"title":"Creating Debit Reasons","href":"/guides/organization-and-access-management/viewing-and-editing-organization/creating-debit-reasons"},{"title":"Creating Transaction Types","href":"/guides/organization-and-access-management/viewing-and-editing-organization/creating-transaction-types"},{"title":"Adding and Editing Custom Fields","href":"/guides/organization-and-access-management/viewing-and-editing-organization/adding-and-editing-custom-fields"}]},{"title":"Understanding, Creating, and Managing Permission Policies","href":"/guides/organization-and-access-management/creating-and-managing-permissions"},{"group":"Managing Access and Users","root":{"title":"Managing Access and Users","href":"/guides/organization-and-access-management/managing-users"},"expanded":false,"pages":[{"title":"Managing Users and Assigning Permission Policies","href":"/guides/organization-and-access-management/managing-users/managing-users-and-assigning-permission-policies"},{"title":"Creating and Configuring Service Users","href":"/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users"},{"title":"Creating and Managing User Groups","href":"/guides/organization-and-access-management/managing-users/creating-and-managing-user-groups"},{"title":"Inviting Users to Organization","href":"/guides/organization-and-access-management/managing-users/inviting-users-to-organization"},{"title":"Tracking User Activity in Organization","href":"/guides/organization-and-access-management/managing-users/tracking-user-activity-in-organization"},{"title":"Granting m3ter Support Access to Organization","href":"/guides/organization-and-access-management/managing-users/granting-m3ter-support-access-to-organization"},{"title":"Viewing and Managing Permission Policies","href":"/guides/organization-and-access-management/managing-users/viewing-and-managing-permission-policies"}]}]},{"group":"m3ter Connector for Salesforce","root":{"title":"m3ter Connector for Salesforce","href":"/guides/m3ter-connector-for-salesforce"},"expanded":false,"pages":[{"title":"Overview - Functional Scope and Limitations","href":"/guides/m3ter-connector-for-salesforce/overview-functional-scope-and-limitations"},{"title":"Configuring the m3ter Connector for Salesforce","href":"/guides/m3ter-connector-for-salesforce/configuring-m3ter-salesforce-connector"},{"title":"Reviewing and Managing Metadata Mappings","href":"/guides/m3ter-connector-for-salesforce/reviewing-and-managing-metadata-mappings"},{"title":"Creating Custom Metadata Mappings","href":"/guides/m3ter-connector-for-salesforce/creating-metadata-mappings"},{"title":"Testing Sync Setup from Salesforce to m3ter","href":"/guides/m3ter-connector-for-salesforce/testing-sync-setup-from-salesforce-to-m3ter"},{"title":"Setting Up and Using Sync to m3ter Invocable Action","href":"/guides/m3ter-connector-for-salesforce/setting-up-invocable-action-for-event-driven-sync"},{"title":"Setting Up Sync for End Dating m3ter Account Billing Entities","href":"/guides/m3ter-connector-for-salesforce/setting-up-sync-for-end-dating-m3ter-account-billing-entities"},{"title":"Enabling Two-Way Automated Sync for m3ter Objects","href":"/guides/m3ter-connector-for-salesforce/enabling-two-way-automated-sync-for-m3ter-objects"},{"title":"Mapping Custom Fields on m3ter Entities","href":"/guides/m3ter-connector-for-salesforce/mapping-custom-fields-on-m3ter-entities"},{"title":"Mapping Segment Attributes for Pricing","href":"/guides/m3ter-connector-for-salesforce/mapping-segment-attributes-for-pricing"},{"title":"Setting Up m3sh Webhook Triggers","href":"/guides/m3ter-connector-for-salesforce/setting-up-m3sh-webhook-triggers"},{"title":"CRUD for Metering Entities","href":"/guides/m3ter-connector-for-salesforce/crud-for-metering-entities"},{"title":"Usage Design Targets","href":"/guides/m3ter-connector-for-salesforce/usage-design-targets"},{"title":"Generic m3ter API Invocable Action","href":"/guides/m3ter-connector-for-salesforce/generic-m3ter-api-invocable-action"},{"title":"Product Mapping Resolution","href":"/guides/m3ter-connector-for-salesforce/product-mapping-resolution"},{"title":"Checking Sync Logs and Troubleshooting","href":"/guides/m3ter-connector-for-salesforce/checking-sync-logs-and-troubleshooting"},{"group":"m3ter Connector - Sample Mappings","root":{"title":"m3ter Connector - Sample Mappings","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings"},"expanded":false,"pages":[{"title":"Sample Mappings 1 - Account","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mapping-1-account"},{"title":"Sample Mappings 2 - Commitment","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-2-commitment"},{"title":"Sample Mappings 3 - Contract","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-3-contract"},{"title":"Sample Mappings 4 - AccountPlan","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-4-accountplan"},{"title":"Sample Mappings 5 - Plan","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-5-plan"},{"title":"Sample Mappings 6 - Pricing","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-6-pricing"},{"title":"Sample Mappings 7 - Pricing Bands","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-7-pricing-bands"}]},{"title":"m3ter Connector for Salesforce - Changelog","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-for-salesforce-changelog"}]},{"group":"Data Explorers","root":{"title":"Data Explorers","href":"/guides/data-explorer"},"expanded":false,"pages":[{"title":"Usage Data Explorer","href":"/guides/data-explorer/performing-usage-queries-and-reviewing-results"},{"title":"Usage Data Explorer (v2)","href":"/guides/data-explorer/usage-data-explorer-v2"},{"title":"Billing Data Explorer","href":"/guides/data-explorer/performing-billing-queries-and-reviewing-results"},{"title":"Prepayments Data Explorer","href":"/guides/data-explorer/performing-commitments-queries-and-reviewing-results"},{"title":"Data Explorers: Saving, Updating, and Re-Using Queries","href":"/guides/data-explorer/saving-queries"},{"title":"Data Explorers: Exporting Query Results","href":"/guides/data-explorer/exporting-usage-query-results"}]},{"group":"Data Exports","root":{"title":"Data Exports (Preview)","href":"/guides/data-exports"},"tag":"Preview","expanded":false,"pages":[{"title":"Creating and Managing Export Destinations","href":"/guides/data-exports/creating-data-export-destinations"},{"group":"Creating Usage Data Export Schedules","root":{"title":"Creating Usage Data Export Schedules","href":"/guides/data-exports/creating-export-schedules"},"expanded":false,"pages":[{"title":"Creating Legacy Usage Data Export Schedules","href":"/guides/data-exports/creating-export-schedules/creating-legacy-usage-export-schedules"}]},{"title":"Creating Operational Data Export Schedules","href":"/guides/data-exports/creating-operational-data-export-schedules"},{"title":"Reviewing and Managing Export Schedules","href":"/guides/data-exports/reviewing-and-managing-export-schedules"},{"group":"Running Ad-Hoc Usage Data Exports","root":{"title":"Running Ad-Hoc Usage Data Exports","href":"/guides/data-exports/running-ad-hoc-data-exports"},"expanded":false,"pages":[{"title":"Running Ad-Hoc Legacy Usage Data Exports","href":"/guides/data-exports/running-ad-hoc-data-exports/running-ad-hoc-legacy-data-exports"}]},{"title":"Running Ad-Hoc Operational Data Exports","href":"/guides/data-exports/running-ad-hoc-operational-data-exports"},{"title":"Downloading Data Export Files Locally","href":"/guides/data-exports/downloading-data-export-files-locally"},{"title":"Reviewing Export Jobs","href":"/guides/data-exports/reviewing-export-jobs"},{"title":"Data Export - Entity Schema and Relationship Diagram","href":"/guides/data-exports/data-export-object-relationship-diagram"}]}]}]},{"tab":"Glossary","pages":[{"title":"Glossary","href":"/glossary-of-terms"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api/introduction"}]},{"tab":"m3sh Function Reference","pages":[{"title":"m3sh Function Reference","href":"/m3sh-function-reference/m3ter/introduction"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Compound Aggregations - Examples - m3ter Documentation","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}