ChangeUnitCount - only increase or decrease the number of purchased units for the current plan
The main difference between ChangeUnitCount and using NewPlan with the ID of the same plan
is that if the prices of features changed between contract creation and current time,
ChangeUnitCount will preserve the prices of features recorded in the contract,
while using NewPlan will also mean that new prices will take effect.
By default downgrading to a cheaper plan can only be done at the end of the billing cycle
This is done to avoid the need to refund unused part of the current billing cycle
from the old contract
However, WbCustomer may override this behaviour, and force immediate downgrade by
setting this argument to true.
Default is false
Response
200 - application/json
Upgraded
Estimate of the price of the Contract Upgrade
When contract upgrade is performed mid-cycle, but the billing period is kept the same,
the unused part of the current contract billing period, as well as the unused part
of the new contract's billing period will be accordingly pro-rated
For example, if the contract is paid on the 1st of every month
and the upgrade is performed on 16th, we pro-rate as follows:
days 115 of the old contract are considered "used", remainder is "unused"
thus, days 16end-of-month will be pro-rated
for the new contract, days 1~15 will be unused and pro-rated
If contract change is downgrade (a move to a cheaper contract), then this will be set to
True. Downgrade can not be performed mid-cycle, only at the end of the billing cycle
Billing period of the contract. For example, for contracts that are paid monthly,
a new billing period would be created each month. For Constant or Once contracts, a single
period would be created with empty "end" value
Show child attributes
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Wingback","colors":{"primary":"#EF3B4D","light":"#FF7886","dark":"#D81D38"},"favicon":"/media/favicon.png","logo":{"light":"https://mintcdn.com/wingback/GadBRdJt85xVxME0/media/logo/light.svg?fit=max\u0026auto=format\u0026n=GadBRdJt85xVxME0\u0026q=85\u0026s=93b61d8945910151ec8df39c2b469c8e","dark":"https://mintcdn.com/wingback/GadBRdJt85xVxME0/media/logo/dark.svg?fit=max\u0026auto=format\u0026n=GadBRdJt85xVxME0\u0026q=85\u0026s=ba6722dedd801b55082f19792ea3b441"},"api":{"mdx":{"server":"https://api.wingback.com"}},"navbar":{"links":[],"primary":{"type":"button","label":"Go to Dashboard","href":"https://app.wingback.com/"}},"footer":{"socials":{"website":"https://wingback.com","twitter":"https://twitter.com/wingbackapp","linkedin":"https://www.linkedin.com/company/wingbackapp/"}},"integrations":{"posthog":{"apiKey":"phc_9zg8YkIBr0SuofRjG6TujIu9Q6I2deAFFat4U3DpbrV","apiHost":"https://i.wingback.com"}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"wingback","hasAudioNarration":false,"actualSubdomain":"wingback","customDomains":["docs-int.wingback.com"],"gitSource":{"type":"github","owner":"wingbackapp","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"docs","mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a20c343cf0492c7637e2ac2","collectionId":"df9c82e5-67e0-472b-acfa-7306b676d252","schemaVersion":"v2"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a20c343cf0492c7637e2ac2:success","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Developer Documentation","count":41},{"language":"default","tag":"API Reference","count":31},{"language":"default","tag":"SGI Fundamentals","count":19},{"language":"default","tag":"Pricing Model Guides","count":16},{"language":"default","tag":"User Guides","count":13},{"language":"default","tag":"User Manuals","count":10},{"language":"default","tag":"Customer","count":8},{"language":"default","tag":"Payment","count":6},{"language":"default","tag":"Guides","count":6},{"language":"default","tag":"Feature Overview","count":6}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"editor-v7-file-tree","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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"editor-agent-model-picker","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate","slug":"/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate","pageMetadata":{"title":"Estimate Upgrade Costss","openapi":"POST /v1/c/contract/{contract_id}/upgrade_estimate","description":"Estimate plan upgrade costs.","href":"/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Estimate plan upgrade costs.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const IntRedir=()=>{if(typeof document===`undefined`){return null}else{setTimeout(()=>{const currentUrl=new URL(window.location.href);if(currentUrl.hostname===`docs-int.wingback.com`){currentUrl.hostname=`docs.wingback.com`;window.location.replace(currentUrl.toString())}},1);return _jsx(_Fragment,{})}};function _createMdxContent(props){const{_MdxComponentBoundary}={..._provideComponents(),...props.components};if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsx(_MdxComponentBoundary,{name:`IntRedir`,children:_jsx(IntRedir,{})})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{IntRedir,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":"Estimate Upgrade Costss","openapi":"POST /v1/c/contract/{contract_id}/upgrade_estimate","description":"Estimate plan upgrade costs.","href":"/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[19,38,""],[136,436,"null;function _creat"]]},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/wingback/bbb25f53a15d63f9/int-redir.js"],"openApiReferenceData":{"operation":{"tags":["contract"],"operationId":"upgrade_contract_estimate","parameters":["1ad1dddf-fcbf-44d2-b694-37733a26f51e"],"requestBody":"f334bd3b-4b8f-4767-b526-486d1ffca6e5","responses":{"200":"8b3f82f3-cb0b-463c-951a-3b56ace5cebe"},"security":["0789a6de-ec6c-4e6d-a7b0-cf52339aa84e","3ca103ed-0f02-4dbe-9cfb-2eed681fa4f1"],"method":"post","type":"path","servers":["a4003425-b8cc-41a9-b3c3-854191252b9c","bc411509-c143-4d72-a409-c7938d980f87"],"path":"/v1/c/contract/{contract_id}/upgrade_estimate","baseUrlOptions":["http://127.0.0.1:8080","https://api.app.test.wingback.com"],"title":"","description":"Estimate plan upgrade costs.","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"1ad1dddf-fcbf-44d2-b694-37733a26f51e":{"name":"contract_id","in":"path","description":"Id of the Contract","required":true,"schema":{"type":"string","isRequired":true,"description":"Id of the Contract","uniqueKey":"","typeLabel":"string"},"example":"Cont_cc871a3a-2b38-4689-a32d-14bf2e62b1ae"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Upgrade configuration used when WbCustomer is performing a Contract Upgrade for a Customer","required":["upgrade_configuration"],"properties":{"upgrade_configuration":{"oneOf":[{"type":"object","description":"Type of plan upgrade:\n* NewPlan - upgrade to a different plan\n* ChangeUnitCount - only increase or decrease the number of purchased units for the current plan\n\nThe main difference between ChangeUnitCount and using NewPlan with the ID of the same plan\nis that if the prices of features changed between contract creation and current time,\nChangeUnitCount will preserve the prices of features recorded in the contract,\nwhile using NewPlan will also mean that new prices will take effect.","required":["upgrade_strategy","plan_id","cycle","currency","activation","unit_count_configuration","unit_configuration"],"properties":{"activation":{"oneOf":[{"type":"object","description":"Configuration to choose the date when upgrade takes place:\n* NextCycle - at the beginning of the next billing cycle\n* Date - at the specific date (UTC)","required":["type"],"properties":{"type":{"type":"string","enum":["next_cycle"],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.activation.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.activation.oneOf.0","typeLabel":"object"},{"type":"object","description":"Configuration to choose the date when upgrade takes place:\n* NextCycle - at the beginning of the next billing cycle\n* Date - at the specific date (UTC)","required":["upgrade_date","type"],"properties":{"type":{"type":"string","enum":["date"],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.activation.oneOf.1.type","typeLabel":"enum\u003cstring>"},"upgrade_date":{"type":"string","format":"date-time","description":"Date of the upgrade","isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.activation.oneOf.1.upgrade_date","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.activation.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.activation","typeLabel":"object"},"currency":{"type":"string","description":"A supported currency\n\nThe format for parsing and reading is the lowercased\nISO 4217 currency code (e.g. \"usd\")","enum":["usd","eur","gbp","brl","ars"],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.currency","typeLabel":"enum\u003cstring>"},"cycle":{"type":"string","description":"Enum that lists supported payment cycles for contracts:\n* Once - one-time payment\n* Constant - one-time payment for the duration of the contract\n* Week - contract is paid weekly\n* Month - contract is paid monthly\n* Quarter - contract is paid every quarter\n* Year - contract is paid yearly","enum":["once","hour","day","week","month","quarter","year","constant"],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.cycle","typeLabel":"enum\u003cstring>"},"plan_id":{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.plan_id","typeLabel":"string"},"unit_configuration":{"type":"object","description":"Configuration specifying overrides to apply to new plan during contract upgrade.\nIn addition to the number of units to purchase, it is possible to\noverride price and flat_fee of specific features to create customized plans\nSee UnitConfiguration for format","additionalProperties":{"type":"object","description":"Helper structure to store the overridden price and flat_fee for customized\ncontracts, as well as the number of units being purchased for the contract","properties":{"flat_fee":{"oneOf":[{"type":"string","description":"the overridden flat_fee for the usage-based feature","uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.flat_fee.oneOf.0","typeLabel":"string"},{"type":"null","description":"the overridden flat_fee for the usage-based feature","uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.flat_fee.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.flat_fee","typeLabel":"string | null"},"price":{"oneOf":[{"type":"string","description":"the overridden price of the given feature","uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.price.oneOf.0","typeLabel":"string"},{"type":"null","description":"the overridden price of the given feature","uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.price.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.price","typeLabel":"string | null"},"purchased":{"oneOf":[{"type":"boolean","description":"used for optional features - the optional feature is added to the contract only if this\nis set to `true`","uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.purchased.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"used for optional features - the optional feature is added to the contract only if this\nis set to `true`","uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.purchased.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.purchased","typeLabel":"boolean | null"},"tiers":{"oneOf":[{"type":"array","items":{"type":"object","description":"A pricing tier","required":["tier_start","tier_end","amount"],"properties":{"amount":{"type":"string","description":"Price per unit for this tier","isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.tiers.oneOf.0.items.[INDEX].amount","typeLabel":"string"},"tier_end":{"oneOf":[{"type":"object","description":"Either a number of `infinity`. Must be a string","required":["Concrete"],"properties":{"Concrete":{"type":"string","isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.tiers.oneOf.0.items.[INDEX].tier_end.oneOf.0.Concrete","typeLabel":"string"}},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.tiers.oneOf.0.items.[INDEX].tier_end.oneOf.0","typeLabel":"object"},{"type":"string","description":"Either a number of `infinity`. Must be a string","enum":["Infinity"],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.tiers.oneOf.0.items.[INDEX].tier_end.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.tiers.oneOf.0.items.[INDEX].tier_end","typeLabel":"object | enum\u003cstring>"},"tier_start":{"type":"string","description":"Number of units where this tier starts applying.","isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.tiers.oneOf.0.items.[INDEX].tier_start","typeLabel":"string"}},"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.tiers.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Override tiers","uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.tiers.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","description":"A pricing tier","required":["tier_start","tier_end","amount"],"properties":{"amount":{"type":"string","description":"Price per unit for this tier"},"tier_end":{"oneOf":[{"type":"object","description":"Either a number of `infinity`. Must be a string","required":["Concrete"],"properties":{"Concrete":{"type":"string"}}},{"type":"string","description":"Either a number of `infinity`. Must be a string","enum":["Infinity"]}]},"tier_start":{"type":"string","description":"Number of units where this tier starts applying."}}},"description":"Override tiers","uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.tiers.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.tiers","typeLabel":"object[] | null"},"unit_count":{"oneOf":[{"type":"string","description":"the number of units being purchased","uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.unit_count.oneOf.0","typeLabel":"string"},{"type":"null","description":"the number of units being purchased","uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.unit_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties.unit_count","typeLabel":"string | null"}},"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.unit_configuration","typeLabel":"object"},"unit_count_configuration":{"type":"object","description":"Configuration specifying the number of units to purchase\non the new plan for unit-based features. This is a hashmap where\nkeys are slugs of features, and values are the numbers of units to purchase\n{\n\"{feature_slug}\": {number_of_units}\n}","additionalProperties":{"type":"string","uniqueKey":"upgrade_configuration.oneOf.0.unit_count_configuration.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.unit_count_configuration","typeLabel":"object"},"upgrade_strategy":{"type":"string","enum":["new_plan"],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0.upgrade_strategy","typeLabel":"enum\u003cstring>"},"discount_id":{"oneOf":[{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","uniqueKey":"upgrade_configuration.oneOf.0.discount_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"upgrade_configuration.oneOf.0.discount_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_configuration.oneOf.0.discount_id","typeLabel":"string | null"},"pricing_id":{"oneOf":[{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","uniqueKey":"upgrade_configuration.oneOf.0.pricing_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"upgrade_configuration.oneOf.0.pricing_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_configuration.oneOf.0.pricing_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.0","typeLabel":"object"},{"type":"object","description":"Type of plan upgrade:\n* NewPlan - upgrade to a different plan\n* ChangeUnitCount - only increase or decrease the number of purchased units for the current plan\n\nThe main difference between ChangeUnitCount and using NewPlan with the ID of the same plan\nis that if the prices of features changed between contract creation and current time,\nChangeUnitCount will preserve the prices of features recorded in the contract,\nwhile using NewPlan will also mean that new prices will take effect.","required":["upgrade_strategy","activation","unit_count_configuration"],"properties":{"activation":{"oneOf":[{"type":"object","description":"Configuration to choose the date when upgrade takes place:\n* NextCycle - at the beginning of the next billing cycle\n* Date - at the specific date (UTC)","required":["type"],"properties":{"type":{"type":"string","enum":["next_cycle"],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.1.activation.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.1.activation.oneOf.0","typeLabel":"object"},{"type":"object","description":"Configuration to choose the date when upgrade takes place:\n* NextCycle - at the beginning of the next billing cycle\n* Date - at the specific date (UTC)","required":["upgrade_date","type"],"properties":{"type":{"type":"string","enum":["date"],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.1.activation.oneOf.1.type","typeLabel":"enum\u003cstring>"},"upgrade_date":{"type":"string","format":"date-time","description":"Date of the upgrade","isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.1.activation.oneOf.1.upgrade_date","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.1.activation.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.1.activation","typeLabel":"object"},"unit_count_configuration":{"type":"object","description":"Configuration specifying the number of units to purchase\non the new plan for unit-based features. This is a hashmap where\nkeys are slugs of features, and values are the numbers of units to purchase\n{\n\"{feature_slug}\": {number_of_units}\n}","additionalProperties":{"type":"string","uniqueKey":"upgrade_configuration.oneOf.1.unit_count_configuration.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.1.unit_count_configuration","typeLabel":"object"},"upgrade_strategy":{"type":"string","enum":["change_unit_count"],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.1.upgrade_strategy","typeLabel":"enum\u003cstring>"},"discount_id":{"oneOf":[{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","uniqueKey":"upgrade_configuration.oneOf.1.discount_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"upgrade_configuration.oneOf.1.discount_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_configuration.oneOf.1.discount_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.1","typeLabel":"object"},{"type":"object","description":"Type of plan upgrade:\n* NewPlan - upgrade to a different plan\n* ChangeUnitCount - only increase or decrease the number of purchased units for the current plan\n\nThe main difference between ChangeUnitCount and using NewPlan with the ID of the same plan\nis that if the prices of features changed between contract creation and current time,\nChangeUnitCount will preserve the prices of features recorded in the contract,\nwhile using NewPlan will also mean that new prices will take effect.","required":["upgrade_strategy","date","recalculate_charges"],"properties":{"date":{"type":"string","format":"date-time","description":"New billing date. All subsequent charges will occur on the same day of the billing cycle.","isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.2.date","typeLabel":"string\u003cdate-time>"},"recalculate_charges":{"type":"boolean","description":"Determines if the customer will be charged for the difference in days/months\nbetween old and new billing dates","isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.2.recalculate_charges","typeLabel":"boolean"},"upgrade_strategy":{"type":"string","enum":["change_billing_date"],"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.2.upgrade_strategy","typeLabel":"enum\u003cstring>"},"discount_id":{"oneOf":[{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","uniqueKey":"upgrade_configuration.oneOf.2.discount_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"upgrade_configuration.oneOf.2.discount_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_configuration.oneOf.2.discount_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"upgrade_configuration.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"upgrade_configuration","typeLabel":"object"},"downgrade_allowed":{"type":"boolean","description":"By default downgrading to a cheaper plan can only be done at the end of the billing cycle\nThis is done to avoid the need to refund unused part of the current billing cycle\nfrom the old contract\nHowever, WbCustomer may override this behaviour, and force immediate downgrade by\nsetting this argument to `true`.\nDefault is `false`","uniqueKey":"downgrade_allowed","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"upgrade_configuration":{"activation":{"type":"next_cycle"},"plan_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","unit_configuration":{},"unit_count_configuration":{},"upgrade_strategy":"new_plan","discount_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","pricing_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670"},"downgrade_allowed":true}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"8b3f82f3-cb0b-463c-951a-3b56ace5cebe":{"description":"Upgraded","content":{"application/json":{"schema":{"type":"object","description":"Estimate of the price of the Contract Upgrade\nWhen contract upgrade is performed mid-cycle, but the billing period is kept the same,\nthe unused part of the current contract billing period, as well as the unused part\nof the new contract's billing period will be accordingly pro-rated\nFor example, if the contract is paid on the 1st of every month\nand the upgrade is performed on 16th, we pro-rate as follows:\n- days 1~15 of the old contract are considered \"used\", remainder is \"unused\"\nthus, days 16~end-of-month will be pro-rated\n- for the new contract, days 1~15 will be unused and pro-rated","required":["remains_to_pay_current_contract","price_on_new_contract","pro_rate_old_contract","pro_rate_new_contract","usage_old_contract","upgrade_cost_breakdown","is_downgrade"],"properties":{"is_downgrade":{"type":"boolean","description":"If contract change is downgrade (a move to a cheaper contract), then this will be set to\nTrue. Downgrade can not be performed mid-cycle, only at the end of the billing cycle","isRequired":true,"uniqueKey":"is_downgrade","typeLabel":"boolean"},"price_on_new_contract":{"type":"array","items":{"type":"object","description":"Helper type that reports both Invoice and its InvoiceItems","required":["invoice","invoice_items"],"properties":{"invoice":{"type":"object","description":"Overall information about the issued invoice","required":["id","customer_id","date","status","total","currency","deposit_transaction_status","due_date","invoice_number"],"properties":{"currency":{"type":"string","description":"A supported currency\n\nThe format for parsing and reading is the lowercased\nISO 4217 currency code (e.g. \"usd\")","enum":["usd","eur","gbp","brl","ars"],"isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.currency","typeLabel":"enum\u003cstring>"},"customer_id":{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.customer_id","typeLabel":"string"},"date":{"type":"string","format":"date-time","description":"Date when the invoice was created","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.date","typeLabel":"string\u003cdate-time>"},"deposit_transaction_status":{"type":"string","description":"Status of the deposit transaction creation, which\nexplains, whent the deposit transaction wasn't\ncreated, why it's the case.\n\nThis status isn't meant for (wb_)customer display\nas it's quite technical. For this purpose,\nsee DetailedInvoiceStatus.\n\nWhen the invoice holds a deposit transaction id,\nthen this status is *always* Created (enforced by\nDB constraint)","enum":["not_processed","customer_not_active","canceled_unpaid_transaction","canceled_self_handled_payment","no_valid_payment_method","sum_smaller_than_payment_threshold","created"],"isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.deposit_transaction_status","typeLabel":"enum\u003cstring>"},"due_date":{"type":"string","format":"date-time","description":"Date the invoice is due","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.due_date","typeLabel":"string\u003cdate-time>"},"id":{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.id","typeLabel":"string"},"invoice_number":{"type":"object","description":"An invoice number, unique per wb_customer\n\nThe current format is\n`\u003cwb_customer-customer-key>-\u003cyear>-\u003ccustomer-sequential-number>`","required":["number"],"properties":{"number":{"type":"string","description":"The invoice number, unique","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.invoice_number.number","typeLabel":"string"}},"isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.invoice_number","typeLabel":"object"},"status":{"type":"string","description":"Status of the invoice:\n* PendingValidation - Invoice awaits manual review\n* ReadyForPayment - invoice can be paid\n* Paid - invoice was paid","enum":["pending_validation","ready_for_payment","paid"],"isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.status","typeLabel":"enum\u003cstring>"},"total":{"type":"string","description":"Total sum of the invoice","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.total","typeLabel":"string"},"deposit_transaction_id":{"oneOf":[{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","uniqueKey":"price_on_new_contract.items.[INDEX].invoice.deposit_transaction_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"price_on_new_contract.items.[INDEX].invoice.deposit_transaction_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.deposit_transaction_id","typeLabel":"string | null"},"external_reference":{"oneOf":[{"type":"string","description":"Optional reference in a non-wingback system","uniqueKey":"price_on_new_contract.items.[INDEX].invoice.external_reference.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional reference in a non-wingback system","uniqueKey":"price_on_new_contract.items.[INDEX].invoice.external_reference.oneOf.1","typeLabel":"null"}],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice.external_reference","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice","typeLabel":"object"},"invoice_items":{"type":"array","items":{"type":"object","description":"Invoice Item, or in other words Invoice Line.\nAn invoice always consists of one or more Invoice Item, which is a concrete\ncharge for a concrete feature. The invoice item contains full information about:\n* the feature that is being billed for\n* the amount of units of the feature that is being charged for\n* discounts and taxes applied","required":["id","status","scheduling_policy","charge_id","name","unit_price","unit_count","subtotal","total_excluding_tax","total_including_tax","currency","due_date"],"properties":{"charge_id":{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].charge_id","typeLabel":"string"},"currency":{"type":"string","description":"A supported currency\n\nThe format for parsing and reading is the lowercased\nISO 4217 currency code (e.g. \"usd\")","enum":["usd","eur","gbp","brl","ars"],"isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].currency","typeLabel":"enum\u003cstring>"},"due_date":{"type":"string","format":"date-time","description":"Due date of this invoice item","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].due_date","typeLabel":"string\u003cdate-time>"},"id":{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","description":"Name of the feature this InvoiceItem is for","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].name","typeLabel":"string"},"scheduling_policy":{"type":"string","description":"Scheduling policy for invoice items:\n* Immediate - Invoicing (and payments if automated) must be immediate\n* Periodic - Scheduling is normal for the contract, allowing batches","enum":["immediate","periodic"],"isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].scheduling_policy","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Status of the invoice item:\n* PendingValidation - invoice item awaits manual review\n* Validated - invoice item is ready to be attached to an invoice","enum":["pending_validation","validated"],"isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"subtotal":{"type":"string","description":"Subtotal. Unit price * unit count","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].subtotal","typeLabel":"string"},"total_excluding_tax":{"type":"string","description":"Subtotal minus the discount","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].total_excluding_tax","typeLabel":"string"},"total_including_tax":{"type":"string","description":"Total excluding tax with added tax","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].total_including_tax","typeLabel":"string"},"unit_count":{"type":"string","description":"Number of units. For flat price features this will be 1","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].unit_count","typeLabel":"string"},"unit_price":{"type":"string","description":"Price of each unit of this feature","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].unit_price","typeLabel":"string"},"description":{"oneOf":[{"type":"string","description":"Description of this InvoiceItem","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Description of this InvoiceItem","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].description","typeLabel":"string | null"},"discount_amount":{"oneOf":[{"type":"string","description":"Amount discounted","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].discount_amount.oneOf.0","typeLabel":"string"},{"type":"null","description":"Amount discounted","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].discount_amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].discount_amount","typeLabel":"string | null"},"discount_description":{"oneOf":[{"type":"string","description":"Description of the discount used for this invoice item","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].discount_description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Description of the discount used for this invoice item","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].discount_description.oneOf.1","typeLabel":"null"}],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].discount_description","typeLabel":"string | null"},"invoice_id":{"oneOf":[{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].invoice_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].invoice_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].invoice_id","typeLabel":"string | null"},"tax_amount":{"oneOf":[{"type":"string","description":"Amount of tax","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].tax_amount.oneOf.0","typeLabel":"string"},{"type":"null","description":"Amount of tax","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].tax_amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].tax_amount","typeLabel":"string | null"},"tax_code":{"oneOf":[{"type":"string","description":"Tax code","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].tax_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Tax code","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].tax_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].tax_code","typeLabel":"string | null"},"tax_policy":{"oneOf":[{"type":"string","description":"Two options for handling taxes:\n- TaxIncluded means that unit_price already includes tax, and so true unit_price\nequals to: unit_price = true unit_price + tax. True unit_price will be adjusted\non the invoice so that the final price matches desired price in the unit_price\nfield\n- TaxOnTop means that unit_price is true unit_price, tax will be added on top, and\nunit_price will not be changed as a result of the tax calculation","enum":["tax_included","tax_on_top"],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].tax_policy.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].tax_policy.oneOf.1","typeLabel":"null"}],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].tax_policy","typeLabel":"enum\u003cstring> | null"},"withdrawal_transaction_id":{"oneOf":[{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].withdrawal_transaction_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].withdrawal_transaction_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX].withdrawal_transaction_id","typeLabel":"string | null"}},"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items.items.[INDEX]","typeLabel":"object"},"description":"InvoiceItems of the Invoice","isRequired":true,"uniqueKey":"price_on_new_contract.items.[INDEX].invoice_items","typeLabel":"object[]"}},"uniqueKey":"price_on_new_contract.items.[INDEX]","typeLabel":"object"},"description":"Estimated invoices of the first billing period for the new Contract","isRequired":true,"uniqueKey":"price_on_new_contract","typeLabel":"object[]"},"pro_rate_new_contract":{"type":"string","description":"Pro rated amount on the new contract. Deprecated, please use UpgradeCostBreakdown.","isRequired":true,"uniqueKey":"pro_rate_new_contract","typeLabel":"string"},"pro_rate_old_contract":{"type":"string","description":"Pro rated amount for the current contract. Deprecated, please use UpgradeCostBreakdown.","isRequired":true,"uniqueKey":"pro_rate_old_contract","typeLabel":"string"},"remains_to_pay_current_contract":{"type":"array","items":{"type":"object","description":"Helper type that reports both Invoice and its InvoiceItems","required":["invoice","invoice_items"],"properties":{"invoice":{"type":"object","description":"Overall information about the issued invoice","required":["id","customer_id","date","status","total","currency","deposit_transaction_status","due_date","invoice_number"],"properties":{"currency":{"type":"string","description":"A supported currency\n\nThe format for parsing and reading is the lowercased\nISO 4217 currency code (e.g. \"usd\")","enum":["usd","eur","gbp","brl","ars"],"isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.currency","typeLabel":"enum\u003cstring>"},"customer_id":{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.customer_id","typeLabel":"string"},"date":{"type":"string","format":"date-time","description":"Date when the invoice was created","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.date","typeLabel":"string\u003cdate-time>"},"deposit_transaction_status":{"type":"string","description":"Status of the deposit transaction creation, which\nexplains, whent the deposit transaction wasn't\ncreated, why it's the case.\n\nThis status isn't meant for (wb_)customer display\nas it's quite technical. For this purpose,\nsee DetailedInvoiceStatus.\n\nWhen the invoice holds a deposit transaction id,\nthen this status is *always* Created (enforced by\nDB constraint)","enum":["not_processed","customer_not_active","canceled_unpaid_transaction","canceled_self_handled_payment","no_valid_payment_method","sum_smaller_than_payment_threshold","created"],"isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.deposit_transaction_status","typeLabel":"enum\u003cstring>"},"due_date":{"type":"string","format":"date-time","description":"Date the invoice is due","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.due_date","typeLabel":"string\u003cdate-time>"},"id":{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.id","typeLabel":"string"},"invoice_number":{"type":"object","description":"An invoice number, unique per wb_customer\n\nThe current format is\n`\u003cwb_customer-customer-key>-\u003cyear>-\u003ccustomer-sequential-number>`","required":["number"],"properties":{"number":{"type":"string","description":"The invoice number, unique","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.invoice_number.number","typeLabel":"string"}},"isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.invoice_number","typeLabel":"object"},"status":{"type":"string","description":"Status of the invoice:\n* PendingValidation - Invoice awaits manual review\n* ReadyForPayment - invoice can be paid\n* Paid - invoice was paid","enum":["pending_validation","ready_for_payment","paid"],"isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.status","typeLabel":"enum\u003cstring>"},"total":{"type":"string","description":"Total sum of the invoice","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.total","typeLabel":"string"},"deposit_transaction_id":{"oneOf":[{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.deposit_transaction_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.deposit_transaction_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.deposit_transaction_id","typeLabel":"string | null"},"external_reference":{"oneOf":[{"type":"string","description":"Optional reference in a non-wingback system","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.external_reference.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional reference in a non-wingback system","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.external_reference.oneOf.1","typeLabel":"null"}],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice.external_reference","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice","typeLabel":"object"},"invoice_items":{"type":"array","items":{"type":"object","description":"Invoice Item, or in other words Invoice Line.\nAn invoice always consists of one or more Invoice Item, which is a concrete\ncharge for a concrete feature. The invoice item contains full information about:\n* the feature that is being billed for\n* the amount of units of the feature that is being charged for\n* discounts and taxes applied","required":["id","status","scheduling_policy","charge_id","name","unit_price","unit_count","subtotal","total_excluding_tax","total_including_tax","currency","due_date"],"properties":{"charge_id":{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].charge_id","typeLabel":"string"},"currency":{"type":"string","description":"A supported currency\n\nThe format for parsing and reading is the lowercased\nISO 4217 currency code (e.g. \"usd\")","enum":["usd","eur","gbp","brl","ars"],"isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].currency","typeLabel":"enum\u003cstring>"},"due_date":{"type":"string","format":"date-time","description":"Due date of this invoice item","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].due_date","typeLabel":"string\u003cdate-time>"},"id":{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","description":"Name of the feature this InvoiceItem is for","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].name","typeLabel":"string"},"scheduling_policy":{"type":"string","description":"Scheduling policy for invoice items:\n* Immediate - Invoicing (and payments if automated) must be immediate\n* Periodic - Scheduling is normal for the contract, allowing batches","enum":["immediate","periodic"],"isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].scheduling_policy","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Status of the invoice item:\n* PendingValidation - invoice item awaits manual review\n* Validated - invoice item is ready to be attached to an invoice","enum":["pending_validation","validated"],"isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"subtotal":{"type":"string","description":"Subtotal. Unit price * unit count","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].subtotal","typeLabel":"string"},"total_excluding_tax":{"type":"string","description":"Subtotal minus the discount","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].total_excluding_tax","typeLabel":"string"},"total_including_tax":{"type":"string","description":"Total excluding tax with added tax","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].total_including_tax","typeLabel":"string"},"unit_count":{"type":"string","description":"Number of units. For flat price features this will be 1","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].unit_count","typeLabel":"string"},"unit_price":{"type":"string","description":"Price of each unit of this feature","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].unit_price","typeLabel":"string"},"description":{"oneOf":[{"type":"string","description":"Description of this InvoiceItem","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Description of this InvoiceItem","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].description","typeLabel":"string | null"},"discount_amount":{"oneOf":[{"type":"string","description":"Amount discounted","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].discount_amount.oneOf.0","typeLabel":"string"},{"type":"null","description":"Amount discounted","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].discount_amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].discount_amount","typeLabel":"string | null"},"discount_description":{"oneOf":[{"type":"string","description":"Description of the discount used for this invoice item","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].discount_description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Description of the discount used for this invoice item","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].discount_description.oneOf.1","typeLabel":"null"}],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].discount_description","typeLabel":"string | null"},"invoice_id":{"oneOf":[{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].invoice_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].invoice_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].invoice_id","typeLabel":"string | null"},"tax_amount":{"oneOf":[{"type":"string","description":"Amount of tax","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].tax_amount.oneOf.0","typeLabel":"string"},{"type":"null","description":"Amount of tax","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].tax_amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].tax_amount","typeLabel":"string | null"},"tax_code":{"oneOf":[{"type":"string","description":"Tax code","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].tax_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Tax code","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].tax_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].tax_code","typeLabel":"string | null"},"tax_policy":{"oneOf":[{"type":"string","description":"Two options for handling taxes:\n- TaxIncluded means that unit_price already includes tax, and so true unit_price\nequals to: unit_price = true unit_price + tax. True unit_price will be adjusted\non the invoice so that the final price matches desired price in the unit_price\nfield\n- TaxOnTop means that unit_price is true unit_price, tax will be added on top, and\nunit_price will not be changed as a result of the tax calculation","enum":["tax_included","tax_on_top"],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].tax_policy.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].tax_policy.oneOf.1","typeLabel":"null"}],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].tax_policy","typeLabel":"enum\u003cstring> | null"},"withdrawal_transaction_id":{"oneOf":[{"type":"string","description":"Unique identifier of an object. Consists of object class prefix and a UUID","example":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].withdrawal_transaction_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].withdrawal_transaction_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX].withdrawal_transaction_id","typeLabel":"string | null"}},"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items.items.[INDEX]","typeLabel":"object"},"description":"InvoiceItems of the Invoice","isRequired":true,"uniqueKey":"remains_to_pay_current_contract.items.[INDEX].invoice_items","typeLabel":"object[]"}},"uniqueKey":"remains_to_pay_current_contract.items.[INDEX]","typeLabel":"object"},"description":"Invoices for the current Contract","isRequired":true,"uniqueKey":"remains_to_pay_current_contract","typeLabel":"object[]"},"upgrade_cost_breakdown":{"type":"object","description":"Additional information about upgrade costs","required":["pro_rate_old_contract","pro_rate_new_contract","usage_old_contract","total","new_contract_cost_pro_rated","old_contract","new_contract"],"properties":{"new_contract":{"type":"object","description":"Describes the calculation of pro-rated cost for contract upgrade","required":["full_cost","cycle","cost_pro_rated","pro_rate","usage","time_on_contract"],"properties":{"cost_pro_rated":{"type":"string","description":"The amount that IS charged (cost - pro rate)","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract.cost_pro_rated","typeLabel":"string"},"cycle":{"type":"string","description":"Enum that lists supported payment cycles for contracts:\n* Once - one-time payment\n* Constant - one-time payment for the duration of the contract\n* Week - contract is paid weekly\n* Month - contract is paid monthly\n* Quarter - contract is paid every quarter\n* Year - contract is paid yearly","enum":["once","hour","day","week","month","quarter","year","constant"],"isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract.cycle","typeLabel":"enum\u003cstring>"},"full_cost":{"type":"string","description":"Cost if the contract were used for the whole period","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract.full_cost","typeLabel":"string"},"pro_rate":{"type":"string","description":"Pro rated amount","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract.pro_rate","typeLabel":"string"},"time_on_contract":{"type":"object","description":"Additional description of how much time was spent on the contract in the billing period\nof the upgrade","properties":{"period":{"oneOf":[{"type":"object","description":"Billing period of the contract. For example, for contracts that are paid monthly,\na new billing period would be created each month. For Constant or Once contracts, a single\nperiod would be created with empty \"end\" value","required":["start","end"],"properties":{"end":{"type":"string","format":"date-time","description":"End of the billing period","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract.period.oneOf.0.end","typeLabel":"string\u003cdate-time>"},"start":{"type":"string","format":"date-time","description":"Start of the billing period","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract.period.oneOf.0.start","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract.period.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract.period.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract.period","typeLabel":"object | null"},"time_used":{"oneOf":[{"type":"object","description":"How much time was counted as being on the contract in the given period\nSince billing periods of different duration are supported, we describe the time in terms\nof time units. For example, for monthly contracts, the unit of time would be a day,\nbut for contracts paid yearly, the unit of time is month","required":["unit_count","unit"],"properties":{"unit":{"type":"string","description":"Type of time unit","enum":["hour","day","month"],"isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract.time_used.oneOf.0.unit","typeLabel":"enum\u003cstring>"},"unit_count":{"type":"integer","format":"int32","description":"The number of time units","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract.time_used.oneOf.0.unit_count","typeLabel":"integer\u003cint32>"}},"uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract.time_used.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract.time_used.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract.time_used","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract.time_on_contract","typeLabel":"object"},"usage":{"type":"string","description":"cost of all usage-based features","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract.usage","typeLabel":"string"}},"isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract","typeLabel":"object"},"new_contract_cost_pro_rated":{"type":"string","description":"price of the new contract without discount from old contract applied","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.new_contract_cost_pro_rated","typeLabel":"string"},"old_contract":{"type":"object","description":"Describes the calculation of pro-rated cost for contract upgrade","required":["full_cost","cycle","cost_pro_rated","pro_rate","usage","time_on_contract"],"properties":{"cost_pro_rated":{"type":"string","description":"The amount that IS charged (cost - pro rate)","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract.cost_pro_rated","typeLabel":"string"},"cycle":{"type":"string","description":"Enum that lists supported payment cycles for contracts:\n* Once - one-time payment\n* Constant - one-time payment for the duration of the contract\n* Week - contract is paid weekly\n* Month - contract is paid monthly\n* Quarter - contract is paid every quarter\n* Year - contract is paid yearly","enum":["once","hour","day","week","month","quarter","year","constant"],"isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract.cycle","typeLabel":"enum\u003cstring>"},"full_cost":{"type":"string","description":"Cost if the contract were used for the whole period","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract.full_cost","typeLabel":"string"},"pro_rate":{"type":"string","description":"Pro rated amount","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract.pro_rate","typeLabel":"string"},"time_on_contract":{"type":"object","description":"Additional description of how much time was spent on the contract in the billing period\nof the upgrade","properties":{"period":{"oneOf":[{"type":"object","description":"Billing period of the contract. For example, for contracts that are paid monthly,\na new billing period would be created each month. For Constant or Once contracts, a single\nperiod would be created with empty \"end\" value","required":["start","end"],"properties":{"end":{"type":"string","format":"date-time","description":"End of the billing period","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract.period.oneOf.0.end","typeLabel":"string\u003cdate-time>"},"start":{"type":"string","format":"date-time","description":"Start of the billing period","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract.period.oneOf.0.start","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract.period.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract.period.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract.period","typeLabel":"object | null"},"time_used":{"oneOf":[{"type":"object","description":"How much time was counted as being on the contract in the given period\nSince billing periods of different duration are supported, we describe the time in terms\nof time units. For example, for monthly contracts, the unit of time would be a day,\nbut for contracts paid yearly, the unit of time is month","required":["unit_count","unit"],"properties":{"unit":{"type":"string","description":"Type of time unit","enum":["hour","day","month"],"isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract.time_used.oneOf.0.unit","typeLabel":"enum\u003cstring>"},"unit_count":{"type":"integer","format":"int32","description":"The number of time units","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract.time_used.oneOf.0.unit_count","typeLabel":"integer\u003cint32>"}},"uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract.time_used.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract.time_used.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract.time_used","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract.time_on_contract","typeLabel":"object"},"usage":{"type":"string","description":"cost of all usage-based features","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract.usage","typeLabel":"string"}},"isRequired":true,"uniqueKey":"upgrade_cost_breakdown.old_contract","typeLabel":"object"},"pro_rate_new_contract":{"type":"string","description":"Pro rated amount for the new contract. Deprecated, please use ContractProRateBreakdown.","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.pro_rate_new_contract","typeLabel":"string"},"pro_rate_old_contract":{"type":"string","description":"Pro rated amount for the current contract. Deprecated, please use ContractProRateBreakdown.","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.pro_rate_old_contract","typeLabel":"string"},"total":{"type":"string","description":"Total upgrade cost","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.total","typeLabel":"string"},"usage_old_contract":{"type":"string","description":"If old contract has usage-priced features, this indicates how much\nwill be paid for usage on upgrade. Deprecated, please use ContractProRateBreakdown.","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.usage_old_contract","typeLabel":"string"},"time_on_new_contract":{"oneOf":[{"type":"object","description":"This is used to report how many days or month we consider as used on old contract,\nand how many will be used on the new contract during contract upgrade\nBecause depending on the billing cycle duration, the resolution to which we compute this\nchanges, we supply value and units separately. For example, for monthly contracts\nwe will report number of days used, and for yearly - number of months","required":["value","unit"],"properties":{"unit":{"type":"string","description":"Type of time unit","enum":["hour","day","month"],"isRequired":true,"uniqueKey":"upgrade_cost_breakdown.time_on_new_contract.oneOf.0.unit","typeLabel":"enum\u003cstring>"},"value":{"type":"integer","format":"int32","description":"Amount of time units","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.time_on_new_contract.oneOf.0.value","typeLabel":"integer\u003cint32>"}},"uniqueKey":"upgrade_cost_breakdown.time_on_new_contract.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"upgrade_cost_breakdown.time_on_new_contract.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_cost_breakdown.time_on_new_contract","typeLabel":"object | null"},"time_on_old_contract":{"oneOf":[{"type":"object","description":"This is used to report how many days or month we consider as used on old contract,\nand how many will be used on the new contract during contract upgrade\nBecause depending on the billing cycle duration, the resolution to which we compute this\nchanges, we supply value and units separately. For example, for monthly contracts\nwe will report number of days used, and for yearly - number of months","required":["value","unit"],"properties":{"unit":{"type":"string","description":"Type of time unit","enum":["hour","day","month"],"isRequired":true,"uniqueKey":"upgrade_cost_breakdown.time_on_old_contract.oneOf.0.unit","typeLabel":"enum\u003cstring>"},"value":{"type":"integer","format":"int32","description":"Amount of time units","isRequired":true,"uniqueKey":"upgrade_cost_breakdown.time_on_old_contract.oneOf.0.value","typeLabel":"integer\u003cint32>"}},"uniqueKey":"upgrade_cost_breakdown.time_on_old_contract.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"upgrade_cost_breakdown.time_on_old_contract.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_cost_breakdown.time_on_old_contract","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"upgrade_cost_breakdown","typeLabel":"object"},"usage_old_contract":{"type":"string","description":"If old contract has usage-priced features, this indicates how much\nwill be paid for usage on upgrade. Deprecated, please use UpgradeCostBreakdown.","isRequired":true,"uniqueKey":"usage_old_contract","typeLabel":"string"},"new_contract_period":{"oneOf":[{"type":"object","description":"Billing period of the contract. For example, for contracts that are paid monthly,\na new billing period would be created each month. For Constant or Once contracts, a single\nperiod would be created with empty \"end\" value","required":["start","end"],"properties":{"end":{"type":"string","format":"date-time","description":"End of the billing period","isRequired":true,"uniqueKey":"new_contract_period.oneOf.0.end","typeLabel":"string\u003cdate-time>"},"start":{"type":"string","format":"date-time","description":"Start of the billing period","isRequired":true,"uniqueKey":"new_contract_period.oneOf.0.start","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"new_contract_period.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"new_contract_period.oneOf.1","typeLabel":"null"}],"uniqueKey":"new_contract_period","typeLabel":"object | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"is_downgrade":true,"price_on_new_contract":[{"invoice":{"currency":"usd","customer_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","date":"2023-11-07T05:31:56Z","deposit_transaction_status":"not_processed","due_date":"2023-11-07T05:31:56Z","id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","invoice_number":{"number":"\u003cstring>"},"status":"pending_validation","total":"\u003cstring>","deposit_transaction_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","external_reference":"\u003cstring>"},"invoice_items":[{"charge_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","currency":"usd","due_date":"2023-11-07T05:31:56Z","id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","name":"\u003cstring>","scheduling_policy":"immediate","status":"pending_validation","subtotal":"\u003cstring>","total_excluding_tax":"\u003cstring>","total_including_tax":"\u003cstring>","unit_count":"\u003cstring>","unit_price":"\u003cstring>","description":"\u003cstring>","discount_amount":"\u003cstring>","discount_description":"\u003cstring>","invoice_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","tax_amount":"\u003cstring>","tax_code":"\u003cstring>","tax_policy":"tax_included","withdrawal_transaction_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670"}]}],"pro_rate_new_contract":"\u003cstring>","pro_rate_old_contract":"\u003cstring>","remains_to_pay_current_contract":[{"invoice":{"currency":"usd","customer_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","date":"2023-11-07T05:31:56Z","deposit_transaction_status":"not_processed","due_date":"2023-11-07T05:31:56Z","id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","invoice_number":{"number":"\u003cstring>"},"status":"pending_validation","total":"\u003cstring>","deposit_transaction_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","external_reference":"\u003cstring>"},"invoice_items":[{"charge_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","currency":"usd","due_date":"2023-11-07T05:31:56Z","id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","name":"\u003cstring>","scheduling_policy":"immediate","status":"pending_validation","subtotal":"\u003cstring>","total_excluding_tax":"\u003cstring>","total_including_tax":"\u003cstring>","unit_count":"\u003cstring>","unit_price":"\u003cstring>","description":"\u003cstring>","discount_amount":"\u003cstring>","discount_description":"\u003cstring>","invoice_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670","tax_amount":"\u003cstring>","tax_code":"\u003cstring>","tax_policy":"tax_included","withdrawal_transaction_id":"Cust_c40bea18-c0c9-44b1-bd0c-43f5283e1670"}]}],"upgrade_cost_breakdown":{"new_contract":{"cost_pro_rated":"\u003cstring>","cycle":"once","full_cost":"\u003cstring>","pro_rate":"\u003cstring>","time_on_contract":{"period":{"end":"2023-11-07T05:31:56Z","start":"2023-11-07T05:31:56Z"},"time_used":{"unit":"hour","unit_count":123}},"usage":"\u003cstring>"},"new_contract_cost_pro_rated":"\u003cstring>","old_contract":{"cost_pro_rated":"\u003cstring>","cycle":"once","full_cost":"\u003cstring>","pro_rate":"\u003cstring>","time_on_contract":{"period":{"end":"2023-11-07T05:31:56Z","start":"2023-11-07T05:31:56Z"},"time_used":{"unit":"hour","unit_count":123}},"usage":"\u003cstring>"},"pro_rate_new_contract":"\u003cstring>","pro_rate_old_contract":"\u003cstring>","total":"\u003cstring>","usage_old_contract":"\u003cstring>","time_on_new_contract":{"unit":"hour","value":123},"time_on_old_contract":{"unit":"hour","value":123}},"usage_old_contract":"\u003cstring>","new_contract_period":{"end":"2023-11-07T05:31:56Z","start":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"0789a6de-ec6c-4e6d-a7b0-cf52339aa84e":{"api-key":{"type":"apiKey","in":"header","name":"wb-key","scopes":[]}},"3ca103ed-0f02-4dbe-9cfb-2eed681fa4f1":{"wb_user_cookie":{"type":"apiKey","in":"cookie","name":"app-session","scopes":[]}}},"servers":{"a4003425-b8cc-41a9-b3c3-854191252b9c":{"url":"http://127.0.0.1:8080","description":"Local server"},"bc411509-c143-4d72-a409-c7938d980f87":{"url":"https://api.app.test.wingback.com","description":"Testing server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"wb-key","scopes":[]},"schema":{"title":"wb-key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"api-key","name":"wb-key"}],"title":"api-key"},{"schemes":[{"scheme":{"type":"apiKey","in":"cookie","name":"app-session","scopes":[]},"schema":{"title":"app-session","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"wb_user_cookie","name":"app-session"}],"title":"wb_user_cookie"}]},"originalFileLocation":"openapi.json"},"subdomain":"wingback","siteName":"Wingback","title":"Estimate Upgrade Costss - Wingback","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-06T22:42:17.664Z","originalFileLocation":"dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate.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=\"description\" content=\"Estimate plan upgrade costs.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Wingback\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/wingback/UnON2ZxPucVjTp_q/_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/wingback/UnON2ZxPucVjTp_q/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/wingback/UnON2ZxPucVjTp_q/_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/wingback/UnON2ZxPucVjTp_q/_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/wingback/UnON2ZxPucVjTp_q/_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/wingback/UnON2ZxPucVjTp_q/_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/wingback/UnON2ZxPucVjTp_q/_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/wingback/UnON2ZxPucVjTp_q/_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/wingback/UnON2ZxPucVjTp_q/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Estimate Upgrade Costss - Wingback\">\u003cmeta data-mint-head property=\"og:description\" content=\"Estimate plan upgrade costs.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Wingback\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://wingback.mintlify.app/_mintlify/api/og/v2?division=Contract\u0026amp;title=Estimate+Upgrade+Costss\u0026amp;description=Estimate+plan+upgrade+costs.\u0026amp;theme=b99535fc2fd6236ca0523fc2\u0026amp;signature=ac36638cd3a5f198cdecd2c0dfd490cce9ba84b749debaac9809287988a48ff5\">\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=\"Estimate Upgrade Costss - Wingback\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Estimate plan upgrade costs.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://wingback.mintlify.app/_mintlify/api/og/v2?division=Contract\u0026amp;title=Estimate+Upgrade+Costss\u0026amp;description=Estimate+plan+upgrade+costs.\u0026amp;theme=b99535fc2fd6236ca0523fc2\u0026amp;signature=ac36638cd3a5f198cdecd2c0dfd490cce9ba84b749debaac9809287988a48ff5\">\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/wingback/UnON2ZxPucVjTp_q/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Wingback\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#EF3B4D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs-int.wingback.com/#organization\",\"name\":\"Wingback\",\"url\":\"https://docs-int.wingback.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/wingback/GadBRdJt85xVxME0/media/logo/light.svg?fit=max\u0026auto=format\u0026n=GadBRdJt85xVxME0\u0026q=85\u0026s=93b61d8945910151ec8df39c2b469c8e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs-int.wingback.com#website\",\"name\":\"Wingback\",\"url\":\"https://docs-int.wingback.com\",\"publisher\":{\"@id\":\"https://docs-int.wingback.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate#webpage\",\"url\":\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate\",\"name\":\"Estimate Upgrade Costss\",\"description\":\"Estimate plan upgrade costs.\",\"dateModified\":\"2026-01-06T22:42:17.664Z\",\"isPartOf\":{\"@id\":\"https://docs-int.wingback.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs-int.wingback.com/dev/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contract\",\"item\":\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Estimate Upgrade Costss\",\"item\":\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate#apireference\",\"headline\":\"Estimate Upgrade Costss\",\"name\":\"Estimate Upgrade Costss\",\"description\":\"Estimate plan upgrade costs.\",\"url\":\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate\",\"mainEntityOfPage\":{\"@id\":\"https://docs-int.wingback.com/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate#webpage\"},\"dateModified\":\"2026-01-06T22:42:17.664Z\",\"publisher\":{\"@id\":\"https://docs-int.wingback.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs-int.wingback.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Wingback\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Wingback","nav":{"global":null,"tabs":[{"tab":"User Guides","pages":[{"title":"User Guides","href":"/user/welcome"}]},{"tab":"User Manuals","pages":[{"title":"User Manuals","href":"/manual/introduction"}]},{"tab":"SGI Fundamentals","pages":[{"title":"SGI Fundamentals","href":"/fundamentals/vocab/introduction"}]},{"tab":"Developer Documentation","groups":[{"group":"Welcome","pages":[{"title":"Introduction","href":"/dev/welcome"}]},{"group":"Guides","pages":[{"title":"Working with Features and Entitlements","href":"/dev/guides/features-entitlements"},{"title":"Integrating Wingback into your Signup Flow","href":"/dev/guides/integrate-wingback-signup-flow"},{"title":"Billing Portal Integration","href":"/dev/guides/billing-portal"},{"title":"Adding a Dynamic Pricing Page to Your Website","href":"/dev/guides/pricing-page"},{"title":"Metering Usage","href":"/dev/guides/metering"},{"title":"Webhooks","href":"/dev/guides/webhooks"}]},{"group":"Wingback.js","pages":[{"title":"Introduction","href":"/dev/wingback-js/introduction"},{"title":"Pricing Pages","href":"/dev/wingback-js/pricing"}]},{"group":"Advanced","pages":[{"title":"Variable Invoicing Schedules","href":"/dev/advanced/variable-invoicing-schedules"}]},{"group":"API Reference","pages":[{"title":"Introduction","href":"/dev/api-reference/introduction"},{"group":"Customer","pages":[{"title":"Create New Customer","openapi":"POST /v1/c/customer","href":"/dev/api-reference/customer/post_c_customer"},{"title":"Get Customer","openapi":"GET /v1/c/customer/{customer_id}","href":"/dev/api-reference/customer/get_c_customer_customerid"},{"title":"Search for Customers","openapi":"GET /v1/c/customer","href":"/dev/api-reference/customer/get_c_customer"},{"title":"Activate Customer","openapi":"POST /v1/c/customer/{customer_id}/activate","href":"/dev/api-reference/customer/post_c_customer_customerid_activate"},{"title":"Freeze/Inactivate Customer","openapi":"POST /v1/c/customer/{customer_id}/inactivate","href":"/dev/api-reference/customer/post_c_customer_customerid_inactivate"},{"title":"Add Address","openapi":"POST /v1/c/customer/{customer_id}/address","href":"/dev/api-reference/customer/post_c_customer_customerid_address"},{"title":"Get Address","openapi":"GET /v1/c/customer/{customer_id}/address","href":"/dev/api-reference/customer/get_c_customer_customerid_address"},{"title":"Delete Address","openapi":"DELETE /v1/c/customer/{customer_id}/address","href":"/dev/api-reference/customer/delete_c_customer_customerid_address"}]},{"group":"Contract","pages":[{"title":"Subscribe Customer to a Plan","openapi":"POST /v1/c/contract","href":"/dev/api-reference/contract/post_c_contract"},{"title":"Retrieve Contract Details","openapi":"GET /v1/c/contract/{contract_id}","href":"/dev/api-reference/contract/get_c_contract_contractid"},{"title":"Upgrade/Change Plan","openapi":"POST /v1/c/contract/{contract_id}/upgrade","description":"Perform a mid-cycle contract upgrade.","href":"/dev/api-reference/contract/post_c_contract_contractid_upgrade"},{"title":"Estimate Upgrade Costss","openapi":"POST /v1/c/contract/{contract_id}/upgrade_estimate","href":"/dev/api-reference/contract/post_c_contract_contractid_upgrade_estimate"}]},{"group":"Billing Portal","pages":[{"title":"Login a Customer to the Self-Serve Portal","openapi":"POST /v1/c/customer/authenticate","description":"Create an authentication token for a customer and return a URL for accessing their self-serve billing portal.","href":"/dev/api-reference/billing-portal/post_c_customer_authenticate"}]},{"group":"Entitlements","pages":[{"title":"Get Access Entitlements","openapi":"GET /v1/c/entitlement/{customer_id}/access","href":"/dev/api-reference/entitlement/get_c_entitlement_customerid_access"},{"title":"Get Billing Entitlements","openapi":"GET /v1/c/entitlement/{customer_id}/billing","href":"/dev/api-reference/entitlement/get_c_entitlement_customerid_billing"}]},{"group":"Usage","pages":[{"title":"Report Single Event","openapi":"POST /v1/c/usage","href":"/dev/api-reference/usage/post_c_usage"},{"title":"Bulk Usage Upload","openapi":"POST /v1/c/usage/bulk","href":"/dev/api-reference/usage/post_c_usage_bulk"}]},{"group":"Payment","pages":[{"title":"Create Payment Session","openapi":"POST /v1/c/customer/{customer_id}/payment/session","href":"/dev/api-reference/payment/post_c_customer_customerid_payment_session"},{"title":"Add Payment Method","openapi":"POST /v1/c/customer/{customer_id}/payment/method","href":"/dev/api-reference/payment/post_c_customer_customerid_payment_method"},{"title":"List saved Payment Methods","openapi":"GET /v1/c/customer/{customer_id}/payment/method","href":"/dev/api-reference/payment/get_c_customer_customerid_payment_method"},{"title":"Get Saved Payment Method","openapi":"GET /v1/c/customer/{customer_id}/payment/method/{method_id}","href":"/dev/api-reference/payment/get_c_customer_customerid_payment_method_methodid"},{"title":"List saved Payment Methods","openapi":"GET /v1/c/customer/{customer_id}/payment/method","href":"/dev/api-reference/payment/get_c_customer_customerid_payment_method_selection"},{"title":"Set Default Payment Method","openapi":"POST /v1/c/customer/{customer_id}/payment/method_selection","href":"/dev/api-reference/payment/post_c_customer_customerid_payment_method_selection"}]},{"group":"Balance","pages":[{"title":"Get Current Customer Balance","openapi":"GET /v1/c/customer/{customer_id}/balance","href":"/dev/api-reference/balance/get_c_customer_customerid_balance"}]},{"group":"Virtual Wallets (Credits)","pages":[{"title":"Get Virtual Balances","openapi":"GET /v1/c/customer/{customer_id}/virtual-wallet/","href":"/dev/api-reference/virtual-wallet/get_c_customer_customerid_virtual-wallet"},{"title":"Add Virtual Credits","openapi":"POST /v1/c/virtual-wallet-transaction","href":"/dev/api-reference/virtual-wallet/post_c_virtual-wallet-transaction"}]},{"group":"Invoices","pages":[{"title":"List Invoices","openapi":"GET /v1/c/invoice","href":"/dev/api-reference/invoice/get_c_invoice"},{"title":"Get Invoice","openapi":"GET /v1/c/invoice/{invoice_id}","href":"/dev/api-reference/invoice/get_c_invoice_invoiceid"},{"title":"Configure Global Invoicing Preferences","openapi":"POST /v1/c/preferences/invoicing","href":"/dev/api-reference/invoice/post_c_preferences_invoicing"},{"title":"Manually Trigger Invoice Generation","openapi":"POST /v1/c/invoice","href":"/dev/api-reference/invoice/post_c_invoice"}]}]}]}]},"title":"Estimate Upgrade Costss - Wingback","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}