Skip to content
Last updated

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 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 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 endpoint.

Below is an example of how to call the paymentSessionAttemptPayment endpoint with all the required parameters to process a MOTO payment:

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 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.