curl --request POST \
--url https://api.fintoc.com/v2/subscriptions/{subscription_id}/items \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"price_data": {
"currency": "CLP",
"recurring": {
"interval": "month",
"interval_count": 1
},
"unit_amount": 5000,
"product_data": {
"name": "Extra seat"
}
},
"quantity": 2
}
'import requests
url = "https://api.fintoc.com/v2/subscriptions/{subscription_id}/items"
payload = {
"price_data": {
"currency": "CLP",
"recurring": {
"interval": "month",
"interval_count": 1
},
"unit_amount": 5000,
"product_data": { "name": "Extra seat" }
},
"quantity": 2
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
price_data: {
currency: 'CLP',
recurring: {interval: 'month', interval_count: 1},
unit_amount: 5000,
product_data: {name: 'Extra seat'}
},
quantity: 2
})
};
fetch('https://api.fintoc.com/v2/subscriptions/{subscription_id}/items', 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.fintoc.com/v2/subscriptions/{subscription_id}/items",
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([
'price_data' => [
'currency' => 'CLP',
'recurring' => [
'interval' => 'month',
'interval_count' => 1
],
'unit_amount' => 5000,
'product_data' => [
'name' => 'Extra seat'
]
],
'quantity' => 2
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.fintoc.com/v2/subscriptions/{subscription_id}/items"
payload := strings.NewReader("{\n \"price_data\": {\n \"currency\": \"CLP\",\n \"recurring\": {\n \"interval\": \"month\",\n \"interval_count\": 1\n },\n \"unit_amount\": 5000,\n \"product_data\": {\n \"name\": \"Extra seat\"\n }\n },\n \"quantity\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.fintoc.com/v2/subscriptions/{subscription_id}/items")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"price_data\": {\n \"currency\": \"CLP\",\n \"recurring\": {\n \"interval\": \"month\",\n \"interval_count\": 1\n },\n \"unit_amount\": 5000,\n \"product_data\": {\n \"name\": \"Extra seat\"\n }\n },\n \"quantity\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fintoc.com/v2/subscriptions/{subscription_id}/items")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"price_data\": {\n \"currency\": \"CLP\",\n \"recurring\": {\n \"interval\": \"month\",\n \"interval_count\": 1\n },\n \"unit_amount\": 5000,\n \"product_data\": {\n \"name\": \"Extra seat\"\n }\n },\n \"quantity\": 2\n}"
response = http.request(request)
puts response.read_body{
"id": "si_2c4mDfkPLLrLTCJ3wPCEHGYpkVf",
"object": "subscription_item",
"price": {
"currency": "CLP",
"product": {
"id": "prod_2c4mDgwQqkNwMHnXSc4DBjkbcWz",
"object": "product",
"created_at": "2026-06-01T15:00:00Z",
"description": null,
"image_url": null,
"metadata": {},
"mode": "live",
"name": "Extra seat"
},
"recurring": {
"interval": "month",
"interval_count": 1
},
"unit_amount": 5000
},
"quantity": 2
}{
"error": {
"type": "invalid_request_error",
"code": "missing_parameter",
"param": "price_data",
"message": "Missing required param: price_data",
"doc_url": "https://docs.fintoc.com/reference/errors"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "Invalid API Key: invalid-*oken"
}
}{
"error": {
"type": "invalid_request_error",
"code": "missing_resource",
"param": "subscription_id",
"message": "No such invoicing/subscription: sub_2c4mDcMaVxDx7nT3o5GbPMQbS2v",
"doc_url": "https://docs.fintoc.com/reference/errors"
}
}{
"error": {
"type": "invalid_request_error",
"code": "currency_mismatch",
"message": "Each subscription item's price currency must be compatible with the subscription's billing currency"
}
}Create a subscription item
Adds an item to an existing subscription. Fintoc creates a new price from price_data, referencing an existing product (product) or defining one inline (product_data). The new price must use a currency compatible with the subscription’s existing items (a CLF price bills within a CLP subscription) and the same recurring interval. Fintoc bills the item starting from the subscription’s next invoice and does not prorate the current billing period.
curl --request POST \
--url https://api.fintoc.com/v2/subscriptions/{subscription_id}/items \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"price_data": {
"currency": "CLP",
"recurring": {
"interval": "month",
"interval_count": 1
},
"unit_amount": 5000,
"product_data": {
"name": "Extra seat"
}
},
"quantity": 2
}
'import requests
url = "https://api.fintoc.com/v2/subscriptions/{subscription_id}/items"
payload = {
"price_data": {
"currency": "CLP",
"recurring": {
"interval": "month",
"interval_count": 1
},
"unit_amount": 5000,
"product_data": { "name": "Extra seat" }
},
"quantity": 2
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
price_data: {
currency: 'CLP',
recurring: {interval: 'month', interval_count: 1},
unit_amount: 5000,
product_data: {name: 'Extra seat'}
},
quantity: 2
})
};
fetch('https://api.fintoc.com/v2/subscriptions/{subscription_id}/items', 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.fintoc.com/v2/subscriptions/{subscription_id}/items",
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([
'price_data' => [
'currency' => 'CLP',
'recurring' => [
'interval' => 'month',
'interval_count' => 1
],
'unit_amount' => 5000,
'product_data' => [
'name' => 'Extra seat'
]
],
'quantity' => 2
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.fintoc.com/v2/subscriptions/{subscription_id}/items"
payload := strings.NewReader("{\n \"price_data\": {\n \"currency\": \"CLP\",\n \"recurring\": {\n \"interval\": \"month\",\n \"interval_count\": 1\n },\n \"unit_amount\": 5000,\n \"product_data\": {\n \"name\": \"Extra seat\"\n }\n },\n \"quantity\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.fintoc.com/v2/subscriptions/{subscription_id}/items")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"price_data\": {\n \"currency\": \"CLP\",\n \"recurring\": {\n \"interval\": \"month\",\n \"interval_count\": 1\n },\n \"unit_amount\": 5000,\n \"product_data\": {\n \"name\": \"Extra seat\"\n }\n },\n \"quantity\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fintoc.com/v2/subscriptions/{subscription_id}/items")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"price_data\": {\n \"currency\": \"CLP\",\n \"recurring\": {\n \"interval\": \"month\",\n \"interval_count\": 1\n },\n \"unit_amount\": 5000,\n \"product_data\": {\n \"name\": \"Extra seat\"\n }\n },\n \"quantity\": 2\n}"
response = http.request(request)
puts response.read_body{
"id": "si_2c4mDfkPLLrLTCJ3wPCEHGYpkVf",
"object": "subscription_item",
"price": {
"currency": "CLP",
"product": {
"id": "prod_2c4mDgwQqkNwMHnXSc4DBjkbcWz",
"object": "product",
"created_at": "2026-06-01T15:00:00Z",
"description": null,
"image_url": null,
"metadata": {},
"mode": "live",
"name": "Extra seat"
},
"recurring": {
"interval": "month",
"interval_count": 1
},
"unit_amount": 5000
},
"quantity": 2
}{
"error": {
"type": "invalid_request_error",
"code": "missing_parameter",
"param": "price_data",
"message": "Missing required param: price_data",
"doc_url": "https://docs.fintoc.com/reference/errors"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "Invalid API Key: invalid-*oken"
}
}{
"error": {
"type": "invalid_request_error",
"code": "missing_resource",
"param": "subscription_id",
"message": "No such invoicing/subscription: sub_2c4mDcMaVxDx7nT3o5GbPMQbS2v",
"doc_url": "https://docs.fintoc.com/reference/errors"
}
}{
"error": {
"type": "invalid_request_error",
"code": "currency_mismatch",
"message": "Each subscription item's price currency must be compatible with the subscription's billing currency"
}
}v2 · Base URL https://api.fintoc.com/v2Autorizaciones
Parámetros de ruta
The id of the subscription to add the item to.
Cuerpo
Respuesta
Subscription item created. Fintoc bills it starting from the subscription's next invoice.
Unique identifier of the subscription item.
"si_2c4mDfkPLLrLTCJ3wPCEHGYpkVf"
Type of the object. Always subscription_item.
Price the item bills for on every billing cycle.
Show child attributes
Show child attributes
Number of units of the price the item bills for.
1
¿Esta página le ayudó?