Changes the billing method of one or more Elastic Compute Service (ECS) instances. You can change the billing methods of instances between pay-as-you-go and subscription, or change the billing method of all data disks attached to an instance from pay-as-you-go to subscription.
Usage notes
Before you call this operation, make sure that you understand the billing methods and pricing schedule of ECS. For more information, visit the Elastic Compute Service product page.
Take note of the following items:
- The instances must be in the Running (
Running) or Stopped (Stopped) state, and you have no overdue payments for them. - After you change the billing method, the payment is automatically completed. Maintain a sufficient account balance. Otherwise, your order becomes invalid and must be canceled. If your account balance is insufficient, you can set
AutoPaytofalseto generate an unpaid order. Then, you can log on to the ECS console to pay for the order. - Change the billing method from subscription to pay-as-you-go:
-
Your ECS usage determines whether the billing method of an instance can be changed from subscription to pay-as-you-go.
-
After you change the billing method of an instance from subscription to pay-as-you-go, the new billing method remains in effect for the remaining lifecycle of the instance. The price difference is refunded to the payment account that you used. Vouchers that have been redeemed are not refundable.
- Refund rule: You have a quota for the total refund amount each month, and unused balance of this quota is not carried forward into the next month. After you use up the refund quota of the current month, you can change the billing method only in the next month. The refund amount incurred when you change the billing method is calculated based on the following formula: Number of vCPUs × (Number of remaining days × 24 ± Number of remaining or elapsed hours).
-
- Change the billing method from pay-as-you-go to subscription:
- You can change the billing method of all data disks attached to an instance from pay-as-you-go to subscription.
- This operation cannot be called for a pay-as-you-go instance that has an automatic release time set.
Debugging
Request parameters
|
Parameter |
Type |
Required |
Example |
Description |
| Action | String | Yes | ModifyInstanceChargeType | The operation that you want to perform. Set the value to ModifyInstanceChargeType. |
| InstanceIds | String | Yes | ["i-bp67acfmxazb4p****","i-bp67acfmxazb4d****"] | The IDs of instances. The value can be a JSON array that consists of up to 20 instance IDs. Separate the instance IDs with commas (,). |
| RegionId | String | Yes | cn-hangzhou | The region ID of the instance. You can call the DescribeRegions operation to query the most recent region list. |
| Period | Integer | No | 1 | The renewal duration of the subscription instance. If the instance is hosted on a dedicated host, the renewal duration of the instance cannot exceed the subscription duration of the dedicated host. Valid values: Valid values when |
| PeriodUnit | String | No | Month | The unit of the renewal duration ( Month Default value: Month. |
| IncludeDataDisks | Boolean | No | false | Specifies whether to change the billing method of all data disks on the instance from pay-as-you-go to subscription.
Default value: false. |
| DryRun | Boolean | No | false | Specifies whether to perform only a dry run, without performing the actual request. Valid values:
Default value: false. |
| AutoPay | Boolean | No | false | Specifies whether to automatically complete the payment. Valid values:
Default value: true. Note If your account balance is insufficient, you can set AutoPay to false to generate an unpaid order. Then, you can log on to the ECS console to pay for the order. |
| InstanceChargeType | String | No | PrePaid | The new billing method. Valid values:
Default value: PrePaid. |
| ClientToken | String | No | 123e4567-e89b-12d3-a456-426655440000 | The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see How to ensure idempotence. |
| IsDetailFee | Boolean | No | false | Specifies whether to return cost details of the order after the billing method is changed from subscription to pay-as-you-go. Valid values:
Default value: false. |
Response parameters
Parameter |
Type |
Example |
Description |
| OrderId | String | 20413515388**** | The ID of the order. |
| RequestId | String | B61C08E5-403A-46A2-96C1-F7B1216DB10C | The ID of the request. |
| FeeOfInstances | Array of FeeOfInstance | Details about the charges for the order. |
|
| FeeOfInstance | |||
| InstanceId | String | i-bp67acfmxazb4p**** | The ID of the instance. |
| Currency | String | CNY | The unit of currency for the bill. Alibaba Cloud China site (aliyun.com): CNY. Alibaba Cloud International site (alibabacloud.com): USD. |
| Fee | String | 0 | The cost value. |
Examples
Sample requests
http(s)://ecs.aliyuncs.com/?Action=ModifyInstanceChargeType
&RegionId=cn-hangzhou
&InstanceIds=["i-bp67acfmxazb4p****","i-bp67acfmxazb4d****"]
&Period=1
&PeriodUnit=Month
&AutoPay=false
&IncludeDataDisks=false
&ClientToken=123e4567-e89b-12d3-a456-426655440000
&<Common request parameters>
Sample success responses
XML format
HTTP/1.1 200 OK
Content-Type:application/xml
<ModifyInstanceChargeTypeResponse>
<OrderId>20413515388****</OrderId>
<RequestId>B61C08E5-403A-46A2-96C1-F7B1216DB10C</RequestId>
<FeeOfInstances>
<InstanceId>i-bp67acfmxazb4p****</InstanceId>
<Currency>CNY</Currency>
<Fee>0</Fee>
</FeeOfInstances>
</ModifyInstanceChargeTypeResponse>
JSON format
HTTP/1.1 200 OK
Content-Type:application/json
{
"OrderId" : "20413515388****",
"RequestId" : "B61C08E5-403A-46A2-96C1-F7B1216DB10C",
"FeeOfInstances" : [ {
"InstanceId" : "i-bp67acfmxazb4p****",
"Currency" : "CNY",
"Fee" : "0"
} ]
}
Error codes
|
HTTP status code |
Error code |
Error message |
Description |
| 400 | InvalidParameter.InstanceIds | The specified InstanceIds are invalid. | Invalid InstanceIds value. |
| 400 | InvalidParameter | %s | An invalid parameter. |
| 400 | InvalidStatus.ValueNotSupported | %s | This operation cannot be performed on the resource in the current state. |
| 400 | InvalidInstanceChargeType.ValueNotSupported | %s | Invalid InstanceChargeType value. |
| 400 | ExpiredInstance | The specified instance has expired. | The specified instance has expired. |
| 400 | InstancesIdQuotaExceed | The maximum number of Instances is exceeded. | The maximum number of instances is exceeded. |
| 400 | InvalidClientToken.ValueNotSupported | The ClientToken provided is invalid. | Invalid ClientToken value. |
| 400 | InvalidInternetChargeType.ValueNotSupported | %s | Invalid InternetChargeType value. |
| 400 | ReleaseTimeHaveBeenSet | The specified instance has been set released time. | An automatic release time is set for the specified instance. |
| 400 | Throttling | Request was denied due to request throttling, please try again after 5 minutes. | Your request is denied due to throttling. Try again 5 minutes later. |
| 400 | Throttling | %s | The request is denied due to throttling. |
| 400 | InvalidParameter.Bandwidth | %s | Invalid bandwidth. Check the parameter values. |
| 400 | InvalidPeriod.UnitMismatch | The specified Period must be correlated with the PeriodUnit. | The Period value falls outside the value range determined by the PeriodUnit parameter. |
| 400 | InvalidImageType.NotSupported | %s | Invalid image type. Check whether the image type is supported in the region. |
| 400 | InvalidMarketImageChargeType.NotSupport | The specified chargeType of marketImage is unsupported. | The billing method of the Alibaba Cloud Marketplace image is not supported. |
| 400 | InvalidSystemDiskCategory.ValueNotSupported | %s | The system disk category does not support this operation. |
| 400 | InvalidInstance.NotFoundSystemDisk | The specified instance has no system disk. | The specified instance has no system disk attached. Make sure that the specified instance has a system disk attached. You can call the DescribeInstances operation to query the details of the instance. |
| 400 | AccountForbidden.ProductCreationLimited | The commodity must be officially operated by Aliyun and in pay-as-you-go billing method. | Internal users can purchase only pay-as-you-go ECS instances. They cannot purchase third-party products such as Alibaba Cloud Marketplace images. Check parameters. Make sure that all parameters meet the conditions and try again. |
| 400 | Invalid.PrivatePoolOptions.MatchCriteria | Target mode does not support this operation. | This operation cannot be performed when PrivatePoolOptions.MatchCriteria is set to Target. |
| 400 | InvalidPeriod | The specified period is not valid. | Invalid Period value. |
| 403 | InvalidInstance.TempBandwidthUpgrade | Cannot switch to Pay-As-You-Go during the period of temporary bandwidth upgrade. | You cannot change the billing method of the instance to pay-as-you-go during a temporary bandwidth upgrade period. |
| 403 | InvalidInstanceType.ValueNotSupported | The specified InstanceType does not exist or beyond the permitted range. | The instance type is not found, or you are not authorized to manage instances of the instance type. |
| 403 | InstanceType.Offline | %s | The operation cannot be performed while the instance type is retired or while the stock of the instance type is insufficient. |
| 403 | InvalidAccountStatus.NotEnoughBalance | Your account does not have enough balance. | Your account balance is insufficient. Add funds to your account and try again. |
| 403 | Account.Arrearage | Your account has an outstanding payment. | You have unpaid orders in your account. |
| 403 | InvalidParameter.NotMatch | %s | Invalid parameter value. Check whether parameter conflicts exist. |
| 403 | InvalidAction | %s | The operation is invalid. |
| 403 | QuotaExceed.PostPaidDisk | Living postPaid disks quota exceeded. | The maximum number of pay-as-you-go disks is exceeded. |
| 403 | ImageNotSupportInstanceType | The specified instanceType is not supported by instance with marketplace image. | The specified Alibaba Cloud Marketplace image does not support the instance type. |
| 403 | InvalidInstanceType.PhasedOut | This instanceType is no longer offered. | The specified instance type is retired. |
| 403 | RealNameAuthenticationError | Your account has not passed the real-name authentication yet. | You have not completed real-name verification. Complete real-name verification and try again. |
| 403 | QuotaExceed.ElasticQuota | No additional quota is available for the specified ECS instance type. | The maximum number of instances of the specified instance type in the region is exceeded. Try another region or instance type, or reduce the number of instances that you want to create. You can also go to the ECS console or the Quota Center to request a quota increase. |
| 403 | QuotaExceed.ElasticQuota | The number of the specified ECS instances has exceeded the quota of the specified instance type. | The maximum number of instances of the specified instance type in the region is exceeded. Try another region or instance type, or reduce the number of instances that you want to create. You can also go to the ECS console or the Quota Center to request a quota increase. |
| 403 | QuotaExceed.ElasticQuota | The number of vCPUs assigned to the ECS instances has exceeded the quota in the zone. | The maximum number of vCPUs for all instance types is exceeded. You can go to the ECS console or Quota Center to request a quota increase. |
| 403 | QuotaExceed.ElasticQuota | The number of the specified ECS instances has exceeded the quota of the specified instance type, or the number of vCPUs assigned to the ECS instances has exceeded the quota in the zone. | The maximum number of instances of the specified instance type in the region, or the maximum number of vCPUs for all instance types is exceeded. You can go to the ECS console or Quota Center to request a quota increase. |
| 404 | InvalidInstanceId.NotFound | The specified instanceId does not exist. | The specified instance ID is not found. |
| 500 | InternalError | The request processing has failed due to some unknown error, exception or failure. | An internal error occurred. Try again later. |
| 500 | InternalError | The request processing has failed due to some unknown error. | An internal error occurred. Try again later. |
| 500 | InvalidInstanceType.ValueUnauthorized | The specified InstanceType is not authorized. | You are not authorized to use the instance type. |
For a list of error codes, see Service error codes.