# Create a Customer — Stripe

> Create a customer. See the documentation.

- Key: `stripe-create-customer`
- Type: Action (Write)
- Version: 0.1.5
- App: Stripe (`stripe`) — https://pipedream.com/apps/stripe.md
- This page (HTML): https://pipedream.com/apps/stripe/actions/create-customer
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/stripe/actions/create-customer/create-customer.mjs

## Description

Create a customer. [See the documentation](https://stripe.com/docs/api/customers/create).

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `name` | `string` | No | The customer's full name or business name. |
| `description` | `string` | No | An arbitrary string that you can attach to a the object eg. customer, invoice, etc. |
| `email` | `string` | No | Customer's email address. It's displayed alongside the customer in your dashboard and can be useful for searching and tracking. This may be up to 512 characters. |
| `addressCity` | `string` | No | City, district, suburb, town, or village. |
| `addressCountry` | `string` | No | Two-letter country code (ISO 3166-1 alpha-2). |
| `addressLine1` | `string` | No | Address line 1 (e.g., street, PO Box, or company name). |
| `addressLine2` | `string` | No | Address line 2 (e.g., apartment, suite, unit, or building). |
| `addressPostalCode` | `string` | No | ZIP or postal code. |
| `addressState` | `string` | No | State, county, province, or region. |
| `metadata` | `object` | No | Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata. |
| `paymentMethodType` | `string` | No | The type of payment method to create |
| `paymentMethod` | `string` | No | Example: pm_card_visa Options are loaded from the connected account. |
| `phone` | `string` | No | The customer's phone number. This field is required when creating a new customer. If you do not provide a phone number, the customer will be created with the phone number of the connected account. |
| `shippingAddressCity` | `string` | No | City, district, suburb, town, or village. |
| `shippingAddressCountry` | `string` | No | Two-letter country code (ISO 3166-1 alpha-2). |
| `shippingAddressLine1` | `string` | No | Address line 1 (e.g., street, PO Box, or company name). |
| `shippingAddressLine2` | `string` | No | Address line 2 (e.g., apartment, suite, unit, or building). |
| `shippingAddressPostalCode` | `string` | No | ZIP or postal code. |
| `shippingAddressState` | `string` | No | State, county, province, or region. |
| `shippingName` | `string` | No | Recipient name. |
| `shippingPhone` | `string` | No | Recipient phone (including extension). |
| `taxIpAddress` | `string` | No | A recent IP address of the customer used for tax reporting and tax location inference. Stripe recommends updating the IP address when a new PaymentMethod is attached or the address field on the customer is updated. We recommend against updating this field more frequently since it could result in unexpected tax location/reporting outcomes. |
| `taxValidateLocation` | `string` | No | A flag that indicates when Stripe should validate the customer tax location. Defaults to deferred. |
| `balance` | `integer` | No | An integer amount in cents that represents the customer's current balance, which affect the customer's future invoices. A negative amount represents a credit that decreases the amount due on an invoice; a positive amount increases the amount due on an invoice. |
| `cashBalanceSettingsReconciliationMode` | `string` | No | Controls how funds transferred by the customer are applied to payment intents and invoices. Valid options are automatic, manual, or merchant_default. For more information about these reconciliation modes, see Reconciliation. |
| `invoicePrefix` | `string` | No | The prefix for the customer used to generate unique invoice numbers. Must be 3–12 uppercase letters or numbers. |
| `invoiceSettingsCustomFields` | `string[]` | No | The list of up to 4 default custom fields to be displayed on invoices for this customer. When updating, pass an empty string to remove previously-defined fields. |
| `invoiceSettingsDefaultPaymentMethod` | `string` | No | ID of a payment method that's attached to the customer, to be used as the customer's default payment method for subscriptions and invoices. |
| `invoiceSettingsRenderingOptionsAmountTaxDisplay` | `string` | No | How line-item prices and amounts will be displayed with respect to tax on invoice PDFs. One of exclude_tax or include_inclusive_tax. include_inclusive_tax will include inclusive tax (and exclude exclusive tax) in invoice PDF amounts. exclude_tax will exclude all tax (inclusive and exclusive alike) from invoice PDF amounts. |
| `nextInvoiceSequence` | `integer` | No | The sequence to be used on the customer's next invoice. Defaults to 1. |
| `preferredLocales` | `string[]` | No | Customer's preferred languages, ordered by preference. |
| `source` | `string` | No | When using payment sources created via the Token or Sources APIs, passing source will create a new source object, make it the new customer default source, and delete the old customer default if one exists. If you want to add additional sources instead of replacing the existing default, use the card creation API. Whenever you attach a card to a customer, Stripe will automatically validate the card. |
| `taxExempt` | `string` | No | The customer's tax exemption. One of none, exempt, or reverse. |
| `taxIdData` | `string[]` | No | The customer's tax IDs. See the documentation. |
| `testClock` | `string` | No | ID of the test clock to attach to the customer. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "stripe",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "stripe-create-customer",
  arguments: {
    name: "Name",
    description: "Description",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "stripe-create-customer",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    stripe: { authProvisionId: "apn_xxxxxxx" },
    name: "Name",
    description: "Description",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "stripe-create-customer",
    "configured_props": {
      "stripe": { "authProvisionId": "apn_xxxxxxx" },
      "name": "Name",
      "description": "Description"
    }
  }'
```

---

- App: https://pipedream.com/apps/stripe.md · All apps: https://pipedream.com/apps
