Create One Time Payment
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": "06a30ccd-ed68-44d1-bc46-f48681b6d095",
"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": "06a30ccd-ed68-44d1-bc46-f48681b6d095",
"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: '06a30ccd-ed68-44d1-bc46-f48681b6d095',
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' => '06a30ccd-ed68-44d1-bc46-f48681b6d095',
'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\": \"06a30ccd-ed68-44d1-bc46-f48681b6d095\",\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\": \"06a30ccd-ed68-44d1-bc46-f48681b6d095\",\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\": \"06a30ccd-ed68-44d1-bc46-f48681b6d095\",\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."
}Subscriptions
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.
POST
/
api
/
Subscriptions
/
{subscriptionId}
/
payment
Create One Time Payment
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": "06a30ccd-ed68-44d1-bc46-f48681b6d095",
"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": "06a30ccd-ed68-44d1-bc46-f48681b6d095",
"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: '06a30ccd-ed68-44d1-bc46-f48681b6d095',
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' => '06a30ccd-ed68-44d1-bc46-f48681b6d095',
'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\": \"06a30ccd-ed68-44d1-bc46-f48681b6d095\",\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\": \"06a30ccd-ed68-44d1-bc46-f48681b6d095\",\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\": \"06a30ccd-ed68-44d1-bc46-f48681b6d095\",\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
Required range:
1 <= x <= 1000000000Body
application/json-patch+jsonapplication/jsontext/jsonapplication/*+json
Response
OK
Required range:
1 <= x <= 1000000000Maximum string length:
100Available options:
Paid, Void, Pending, Recycle, Noncollectable, Failed, Refund, MerchantPaid, MerchantCancelled, OneTimePaymentPending, PartialRefund, BatchPending, CapturePending, RefundPending, RefundDeclined, RefundFailed, RetryPending, RecurringPending, MultiCardsPending, RefundVoid, PartialRefundVoid Maximum string length:
100Maximum string length:
500Required range:
0 <= x <= 10000000Required range:
0 <= x <= 10000000Required range:
0 <= x <= 10000000Required range:
1 <= x <= 1000000000Maximum string length:
10000Maximum string length:
100Show child attributes
Show child attributes
Maximum string length:
10⌘I

