Get Subscriptions By PAN
curl --request POST \
--url https://api-sandbox.revolv3.com/api/Subscriptions/pan-lookup \
--header 'Content-Type: application/json-patch+json' \
--header 'x-revolv3-token: <api-key>' \
--data '
{
"paymentAccountNumber": "4111111111111111"
}
'import requests
url = "https://api-sandbox.revolv3.com/api/Subscriptions/pan-lookup"
payload = { "paymentAccountNumber": "4111111111111111" }
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({paymentAccountNumber: '4111111111111111'})
};
fetch('https://api-sandbox.revolv3.com/api/Subscriptions/pan-lookup', 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/pan-lookup",
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([
'paymentAccountNumber' => '4111111111111111'
]),
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/pan-lookup"
payload := strings.NewReader("{\n \"paymentAccountNumber\": \"4111111111111111\"\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/pan-lookup")
.header("x-revolv3-token", "<api-key>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"paymentAccountNumber\": \"4111111111111111\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.revolv3.com/api/Subscriptions/pan-lookup")
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 \"paymentAccountNumber\": \"4111111111111111\"\n}"
response = http.request(request)
puts response.read_body[
{
"subscriptionId": 1,
"customerId": 3,
"merchantSubscriptionRefId": null,
"networkTransactionId": null,
"billingIntervalType": "Days",
"billingIntervalCount": 1,
"subscriptionStatusType": "current",
"subscriptionCancelType": null,
"initialBillDate": "9/1/2026",
"nextBillDate": "9/2/2026",
"taxAddress": {
"addressId": 0,
"addressLine1": "101 Update Street",
"addressLine2": null,
"city": "Irvine",
"state": "CA",
"postalCode": "92602",
"phoneNumber": null,
"email": null,
"country": "US"
},
"paymentMethodIds": [
1
],
"cancelledAt": null,
"billingPlans": [
{
"subscriptionBillingPlanId": 1,
"subscriptionId": 0,
"name": "Billing Plan 1",
"value": 10.99,
"startDate": "9/1/2026",
"cyclesRemaining": -1,
"cycleCount": 0,
"valueType": "Standard"
},
{
"subscriptionBillingPlanId": 2,
"subscriptionId": 0,
"name": "Billing Plan 2",
"value": 14.99,
"startDate": "9/1/2026",
"cyclesRemaining": 12,
"cycleCount": 0,
"valueType": "Standard"
}
],
"message": null,
"paymentProcessor": null,
"processorMerchantId": null,
"processorRawResponse": null,
"currency": null,
"responseMessage": null,
"responseCode": null
},
{
"subscriptionId": 2,
"customerId": 3,
"merchantSubscriptionRefId": null,
"networkTransactionId": null,
"billingIntervalType": "Months",
"billingIntervalCount": 1,
"subscriptionStatusType": "recycled",
"subscriptionCancelType": null,
"initialBillDate": "9/1/2026",
"nextBillDate": "9/2/2026",
"taxAddress": null,
"paymentMethodIds": null,
"cancelledAt": null,
"billingPlans": null,
"message": null,
"paymentProcessor": null,
"processorMerchantId": null,
"processorRawResponse": null,
"currency": null,
"responseMessage": 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
Get Subscriptions By PAN
Searches for and returns subscriptions associated with a specific PAN (Primary Account Number) — the full card number. This endpoint is useful for backend support or migration scenarios where subscriptions need to be located based on card information, especially across multiple customer profiles.
You must be PCI-compliant to use this endpoint, as it involves sensitive payment identifiers. Use with caution and ensure appropriate access control is in place.
POST
/
api
/
Subscriptions
/
pan-lookup
Get Subscriptions By PAN
curl --request POST \
--url https://api-sandbox.revolv3.com/api/Subscriptions/pan-lookup \
--header 'Content-Type: application/json-patch+json' \
--header 'x-revolv3-token: <api-key>' \
--data '
{
"paymentAccountNumber": "4111111111111111"
}
'import requests
url = "https://api-sandbox.revolv3.com/api/Subscriptions/pan-lookup"
payload = { "paymentAccountNumber": "4111111111111111" }
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({paymentAccountNumber: '4111111111111111'})
};
fetch('https://api-sandbox.revolv3.com/api/Subscriptions/pan-lookup', 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/pan-lookup",
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([
'paymentAccountNumber' => '4111111111111111'
]),
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/pan-lookup"
payload := strings.NewReader("{\n \"paymentAccountNumber\": \"4111111111111111\"\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/pan-lookup")
.header("x-revolv3-token", "<api-key>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"paymentAccountNumber\": \"4111111111111111\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.revolv3.com/api/Subscriptions/pan-lookup")
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 \"paymentAccountNumber\": \"4111111111111111\"\n}"
response = http.request(request)
puts response.read_body[
{
"subscriptionId": 1,
"customerId": 3,
"merchantSubscriptionRefId": null,
"networkTransactionId": null,
"billingIntervalType": "Days",
"billingIntervalCount": 1,
"subscriptionStatusType": "current",
"subscriptionCancelType": null,
"initialBillDate": "9/1/2026",
"nextBillDate": "9/2/2026",
"taxAddress": {
"addressId": 0,
"addressLine1": "101 Update Street",
"addressLine2": null,
"city": "Irvine",
"state": "CA",
"postalCode": "92602",
"phoneNumber": null,
"email": null,
"country": "US"
},
"paymentMethodIds": [
1
],
"cancelledAt": null,
"billingPlans": [
{
"subscriptionBillingPlanId": 1,
"subscriptionId": 0,
"name": "Billing Plan 1",
"value": 10.99,
"startDate": "9/1/2026",
"cyclesRemaining": -1,
"cycleCount": 0,
"valueType": "Standard"
},
{
"subscriptionBillingPlanId": 2,
"subscriptionId": 0,
"name": "Billing Plan 2",
"value": 14.99,
"startDate": "9/1/2026",
"cyclesRemaining": 12,
"cycleCount": 0,
"valueType": "Standard"
}
],
"message": null,
"paymentProcessor": null,
"processorMerchantId": null,
"processorRawResponse": null,
"currency": null,
"responseMessage": null,
"responseCode": null
},
{
"subscriptionId": 2,
"customerId": 3,
"merchantSubscriptionRefId": null,
"networkTransactionId": null,
"billingIntervalType": "Months",
"billingIntervalCount": 1,
"subscriptionStatusType": "recycled",
"subscriptionCancelType": null,
"initialBillDate": "9/1/2026",
"nextBillDate": "9/2/2026",
"taxAddress": null,
"paymentMethodIds": null,
"cancelledAt": null,
"billingPlans": null,
"message": null,
"paymentProcessor": null,
"processorMerchantId": null,
"processorRawResponse": null,
"currency": null,
"responseMessage": 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
Body
application/json-patch+jsonapplication/jsontext/jsonapplication/*+json
Required string length:
8 - 19Pattern:
^\d{8,19}$Response
OK
Required range:
1 <= x <= 1000000000Required range:
1 <= x <= 1000000000Maximum string length:
100Maximum string length:
100Maximum string length:
50Required range:
1 <= x <= 1000000000Maximum string length:
50Maximum string length:
50Maximum string length:
20Maximum string length:
20Show child attributes
Show child attributes
Maximum string length:
40Show child attributes
Show child attributes
Maximum string length:
500Maximum string length:
100Maximum string length:
100Maximum string length:
10000Maximum string length:
3Maximum string length:
500Maximum string length:
10
