# MOTO Payments ## Overview **MOTO (Mail Order/Telephone Order)** payments allow merchants to process card-not-present transactions where the customer provides their payment details via mail or telephone. This method is commonly used for orders placed over the phone or through mail-in forms. Please note that, as indicated in [this](/documentation/get_started/initiate_payments/moto) page, MOTO payments can also be initiated and processed directly using the **Ryft Portal**, without the need to use the Ryft API. This page, however, focuses on how to process MOTO payments using the Ryft API. ## Requirements In order to process MOTO payments, you must ensure that you have created a Payment Session that is configured to accept MOTO payments. You can find more info on how to do this in the [Initiate a MOTO payment](/documentation/get_started/initiate_payments/moto) page. The response payload from the API will include the `clientSecret` that you will need to use later. Next step is to collect the customer's card details. Since MOTO payments are card-not-present transactions, you will need to gather the card information directly from the customer via mail or telephone. Please ensure that you handle and store this sensitive information securely. In particular, you must collect the following card details: - Card number - Expiry month and year - CVC (Card Verification Code) Once you have collected the card details, you can proceed to process the MOTO payment as described in the next section. ## Processing MOTO Payments Once you have satisfied all requirements described in the previous section, you can proceed to process the MOTO payment. To do this you will need to use the [paymentSessionAttemptPayment](/documentation/api/reference/openapi#operation/paymentSessionAttemptPayment) endpoint. Below is an example of how to call the `paymentSessionAttemptPayment` endpoint with all the required parameters to process a MOTO payment: ```json paymentSessionAttemptPayment - Payload Example { "clientSecret": "ps_XXXXXXXXXXXXXXXXXXXX", // Replace with your actual client secret returned from the Payment Session creation API call "cardDetails": { "number": "XXXXXXXXXXXXXXXXXX", // Replace with the actual card number "expiryMonth": "mm", // Replace with the actual expiry month "expiryYear": "yyyy", // Replace with the actual expiry year "cvc": "xxx", // Replace with the actual CVC }, } ``` If processing a MOTO payment for a **specific Sub-Account**, make sure to include the `Account` header in your API request with the Sub-Account ID as its value. **Please note**, you can also include optional fields in the request body, such as `billingAddress` to provide additional information about the billing address or `paymentMethodOptions` if you want to store the payment method for future use. Please refer to the [paymentSessionAttemptPayment](/documentation/api/reference/openapi#operation/paymentSessionAttemptPayment) endpoint documentation for more details on the optional fields. Upon a successful request, the API will respond with the payment result, which you can use to determine the outcome of the MOTO payment.