Back to Dub

Stripe Customers

apps/web/guides/stripe-customers.md

latest1.4 KB
Original Source

Alternatively, if you don't use Stripe's checkout session creation flow, you can also pass the user ID and the click event ID (dub_id) in the Stripe customer creation flow.

When you create a Stripe customer, pass the user's unique user ID in your database as the dubCustomerExternalId value in the metadata field.

javascript
import { stripe } from "@/lib/stripe";

const user = {
  id: "user_123",
  email: "[email protected]",
  teamId: "team_xxxxxxxxx",
};

const dub_id = req.headers.get("dub_id");

await stripe.customers.create({
  email: user.email,
  name: user.name,
  metadata: {
    dubCustomerExternalId: user.id,
    dubClickId: dub_id,
  },
});

Alternatively, you can also pass the dubCustomerExternalId and dubClickId values in the metadata field of the Stripe customer update flow:

javascript
import { stripe } from "@/lib/stripe";

const user = {
  id: "user_123",
  email: "[email protected]",
  teamId: "team_xxxxxxxxx",
};

const dub_id = req.headers.get("dub_id");

await stripe.customers.update(user.id, {
  metadata: {
    dubCustomerExternalId: user.id,
    dubClickId: dub_id,
  },
});

This way, when the customer makes a purchase, Dub will automatically associate the purchase details (invoice amount, currency, etc.) with the original click event.