Skip to content
  • Auto
  • Light
  • Dark
Talk to an expert

Create

Create a contract
v1.contracts.create(ContractCreateParams**kwargs) -> dataIDContractCreateResponse
post/v1/contracts/create

Create a new contract

Parameters
customer_idstr
formatuuid
starting_atunion
Union[str, datetime]

inclusive contract start time

formatdate-time
billing_provider_configurationbilling_providerliteralbilling_provider_configuration_idstrdelivery_methodliteralBillingProviderConfiguration
optional

The billing provider configuration associated with a contract. Provide either an ID or the provider and delivery method.

Hide ParametersShow Parameters
billing_providerliteral
optional
Literal["aws_marketplace", "azure_marketplace", "gcp_marketplace", 2 more]

Do not specify if using billing_provider_configuration_id.

Hide ParametersShow Parameters
"aws_marketplace"
"azure_marketplace"
"gcp_marketplace"
"stripe"
"netsuite"
billing_provider_configuration_idstr
optional

The Metronome ID of the billing provider configuration. Use when a customer has multiple configurations with the same billing provider and delivery method. Otherwise, specify the billing_provider and delivery_method.

formatuuid
delivery_methodliteral
optional
Literal["direct_to_billing_provider", "aws_sqs", "tackle", "aws_sns"]

Do not specify if using billing_provider_configuration_id.

Hide ParametersShow Parameters
"direct_to_billing_provider"
"aws_sqs"
"tackle"
"aws_sns"
commitsiterable
optional
product_idstrtypeliteralaccess_scheduleCommitAccessScheduleamountfloatapplicable_product_idslistapplicable_product_tagslistcustom_fieldsDict[str, str]descriptionstrhierarchy_configurationCommitHierarchyConfigurationinvoice_scheduleCommitInvoiceSchedulenamestrnetsuite_sales_order_idstrpayment_gate_configCommitPaymentGateConfigpriorityfloatrate_typeliteralrollover_fractionfloatspecifiersiterabletemporary_idstrIterable[Commit]
Hide ParametersShow Parameters
product_idstr
formatuuid
typeliteral
Literal["PREPAID", "POSTPAID"]
Hide ParametersShow Parameters
"PREPAID"
"POSTPAID"
access_scheduleschedule_itemsiterablecredit_type_idstrCommitAccessSchedule
optional

Required: Schedule for distributing the commit to the customer. For "POSTPAID" commits only one schedule item is allowed and amount must match invoice_schedule total.

Hide ParametersShow Parameters
schedule_itemsiterable
amountfloatending_beforeunionstarting_atunionIterable[CommitAccessScheduleScheduleItem]
Hide ParametersShow Parameters
amountfloat
ending_beforeunion
Union[str, datetime]

RFC 3339 timestamp (exclusive)

formatdate-time
starting_atunion
Union[str, datetime]

RFC 3339 timestamp (inclusive)

formatdate-time
credit_type_idstr
optional

Defaults to USD (cents) if not passed

formatuuid
amountfloat
optional

(DEPRECATED) Use access_schedule and invoice_schedule instead.

applicable_product_idslist
optional
List[str]

Which products the commit applies to. If applicable_product_ids, applicable_product_tags or specifiers are not provided, the commit applies to all products.

applicable_product_tagslist
optional
List[str]

Which tags the commit applies to. If applicable_product_ids, applicable_product_tags or specifiers are not provided, the commit applies to all products.

custom_fieldsDict[str, str]
optional
Dict[str, str]
descriptionstr
optional

Used only in UI/API. It is not exposed to end customers.

Optional configuration for commit hierarchy access control

Hide ParametersShow Parameters
Hide ParametersShow Parameters
CommitHierarchyConfigurationChildAccessCommitHierarchyChildAccessAllclass
Hide ParametersShow Parameters
typeliteral
Literal["ALL"]
Hide ParametersShow Parameters
"ALL"
CommitHierarchyConfigurationChildAccessCommitHierarchyChildAccessNoneclass
Hide ParametersShow Parameters
typeliteral
Literal["NONE"]
Hide ParametersShow Parameters
"NONE"
CommitHierarchyConfigurationChildAccessCommitHierarchyChildAccessContractIDsclass
Hide ParametersShow Parameters
contract_idslist
List[str]
typeliteral
Literal["CONTRACT_IDS"]
Hide ParametersShow Parameters
"CONTRACT_IDS"
invoice_schedulecredit_type_idstrdo_not_invoiceboolrecurring_scheduleCommitInvoiceScheduleRecurringScheduleschedule_itemsiterableCommitInvoiceSchedule
optional

Required for "POSTPAID" commits: the true up invoice will be generated at this time and only one schedule item is allowed; the total must match access_schedule amount. Optional for "PREPAID" commits: if not provided, this will be a "complimentary" commit with no invoice.

Hide ParametersShow Parameters
credit_type_idstr
optional

Defaults to USD (cents) if not passed.

formatuuid
do_not_invoicebool
optional

This field is only applicable to commit invoice schedules. If true, this schedule will not generate an invoice.

recurring_scheduleamount_distributionliteralending_beforeunionfrequencyliteralstarting_atunionamountfloatquantityfloatunit_pricefloatCommitInvoiceScheduleRecurringSchedule
optional

Enter the unit price and quantity for the charge or instead only send the amount. If amount is sent, the unit price is assumed to be the amount and quantity is inferred to be 1.

Hide ParametersShow Parameters
amount_distributionliteral
Literal["DIVIDED", "DIVIDED_ROUNDED", "EACH"]
Hide ParametersShow Parameters
"DIVIDED"
"DIVIDED_ROUNDED"
"EACH"
ending_beforeunion
Union[str, datetime]

RFC 3339 timestamp (exclusive).

formatdate-time
frequencyliteral
Literal["MONTHLY", "QUARTERLY", "SEMI_ANNUAL", "ANNUAL"]
Hide ParametersShow Parameters
"MONTHLY"
"QUARTERLY"
"SEMI_ANNUAL"
"ANNUAL"
starting_atunion
Union[str, datetime]

RFC 3339 timestamp (inclusive).

formatdate-time
amountfloat
optional

Amount for the charge. Can be provided instead of unit_price and quantity. If amount is sent, the unit_price is assumed to be the amount and quantity is inferred to be 1.

quantityfloat
optional

Quantity for the charge. Will be multiplied by unit_price to determine the amount and must be specified with unit_price. If specified amount cannot be provided.

unit_pricefloat
optional

Unit price for the charge. Will be multiplied by quantity to determine the amount and must be specified with quantity. If specified amount cannot be provided.

schedule_itemsiterable
optional
timestampunionamountfloatquantityfloatunit_pricefloatIterable[CommitInvoiceScheduleScheduleItem]

Either provide amount or provide both unit_price and quantity.

Hide ParametersShow Parameters
timestampunion
Union[str, datetime]

timestamp of the scheduled event

formatdate-time
amountfloat
optional

Amount for the charge. Can be provided instead of unit_price and quantity. If amount is sent, the unit_price is assumed to be the amount and quantity is inferred to be 1.

quantityfloat
optional

Quantity for the charge. Will be multiplied by unit_price to determine the amount and must be specified with unit_price. If specified amount cannot be provided.

unit_pricefloat
optional

Unit price for the charge. Will be multiplied by quantity to determine the amount and must be specified with quantity. If specified amount cannot be provided.

namestr
optional

displayed on invoices

minLength1
netsuite_sales_order_idstr
optional

This field's availability is dependent on your client's configuration.

payment_gate_configpayment_gate_typeliteralprecalculated_tax_configCommitPaymentGateConfigPrecalculatedTaxConfigstripe_configCommitPaymentGateConfigStripeConfigtax_typeliteralCommitPaymentGateConfig
optional

optionally payment gate this commit

Hide ParametersShow Parameters
payment_gate_typeliteral
Literal["NONE", "STRIPE", "EXTERNAL"]

Gate access to the commit balance based on successful collection of payment. Select STRIPE for Metronome to facilitate payment via Stripe. Select EXTERNAL to facilitate payment using your own payment integration. Select NONE if you do not wish to payment gate the commit balance.

Hide ParametersShow Parameters
"NONE"
"STRIPE"
"EXTERNAL"
precalculated_tax_configtax_amountfloattax_namestrCommitPaymentGateConfigPrecalculatedTaxConfig
optional

Only applicable if using PRECALCULATED as your tax type.

Hide ParametersShow Parameters
tax_amountfloat

Amount of tax to be applied. This should be in the same currency and denomination as the commit's invoice schedule

tax_namestr
optional

Name of the tax to be applied. This may be used in an invoice line item description.

stripe_configpayment_typeliteralinvoice_metadataDict[str, str]CommitPaymentGateConfigStripeConfig
optional

Only applicable if using STRIPE as your payment gate type.

Hide ParametersShow Parameters
payment_typeliteral
Literal["INVOICE", "PAYMENT_INTENT"]

If left blank, will default to INVOICE

Hide ParametersShow Parameters
"INVOICE"
"PAYMENT_INTENT"
invoice_metadataDict[str, str]
optional
Dict[str, str]

Metadata to be added to the Stripe invoice. Only applicable if using INVOICE as your payment type.

tax_typeliteral
optional
Literal["NONE", "STRIPE", "ANROK", "PRECALCULATED"]

Stripe tax is only supported for Stripe payment gateway. Select NONE if you do not wish Metronome to calculate tax on your behalf. Leaving this field blank will default to NONE.

Hide ParametersShow Parameters
"NONE"
"STRIPE"
"ANROK"
"PRECALCULATED"
priorityfloat
optional

If multiple commits are applicable, the one with the lower priority will apply first.

rate_typeliteral
optional
Literal["COMMIT_RATE", "LIST_RATE"]
Hide ParametersShow Parameters
"COMMIT_RATE"
"LIST_RATE"
rollover_fractionfloat
optional

Fraction of unused segments that will be rolled over. Must be between 0 and 1.

specifiersiterable
optional
presentation_group_valuesDict[str, str]pricing_group_valuesDict[str, str]product_idstrproduct_tagslistIterable[CommitSpecifier]

List of filters that determine what kind of customer usage draws down a commit or credit. A customer's usage needs to meet the condition of at least one of the specifiers to contribute to a commit's or credit's drawdown. This field cannot be used together with applicable_product_ids or applicable_product_tags.

Hide ParametersShow Parameters
presentation_group_valuesDict[str, str]
optional
Dict[str, str]
pricing_group_valuesDict[str, str]
optional
Dict[str, str]
product_idstr
optional

If provided, the specifier will only apply to the product with the specified ID.

formatuuid
product_tagslist
optional
List[str]

If provided, the specifier will only apply to products with all the specified tags.

temporary_idstr
optional

A temporary ID for the commit that can be used to reference the commit for commit specific overrides.

creditsiterable
optional
access_scheduleCreditAccessScheduleproduct_idstrapplicable_product_idslistapplicable_product_tagslistcustom_fieldsDict[str, str]descriptionstrhierarchy_configurationCreditHierarchyConfigurationnamestrnetsuite_sales_order_idstrpriorityfloatrate_typeliteralspecifiersiterableIterable[Credit]
Hide ParametersShow Parameters
access_scheduleschedule_itemsiterablecredit_type_idstrCreditAccessSchedule

Schedule for distributing the credit to the customer.

Hide ParametersShow Parameters
schedule_itemsiterable
amountfloatending_beforeunionstarting_atunionIterable[CreditAccessScheduleScheduleItem]
Hide ParametersShow Parameters
amountfloat
ending_beforeunion
Union[str, datetime]

RFC 3339 timestamp (exclusive)

formatdate-time
starting_atunion
Union[str, datetime]

RFC 3339 timestamp (inclusive)

formatdate-time
credit_type_idstr
optional

Defaults to USD (cents) if not passed

formatuuid
product_idstr
formatuuid
applicable_product_idslist
optional
List[str]

Which products the credit applies to. If both applicable_product_ids and applicable_product_tags are not provided, the credit applies to all products.

applicable_product_tagslist
optional
List[str]

Which tags the credit applies to. If both applicable_product_ids and applicable_product_tags are not provided, the credit applies to all products.

custom_fieldsDict[str, str]
optional
Dict[str, str]
descriptionstr
optional

Used only in UI/API. It is not exposed to end customers.

Optional configuration for credit hierarchy access control

Hide ParametersShow Parameters
Hide ParametersShow Parameters
CreditHierarchyConfigurationChildAccessCommitHierarchyChildAccessAllclass
Hide ParametersShow Parameters
typeliteral
Literal["ALL"]
Hide ParametersShow Parameters
"ALL"
CreditHierarchyConfigurationChildAccessCommitHierarchyChildAccessNoneclass
Hide ParametersShow Parameters
typeliteral
Literal["NONE"]
Hide ParametersShow Parameters
"NONE"
CreditHierarchyConfigurationChildAccessCommitHierarchyChildAccessContractIDsclass
Hide ParametersShow Parameters
contract_idslist
List[str]
typeliteral
Literal["CONTRACT_IDS"]
Hide ParametersShow Parameters
"CONTRACT_IDS"
namestr
optional

displayed on invoices

minLength1
netsuite_sales_order_idstr
optional

This field's availability is dependent on your client's configuration.

priorityfloat
optional

If multiple credits are applicable, the one with the lower priority will apply first.

rate_typeliteral
optional
Literal["COMMIT_RATE", "LIST_RATE"]
Hide ParametersShow Parameters
"COMMIT_RATE"
"LIST_RATE"
specifiersiterable
optional
presentation_group_valuesDict[str, str]pricing_group_valuesDict[str, str]product_idstrproduct_tagslistIterable[CreditSpecifier]

List of filters that determine what kind of customer usage draws down a commit or credit. A customer's usage needs to meet the condition of at least one of the specifiers to contribute to a commit's or credit's drawdown. This field cannot be used together with applicable_product_ids or applicable_product_tags.

Hide ParametersShow Parameters
presentation_group_valuesDict[str, str]
optional
Dict[str, str]
pricing_group_valuesDict[str, str]
optional
Dict[str, str]
product_idstr
optional

If provided, the specifier will only apply to the product with the specified ID.

formatuuid
product_tagslist
optional
List[str]

If provided, the specifier will only apply to products with all the specified tags.

custom_fieldsDict[str, str]
optional
Dict[str, str]
discountsiterable
optional
product_idstrscheduleDiscountSchedulecustom_fieldsDict[str, str]namestrnetsuite_sales_order_idstrIterable[Discount]

This field's availability is dependent on your client's configuration.

Hide ParametersShow Parameters
product_idstr
formatuuid
schedulecredit_type_idstrdo_not_invoiceboolrecurring_scheduleDiscountScheduleRecurringScheduleschedule_itemsiterableDiscountSchedule

Must provide either schedule_items or recurring_schedule.

Hide ParametersShow Parameters
credit_type_idstr
optional

Defaults to USD (cents) if not passed.

formatuuid
do_not_invoicebool
optional

This field is only applicable to commit invoice schedules. If true, this schedule will not generate an invoice.

recurring_scheduleamount_distributionliteralending_beforeunionfrequencyliteralstarting_atunionamountfloatquantityfloatunit_pricefloatDiscountScheduleRecurringSchedule
optional

Enter the unit price and quantity for the charge or instead only send the amount. If amount is sent, the unit price is assumed to be the amount and quantity is inferred to be 1.

Hide ParametersShow Parameters
amount_distributionliteral
Literal["DIVIDED", "DIVIDED_ROUNDED", "EACH"]
Hide ParametersShow Parameters
"DIVIDED"
"DIVIDED_ROUNDED"
"EACH"
ending_beforeunion
Union[str, datetime]

RFC 3339 timestamp (exclusive).

formatdate-time
frequencyliteral
Literal["MONTHLY", "QUARTERLY", "SEMI_ANNUAL", "ANNUAL"]
Hide ParametersShow Parameters
"MONTHLY"
"QUARTERLY"
"SEMI_ANNUAL"
"ANNUAL"
starting_atunion
Union[str, datetime]

RFC 3339 timestamp (inclusive).

formatdate-time
amountfloat
optional

Amount for the charge. Can be provided instead of unit_price and quantity. If amount is sent, the unit_price is assumed to be the amount and quantity is inferred to be 1.

quantityfloat
optional

Quantity for the charge. Will be multiplied by unit_price to determine the amount and must be specified with unit_price. If specified amount cannot be provided.

unit_pricefloat
optional

Unit price for the charge. Will be multiplied by quantity to determine the amount and must be specified with quantity. If specified amount cannot be provided.

schedule_itemsiterable
optional
timestampunionamountfloatquantityfloatunit_pricefloatIterable[DiscountScheduleScheduleItem]

Either provide amount or provide both unit_price and quantity.

Hide ParametersShow Parameters
timestampunion
Union[str, datetime]

timestamp of the scheduled event

formatdate-time
amountfloat
optional

Amount for the charge. Can be provided instead of unit_price and quantity. If amount is sent, the unit_price is assumed to be the amount and quantity is inferred to be 1.

quantityfloat
optional

Quantity for the charge. Will be multiplied by unit_price to determine the amount and must be specified with unit_price. If specified amount cannot be provided.

unit_pricefloat
optional

Unit price for the charge. Will be multiplied by quantity to determine the amount and must be specified with quantity. If specified amount cannot be provided.

custom_fieldsDict[str, str]
optional
Dict[str, str]
namestr
optional

displayed on invoices

minLength1
netsuite_sales_order_idstr
optional

This field's availability is dependent on your client's configuration.

ending_beforeunion
optional
Union[str, datetime]

exclusive contract end time

formatdate-time
hierarchy_configurationparentHierarchyConfigurationParentHierarchyConfiguration
optional
Hide ParametersShow Parameters
parentcontract_idstrcustomer_idstrHierarchyConfigurationParent
Hide ParametersShow Parameters
contract_idstr
formatuuid
customer_idstr
formatuuid
multiplier_override_prioritizationliteral
optional
Literal["LOWEST_MULTIPLIER", "EXPLICIT"]

Defaults to LOWEST_MULTIPLIER, which applies the greatest discount to list prices automatically. EXPLICIT prioritization requires specifying priorities for each multiplier; the one with the lowest priority value will be prioritized first. If tiered overrides are used, prioritization must be explicit.

Hide ParametersShow Parameters
"LOWEST_MULTIPLIER"
"EXPLICIT"
namestr
optional
net_payment_terms_daysfloat
optional
netsuite_sales_order_idstr
optional

This field's availability is dependent on your client's configuration.

overridesiterable
optional
starting_atunionapplicable_product_tagslistending_beforeunionentitledboolis_commit_specificboolmultiplierfloatoverride_specifiersiterableoverwrite_rateOverrideOverwriteRatepriorityfloatproduct_idstrtargetliteraltiersiterabletypeliteralIterable[Override]
Hide ParametersShow Parameters
starting_atunion
Union[str, datetime]

RFC 3339 timestamp indicating when the override will start applying (inclusive)

formatdate-time
applicable_product_tagslist
optional
List[str]

tags identifying products whose rates are being overridden. Cannot be used in conjunction with override_specifiers.

ending_beforeunion
optional
Union[str, datetime]

RFC 3339 timestamp indicating when the override will stop applying (exclusive)

formatdate-time
entitledbool
optional
is_commit_specificbool
optional

Indicates whether the override should only apply to commits. Defaults to false. If true, you can specify relevant commits in override_specifiers by passing commit_ids. if you do not specify commit_ids, then the override will apply when consuming any prepaid or postpaid commit.

multiplierfloat
optional

Required for MULTIPLIER type. Must be >=0.

override_specifiersiterable
optional
billing_frequencyliteralcommit_idslistpresentation_group_valuesDict[str, str]pricing_group_valuesDict[str, str]product_idstrproduct_tagslistrecurring_commit_idslistrecurring_credit_idslistIterable[OverrideOverrideSpecifier]

Cannot be used in conjunction with product_id or applicable_product_tags. If provided, the override will apply to all products with the specified specifiers.

Hide ParametersShow Parameters
billing_frequencyliteral
optional
Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]
Hide ParametersShow Parameters
"MONTHLY"
"QUARTERLY"
"ANNUAL"
"WEEKLY"
commit_idslist
optional
List[str]

Can only be used for commit specific overrides. Must be used in conjunction with one of product_id, product_tags, pricing_group_values, or presentation_group_values. If provided, the override will only apply to the specified commits. If not provided, the override will apply to all commits.

presentation_group_valuesDict[str, str]
optional
Dict[str, str]

A map of group names to values. The override will only apply to line items with the specified presentation group values.

pricing_group_valuesDict[str, str]
optional
Dict[str, str]

A map of pricing group names to values. The override will only apply to products with the specified pricing group values.

product_idstr
optional

If provided, the override will only apply to the product with the specified ID.

formatuuid
product_tagslist
optional
List[str]

If provided, the override will only apply to products with all the specified tags.

recurring_commit_idslist
optional
List[str]

Can only be used for commit specific overrides. Must be used in conjunction with one of product_id, product_tags, pricing_group_values, or presentation_group_values. If provided, the override will only apply to commits created by the specified recurring commit ids.

recurring_credit_idslist
optional
List[str]

Can only be used for commit specific overrides. Must be used in conjunction with one of product_id, product_tags, pricing_group_values, or presentation_group_values. If provided, the override will only apply to credits created by the specified recurring credit ids.

overwrite_raterate_typeliteralcredit_type_idstrcustom_rateDict[str, object]is_proratedboolpricefloatquantityfloattiersiterableOverrideOverwriteRate
optional

Required for OVERWRITE type.

Hide ParametersShow Parameters
rate_typeliteral
Literal["FLAT", "PERCENTAGE", "SUBSCRIPTION", 2 more]
Hide ParametersShow Parameters
"FLAT"
"PERCENTAGE"
"SUBSCRIPTION"
"TIERED"
"CUSTOM"
credit_type_idstr
optional
formatuuid
custom_rateDict[str, object]
optional
Dict[str, object]

Only set for CUSTOM rate_type. This field is interpreted by custom rate processors.

is_proratedbool
optional

Default proration configuration. Only valid for SUBSCRIPTION rate_type. Must be set to true.

pricefloat
optional

Default price. For FLAT rate_type, this must be >=0. For PERCENTAGE rate_type, this is a decimal fraction, e.g. use 0.1 for 10%; this must be >=0 and <=1.

quantityfloat
optional

Default quantity. For SUBSCRIPTION rate_type, this must be >=0.

tiersiterable
optional
pricefloatsizefloatIterable[pricefloatsizefloatTier]

Only set for TIERED rate_type.

Hide ParametersShow Parameters
pricefloat
sizefloat
optional
priorityfloat
optional

Required for EXPLICIT multiplier prioritization scheme and all TIERED overrides. Under EXPLICIT prioritization, overwrites are prioritized first, and then tiered and multiplier overrides are prioritized by their priority value (lowest first). Must be > 0.

product_idstr
optional

ID of the product whose rate is being overridden. Cannot be used in conjunction with override_specifiers.

formatuuid
targetliteral
optional
Literal["COMMIT_RATE", "LIST_RATE"]

Indicates whether the override applies to commit rates or list rates. Can only be used for overrides that have is_commit_specific set to true. Defaults to "LIST_RATE".

Hide ParametersShow Parameters
"COMMIT_RATE"
"LIST_RATE"
tiersiterable
optional
multiplierfloatsizefloatIterable[OverrideTier]

Required for TIERED type. Must have at least one tier.

Hide ParametersShow Parameters
multiplierfloat
sizefloat
optional
typeliteral
optional
Literal["OVERWRITE", "MULTIPLIER", "TIERED"]

Overwrites are prioritized over multipliers and tiered overrides.

Hide ParametersShow Parameters
"OVERWRITE"
"MULTIPLIER"
"TIERED"
prepaid_balance_threshold_configurationcommitPrepaidBalanceThresholdConfigurationCommitis_enabledboolpayment_gate_configPrepaidBalanceThresholdConfigurationPaymentGateConfigrecharge_to_amountfloatthreshold_amountfloatcustom_credit_type_idstrPrepaidBalanceThresholdConfiguration
optional
Hide ParametersShow Parameters
commitproduct_idstrapplicable_product_idslistapplicable_product_tagslistdescriptionstrnamestrspecifiersiterablePrepaidBalanceThresholdConfigurationCommit
Hide ParametersShow Parameters
product_idstr

The commit product that will be used to generate the line item for commit payment.

applicable_product_idslist
optional
List[str]

Which products the threshold commit applies to. If applicable_product_ids, applicable_product_tags or specifiers are not provided, the commit applies to all products.

applicable_product_tagslist
optional
List[str]

Which tags the threshold commit applies to. If applicable_product_ids, applicable_product_tags or specifiers are not provided, the commit applies to all products.

descriptionstr
optional
namestr
optional

Specify the name of the line item for the threshold charge. If left blank, it will default to the commit product name.

specifiersiterable
optional
presentation_group_valuesDict[str, str]pricing_group_valuesDict[str, str]product_idstrproduct_tagslistIterable[PrepaidBalanceThresholdConfigurationCommitSpecifier]

List of filters that determine what kind of customer usage draws down a commit or credit. A customer's usage needs to meet the condition of at least one of the specifiers to contribute to a commit's or credit's drawdown. This field cannot be used together with applicable_product_ids or applicable_product_tags.

Hide ParametersShow Parameters
presentation_group_valuesDict[str, str]
optional
Dict[str, str]
pricing_group_valuesDict[str, str]
optional
Dict[str, str]
product_idstr
optional

If provided, the specifier will only apply to the product with the specified ID.

formatuuid
product_tagslist
optional
List[str]

If provided, the specifier will only apply to products with all the specified tags.

is_enabledbool

When set to false, the contract will not be evaluated against the threshold_amount. Toggling to true will result an immediate evaluation, regardless of prior state.

Hide ParametersShow Parameters
payment_gate_typeliteral
Literal["NONE", "STRIPE", "EXTERNAL"]

Gate access to the commit balance based on successful collection of payment. Select STRIPE for Metronome to facilitate payment via Stripe. Select EXTERNAL to facilitate payment using your own payment integration. Select NONE if you do not wish to payment gate the commit balance.

Hide ParametersShow Parameters
"NONE"
"STRIPE"
"EXTERNAL"
precalculated_tax_configtax_amountfloattax_namestrPrepaidBalanceThresholdConfigurationPaymentGateConfigPrecalculatedTaxConfig
optional

Only applicable if using PRECALCULATED as your tax type.

Hide ParametersShow Parameters
tax_amountfloat

Amount of tax to be applied. This should be in the same currency and denomination as the commit's invoice schedule

tax_namestr
optional

Name of the tax to be applied. This may be used in an invoice line item description.

stripe_configpayment_typeliteralinvoice_metadataDict[str, str]PrepaidBalanceThresholdConfigurationPaymentGateConfigStripeConfig
optional

Only applicable if using STRIPE as your payment gate type.

Hide ParametersShow Parameters
payment_typeliteral
Literal["INVOICE", "PAYMENT_INTENT"]

If left blank, will default to INVOICE

Hide ParametersShow Parameters
"INVOICE"
"PAYMENT_INTENT"
invoice_metadataDict[str, str]
optional
Dict[str, str]

Metadata to be added to the Stripe invoice. Only applicable if using INVOICE as your payment type.

tax_typeliteral
optional
Literal["NONE", "STRIPE", "ANROK", "PRECALCULATED"]

Stripe tax is only supported for Stripe payment gateway. Select NONE if you do not wish Metronome to calculate tax on your behalf. Leaving this field blank will default to NONE.

Hide ParametersShow Parameters
"NONE"
"STRIPE"
"ANROK"
"PRECALCULATED"
recharge_to_amountfloat

Specify the amount the balance should be recharged to.

threshold_amountfloat

Specify the threshold amount for the contract. Each time the contract's prepaid balance lowers to this amount, a threshold charge will be initiated.

custom_credit_type_idstr
optional

If provided, the threshold, recharge-to amount, and the resulting threshold commit amount will be in terms of this credit type instead of the fiat currency.

formatuuid
priorityfloat
optional

Priority of the contract.

professional_servicesiterable
optional
max_amountfloatproduct_idstrquantityfloatunit_pricefloatcustom_fieldsDict[str, str]descriptionstrnetsuite_sales_order_idstrIterable[ProfessionalService]

This field's availability is dependent on your client's configuration.

Hide ParametersShow Parameters
max_amountfloat

Maximum amount for the term.

product_idstr
formatuuid
quantityfloat

Quantity for the charge. Will be multiplied by unit_price to determine the amount.

unit_pricefloat

Unit price for the charge. Will be multiplied by quantity to determine the amount and must be specified.

custom_fieldsDict[str, str]
optional
Dict[str, str]
descriptionstr
optional
netsuite_sales_order_idstr
optional

This field's availability is dependent on your client's configuration.

rate_card_aliasstr
optional

Selects the rate card linked to the specified alias as of the contract's start date.

rate_card_idstr
optional
formatuuid
recurring_commitsiterable
optional
access_amountRecurringCommitAccessAmountcommit_durationRecurringCommitCommitDurationpriorityfloatproduct_idstrstarting_atunionapplicable_product_idslistapplicable_product_tagslistdescriptionstrending_beforeunionhierarchy_configurationRecurringCommitHierarchyConfigurationinvoice_amountRecurringCommitInvoiceAmountnamestrnetsuite_sales_order_idstrprorationliteralrate_typeliteralrecurrence_frequencyliteralrollover_fractionfloatspecifiersiterablesubscription_configRecurringCommitSubscriptionConfigtemporary_idstrIterable[RecurringCommit]
Hide ParametersShow Parameters
access_amountcredit_type_idstrunit_pricefloatquantityfloatRecurringCommitAccessAmount

The amount of commit to grant.

Hide ParametersShow Parameters
credit_type_idstr
formatuuid
unit_pricefloat
quantityfloat
optional

This field is required unless a subscription is attached via subscription_config.

commit_durationvaluefloatunitliteralRecurringCommitCommitDuration

Defines the length of the access schedule for each created commit/credit. The value represents the number of units. Unit defaults to "PERIODS", where the length of a period is determined by the recurrence_frequency.

Hide ParametersShow Parameters
valuefloat
unitliteral
optional
Literal["PERIODS"]
Hide ParametersShow Parameters
"PERIODS"
priorityfloat

Will be passed down to the individual commits

product_idstr
formatuuid
starting_atunion
Union[str, datetime]

determines the start time for the first commit

formatdate-time
applicable_product_idslist
optional
List[str]

Will be passed down to the individual commits

applicable_product_tagslist
optional
List[str]

Will be passed down to the individual commits

descriptionstr
optional

Will be passed down to the individual commits

ending_beforeunion
optional
Union[str, datetime]

Determines when the contract will stop creating recurring commits. optional

formatdate-time

Optional configuration for recurring commit/credit hierarchy access control

Hide ParametersShow Parameters
Hide ParametersShow Parameters
RecurringCommitHierarchyConfigurationChildAccessCommitHierarchyChildAccessAllclass
Hide ParametersShow Parameters
typeliteral
Literal["ALL"]
Hide ParametersShow Parameters
"ALL"
RecurringCommitHierarchyConfigurationChildAccessCommitHierarchyChildAccessNoneclass
Hide ParametersShow Parameters
typeliteral
Literal["NONE"]
Hide ParametersShow Parameters
"NONE"
RecurringCommitHierarchyConfigurationChildAccessCommitHierarchyChildAccessContractIDsclass
Hide ParametersShow Parameters
contract_idslist
List[str]
typeliteral
Literal["CONTRACT_IDS"]
Hide ParametersShow Parameters
"CONTRACT_IDS"
invoice_amountcredit_type_idstrquantityfloatunit_pricefloatRecurringCommitInvoiceAmount
optional

The amount the customer should be billed for the commit. Not required.

Hide ParametersShow Parameters
credit_type_idstr
formatuuid
quantityfloat
unit_pricefloat
namestr
optional

displayed on invoices. will be passed through to the individual commits

minLength1
netsuite_sales_order_idstr
optional

Will be passed down to the individual commits

prorationliteral
optional
Literal["NONE", "FIRST", "LAST", "FIRST_AND_LAST"]

Determines whether the first and last commit will be prorated. If not provided, the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).

Hide ParametersShow Parameters
"NONE"
"FIRST"
"LAST"
"FIRST_AND_LAST"
rate_typeliteral
optional
Literal["COMMIT_RATE", "LIST_RATE"]

Whether the created commits will use the commit rate or list rate

Hide ParametersShow Parameters
"COMMIT_RATE"
"LIST_RATE"
recurrence_frequencyliteral
optional
Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]

The frequency at which the recurring commits will be created. If not provided: - The commits will be created on the usage invoice frequency. If provided: - The period defined in the duration will correspond to this frequency. - Commits will be created aligned with the recurring commit's starting_at rather than the usage invoice dates.

Hide ParametersShow Parameters
"MONTHLY"
"QUARTERLY"
"ANNUAL"
"WEEKLY"
rollover_fractionfloat
optional

Will be passed down to the individual commits. This controls how much of an individual unexpired commit will roll over upon contract transition. Must be between 0 and 1.

specifiersiterable
optional
presentation_group_valuesDict[str, str]pricing_group_valuesDict[str, str]product_idstrproduct_tagslistIterable[RecurringCommitSpecifier]

List of filters that determine what kind of customer usage draws down a commit or credit. A customer's usage needs to meet the condition of at least one of the specifiers to contribute to a commit's or credit's drawdown. This field cannot be used together with applicable_product_ids or applicable_product_tags.

Hide ParametersShow Parameters
presentation_group_valuesDict[str, str]
optional
Dict[str, str]
pricing_group_valuesDict[str, str]
optional
Dict[str, str]
product_idstr
optional

If provided, the specifier will only apply to the product with the specified ID.

formatuuid
product_tagslist
optional
List[str]

If provided, the specifier will only apply to products with all the specified tags.

subscription_configapply_seat_increase_configRecurringCommitSubscriptionConfigApplySeatIncreaseConfigsubscription_idstrallocationliteralRecurringCommitSubscriptionConfig
optional

Attach a subscription to the recurring commit/credit.

Hide ParametersShow Parameters
Hide ParametersShow Parameters
is_proratedbool

Indicates whether a mid-period seat increase should be prorated.

subscription_idstr

ID of the subscription to configure on the recurring commit/credit.

allocationliteral
optional
Literal["POOLED"]

If set to POOLED, allocation added per seat is pooled across the account.

Hide ParametersShow Parameters
"POOLED"
temporary_idstr
optional

A temporary ID that can be used to reference the recurring commit for commit specific overrides.

recurring_creditsiterable
optional
access_amountRecurringCreditAccessAmountcommit_durationRecurringCreditCommitDurationpriorityfloatproduct_idstrstarting_atunionapplicable_product_idslistapplicable_product_tagslistdescriptionstrending_beforeunionhierarchy_configurationRecurringCreditHierarchyConfigurationnamestrnetsuite_sales_order_idstrprorationliteralrate_typeliteralrecurrence_frequencyliteralrollover_fractionfloatspecifiersiterablesubscription_configRecurringCreditSubscriptionConfigtemporary_idstrIterable[RecurringCredit]
Hide ParametersShow Parameters
access_amountcredit_type_idstrunit_pricefloatquantityfloatRecurringCreditAccessAmount

The amount of commit to grant.

Hide ParametersShow Parameters
credit_type_idstr
formatuuid
unit_pricefloat
quantityfloat
optional

This field is required unless a subscription is attached via subscription_config.

commit_durationvaluefloatunitliteralRecurringCreditCommitDuration

Defines the length of the access schedule for each created commit/credit. The value represents the number of units. Unit defaults to "PERIODS", where the length of a period is determined by the recurrence_frequency.

Hide ParametersShow Parameters
valuefloat
unitliteral
optional
Literal["PERIODS"]
Hide ParametersShow Parameters
"PERIODS"
priorityfloat

Will be passed down to the individual commits

product_idstr
formatuuid
starting_atunion
Union[str, datetime]

determines the start time for the first commit

formatdate-time
applicable_product_idslist
optional
List[str]

Will be passed down to the individual commits

applicable_product_tagslist
optional
List[str]

Will be passed down to the individual commits

descriptionstr
optional

Will be passed down to the individual commits

ending_beforeunion
optional
Union[str, datetime]

Determines when the contract will stop creating recurring commits. optional

formatdate-time

Optional configuration for recurring commit/credit hierarchy access control

Hide ParametersShow Parameters
Hide ParametersShow Parameters
RecurringCreditHierarchyConfigurationChildAccessCommitHierarchyChildAccessAllclass
Hide ParametersShow Parameters
typeliteral
Literal["ALL"]
Hide ParametersShow Parameters
"ALL"
RecurringCreditHierarchyConfigurationChildAccessCommitHierarchyChildAccessNoneclass
Hide ParametersShow Parameters
typeliteral
Literal["NONE"]
Hide ParametersShow Parameters
"NONE"
RecurringCreditHierarchyConfigurationChildAccessCommitHierarchyChildAccessContractIDsclass
Hide ParametersShow Parameters
contract_idslist
List[str]
typeliteral
Literal["CONTRACT_IDS"]
Hide ParametersShow Parameters
"CONTRACT_IDS"
namestr
optional

displayed on invoices. will be passed through to the individual commits

minLength1
netsuite_sales_order_idstr
optional

Will be passed down to the individual commits

prorationliteral
optional
Literal["NONE", "FIRST", "LAST", "FIRST_AND_LAST"]

Determines whether the first and last commit will be prorated. If not provided, the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).

Hide ParametersShow Parameters
"NONE"
"FIRST"
"LAST"
"FIRST_AND_LAST"
rate_typeliteral
optional
Literal["COMMIT_RATE", "LIST_RATE"]

Whether the created commits will use the commit rate or list rate

Hide ParametersShow Parameters
"COMMIT_RATE"
"LIST_RATE"
recurrence_frequencyliteral
optional
Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]

The frequency at which the recurring commits will be created. If not provided: - The commits will be created on the usage invoice frequency. If provided: - The period defined in the duration will correspond to this frequency. - Commits will be created aligned with the recurring commit's starting_at rather than the usage invoice dates.

Hide ParametersShow Parameters
"MONTHLY"
"QUARTERLY"
"ANNUAL"
"WEEKLY"
rollover_fractionfloat
optional

Will be passed down to the individual commits. This controls how much of an individual unexpired commit will roll over upon contract transition. Must be between 0 and 1.

specifiersiterable
optional
presentation_group_valuesDict[str, str]pricing_group_valuesDict[str, str]product_idstrproduct_tagslistIterable[RecurringCreditSpecifier]

List of filters that determine what kind of customer usage draws down a commit or credit. A customer's usage needs to meet the condition of at least one of the specifiers to contribute to a commit's or credit's drawdown. This field cannot be used together with applicable_product_ids or applicable_product_tags.

Hide ParametersShow Parameters
presentation_group_valuesDict[str, str]
optional
Dict[str, str]
pricing_group_valuesDict[str, str]
optional
Dict[str, str]
product_idstr
optional

If provided, the specifier will only apply to the product with the specified ID.

formatuuid
product_tagslist
optional
List[str]

If provided, the specifier will only apply to products with all the specified tags.

subscription_configapply_seat_increase_configRecurringCreditSubscriptionConfigApplySeatIncreaseConfigsubscription_idstrallocationliteralRecurringCreditSubscriptionConfig
optional

Attach a subscription to the recurring commit/credit.

Hide ParametersShow Parameters
Hide ParametersShow Parameters
is_proratedbool

Indicates whether a mid-period seat increase should be prorated.

subscription_idstr

ID of the subscription to configure on the recurring commit/credit.

allocationliteral
optional
Literal["POOLED"]

If set to POOLED, allocation added per seat is pooled across the account.

Hide ParametersShow Parameters
"POOLED"
temporary_idstr
optional

A temporary ID that can be used to reference the recurring commit for commit specific overrides.

reseller_royaltiesiterable
optional
fractionfloatnetsuite_reseller_idstrreseller_typeliteralstarting_atunionapplicable_product_idslistapplicable_product_tagslistaws_optionsResellerRoyaltyAwsOptionsending_beforeuniongcp_optionsResellerRoyaltyGcpOptionsreseller_contract_valuefloatIterable[ResellerRoyalty]

This field's availability is dependent on your client's configuration.

Hide ParametersShow Parameters
fractionfloat
netsuite_reseller_idstr
reseller_typeliteral
Literal["AWS", "AWS_PRO_SERVICE", "GCP", "GCP_PRO_SERVICE"]
Hide ParametersShow Parameters
"AWS"
"AWS_PRO_SERVICE"
"GCP"
"GCP_PRO_SERVICE"
starting_atunion
Union[str, datetime]
formatdate-time
applicable_product_idslist
optional
List[str]

Must provide at least one of applicable_product_ids or applicable_product_tags.

applicable_product_tagslist
optional
List[str]

Must provide at least one of applicable_product_ids or applicable_product_tags.

aws_optionsaws_account_numberstraws_offer_idstraws_payer_reference_idstrResellerRoyaltyAwsOptions
optional
Hide ParametersShow Parameters
aws_account_numberstr
optional
aws_offer_idstr
optional
aws_payer_reference_idstr
optional
ending_beforeunion
optional
Union[str, datetime]
formatdate-time
gcp_optionsgcp_account_idstrgcp_offer_idstrResellerRoyaltyGcpOptions
optional
Hide ParametersShow Parameters
gcp_account_idstr
optional
gcp_offer_idstr
optional
reseller_contract_valuefloat
optional
salesforce_opportunity_idstr
optional

This field's availability is dependent on your client's configuration.

scheduled_chargesiterable
optional
product_idstrscheduleScheduledChargeSchedulenamestrnetsuite_sales_order_idstrIterable[ScheduledCharge]
Hide ParametersShow Parameters
product_idstr
formatuuid
schedulecredit_type_idstrdo_not_invoiceboolrecurring_scheduleScheduledChargeScheduleRecurringScheduleschedule_itemsiterableScheduledChargeSchedule

Must provide either schedule_items or recurring_schedule.

Hide ParametersShow Parameters
credit_type_idstr
optional

Defaults to USD (cents) if not passed.

formatuuid
do_not_invoicebool
optional

This field is only applicable to commit invoice schedules. If true, this schedule will not generate an invoice.

recurring_scheduleamount_distributionliteralending_beforeunionfrequencyliteralstarting_atunionamountfloatquantityfloatunit_pricefloatScheduledChargeScheduleRecurringSchedule
optional

Enter the unit price and quantity for the charge or instead only send the amount. If amount is sent, the unit price is assumed to be the amount and quantity is inferred to be 1.

Hide ParametersShow Parameters
amount_distributionliteral
Literal["DIVIDED", "DIVIDED_ROUNDED", "EACH"]
Hide ParametersShow Parameters
"DIVIDED"
"DIVIDED_ROUNDED"
"EACH"
ending_beforeunion
Union[str, datetime]

RFC 3339 timestamp (exclusive).

formatdate-time
frequencyliteral
Literal["MONTHLY", "QUARTERLY", "SEMI_ANNUAL", "ANNUAL"]
Hide ParametersShow Parameters
"MONTHLY"
"QUARTERLY"
"SEMI_ANNUAL"
"ANNUAL"
starting_atunion
Union[str, datetime]

RFC 3339 timestamp (inclusive).

formatdate-time
amountfloat
optional

Amount for the charge. Can be provided instead of unit_price and quantity. If amount is sent, the unit_price is assumed to be the amount and quantity is inferred to be 1.

quantityfloat
optional

Quantity for the charge. Will be multiplied by unit_price to determine the amount and must be specified with unit_price. If specified amount cannot be provided.

unit_pricefloat
optional

Unit price for the charge. Will be multiplied by quantity to determine the amount and must be specified with quantity. If specified amount cannot be provided.

schedule_itemsiterable
optional
timestampunionamountfloatquantityfloatunit_pricefloatIterable[ScheduledChargeScheduleScheduleItem]

Either provide amount or provide both unit_price and quantity.

Hide ParametersShow Parameters
timestampunion
Union[str, datetime]

timestamp of the scheduled event

formatdate-time
amountfloat
optional

Amount for the charge. Can be provided instead of unit_price and quantity. If amount is sent, the unit_price is assumed to be the amount and quantity is inferred to be 1.

quantityfloat
optional

Quantity for the charge. Will be multiplied by unit_price to determine the amount and must be specified with unit_price. If specified amount cannot be provided.

unit_pricefloat
optional

Unit price for the charge. Will be multiplied by quantity to determine the amount and must be specified with quantity. If specified amount cannot be provided.

namestr
optional

displayed on invoices

minLength1
netsuite_sales_order_idstr
optional

This field's availability is dependent on your client's configuration.

scheduled_charges_on_usage_invoicesliteral
optional
Literal["ALL"]

Determines which scheduled and commit charges to consolidate onto the Contract's usage invoice. The charge's timestamp must match the usage invoice's ending_before date for consolidation to occur. This field cannot be modified after a Contract has been created. If this field is omitted, charges will appear on a separate invoice from usage charges.

Hide ParametersShow Parameters
"ALL"
spend_threshold_configurationcommitSpendThresholdConfigurationCommitis_enabledboolpayment_gate_configSpendThresholdConfigurationPaymentGateConfigthreshold_amountfloatSpendThresholdConfiguration
optional
Hide ParametersShow Parameters
commitproduct_idstrdescriptionstrnamestrSpendThresholdConfigurationCommit
Hide ParametersShow Parameters
product_idstr

The commit product that will be used to generate the line item for commit payment.

descriptionstr
optional
namestr
optional

Specify the name of the line item for the threshold charge. If left blank, it will default to the commit product name.

is_enabledbool

When set to false, the contract will not be evaluated against the threshold_amount. Toggling to true will result an immediate evaluation, regardless of prior state.

Hide ParametersShow Parameters
payment_gate_typeliteral
Literal["NONE", "STRIPE", "EXTERNAL"]

Gate access to the commit balance based on successful collection of payment. Select STRIPE for Metronome to facilitate payment via Stripe. Select EXTERNAL to facilitate payment using your own payment integration. Select NONE if you do not wish to payment gate the commit balance.

Hide ParametersShow Parameters
"NONE"
"STRIPE"
"EXTERNAL"
precalculated_tax_configtax_amountfloattax_namestrSpendThresholdConfigurationPaymentGateConfigPrecalculatedTaxConfig
optional

Only applicable if using PRECALCULATED as your tax type.

Hide ParametersShow Parameters
tax_amountfloat

Amount of tax to be applied. This should be in the same currency and denomination as the commit's invoice schedule

tax_namestr
optional

Name of the tax to be applied. This may be used in an invoice line item description.

stripe_configpayment_typeliteralinvoice_metadataDict[str, str]SpendThresholdConfigurationPaymentGateConfigStripeConfig
optional

Only applicable if using STRIPE as your payment gate type.

Hide ParametersShow Parameters
payment_typeliteral
Literal["INVOICE", "PAYMENT_INTENT"]

If left blank, will default to INVOICE

Hide ParametersShow Parameters
"INVOICE"
"PAYMENT_INTENT"
invoice_metadataDict[str, str]
optional
Dict[str, str]

Metadata to be added to the Stripe invoice. Only applicable if using INVOICE as your payment type.

tax_typeliteral
optional
Literal["NONE", "STRIPE", "ANROK", "PRECALCULATED"]

Stripe tax is only supported for Stripe payment gateway. Select NONE if you do not wish Metronome to calculate tax on your behalf. Leaving this field blank will default to NONE.

Hide ParametersShow Parameters
"NONE"
"STRIPE"
"ANROK"
"PRECALCULATED"
threshold_amountfloat

Specify the threshold amount for the contract. Each time the contract's usage hits this amount, a threshold charge will be initiated.

subscriptionsiterable
optional
collection_scheduleliteralinitial_quantityfloatprorationSubscriptionProrationsubscription_rateSubscriptionSubscriptionRatecustom_fieldsDict[str, str]descriptionstrending_beforeunionnamestrstarting_atuniontemporary_idstrIterable[Subscription]

Optional list of subscriptions to add to the contract.

Hide ParametersShow Parameters
collection_scheduleliteral
Literal["ADVANCE", "ARREARS"]
Hide ParametersShow Parameters
"ADVANCE"
"ARREARS"
initial_quantityfloat

The initial quantity for the subscription. It must be non-negative value.

prorationinvoice_behaviorliteralis_proratedboolSubscriptionProration
Hide ParametersShow Parameters
invoice_behaviorliteral
optional
Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"]

Indicates how mid-period quantity adjustments are invoiced. BILL_IMMEDIATELY: Only available when collection schedule is ADVANCE. The quantity increase will be billed immediately on the scheduled date. BILL_ON_NEXT_COLLECTION_DATE: The quantity increase will be billed for in-arrears at the end of the period.

Hide ParametersShow Parameters
"BILL_IMMEDIATELY"
"BILL_ON_NEXT_COLLECTION_DATE"
is_proratedbool
optional

Indicates if the partial period will be prorated or charged a full amount.

subscription_ratebilling_frequencyliteralproduct_idstrSubscriptionSubscriptionRate
Hide ParametersShow Parameters
billing_frequencyliteral
Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]

Frequency to bill subscription with. Together with product_id, must match existing rate on the rate card.

Hide ParametersShow Parameters
"MONTHLY"
"QUARTERLY"
"ANNUAL"
"WEEKLY"
product_idstr

Must be subscription type product

formatuuid
custom_fieldsDict[str, str]
optional
Dict[str, str]
descriptionstr
optional
ending_beforeunion
optional
Union[str, datetime]

Exclusive end time for the subscription. If not provided, subscription inherits contract end date.

formatdate-time
namestr
optional
starting_atunion
optional
Union[str, datetime]

Inclusive start time for the subscription. If not provided, defaults to contract start date

formatdate-time
temporary_idstr
optional

A temporary ID used to reference the subscription in recurring commit/credit subscription configs created within the same payload.

total_contract_valuefloat
optional

This field's availability is dependent on your client's configuration.

transitionfrom_contract_idstrtypeliteralfuture_invoice_behaviorTransitionFutureInvoiceBehaviorTransition
optional
Hide ParametersShow Parameters
from_contract_idstr
formatuuid
typeliteral
Literal["SUPERSEDE", "RENEWAL"]

This field's available values may vary based on your client's configuration.

Hide ParametersShow Parameters
"SUPERSEDE"
"RENEWAL"
future_invoice_behaviortrueupliteralTransitionFutureInvoiceBehavior
optional
Hide ParametersShow Parameters
trueupliteral
optional
Optional[Literal["REMOVE", "AS_IS"]]

Controls whether future trueup invoices are billed or removed. Default behavior is AS_IS if not specified.

Hide ParametersShow Parameters
"REMOVE"
"AS_IS"
uniqueness_keystr
optional

Prevents the creation of duplicates. If a request to create a record is made with a previously used uniqueness key, a new record will not be created and the request will fail with a 409 error.

minLength1
maxLength128
usage_filtergroup_keystrgroup_valuesliststarting_atdatetimeBaseUsageFilter
optional
usage_statement_schedulefrequencyliteralbilling_anchor_dateuniondayliteralinvoice_generation_starting_atunionUsageStatementSchedule
optional
Hide ParametersShow Parameters
frequencyliteral
Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]
Hide ParametersShow Parameters
"MONTHLY"
"QUARTERLY"
"ANNUAL"
"WEEKLY"
billing_anchor_dateunion
optional
Union[str, datetime]

Required when using CUSTOM_DATE. This option lets you set a historical billing anchor date, aligning future billing cycles with a chosen cadence. For example, if a contract starts on 2024-09-15 and you set the anchor date to 2024-09-10 with a MONTHLY frequency, the first usage statement will cover 09-15 to 10-10. Subsequent statements will follow the 10th of each month.

formatdate-time
dayliteral
optional
Literal["FIRST_OF_MONTH", "CONTRACT_START", "CUSTOM_DATE"]

If not provided, defaults to the first day of the month.

Hide ParametersShow Parameters
"FIRST_OF_MONTH"
"CONTRACT_START"
"CUSTOM_DATE"
invoice_generation_starting_atunion
optional
Union[str, datetime]

The date Metronome should start generating usage invoices. If unspecified, contract start date will be used. This is useful to set if you want to import historical invoices via our 'Create Historical Invoices' API rather than having Metronome automatically generate them.

formatdate-time
Returns
ContractCreateResponseclass
Hide ParametersShow Parameters
dataidstrID
from datetime import datetime
from metronome import Metronome

client = Metronome(
    bearer_token="My Bearer Token",
)
contract = client.v1.contracts.create(
    customer_id="13117714-3f05-48e5-a6e9-a66093f13b4d",
    starting_at=datetime.fromisoformat("2020-01-01T00:00:00.000"),
    billing_provider_configuration={
        "billing_provider": "stripe",
        "delivery_method": "direct_to_billing_provider",
    },
    rate_card_id="d7abd0cd-4ae9-4db7-8676-e986a4ebd8dc",
)
print(contract.data)
200 Example
{
  "data": {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
  }
}