Returns a collection of Subscription response objects.

You can search for subscriptions using a variety of criteria. For operators available on search fields, see the search fields page.

Ruby
Copy
Copied
collection = gateway.subscription.search do |search|
  search.plan_id.is "the_plan_id"
end

collection.each do |subscription|
  puts subscription.billing_day_of_month
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

If you want to look up a single subscription using its ID, use Subscription.find() instead.

Parameters
:billing_cycles_remaining range

The number of billing cycles remaining in the subscription.

:created_at range

The date/time the subscription was created.

:days_past_due range

The number of days past due the subscription is.

:id text

The ID of the subscription.

:ids multiple

A list of subscription IDs to search for.

:in_trial_period multiple

Whether the subscription is in a trial period. Can be true or false. This parameter must be used in conjunction with status.

:merchant_account_id multiple

A list of merchant account IDs to search for.

:next_billing_date range

The date the subscription will next be billed.

:plan_id multiple

A list of plan IDs to search for.

:price range

The price of the subscription.

:status multiple

The status of the subscription. Possible values:

  • Active
  • Canceled
  • PastDue
  • Pending
  • Expired
:transaction_id text

The transaction ID associated with the subscription.

Examples

Searching by price

Searching on price uses a range field.

Ruby
Copy
Copied
search_results = gateway.subscription.search do |search|
  search.price <= 5
end

search_results = gateway.subscription.search do |search|
  search.price.between 3, 10
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

Searching by plan ID

Searching on plan ID uses a multiple value field.

Ruby
Copy
Copied
search_results = gateway.subscription.search do |search|
  search.plan_id.is "gold_plan"
end

search_results = gateway.subscription.search do |search|
  search.plan_id.in "silver_plan", "gold_plan"
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

Searching by status

Searching on status uses a multiple value field.

Ruby
Copy
Copied
search_results = gateway.subscription.search do |search|
  search.status.is Braintree::Subscription::Status::Active
end

search_results = gateway.subscription.search do |search|
  search.status.in(
    Braintree::Subscription::Status::Active,
    Braintree::Subscription::Status::Canceled,
    Braintree::Subscription::Status::Expired,
    Braintree::Subscription::Status::PastDue,
    Braintree::Subscription::Status::Pending
  )
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

When searching for subscriptions that are active, you have the ability to search for all active subscriptions (with or without a trial period), subscriptions with a trial period, or subscriptions without a trial period.

Ruby
Copy
Copied
search_results = gateway.subscription.search do |search|
  search.status.is Braintree::Subscription::Status::Active
end

search_results = gateway.subscription.search do |search|
  search.status.is Braintree::Subscription::Status::Active
  search.in_trial_period.is true
end

search_results = gateway.subscription.search do |search|
  search.status.is Braintree::Subscription::Status::Active
  search.in_trial_period.is false
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

Searching by days past due

Searching on days past due uses a range field.

Ruby
Copy
Copied
search_results = gateway.subscription.search do |search|
  search.days_past_due <= 5
end

search_results = gateway.subscription.search do |search|
  search.days_past_due.between 1, 5
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

Searching by merchant account ID

Searching on merchant account ID acts like a multiple value field.

Ruby
Copy
Copied
search_results = gateway.subscription.search do |search|
  search.merchant_account_id.in "usd_merchant_account", "another"
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

Searching by billing cycles remaining

Searching on billing cycles remaining will find subscriptions which have a set limit to the number of times they will recur. It uses a range field.

Ruby
Copy
Copied
search_results = gateway.subscription.search do |search|
  search.billing_cycles_remaining <= 5
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

Searching by next billing date

Searching on next billing date will return subscriptions that will bill again during the date range you have given it. The example below will return any subscriptions that will be billed in the next five days.

Ruby
Copy
Copied
five_days_from_now = Time.now + (5 * 24 * 60 * 60)
search_results = gateway.subscription.search do |search|
  search.next_billing_date <= five_days_from_now
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

Searching by created-at date/time

Searching on created-at date/time will return subscriptions that were created during the range you have given.

Ruby
Copy
Copied
search_results = gateway.subscription.search do |search|
  search.created_at.between(
    Time.now - 60*60*24,
    Time.now
    )
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

Searching a combination

You can combine any of the search fields into a single search.

Ruby
Copy
Copied
search_results = gateway.subscription.search do |search|
  search.plan_id.is "gold_plan"
  search.status.is "Active"
end
This code snippet now uses gateway instance methods instead of class-level methods. Learn more.

See also

Still have questions?

If you can’t find an answer, contact our Support team