# Save a customer's payment method without making a payment Learn how to save a customer's French meal vouchers payment method using a SetupIntent. > #### Want to accept France titres-restaurant payments? > > France titres-restaurant is in private preview. > > > This guide is only for the following French meal vouchers issuers: > > - Bimpli - Pluxee - Up Déjeuner Before you begin, make sure that you [provisioned your restaurant or store SIRET](https://docs.stripe.com/payments/meal-vouchers/fr-meal-vouchers/set-up-restaurant.md) for French meal vouchers acceptance with Stripe. # Elements > This is a Elements for when payment-ui is elements. View the full page at https://docs.stripe.com/payments/meal-vouchers/fr-meal-vouchers/saving-payment-details?payment-ui=elements. ## Review the Saved Payment Methods documentation Make sure to first review how to [save a customer’s payment method](https://docs.stripe.com/payments/save-and-reuse.md) without making a payment. ## Create a SetupIntent To specify that the payment method is set up as a French meal vouchers payment, you must pass the SIRET of your business branch in the [siret](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-setup_details-benefit-fr_meal_voucher-siret) field, as shown in the following example: ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "setup_details[benefit][fr_meal_voucher][siret]=42424242424242" ``` After you create the `SetupIntent`, return its [client secret](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret) to the client. ## Submit the payment details to Stripe Use [stripe.confirmSetup](https://docs.stripe.com/js/setup_intents/confirm_setup) to complete the setup using details collected by the Payment Element. Provide a [return_url](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-return_url) to indicate where Stripe redirects the user after they complete setup. ## Charge the saved payment method later When you charge the saved payment method *on-session* (A payment is described as on-session if it occurs while the customer is actively in your checkout flow and able to authenticate the payment method), use the `Customer` and `PaymentMethod` IDs to create a `PaymentIntent`. Pass the SIRET of your business branch in the [siret](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_details-benefit-fr_meal_voucher-siret) field, as shown in the following example: French meal vouchers payments are in EUR only. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1211 \ -d currency=eur \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method={{PAYMENTMETHOD_ID}}" \ -d confirm=true \ -d "payment_details[benefit][fr_meal_voucher][siret]=42424242424242" ``` ## Test your integration You can use the following cards to test your integration: | French meal vouchers issuer | Number | CVC | Expiry date | | --------------------------- | ---------------- | ------------ | --------------- | | Bimpli with Conecs | 4000002501000002 | Any 3 digits | Any future date | You can test different scenarios with the SIRET passed into `setup_details[benefit][fr_meal_voucher][siret]`. | SIRET | Scenario | | ---------------- | ---------------------------------------------------------------------------- | | `42424242424242` | A SIRET that you provisioned for French meal vouchers acceptance with Stripe | | `00000000000000` | Invalid SIRET | ## Temporary card authorization charge When storing customer details, Stripe might send a request to the issuer to verify the card. A customer might see a 0.30 EUR charge on their bank statement resulting from this card authorization process. Stripe reverses this temporary charge almost immediately, restoring the charge to the customer’s daily balance.