## Create a PaymentMethod with Elements Use `stripe.createPaymentMethod` to convert payment information collected by elements into a [PaymentMethod](/api/payment_methods.md) object that you safely pass to your server to use in an API call. **NOTE:** In most integrations, you will not need to use this method. Instead, use methods like [stripe.confirmPayment](/js/payment_intents/confirm_payment.md), which will automatically create a PaymentMethod when you confirm a [PaymentIntent](/api/payment_intents.md). `stripe.createPaymentMethod(options)` returns a `Promise` which resolves with a result object. This object has either: * `result.paymentMethod`: a [PaymentMethod](/api/payment_methods) was created successfully. * `result.error`: there was an error. This includes client-side validation errors. Refer to the [API reference](/api/errors) for all possible errors. **Syntax:** `stripe.createPaymentMethod(...)` - `options` (object) **required** - `elements` (object) **required** The [Elements](#payment_element_create) instance that was used to create the Payment Element. It will be used to pull payment method and billing address data from. - `params` (object) Parameters that will be passed on to the Stripe API. Refer to the [PaymentMethod API](/api/payment_methods/create.md) for a full list of parameters. - `billing_details` (object) [Billing information](/api/payment_methods/create.md#create_payment_method-billing_details) associated with the PaymentMethod that may be used or required by particular types of payment methods. ### Create a PaymentMethod ```js stripe .createPaymentMethod({ elements, params: { billing_details: { name: 'Jenny Rosen', }, }, }) .then(function(result) { // Handle result.error or result.paymentMethod }); ``` ```es_next const {paymentMethod, error} = await stripe.createPaymentMethod({ elements, params: { billing_details: { name: 'Jenny Rosen', }, }, }); ```