Skip to content

Verify your Stripe customer emails

Integration E-commerce and payments

Stripe email verification in three steps: export your customers, verify the file in PricklyMails, then replace the addresses that cannot receive mail.

There is no native Stripe connector: you export the list, PricklyMails verifies it, and you bring the result back into Stripe. New addresses can go through the API before they ever reach Stripe.

Verify for free

Step by step

Clean your list in three steps

  1. In Stripe

    Export your customers from Stripe

    1. In your Stripe Dashboard, go to Customers.
    2. To verify part of your customers only, click Filter and narrow the list.
    3. Click Export, in the upper right corner.
    4. In the window that opens, set the time zone, the date range and the columns to include, the email address among them.
    5. Export the selection.

    Tip

    PricklyMails only needs the addresses: keep the email column alone in a spreadsheet, then save it as a CSV file before moving on.

    Note

    Using Organizations? Export from the Customers page of each account: Stripe lets you create, export or analyze customers only at the account level.

  2. In PricklyMails

    Verify the file in PricklyMails

    1. In the dashboard, open Batches and click New batch.
    2. Drop the file you exported from Stripe: a .csv or .txt with one address per line, no header row and no quotes. A header row would count as an address in the estimate, though it is never billed, and a quoted address would not be verified: the report lists both as malformed. You can also paste the list.
    3. The dashboard counts the addresses and shows the estimated cost in tokens before anything is sent, then you click Submit batch. A batch holds at least 20 addresses, and your plan sets the largest list it can hold.
    4. The list is verified in the background. Once the batch is done, open it and click Download report: you get a CSV with a row for each address of your file, giving its verdict, its reason, its score and its recommendation, with the dashboard's labels.

    Note

    Download the report from the browser that sent the list: that browser is what keeps the addresses, for the 16 most recent batches at most. Our servers, in Germany, only keep a one-way fingerprint of each one.
    What the report says

    Every address gets a recommendation: the action to take. The report writes it with the dashboard's label; the API returns a short form of it.

    Send
    The address is valid, or hosted by a large provider that accepts every address without confirming any. Send as usual.
    Review
    A domain that accepts any address (catch-all), a generic address such as contact@, a full mailbox, or a server that never answered, or refused to. Take a look before you send.
    Remove
    The address does not exist, its domain cannot receive mail, or it is disposable, mistyped or malformed. Take it out.

    Note

    A malformed address is never verified: the batch counts it under "Malformed addresses", and the report still lists it, with the verdict "Invalid", the reason "Malformed address" and the recommendation "Remove", so you take it out of Stripe with the others. A duplicate, counted under "Duplicates removed", appears only once.

    Behind each recommendation sit a verdict (Valid, Risky, Invalid or Not verifiable), a reason and a score from 0 to 100, each in its own column of the report. When a server never answers, the address comes back "Not verifiable" and the checks that got no answer are refunded.

  3. In Stripe

    Bring the result back into Stripe

    Open the report in a spreadsheet and filter the Recommendation column.

    Remove

    Each customer takes the working address they give you, or is deleted if you no longer bill them.

    An address that cannot receive mail gets none of Stripe's receipts or payment emails. Replace it once the customer gives you one that works, and delete only a customer you no longer bill.

    1. In the Dashboard search, enter an address to remove after the email: filter, such as email:jenny.rosen@example.com.
    2. Click the customer in the results to open its page.
    3. To keep the customer, select Actions then Edit information.
    4. Replace the account email with the working address the customer gave you, then click Update customer.
    5. To drop a customer you no longer bill, select Actions then Delete customer instead.
    6. Repeat for each address to remove.
    Review

    They deserve a look before the next invoice or renewal. Open each one the same way: the customer's page lists its subscriptions, payments and invoices, so you can see who still pays you and ask them to confirm their address.

    Send

    Leave those customers as they are: nothing to do.

    Warning

    Deleting a customer cannot be undone, and immediately cancels any active subscriptions on it. For a customer who still pays you, replace the address instead.

    Tip

    You can also delete from the list: on the Customers page, click the checkbox next to the customer's name, then click Delete.

Verify each address before it reaches Stripe

Does your signup flow or backend create customers in Stripe through its API, with the Create a customer (opens in a new tab) call and its email parameter? Ask PricklyMails first. If the recommendation is remove, ask for another address before you create the customer.

One call starts the verification and already flags a likely typo, a second one reads the verdict. Depending on your plan, a signed webhook can also send it to you as soon as it's ready.

Request
curl -s https://api.pricklymails.com/api/verify \
  -H "Authorization: Bearer pm_live_9f3a..." \
  -H "Content-Type: application/json" \
  -d '{ "email": "ana.silva@gmail.con" }' \
  | jq '{job_uuid, suggestion}'
Response
{
  "job_uuid": "8f1c2a9e-4b7d-4e2a-9c61-3d5f0b7a2e18",
  "suggestion": "ana.silva@gmail.com"
}
Request
curl -s https://api.pricklymails.com/api/verify/$JOB_UUID \
  -H "Authorization: Bearer pm_live_9f3a..." \
  | jq '.verifications[0] | {status, reason, score, recommendation}'
Response
{
  "status": "invalid",
  "reason": "no_mx_records",
  "score": 0,
  "recommendation": "remove"
}
Read the API docs

Frequently asked questions

Why verify the addresses of my Stripe customers?

Stripe uses a customer's email address to tell them a payment failed, or that they need to act to complete a payment. With failed payment notifications on, it emails the customer after each failed subscription payment, so they can update their payment method and the payment can be retried. Stripe presents these emails as a way to prevent involuntary churn: a customer whose address cannot receive mail gets none of them, and may never learn that a renewal failed. Verifying your customers shows which addresses to replace before that happens.

SourceStripe's official help center

Should I delete the customers to remove, or replace their address?

Replace the address of a customer you still bill. Stripe's API reference says deleting a customer is permanent and cannot be undone: it immediately cancels any active subscriptions on the customer, removes its card details and prevents any further operation, such as adding a new subscription. Stripe also asks you to check that a customer does not already exist before creating one, since several records for the same customer can cause problems later, when you reconcile transaction history or coordinate saved payment methods. Edit the existing customer rather than adding a new one with the new address.

SourceStripe's official help center

Which emails does Stripe send my customers, and where do I turn them on?

Receipts for successful payments and refunds, once you turn on Successful payments or Refunds under Settings then Business then Customer emails. For subscriptions, the Email notifications and customer management settings add an email after each failed card payment, trial ending and renewal reminders, and a notice one month before a card on file expires. The Customers page keeps a log of the emails sent in the last 60 days.

SourceStripe's official help center

Does PricklyMails connect to Stripe directly?

No, there is no native connector: you go through a file export, as above. You can also call the PricklyMails API from your own code before an address reaches Stripe.

These trademarks belong to their respective owners. Naming them implies no partnership.

Check your list before your next send.

1,000 tokens free when you sign up, no credit card. After that, you only pay for answers.