Stripe, is it possible to search a customer by their email?

Cyril N. picture Cyril N. · Nov 5, 2014 · Viewed 26.3k times · Source

Update: Since around January 2018, it is now possible to search using the email parameter on Stripe. See the accepted answer.


I was wondering if it was possible to search a customer only by their email address when using the Stripe API.

The documentation only indicates searching by:

created,
ending_before,
limit,
starting_after 

but not email.

I'd like to avoid having to list over all my customers to find which ones have the same email addresses.

Answer

Russ Jackson picture Russ Jackson · Jan 31, 2018

Stripe now allows you to filter customers by email.

https://stripe.com/docs/api#list_customers

Map<String, Object> options = new HashMap<>();
options.put("email", email);
List<Customer> customers = Customer.list(options).getData();

if (customers.size() > 0) {
    Customer customer = customers.get(0);
    ...

This is important to help ensure you don't create duplicate customers. Because you can't put creating a customer in Stripe and the storage of the Stripe customer ID in your system inside a single transaction you need to build in some fail safes that check to see if a particular customer exists before you create a new one. Searching customers by email is important in that regard.