# Process MOTO payments Process mail order and telephone order (MOTO) payments using Stripe Terminal. > #### Requesting access > > To begin processing MOTO payments, contact [Stripe support](https://support.stripe.com/) for access. # JavaScript To process MOTO payments, you must: 1. [Create a PaymentIntent](https://docs.stripe.com/terminal/features/mail-telephone-orders/payments.md#create-payment-intent). 2. [Collect a PaymentMethod](https://docs.stripe.com/terminal/features/mail-telephone-orders/payments.md#collect-payment-method). 3. [Confirm and capture the payment](https://docs.stripe.com/terminal/features/mail-telephone-orders/payments.md#confirm-capture-payment). ## Create a PaymentIntent To begin collecting a MOTO payment, you must create a [PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) with [payment_method_types](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) that includes `card`. Create the PaymentIntent on your back end. The PaymentIntent contains a [client secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret), a key that’s unique to the individual PaymentIntent. To use the client secret, you must obtain it from the PaymentIntent on your server and [pass it to the client side](https://docs.stripe.com/payments/payment-intents.md#passing-to-client). ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d currency=usd \ -d "payment_method_types[]=card" \ -d capture_method=automatic \ -d amount=1000 ``` ## Collect a payment method > CVC is mandatory for MOTO transactions. Skipping CVC is in private preview and you can request it for mail orders. Contact [Stripe support](https://support.stripe.com/) for access. After you’ve created a PaymentIntent, you can collect a PaymentMethod with the SDK. To collect a MOTO payment, your app must connect to a reader. Set `moto` to `true` in the `CollectConfiguration` object when calling `collectPaymentMethod`. After the request, the connected reader prompts you for the cardholder’s number, CVC, expiry date and postal code. > If you’re displaying cart details using the [setReaderDisplay](https://docs.stripe.com/terminal/features/display.md) method, you must reset the reader’s display from a line item interface to the splash screen before collecting a MOTO payment. ```js async () => { // Pass the client_secret from the PaymentIntent you created in the previous step. const result = await this.terminal.collectPaymentMethod(client_secret, { config_override: { moto: true, } }) if (result.error) { // Placeholder for handling result.error } else { // Placeholder for processing result.paymentIntent } } ``` ## Confirm and capture payment You can follow the usual procedure to [confirm](https://docs.stripe.com/terminal/payments/collect-card-payment.md#confirm-payment) and [capture](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment) the PaymentIntent. ## Testing Use the *simulated reader* (Stripe Terminal SDKs and server-driven integrations come with a built-in simulated card reader, so you can develop and test your app without connecting to physical hardware. Whether your integration is complete or you're still building it, use the simulated reader to emulate all the Terminal flows in your app) and [simulated test card numbers](https://docs.stripe.com/terminal/references/testing.md#simulated-test-cards) to test your integration.