Set reminders
curl --request POST \
--url https://api.reclack.com/v1/invoices/{invoiceId}/reminders \
--header 'Api-Key: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled": true
}
'import requests
url = "https://api.reclack.com/v1/invoices/{invoiceId}/reminders"
payload = { "enabled": True }
headers = {
"Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({enabled: true})
};
fetch('https://api.reclack.com/v1/invoices/{invoiceId}/reminders', 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.reclack.com/v1/invoices/{invoiceId}/reminders",
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([
'enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Api-Key: <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.reclack.com/v1/invoices/{invoiceId}/reminders"
payload := strings.NewReader("{\n \"enabled\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Api-Key", "<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.reclack.com/v1/invoices/{invoiceId}/reminders")
.header("Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reclack.com/v1/invoices/{invoiceId}/reminders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "in_0182",
"code": "INV-00182",
"reference": "in_0182",
"status": "open",
"amount": "120.00",
"amount_atomic": "120000000",
"fee_atomic": "1200000",
"currency": "USDC",
"network": "base",
"chain_id": 8453,
"period_start": "2026-10-18T22:07:41Z",
"period_end": "2026-10-18T22:07:41Z",
"attempt_count": 0,
"next_attempt_at": "2026-10-18T22:07:41Z",
"paid_at": "2026-10-18T22:07:41Z",
"sent_at": "2026-10-18T22:07:41Z",
"reminders_enabled": true,
"last_reminder_at": "2026-10-18T22:07:41Z",
"failure_code": "insufficient_allowance",
"failure_message": "The authorization no longer covers this amount",
"metadata": {},
"created_at": "2026-10-18T22:07:41Z",
"updated_at": "2026-10-18T22:07:41Z"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}Invoices
Set Invoice Reminders
Turn reminders on or off for an invoice.
POST
/
v1
/
invoices
/
{invoiceId}
/
reminders
Set reminders
curl --request POST \
--url https://api.reclack.com/v1/invoices/{invoiceId}/reminders \
--header 'Api-Key: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled": true
}
'import requests
url = "https://api.reclack.com/v1/invoices/{invoiceId}/reminders"
payload = { "enabled": True }
headers = {
"Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({enabled: true})
};
fetch('https://api.reclack.com/v1/invoices/{invoiceId}/reminders', 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.reclack.com/v1/invoices/{invoiceId}/reminders",
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([
'enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Api-Key: <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.reclack.com/v1/invoices/{invoiceId}/reminders"
payload := strings.NewReader("{\n \"enabled\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Api-Key", "<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.reclack.com/v1/invoices/{invoiceId}/reminders")
.header("Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reclack.com/v1/invoices/{invoiceId}/reminders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "in_0182",
"code": "INV-00182",
"reference": "in_0182",
"status": "open",
"amount": "120.00",
"amount_atomic": "120000000",
"fee_atomic": "1200000",
"currency": "USDC",
"network": "base",
"chain_id": 8453,
"period_start": "2026-10-18T22:07:41Z",
"period_end": "2026-10-18T22:07:41Z",
"attempt_count": 0,
"next_attempt_at": "2026-10-18T22:07:41Z",
"paid_at": "2026-10-18T22:07:41Z",
"sent_at": "2026-10-18T22:07:41Z",
"reminders_enabled": true,
"last_reminder_at": "2026-10-18T22:07:41Z",
"failure_code": "insufficient_allowance",
"failure_message": "The authorization no longer covers this amount",
"metadata": {},
"created_at": "2026-10-18T22:07:41Z",
"updated_at": "2026-10-18T22:07:41Z"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}Overview
Turn reminders on or off. They run before the due date and after it, and stop the moment the invoice is paid, so nobody is chased for money they already sent.Authorizations
Your Reclack API key. The prefix decides the environment: rk_sandbox_ for test chains, rk_live_ for production.
Path Parameters
The invoice id.
Body
application/json
Whether reminders run for this invoice.
Response
Success
Show child attributes
Show child attributes

