Metronome Settings API
Use these endpoints to configure a billing API key, a webhook secret, or invoice finalization behavior.
Use these endpoints to configure a billing API key, a webhook secret, or invoice finalization behavior.
openapi: 3.0.1
info:
title: Metronome Alerts Settings API
version: 1.0.0
description: '[Alerts](https://docs.metronome.com/connecting-metronome/alerts/) monitor customer spending, balances, and other billing factors. Use these endpoints to create, retrieve, and archive customer alerts. To view sample alert payloads by alert type, navigate [here.](https://docs.metronome.com/manage-product-access/create-manage-alerts/#webhook-notifications)'
servers:
- url: https://api.metronome.com
description: Production server
security:
- bearerAuth: []
tags:
- name: Settings
description: Use these endpoints to configure a billing API key, a webhook secret, or invoice finalization behavior.
paths:
/v1/client/billing-config/{billing_provider_type}/apiKey:
post:
x-mint:
groups:
- ff:prepaid-credits
deprecated: true
description: '(**Deprecated:** use [Create Stripe billing settings](#operation/createStripeBillingSettings) instead) Sets the api key for the billing provider. This is used for sending invoices to the billing provider. For example, if the billing provider is Stripe, this is the restricted key.
'
operationId: setBillingProviderApiKey-v1
summary: Set the billing provider API key
parameters:
- $ref: '#/components/parameters/BillingProviderSettingsType'
tags:
- Settings
requestBody:
description: The billing provider API key to set.
content:
application/json:
schema:
$ref: '#/components/schemas/SetBillingProviderApiKeyPayload'
example:
api_key: pk_test_51J5Z2n2eZvKYlo2C0Z1Z2n2e
responses:
'200':
description: Success
/v1/client/config/webhook_secret:
post:
x-mint:
groups:
- ff:prepaid-credits
description: 'Sets the webhook secret for the client. This is used for validating webhook messages send to the external Metronome webhook endpoint.
'
operationId: setClientWebhookSecret-v1
summary: Set the client webhook secret
tags:
- Settings
requestBody:
description: The client webhook secret to set.
content:
application/json:
schema:
$ref: '#/components/schemas/SetClientWebhookSecretPayload'
example:
webhook_secret: whsec_example4d8144d2098bdb3e5f3a95bd97a3226c4d84d97637f43a
responses:
'200':
description: Success
/v1/client/billing-config/stripe:
post:
x-mint:
groups:
- ff:prepaid-credits
description: "Create billing settings for Stripe.\n\nIf you plan on using prepaid credit grants and recharges, your Stripe API key needs the following access:\n\n- Read & Write\n - Invoices\n - PaymentIntents\n- Read only:\n - PaymentMethods\n - Customers"
operationId: createStripeBillingSettings-v1
summary: Create Stripe billing settings
tags:
- Settings
requestBody:
description: Stripe billing settings
content:
application/json:
schema:
$ref: '#/components/schemas/CreateStripeBillingSettingsPayload'
example:
stripe_api_key: pk_test_51J5Z2n2eZvKYlo2C0Z1Z2n2e
responses:
'200':
description: Success
patch:
x-mint:
groups:
- ff:prepaid-credits
description: 'Apply partial updates to billing settings for Stripe. Individual settings can be deleted by specifying values as `null`.
'
operationId: updateStripeBillingSettings-v1
summary: Update Stripe billing settings
tags:
- Settings
requestBody:
description: Stripe billing settings
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateStripeBillingSettingsPayload'
example:
anrok_api_key: 9fe987ce80e355acde9d1e44cf1b46ff
responses:
'200':
description: Success
delete:
x-mint:
groups:
- ff:prepaid-credits
description: 'Delete all billing settings for Stripe
'
operationId: deleteStripeBillingSettings-v1
summary: Delete Stripe billing settings
tags:
- Settings
responses:
'200':
description: Success
/v1/credit-types/list:
get:
description: 'List all pricing units. All fiat currency types (for example, USD or GBP) will be included, as well as any custom pricing units that were configured. Custom pricing units can be used to charge for usage in a non-fiat pricing unit, for example AI credits.
Note: The USD (cents) pricing unit is 2714e483-4ff1-48e4-9e25-ac732e8f24f2.
'
operationId: listCreditTypes-v1
summary: List pricing units
parameters:
- $ref: '#/components/parameters/PageLimit'
- $ref: '#/components/parameters/NextPage'
tags:
- Settings
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
required:
- data
- next_page
properties:
data:
type: array
items:
properties:
name:
type: string
id:
type: string
format: uuid
is_currency:
type: boolean
next_page:
type: string
nullable: true
example:
data:
- id: 2714e483-4ff1-48e4-9e25-ac732e8f24f2
name: USD (cents)
is_currency: true
- id: fa2f1b3d-9d52-4951-a099-25991fd394d6
name: cloud consumption units
is_currency: false
next_page: null
/v1/setUpBillingProvider:
post:
summary: Set up account-level billing provider
operationId: setUpBillingProvider-v1
description: 'Set up account-level configuration for a billing provider. Once configured, individual contracts across customers can be mapped to this configuration using the returned delivery_method_id.
'
tags:
- Settings
requestBody:
description: Billing provider, delivery method and configuration to insert
content:
application/json:
schema:
type: object
required:
- billing_provider
- delivery_method
- configuration
properties:
billing_provider:
$ref: '#/components/schemas/GABillingProviderType'
description: The billing provider set for this configuration.
delivery_method:
$ref: '#/components/schemas/GABillingProviderDeliveryMethodType'
description: The method to use for delivering invoices for this configuration.
configuration:
type: object
additionalProperties: true
description: Account-level configuration for the billing provider. The structure of this object is specific to the billing provider and delivery provider combination. See examples below.
examples:
aws:
value:
billing_provider: aws_marketplace
delivery_method: direct_to_billing_provider
configuration:
aws_external_id: 47b4f6b7-e297-42e8-b175-331d933b402c
aws_iam_role_arn: arn:aws:iam::test
azure:
value:
billing_provider: azure_marketplace
delivery_method: direct_to_billing_provider
configuration:
azure_client_id: client_id
raw_azure_client_secret: secret
azure_tenant_id: tenant_id
gcp:
value:
billing_provider: gcp_marketplace
delivery_method: direct_to_billing_provider
configuration:
gcp_provider_id: provider_id
raw_gcp_workload_identity_federation_config: '{"wif": "config"}'
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- delivery_method_id
properties:
delivery_method_id:
type: string
format: uuid
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/v1/upsertAnrokApiToken:
post:
summary: Upsert Anrok API token
operationId: upsertAnrokApiToken-v1
description: 'Set the Anrok API token for some specified delivery_method_ids, which can be found in the `/listConfiguredBillingProviders` response. This maps the Anrok key to the appropriate billing entity. These API tokens are only used for Threshold Billing workflows today.
'
tags:
- Settings
requestBody:
description: Set the Anrok API token for some specified delivery_method_ids
content:
application/json:
schema:
type: object
required:
- delivery_method_ids
- anrok_api_token
properties:
delivery_method_ids:
type: array
items:
type: string
format: uuid
description: The delivery method IDs of the billing provider configurations to update, can be found in the response of the `/listConfiguredBillingProviders` endpoint.
anrok_api_token:
type: string
description: The Anrok API token that is added to the configuration.
example:
delivery_method_ids:
- 9a906ebb-fbc7-42e8-8e29-53bfd2db3aca
anrok_api_token: s123/sak456/secret.789
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- success
properties:
success:
type: boolean
description: Whether the update was successful.
example:
data:
success: true
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
$ref: '#/components/responses/NotFound'
/v1/upsertAvalaraCredentials:
post:
x-mint:
metadata:
tag: Beta
summary: Upsert Avalara credentials
operationId: upsertAvalaraCredentials-v1
description: 'Set the Avalara credentials for some specified `delivery_method_ids`, which can be found in the `/listConfiguredBillingProviders` response. This maps the Avalara credentials to the appropriate billing entity. These credentials are only used for PLG Invoicing today.
'
tags:
- Settings
requestBody:
description: Set the Avalara credentials for some specified `delivery_method_ids`
content:
application/json:
schema:
type: object
required:
- delivery_method_ids
- avalara_environment
- avalara_username
- avalara_password
properties:
delivery_method_ids:
type: array
items:
type: string
format: uuid
description: The delivery method IDs of the billing provider configurations to update, can be found in the response of the `/listConfiguredBillingProviders` endpoint.
avalara_environment:
type: string
enum:
- PRODUCTION
- SANDBOX
description: The Avalara environment to use (SANDBOX or PRODUCTION).
avalara_username:
type: string
description: The username for the Avalara account.
avalara_password:
type: string
description: The password for the Avalara account.
commit_transactions:
type: boolean
description: Commit transactions if you want Metronome tax calculations used for reporting and tax filings.
example:
delivery_method_ids:
- 9a906ebb-fbc7-42e8-8e29-53bfd2db3aca
avalara_environment: PRODUCTION
avalara_username: test@metronome.com
avalara_password: my_password_123
commit_transactions: true
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
x-stainless-empty-object: true
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
$ref: '#/components/responses/NotFound'
/v1/rotateDeltaStreamSecret:
post:
x-mint:
groups:
- ff:delta-stream
description: 'Rotate the HMAC secret used to sign delta stream messages. The new secret will be used for all messages after the `starting_on` time. If a `starting_on` time is not provided, the new secret will be used in 10 minutes.
If this endpoint is called while a rotation is already in progress, the second call will replace the existing rotation and the previous rotation will be cancelled.
'
operationId: rotateDeltaStreamSecret-v1
summary: Rotate the HMAC secret used to sign delta stream messages
tags:
- Settings
requestBody:
description: Rotation options.
content:
application/json:
schema:
type: object
properties:
starting_on:
type: string
format: date-time
description: When the new secret shold start being used, scheduled up to a month ahead of time. If not provided, deefaults to 10 minutes from now.
example:
starting_on: '2024-04-19T06:00:00Z'
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
required:
- secret
- starting_on
properties:
secret:
type: string
description: The new secret
starting_on:
type: string
format: date-time
description: When the new secret will start being used
example:
secret: sk_bd5c0595fad45d8fc5dcf257a998ac8d9de6ee783ebd4571624243aa3c2aed48
starting_on: '2024-04-19T06:00:00Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/v1/listConfiguredBillingProviders:
post:
description: 'Lists all configured billing providers and their delivery method configurations for your account. Returns provider details, delivery method IDs, and configuration settings needed for mapping individual customer contracts to billing integrations.
'
operationId: listConfiguredBillingProviders-v1
summary: List account-level billing providers
tags:
- Settings
requestBody:
description: Optional cursor to the next page of results
content:
application/json:
schema:
type: object
properties:
next_page:
type: string
format: uuid
nullable: true
description: The cursor to the next page of results
example:
next_page: af26878a-de62-4a0d-9b77-3936f7c2b6d6
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/BillingProviderDeliveryMethod'
next_page:
type: string
format: uuid
nullable: true
example:
data:
- billing_provider: stripe
delivery_method_id: 4422e46f-b374-4159-97e3-300208cdb2e2
delivery_method: direct_to_billing_provider
delivery_method_configuration:
stripe_account_id: acct_1P6FywIkTQSg6Mm3
leave_invoices_in_draft: false
skip_zero_dollar_invoices: false
export_invoice_sub_line_items: false
include_zero_quantity_sub_line_items: true
stripe_invoice_quantity_always_string: false
set_effective_at_date_to_inclusive_period_end: false
- billing_provider: aws_marketplace
delivery_method_id: 5b9e3072-415b-4842-94f0-0b6700c8b6be
delivery_method: direct_to_billing_provider
delivery_method_configuration:
aws_external_id: 47b4f6b7-e297-42e8-b175-331d933b402c
aws_iam_role_arn: arn:aws:iam::123456789012:role/MetronomeRole
aws_region: us-east-1
next_page: null
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
BillingProviderDeliveryMethodType:
type: string
enum:
- direct_to_billing_provider
- aws_sqs
- tackle
- aws_sns
BillingProviderSettingsType:
type: string
enum:
- stripe
CreateStripeBillingSettingsPayload:
type: object
properties:
stripe_api_key:
type: string
description: API key used to call the Stripe APIs
anrok_api_key:
type: string
description: API key used to call the Anrok APIs
nullable: true
required:
- stripe_api_key
Error:
required:
- message
type: object
properties:
message:
type: string
SetClientWebhookSecretPayload:
required:
- webhook_secret
type: object
properties:
webhook_secret:
type: string
description: The client webhook secret used to verify webhook results
GABillingProviderType:
type: string
enum:
- aws_marketplace
- azure_marketplace
- gcp_marketplace
SetBillingProviderApiKeyPayload:
required:
- api_key
type: object
properties:
api_key:
type: string
description: API key to set for the billing provider.
BillingProviderDeliveryMethod:
type: object
required:
- billing_provider
- delivery_method_id
- delivery_method
- delivery_method_configuration
properties:
billing_provider:
$ref: '#/components/schemas/BillingProviderType'
description: The billing provider set for this configuration.
delivery_method_id:
type: string
format: uuid
description: ID of the delivery method to use for this customer.
delivery_method:
$ref: '#/components/schemas/BillingProviderDeliveryMethodType'
description: The method to use for delivering invoices to this customer.
delivery_method_configuration:
type: object
additionalProperties: true
description: Configuration for the delivery method. The structure of this object is specific to the delivery method. Some configuration may be omitted for security reasons.
GABillingProviderDeliveryMethodType:
type: string
enum:
- direct_to_billing_provider
- aws_sqs
- aws_sns
UpdateStripeBillingSettingsPayload:
type: object
properties:
stripe_api_key:
type: string
description: API key used to call the Stripe APIs
anrok_api_key:
type: string
description: API key used to call the Anrok APIs
nullable: true
BillingProviderType:
type: string
enum:
- aws_marketplace
- stripe
- netsuite
- custom
- azure_marketplace
- quickbooks_online
- workday
- gcp_marketplace
- metronome
x-mint-enum:
netsuite:
- client_id:11db091c-975b-4908-9f67-b1ceb126acdf
custom:
- client_id:11db091c-975b-4908-9f67-b1ceb126acdf
workday:
- client_id:11db091c-975b-4908-9f67-b1ceb126acdf
gcp_marketplace:
- client_id:11db091c-975b-4908-9f67-b1ceb126acdf
parameters:
BillingProviderSettingsType:
name: billing_provider_type
in: path
description: The billing provider (currently only Stripe is supported).
required: true
schema:
$ref: '#/components/schemas/BillingProviderSettingsType'
example: stripe
PageLimit:
name: limit
in: query
description: Max number of results that should be returned
required: false
schema:
type: integer
minimum: 1
maximum: 100
NextPage:
name: next_page
in: query
description: Cursor that indicates where the next page of results should start.
required: false
schema:
type: string
responses:
NotFound:
description: The specified resource was not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
bearerAuth:
type: http
scheme: bearer