Subscription
Subscription: Search
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.
- Java
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.planId().is("the_plan_id");
ResourceCollection<Subscription> collection = gateway.subscription().search(request);
for (Subscription subscription : collection) {
System.out.println(subscription.getBillingDayOfMonth());
}
If you want to look up a single subscription using its ID, use Subscription: Find
instead.
Parameters
.createdAt(…)
range.daysPastDue(…)
range.id(…)
text.ids(…)
multiple.inTrialPeriod(…)
multipleWhether the subscription is in a trial period. Can be true or false. This parameter must be used in conjunction with status()
.
.merchantAccountId(…)
multipleA list of merchant account IDs to search for.
A fragment of the merchant account ID to search for.
.contains(…)
text.endsWith(…)
text.is(…)
text.isNot(…)
text.startsWith(…)
text.nextBillingDate(…)
range.planId(…)
multiple.price(…)
range.status(…)
multipleThe status of the subscription. Possible values:
ACTIVE
CANCELED
PAST_DUE
PENDING
EXPIRED
Examples
Searching by price
Searching on price uses a range field.
- Java
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.price().between(new BigDecimal(5), new BigDecimal(15));
ResourceCollection<Subscription> collection = gateway.subscription().search(request);
Searching by plan ID
Searching on plan ID uses a multiple value field.
- Java
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.planId().is("gold_plan");
ResourceCollection<Subscription> collection = gateway.subscription().search(request);
Searching by status
Searching on status uses a multiple value field.
- Java
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.status().is(Subscription.Status.ACTIVE);
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.status().in(
Subscription.Status.ACTIVE,
Subscription.Status.CANCELED,
Subscription.Status.EXPIRED,
Subscription.Status.PAST_DUE,
Subscription.Status.PENDING
);
ResourceCollection<Subscription> collection = gateway.subscription().search(request);
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.
- Java
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.status().is(Subscription.Status.ACTIVE);
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.status().is(Subscription.Status.ACTIVE)
.inTrialPeriod().is(true);
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.status().is(Subscription.Status.ACTIVE)
.inTrialPeriod().is(false);
Searching by days past due
Searching on days past due uses a range field.
- Java
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.daysPastDue().greaterThanOrEqualTo(42);
ResourceCollection<Subscription> collection = gateway.subscription().search(request);
Searching by merchant account ID
Searching on merchant account ID acts like a multiple value field.
- Java
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.merchantAccountId().in("42", "43");
ResourceCollection<Subscription> collection = gateway.subscription().search(request);
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.
- Java
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.billingCyclesRemaining().between(1, 2);
ResourceCollection<Subscription> collection = gateway.subscription().search(request);
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.
- Java
Calendar expectedNextBillingDate = Calendar.getInstance();
expectedNextBillingDate.add(Calendar.DAY_OF_MONTH, 5);
SubscriptionSearchRequest search = new SubscriptionSearchRequest()
.nextBillingDate().lessThanOrEqualTo(expectedNextBillingDate);
ResourceCollection<Subscription> results = gateway.subscription().search(search);
Searching by created-at date/time
Searching on created-at date/time will return subscriptions that were created during the range you have given.
- Java
Calendar yesterday = Calendar.getInstance();
yesterday.add(Calendar.DAY_OF_MONTH, -1);
Calendar today = Calendar.getInstance();
SubscriptionSearchRequest searchRequest = new SubscriptionSearchRequest()
.createdAt().between(
yesterday,
today
);
ResourceCollection<Subscription> collection = gateway.subscription().search(searchRequest);
Searching a combination
You can combine any of the search fields into a single search.
- Java
SubscriptionSearchRequest request = new SubscriptionSearchRequest()
.planId().is("gold_plan")
.status().is(Subscription.Status.ACTIVE);
ResourceCollection<Subscription> collection = gateway.subscription().search(request);