amount: 0.
Payment method verification currently applies to card payments only. The Moment checkout will present only card payment methods on amount: 0 sessions.
Two session types are supported depending on the intended future payment flow:
one_time: verifies and saves the payment method for future customer-initiated payments such as repeat purchasesfirst_in_series: verifies the payment method and creates a mandate for future merchant-initiated payments such as subscriptions and recurring charges
- Card on file setup where the customer saves a payment method for future purchases without being charged immediately
- Free trials where the first charge happens after the trial period ends
- Subscription sign-ups with a deferred first billing cycle
capture_method is not relevant for payment method verification. Any value supplied via payment_method_options.card.capture_method on an amount: 0 session is ignored because the zero amount already signals verification intent. No capture or void step follows a successful verification.Card on File
Useone_time with amount: 0 to verify and save a payment method for future customer-initiated purchases. amount: 0 on a one_time session implicitly saves the payment method, so checkout_options.save_payment_method does not need to be supplied. If supplied, only always is accepted; other values are rejected.
Recurring Setup
Usefirst_in_series with amount: 0 to verify the payment method and create a mandate in a single step. No initial payment is taken. mandate_options.amount is required in this case because the session-level amount: 0 cannot serve as the consent ceiling for future next_in_series payments. For full details on configuring the mandate created at this step, see Mandates.
next_in_series payments. No capture or void is needed.
Session Outcome
On successful verification, the Payment Session transitions tostatus: completed with payment_outcome: payment_method_verified. This is a terminal outcome that signals no payment was taken but the payment method was verified and vaulted. The deprecated payment_status field continues to be populated with paid for backwards compatibility.
Payment Object on Success
On successful verification, the payment object reflects zero amounts. Theintent field is set to payment_method_verification to make the nature of the payment explicit:
Webhooks
payment.succeeded: fired when verification succeeds.intentispayment_method_verificationandauthorised_amountis0.

