Activate a subscription
curl --request POST \
--url https://api.arcenpay.com/api/v1/subscriptions/activate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"planId": "<string>",
"paymentAccount": "<string>",
"company": {
"id": "<string>",
"wallet": "<string>",
"email": "<string>",
"name": "<string>",
"traits": {}
},
"subscriberEmail": "<string>",
"couponCode": "<string>"
}
'import requests
url = "https://api.arcenpay.com/api/v1/subscriptions/activate"
payload = {
"planId": "<string>",
"paymentAccount": "<string>",
"company": {
"id": "<string>",
"wallet": "<string>",
"email": "<string>",
"name": "<string>",
"traits": {}
},
"subscriberEmail": "<string>",
"couponCode": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
planId: '<string>',
paymentAccount: '<string>',
company: {
id: '<string>',
wallet: '<string>',
email: '<string>',
name: '<string>',
traits: {}
},
subscriberEmail: '<string>',
couponCode: '<string>'
})
};
fetch('https://api.arcenpay.com/api/v1/subscriptions/activate', 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.arcenpay.com/api/v1/subscriptions/activate",
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([
'planId' => '<string>',
'paymentAccount' => '<string>',
'company' => [
'id' => '<string>',
'wallet' => '<string>',
'email' => '<string>',
'name' => '<string>',
'traits' => [
]
],
'subscriberEmail' => '<string>',
'couponCode' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.arcenpay.com/api/v1/subscriptions/activate"
payload := strings.NewReader("{\n \"planId\": \"<string>\",\n \"paymentAccount\": \"<string>\",\n \"company\": {\n \"id\": \"<string>\",\n \"wallet\": \"<string>\",\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"traits\": {}\n },\n \"subscriberEmail\": \"<string>\",\n \"couponCode\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/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.arcenpay.com/api/v1/subscriptions/activate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"planId\": \"<string>\",\n \"paymentAccount\": \"<string>\",\n \"company\": {\n \"id\": \"<string>\",\n \"wallet\": \"<string>\",\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"traits\": {}\n },\n \"subscriberEmail\": \"<string>\",\n \"couponCode\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcenpay.com/api/v1/subscriptions/activate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"planId\": \"<string>\",\n \"paymentAccount\": \"<string>\",\n \"company\": {\n \"id\": \"<string>\",\n \"wallet\": \"<string>\",\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"traits\": {}\n },\n \"subscriberEmail\": \"<string>\",\n \"couponCode\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"tokenId": "<string>",
"txHash": "<string>",
"companyId": "<string>",
"planId": "<string>",
"paymentAccount": "<string>"
}
}{
"error": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>"
}Subscriptions
Activate a subscription
Executes the first on-chain subscription charge, mints the subscription token, and sets up autopay. Auth: legacy api_… key, embed access token, or dashboard session.
POST
/
subscriptions
/
activate
Activate a subscription
curl --request POST \
--url https://api.arcenpay.com/api/v1/subscriptions/activate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"planId": "<string>",
"paymentAccount": "<string>",
"company": {
"id": "<string>",
"wallet": "<string>",
"email": "<string>",
"name": "<string>",
"traits": {}
},
"subscriberEmail": "<string>",
"couponCode": "<string>"
}
'import requests
url = "https://api.arcenpay.com/api/v1/subscriptions/activate"
payload = {
"planId": "<string>",
"paymentAccount": "<string>",
"company": {
"id": "<string>",
"wallet": "<string>",
"email": "<string>",
"name": "<string>",
"traits": {}
},
"subscriberEmail": "<string>",
"couponCode": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
planId: '<string>',
paymentAccount: '<string>',
company: {
id: '<string>',
wallet: '<string>',
email: '<string>',
name: '<string>',
traits: {}
},
subscriberEmail: '<string>',
couponCode: '<string>'
})
};
fetch('https://api.arcenpay.com/api/v1/subscriptions/activate', 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.arcenpay.com/api/v1/subscriptions/activate",
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([
'planId' => '<string>',
'paymentAccount' => '<string>',
'company' => [
'id' => '<string>',
'wallet' => '<string>',
'email' => '<string>',
'name' => '<string>',
'traits' => [
]
],
'subscriberEmail' => '<string>',
'couponCode' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.arcenpay.com/api/v1/subscriptions/activate"
payload := strings.NewReader("{\n \"planId\": \"<string>\",\n \"paymentAccount\": \"<string>\",\n \"company\": {\n \"id\": \"<string>\",\n \"wallet\": \"<string>\",\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"traits\": {}\n },\n \"subscriberEmail\": \"<string>\",\n \"couponCode\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/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.arcenpay.com/api/v1/subscriptions/activate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"planId\": \"<string>\",\n \"paymentAccount\": \"<string>\",\n \"company\": {\n \"id\": \"<string>\",\n \"wallet\": \"<string>\",\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"traits\": {}\n },\n \"subscriberEmail\": \"<string>\",\n \"couponCode\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcenpay.com/api/v1/subscriptions/activate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"planId\": \"<string>\",\n \"paymentAccount\": \"<string>\",\n \"company\": {\n \"id\": \"<string>\",\n \"wallet\": \"<string>\",\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"traits\": {}\n },\n \"subscriberEmail\": \"<string>\",\n \"couponCode\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"tokenId": "<string>",
"txHash": "<string>",
"companyId": "<string>",
"planId": "<string>",
"paymentAccount": "<string>"
}
}{
"error": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
On-chain PlanFactory plan ID.
Subscriber wallet (EOA or smart account) with autopay installed and sufficient balance/allowance.
At least one of id, wallet, or email.
Show child attributes
Show child attributes
Email for billing receipts.
Optional coupon applied at activation.
Response
Subscription activated
Show child attributes
Show child attributes
Last modified on September 19, 2026

