Plan

Plan: Update

See also the Plan response object.
  1. Ruby
result = gateway.plan.update(
    "a_plan_id",
    # id of the plan to update
    :id => "new_id",
    :name => "Awesome Bar",
    :description => "Incredibly Mediocre",
    :price => "2.00"
);
If the plan can't be found, it will raise a Braintree::NotFoundError.
Arguments
idrequired, String
A string value representing a specific plan. When updating a plan, you can only use tokens associated with the same customer that the plan is currently associated with.
Additional Parameters

The collection of add-ons associated with a plan. Add-on details can only be managed within the Control Panel.

:addarray
Array of add-ons to add to the plan
:amountBigDecimal
Price of the add-on. This will override the inherited add-on amount.
A description of the add-on. Its value will always be nil for add-ons that are attached to a subscription.
Specify an add-on ID to apply to the pan. You can't duplicate an add-on for a plan, but you can update the quantity.
:nameString
The name of the add-on.
Number of billing cycles to apply the add-on. It must be greater than 0.
:removearray
Array of add-on IDs that are associated with the subscription. IDs specified will be removed from the plan.
:updatearray
Array of add-ons that are associated with the plan.
:amountBigDecimal
Price of the add-on. This will override the inherited add-on amount.
A description of the add-on.
Update a particular add-on by specifying the add-on ID.
:nameString
The name of the add-on.
Number of billing cycles to apply the add-on. Must be greater than 0.
:billing_day_of_monthinteger or string
The value that specifies the day of the month that the gateway will charge the subscription on every billing cycle.
:billing_frequencyinteger or string
Specifies the billing interval of the plan.
The currency for the transaction. The three-letter alphabetic codes for the transaction's currency (e.g. "USD" for US dollars).
A description of the plan.

A collection of discounts associated with this plan. Discount details can only be managed within the Control Panel.

:addarray
Array of discounts to add to the plan.
:amountBigDecimal
Price of the discount. This will override the inherited discount amount.
A description of the discount.
Specify a discount ID to apply to the plan. You can't duplicate an discount for a plan, but you can update the quantity.
:nameString
The name of the discount.
Number of billing cycles to apply the discount. It must be greater than 0.
:removearray
Array of discount IDs that are associated with the subscription. IDs specified will be removed from the plan.
:updatearray
Array of discounts that are associated with the plan.
:amountBigDecimal
Price of the discount. This will override the inherited discount amount.
A description of the discount.
Update a particular discount by specifying the discount ID.
:nameString
The name of the discount.
Number of billing cycles to apply the discount. It must be greater than 0.
:idString
A string value representing a specific plan in the Vault. Max 36 characters; must be unique within a merchant's Vault; valid characters are letters, numbers, - and _. If not specified on creation, the gateway will generate an alphanumeric ID that can be accessed on the result. The generated IDs will never start with a leading 0 and are case-insensitive.
The collection of Modification Tokens associated with a plan. A modification is an add_on or a discont. So modification tokens can be passed to assiciate with a plan when creating the plan.
:nameString
The name of the plan.
:never_expiresboolean or string
Whether a subscription's billing cycle is set to never expire, or to run for a specific number of billing cycles.
:number_of_billing_cyclesinteger or string
Specifies the number of billing cycles of the plan.
:pricedecimal or string
The base price specified for a plan, formatted like "10" or "10.00".

The trial timeframe specified in a plan. It is required if the trial period is set to true and must be 1-3 digits. If you specify a trial duration of 0, the gateway will start the subscription immediately and not consider it to include a trial period.

The trial unit specified in a plan. Specify day or month.

A value indicating whether a subscription should begin with a trial period. If not specified on creation, the gateway will generate false by default. It cannot have both a specified billing date and a trial period.

Add-ons and discountsAnchorIcon

There are two ways to add add_ons/discounts when updating a plan. First, modification tokens can be passed along when updating a plan. A modification is either an add_on or a discount.
  1. Ruby
result = gateway.plan.update(
    "a_plan_id",
    # id of the plan to update
    :id => "new_id",
    :name => "Awesome Bar",
    :description => "Incredibly Mediocre",
    :price => "2.00",
    :modification_tokens => ["modification1_token", "modification2_token"]
);
Note
You have to pass modification tokens if there are add-ons/dicounts belonging to a plan when updating the plan. Otherwise it removes all modifications associated with this plan after updating the plan
Secondly, you can modify the add-ons and discounts by passing add_ons/discounts when updating a plan.
  • New add-ons/discounts can be added to the plan
  • Existing add-ons/discounts associated with the plan can be updated
  • Existing add-ons/discounts associated with the plan can be removed
  1. Ruby
result = gateway.plan.update(
    "the_plan_id",
    :add_ons => {
        :add => [
            {
                :inherited_from_id => "add_on_id_1",
                :amount => BigDecimal.new("25.00")
            }
        ],
        :update => [
            {
                :existing_id => "the_add_on_id_2",
                :amount => BigDecimal.new("50.00")
            }
        ],
        :remove => ["the_add_on_id_3"]
    },
    :discounts => {
        :add => [
            {
                :inherited_from_id => "discount_id_1",
                :amount => BigDecimal.new("7.00")
            }
        ],
        :update => [
            {
                :existing_id => "discount_id_2",
                :amount => BigDecimal.new("15.00")
            }
        ],
        :remove => ["discount_id_3"]
    }
);

Multiple updatesAnchorIcon

You can also add, update and remove multiple add-ons/discounts at the same time.
  1. Ruby
result = gateway.plan.update(
    "the_plan_id",
    :add_ons => {
        :add => [
            {
                :inherited_from_id => "add_on_id_1",
                :amount => BigDecimal.new("20.00")
            },
            {
                :inherited_from_id => "add_on_id_2",
                :amount => BigDecimal.new("30.00")
            }
        ],
        :update => [
            {
                :existing_id => "add_on_id_3",
                :quantity => 2
            },
            {
                :existing_id => "add_on_id_4",
                :quantity => 3
            }
        ],
        :remove => ["add_on_id_5", "add_on_id_6"]
    }
);

Override detailsAnchorIcon

When adding add-ons/discounts, all details will be inherited from the add-on/discount specified by the inherited_from_id. When updating add-ons/discounts, all details will be inherited from the add-on/discount specified by the existing_id. You can override any of the following:
  • amount
  • number_of_billing_cycles
  • name
  • description
  1. Ruby
result = gateway.plan.update(
    "the_plan_id",
    :add_ons => {
        :add => [
            {
                :inherited_from_id => "add_on_id_1",
                :amount => BigDecimal.new("20.00"),
                :number_of_billing_cycles => 2,
                :name => "NewName",
                :description => "NewDescription"
            }
        ],
        :update => [
            {
                :existing_id => "add_on_id_2",
                :amount => BigDecimal.new("20.00"),
                :number_of_billing_cycles => 2,
                :name => "NewName",
                :description => "NewDescription"
            }
        ]
    },
    :discounts => {
        :add => [
            {
                :inherited_from_id => "discount_id_1",
                :amount => BigDecimal.new("20.00"),
                :number_of_billing_cycles => 2,
                :name => "NewName",
                :description => "NewDescription"
            }
        ],
        :update => [
            {
                :existing_id => "discount_id_2",
                :amount => BigDecimal.new("15.00"),
                :number_of_billing_cycles => 2,
                :name => "NewName",
                :description => "NewDescription"
            }
        ]
    }
);

Update trail periodAnchorIcon

Updating a plan removes "billing day of the month" when trial_period is passed. In the example below, the plan will not have its "billing day of the month" after it is updated.
  1. Ruby
result = gateway.plan.update(
    "a_plan_id",
    # id of the plan to update
    :description => "Incredibly Mediocre",
    :trial_period => "2"
);

See AlsoAnchorIcon

If you accept cookies, we’ll use them to improve and customize your experience and enable our partners to show you personalized PayPal ads when you visit other sites. Manage cookies and learn more