Make 1 API call to set the recurring payment, user and payment method Use API: {{Api Root}}/api/Customers For the {{Api Root}} variable: Production:
https://api.revolv3.com>
Sandbox:
https://api-sandbox.revolv3.com
This is a POST request with a sample payload below. This call is also in the API docs. Additional calls around payments can also be found in the docs. Note Billing, Shipping and Tax Address are left empty here, but you can add those from the docs.
{
	"MerchantSubscriptionRefId": "1234-5678-9126",
	"BillingFrequencyType": "Quarterly",
	"TaxAddress": {
		"AddressLine1": "1783 Update Street",
		"City": "Irvine",
		"State": "CA",
		"PostalCode": "92602",
		"Country": "USA"
	},
    "PaymentMethod": {
        "BillingAddress": {
            "AddressLine1": "113 Main Street",
            "City": "Irvine",
            "State": "CA",
            "PostalCode": "92602",
            "Country": "USA"
        },
        "BillingFirstName": "John",
        "BillingLastName": "Doe",
        "CreditCard":{
            "PaymentAccountNumber": "4111111111111111",
            "ExpirationDate": "0330",
            "SecurityCode": "737"
        }
    },
	"SubscriptionBillingPlans": [
		{
			"Name": "Billing Plan 1",
			"Value": 10.99,
			"CycleCount": -1,
			"ValueType": "Standard",
			"StartCycleDelay": 0
		},
		{
			"Name": "Billing Plan 2",
			"Value": 14.99,
			"CycleCount": 12,
			"ValueType": "Standard",
			"StartCycleDelay": 1
		}
	]
}
Response
{
    "subscriptionId": 272,
    "customerId": 94,
    "merchantSubscriptionRefId": "1234-5678-9126",
    "billingFrequencyType": "Quarterly",
    "subscriptionStatusType": "Current",
    "subscriptionCancelType": "EndOfCycle",
    "initialBillDate": "3/22/2023",
    "nextBillDate": "6/22/2023",
    "taxAddress": {
        "addressId": 806,
        "addressLine1": "1783 Update Street",
        "addressLine2": null,
        "city": "Irvine",
        "state": "CA",
        "postalCode": "92602",
        "country": "US"
    },
    "paymentMethodIds": [
        427
    ],
    "cancelledAt": null,
    "billingPlans": [
        {
            "subscriptionBillingPlanId": 432,
            "subscriptionId": 272,
            "name": "Billing Plan 1",
            "value": 10.99,
            "startDate": "3/22/2023",
            "cyclesRemaining": -1,
            "cycleCount": -1,
            "valueType": "Standard"
        },
        {
            "subscriptionBillingPlanId": 433,
            "subscriptionId": 272,
            "name": "Billing Plan 2",
            "value": 14.99,
            "startDate": "6/22/2023",
            "cyclesRemaining": 12,
            "cycleCount": 12,
            "valueType": "Standard"
        }
    ]
}
It’s possible, but optional to create a customerId first. You can use the same API call as above with empty place holders to get a customerId {{Api Root}}/api/Customers
{
    "FirstName": "Joe",
    "LastName": "Smith",
    "MerchantCustomerRefId": "",
    "EntityUseCode": "",
    "BillingAddresses": [],
    "ShippingAddresses": [],
    "Subscriptions": []
}
Repsonse:
{
    "customerId": 95,
    "merchantCustomerRefId": null,
    "firstName": "Joe",
    "lastName": "Smith",
    "entityUseCode": "",
    "billingAddresses": [],
    "shippingAddresses": [],
    "taxAddresses": [],
    "subscriptions": []
}

Authorization, Captures and Reversals