# Account Payment Stripe Module

The account_payment_stripe module allows to receive payment from Stripe. It uses Stripe.js and Stripe Elements in a checkout form to handle Setup Intent and Payment Intent by card.

## Account

The Account stores the information about the Stripe account like the secret key, the publishable key and the webhook signing secret.

The account’s webhook endpoint is the URL used by stripe webhooks. For additional security, the Stripe’s requests signature can be verified if the webhook signing secret is set on the Account. If no webhook is setup, a cron task fetches the new events.

## Customer

The Customer allow to register parties as Stripe customers. The checkout button opens the Stripe checkout form.

A cron task runs every hour to create new customers on Stripe and another to delete them if they are inactivated.

## Journal

The journal has a new field for the Stripe account.

## Payment

The payment has also a checkout button which opens the Stripe checkout form. A payment can be processed off-session using a source or payment method from the customer. In case the payment method requires authorization, an email is sent to the party with a link to the checkout form. In case of error, it has also new fields which display the error messages.

A cron task runs every 15 minutes to charge each processing payment.

The capture box can be unchecked to only authorize on processing and capture the amount in a second step.

If the payment is disputed, it will be updated at the closure of the dispute.

It is possible to partially or completely refund a payment.

## Configuration

The account_payment_stripe module uses the section `account_payment_stripe` to retrieve some parameters:

- `sources_cache`: defines the duration in seconds the sources are kept in the cache. The default value is `15 * 60`.

- `max_network_retries`: defines the maximum number of retries the Stripe library may perform. The default value is `3`.