---
title: "create payment · RUAL Documentation"
description: "Creates a PaymentIntent : the route for a custom card form, where the page confirms with Stripe.js using the client secret. For a hosted payment page us…"
canonical: https://docs.rual.nl/block-types/stripe/stripeconnection_paymentintents_create
language: en
---

# create payment

This block is part of the [`stripe`](https://docs.rual.nl/block-types/stripe) group and was last modified in core [`v15.0.0`](https://docs.rual.nl/core-versions/150000).

Creates a PaymentIntent : the route for a custom card form, where the page confirms with Stripe.js using the `client secret`. For a hosted payment page use **create checkout** instead. Also the way to charge a card already on file, with `off session`.

- flow `flow`

- connection required `stripeconnection`

- amount required `number` Amount in the smallest currency unit : €10.00 is `1000`.

- currency `value` Three-letter ISO code, lowercase. Default `eur`.

- description `value` Shows in the Stripe dashboard and on some statements.

- customer id `value`

- payment method id `value` pm_… : a saved card to charge. Required with `off session`.

- off session `boolean` Charge a saved card with the customer not present : a renewal, a top-up. Confirms immediately and tells the bank nobody is there to answer a 3D Secure challenge.

- confirm now `boolean` Attempt the charge as part of this call rather than leaving it for the browser.

- save card `boolean` Keep the payment method on the customer for future off-session charges.

- payment methods `array ` Restrict the methods offered, e.g. `["ideal","card"]`.

- receipt email `value` Stripe emails its own receipt here once the payment succeeds.

- statement suffix `value` What the customer sees on their card statement, appended to the account's own prefix. **This is the one to use for card payments** : Stripe rejects the full descriptor whenever card is among the available methods, which is the default. Max 22 characters including the prefix.

- statement descriptor `value` The complete statement text. Only valid when card is **not** an available payment method (iDEAL, SEPA and similar) : otherwise Stripe refuses the call. For cards use the statement suffix instead.

- meta data `object`

- idempotency key `value` Optional. Reusing a key makes Stripe replay the first response instead of creating a second object : wire something stable per order, like the order GUID.

- flow `flow`

- connection `stripeconnection`

- succeeded `condition` True only when the money has actually been taken. This is the pin to gate fulfilment on.

- status `value` `requires_payment_method`, `requires_action`, `processing`, `succeeded`, `canceled`.

- payment intent id `value`

- client secret `value` Hand this to Stripe.js in the browser to confirm the payment. It is scoped to this one payment : but do not log it.

- amount `number` What was asked for, in the smallest currency unit.

- amount received `number` What was actually taken. Differs from amount on a partial capture.

- currency `value`

- payment method type `value` What the customer actually paid with: `card`, `ideal`, `sepa_debit`, `bancontact`… Read off the charge, so it is the method used, not the ones offered.

- payment method `value` A line to show a person: "Visa ···· 4242", "ideal (INGBNL2A)", "SEPA ···· 3000".

- payment method details `object` The full method details : brand, last4, bank, mandate, wallet.

- charge id `value` Needed for a refund when no payment intent id is to hand.

- receipt url `value` Stripe's own hosted receipt for this payment.

- customer id `value`

- meta data `object`

- payment intent `object`

- success `condition`

- error `value` Stripe's own message, or a sentinel like MISSING_SESSION_ID for a problem in the wiring.

- error code `value` Stripe's machine-readable code, e.g. `card_declined`, `resource_missing`.

- decline code `value` Why the bank refused, e.g. `insufficient_funds`. Only set on a declined card.

| `payment intent` |
| --- |
| `charge` |
| `take payment` |

### Version history

Introduced in [`v15.0.0`](https://docs.rual.nl/core-versions/150000).

### Service documentation
