curl --request POST \
--url https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment \
--header 'Content-Type: application/json-patch+json' \
--header 'x-revolv3-token: <api-key>' \
--data '
{
"merchantInvoiceRefId": "5fb27a2c-bda4-48e8-9993-5be68a5a399c",
"invoiceLineItems": [
{
"name": "Invoice Line Item 1",
"description": null,
"value": 10.99,
"valueType": "Standard"
},
{
"name": "Invoice Line Item 2",
"description": null,
"value": 11.99,
"valueType": "Standard"
},
{
"name": "Invoice Line Item 3",
"description": null,
"value": 12.99,
"valueType": "Standard"
}
]
}
'import requests
url = "https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment"
payload = {
"merchantInvoiceRefId": "5fb27a2c-bda4-48e8-9993-5be68a5a399c",
"invoiceLineItems": [
{
"name": "Invoice Line Item 1",
"description": None,
"value": 10.99,
"valueType": "Standard"
},
{
"name": "Invoice Line Item 2",
"description": None,
"value": 11.99,
"valueType": "Standard"
},
{
"name": "Invoice Line Item 3",
"description": None,
"value": 12.99,
"valueType": "Standard"
}
]
}
headers = {
"x-revolv3-token": "<api-key>",
"Content-Type": "application/json-patch+json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-revolv3-token': '<api-key>', 'Content-Type': 'application/json-patch+json'},
body: JSON.stringify({
merchantInvoiceRefId: '5fb27a2c-bda4-48e8-9993-5be68a5a399c',
invoiceLineItems: [
{
name: 'Invoice Line Item 1',
description: null,
value: 10.99,
valueType: 'Standard'
},
{
name: 'Invoice Line Item 2',
description: null,
value: 11.99,
valueType: 'Standard'
},
{
name: 'Invoice Line Item 3',
description: null,
value: 12.99,
valueType: 'Standard'
}
]
})
};
fetch('https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'merchantInvoiceRefId' => '5fb27a2c-bda4-48e8-9993-5be68a5a399c',
'invoiceLineItems' => [
[
'name' => 'Invoice Line Item 1',
'description' => null,
'value' => 10.99,
'valueType' => 'Standard'
],
[
'name' => 'Invoice Line Item 2',
'description' => null,
'value' => 11.99,
'valueType' => 'Standard'
],
[
'name' => 'Invoice Line Item 3',
'description' => null,
'value' => 12.99,
'valueType' => 'Standard'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json-patch+json",
"x-revolv3-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment"
payload := strings.NewReader("{\n \"merchantInvoiceRefId\": \"5fb27a2c-bda4-48e8-9993-5be68a5a399c\",\n \"invoiceLineItems\": [\n {\n \"name\": \"Invoice Line Item 1\",\n \"description\": null,\n \"value\": 10.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 2\",\n \"description\": null,\n \"value\": 11.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 3\",\n \"description\": null,\n \"value\": 12.99,\n \"valueType\": \"Standard\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-revolv3-token", "<api-key>")
req.Header.Add("Content-Type", "application/json-patch+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment")
.header("x-revolv3-token", "<api-key>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"merchantInvoiceRefId\": \"5fb27a2c-bda4-48e8-9993-5be68a5a399c\",\n \"invoiceLineItems\": [\n {\n \"name\": \"Invoice Line Item 1\",\n \"description\": null,\n \"value\": 10.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 2\",\n \"description\": null,\n \"value\": 11.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 3\",\n \"description\": null,\n \"value\": 12.99,\n \"valueType\": \"Standard\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-revolv3-token"] = '<api-key>'
request["Content-Type"] = 'application/json-patch+json'
request.body = "{\n \"merchantInvoiceRefId\": \"5fb27a2c-bda4-48e8-9993-5be68a5a399c\",\n \"invoiceLineItems\": [\n {\n \"name\": \"Invoice Line Item 1\",\n \"description\": null,\n \"value\": 10.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 2\",\n \"description\": null,\n \"value\": 11.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 3\",\n \"description\": null,\n \"value\": 12.99,\n \"valueType\": \"Standard\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"invoiceId": 1,
"merchantInvoiceRefId": null,
"invoiceStatus": 0,
"invoiceAttemptStatus": "Success",
"message": null,
"subtotal": 10.99,
"taxAmount": 0.98,
"total": 11.97,
"paymentMethodTypeId": 0,
"processorRawResponse": null,
"responseCode": null
}{
"message": "Unable to perform the request action with provided data."
}{
"message": "Attempted to perform an unauthorized operation."
}{
"message": "Unable to find an entity with the provided data."
}Create One Time Payment
Creates and processes a one-time payment under an existing subscription context, outside of the regular billing schedule. This is useful for charging a subscriber for additional services, setup fees, usage overages, or one-off adjustments without altering the subscription plan itself.
You must provide the subscriptionId, the amount and billing details.
The payment is immediately authorized and captured, and the transaction is linked to the subscription for reporting and tracking purposes.
This endpoint ensures flexibility in billing scenarios where extra charges are needed beyond the standard recurring invoice.
⚠️ Deprecated: This endpoint is still supported but is no longer recommended for new integrations. Please use the newer endpoints Sale With Payment Method Details, Sale With Payment Method Id or Capture instead, which provides extended functionality and improved error handling.
curl --request POST \
--url https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment \
--header 'Content-Type: application/json-patch+json' \
--header 'x-revolv3-token: <api-key>' \
--data '
{
"merchantInvoiceRefId": "5fb27a2c-bda4-48e8-9993-5be68a5a399c",
"invoiceLineItems": [
{
"name": "Invoice Line Item 1",
"description": null,
"value": 10.99,
"valueType": "Standard"
},
{
"name": "Invoice Line Item 2",
"description": null,
"value": 11.99,
"valueType": "Standard"
},
{
"name": "Invoice Line Item 3",
"description": null,
"value": 12.99,
"valueType": "Standard"
}
]
}
'import requests
url = "https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment"
payload = {
"merchantInvoiceRefId": "5fb27a2c-bda4-48e8-9993-5be68a5a399c",
"invoiceLineItems": [
{
"name": "Invoice Line Item 1",
"description": None,
"value": 10.99,
"valueType": "Standard"
},
{
"name": "Invoice Line Item 2",
"description": None,
"value": 11.99,
"valueType": "Standard"
},
{
"name": "Invoice Line Item 3",
"description": None,
"value": 12.99,
"valueType": "Standard"
}
]
}
headers = {
"x-revolv3-token": "<api-key>",
"Content-Type": "application/json-patch+json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-revolv3-token': '<api-key>', 'Content-Type': 'application/json-patch+json'},
body: JSON.stringify({
merchantInvoiceRefId: '5fb27a2c-bda4-48e8-9993-5be68a5a399c',
invoiceLineItems: [
{
name: 'Invoice Line Item 1',
description: null,
value: 10.99,
valueType: 'Standard'
},
{
name: 'Invoice Line Item 2',
description: null,
value: 11.99,
valueType: 'Standard'
},
{
name: 'Invoice Line Item 3',
description: null,
value: 12.99,
valueType: 'Standard'
}
]
})
};
fetch('https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'merchantInvoiceRefId' => '5fb27a2c-bda4-48e8-9993-5be68a5a399c',
'invoiceLineItems' => [
[
'name' => 'Invoice Line Item 1',
'description' => null,
'value' => 10.99,
'valueType' => 'Standard'
],
[
'name' => 'Invoice Line Item 2',
'description' => null,
'value' => 11.99,
'valueType' => 'Standard'
],
[
'name' => 'Invoice Line Item 3',
'description' => null,
'value' => 12.99,
'valueType' => 'Standard'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json-patch+json",
"x-revolv3-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment"
payload := strings.NewReader("{\n \"merchantInvoiceRefId\": \"5fb27a2c-bda4-48e8-9993-5be68a5a399c\",\n \"invoiceLineItems\": [\n {\n \"name\": \"Invoice Line Item 1\",\n \"description\": null,\n \"value\": 10.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 2\",\n \"description\": null,\n \"value\": 11.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 3\",\n \"description\": null,\n \"value\": 12.99,\n \"valueType\": \"Standard\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-revolv3-token", "<api-key>")
req.Header.Add("Content-Type", "application/json-patch+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment")
.header("x-revolv3-token", "<api-key>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"merchantInvoiceRefId\": \"5fb27a2c-bda4-48e8-9993-5be68a5a399c\",\n \"invoiceLineItems\": [\n {\n \"name\": \"Invoice Line Item 1\",\n \"description\": null,\n \"value\": 10.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 2\",\n \"description\": null,\n \"value\": 11.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 3\",\n \"description\": null,\n \"value\": 12.99,\n \"valueType\": \"Standard\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}/payment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-revolv3-token"] = '<api-key>'
request["Content-Type"] = 'application/json-patch+json'
request.body = "{\n \"merchantInvoiceRefId\": \"5fb27a2c-bda4-48e8-9993-5be68a5a399c\",\n \"invoiceLineItems\": [\n {\n \"name\": \"Invoice Line Item 1\",\n \"description\": null,\n \"value\": 10.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 2\",\n \"description\": null,\n \"value\": 11.99,\n \"valueType\": \"Standard\"\n },\n {\n \"name\": \"Invoice Line Item 3\",\n \"description\": null,\n \"value\": 12.99,\n \"valueType\": \"Standard\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"invoiceId": 1,
"merchantInvoiceRefId": null,
"invoiceStatus": 0,
"invoiceAttemptStatus": "Success",
"message": null,
"subtotal": 10.99,
"taxAmount": 0.98,
"total": 11.97,
"paymentMethodTypeId": 0,
"processorRawResponse": null,
"responseCode": null
}{
"message": "Unable to perform the request action with provided data."
}{
"message": "Attempted to perform an unauthorized operation."
}{
"message": "Unable to find an entity with the provided data."
}Authorizations
Path Parameters
1 <= x <= 1000000000Body
Response
OK
1 <= x <= 1000000000100Paid, Void, Pending, Recycle, Noncollectable, Failed, Refund, MerchantPaid, MerchantCancelled, OneTimePaymentPending, PartialRefund, BatchPending, CapturePending, RefundPending, RefundDeclined, RefundFailed, RetryPending, RecurringPending, MultiCardsPending, RefundVoid, PartialRefundVoid 1005000 <= x <= 100000000 <= x <= 100000000 <= x <= 100000001 <= x <= 100000000010000100Show child attributes
Show child attributes
10
