Create recurring bill item
curl --request POST \
--url https://api.helloproper.com/recurring-bill-items \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"leaseId": "<string>",
"recurringBillItem": {
"productKey": "<string>",
"description": "<string>",
"amount": {
"currency": "<string>",
"amount": 123
},
"quantity": 123,
"vat": {
"taxMode": "<string>",
"taxRate": 123
},
"dueDateRule": {
"dayOfPeriod": 123
},
"billingCycle": {
"timeUnit": "<string>",
"periodLength": 123,
"start": 123
},
"startedOn": "<string>",
"firstBillingPeriodBillItem": {
"amount": {
"currency": "<string>",
"amount": 123
},
"dueDate": "<string>",
"accountingPeriod": "<string>"
},
"discount": {
"amount": {
"currency": "<string>",
"amount": 123
},
"percentage": 123,
"description": "<string>",
"endDate": "<string>"
}
}
}
'import requests
url = "https://api.helloproper.com/recurring-bill-items"
payload = {
"leaseId": "<string>",
"recurringBillItem": {
"productKey": "<string>",
"description": "<string>",
"amount": {
"currency": "<string>",
"amount": 123
},
"quantity": 123,
"vat": {
"taxMode": "<string>",
"taxRate": 123
},
"dueDateRule": { "dayOfPeriod": 123 },
"billingCycle": {
"timeUnit": "<string>",
"periodLength": 123,
"start": 123
},
"startedOn": "<string>",
"firstBillingPeriodBillItem": {
"amount": {
"currency": "<string>",
"amount": 123
},
"dueDate": "<string>",
"accountingPeriod": "<string>"
},
"discount": {
"amount": {
"currency": "<string>",
"amount": 123
},
"percentage": 123,
"description": "<string>",
"endDate": "<string>"
}
}
}
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({
leaseId: '<string>',
recurringBillItem: {
productKey: '<string>',
description: '<string>',
amount: {currency: '<string>', amount: 123},
quantity: 123,
vat: {taxMode: '<string>', taxRate: 123},
dueDateRule: {dayOfPeriod: 123},
billingCycle: {timeUnit: '<string>', periodLength: 123, start: 123},
startedOn: '<string>',
firstBillingPeriodBillItem: {
amount: {currency: '<string>', amount: 123},
dueDate: '<string>',
accountingPeriod: '<string>'
},
discount: {
amount: {currency: '<string>', amount: 123},
percentage: 123,
description: '<string>',
endDate: '<string>'
}
}
})
};
fetch('https://api.helloproper.com/recurring-bill-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.helloproper.com/recurring-bill-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([
'leaseId' => '<string>',
'recurringBillItem' => [
'productKey' => '<string>',
'description' => '<string>',
'amount' => [
'currency' => '<string>',
'amount' => 123
],
'quantity' => 123,
'vat' => [
'taxMode' => '<string>',
'taxRate' => 123
],
'dueDateRule' => [
'dayOfPeriod' => 123
],
'billingCycle' => [
'timeUnit' => '<string>',
'periodLength' => 123,
'start' => 123
],
'startedOn' => '<string>',
'firstBillingPeriodBillItem' => [
'amount' => [
'currency' => '<string>',
'amount' => 123
],
'dueDate' => '<string>',
'accountingPeriod' => '<string>'
],
'discount' => [
'amount' => [
'currency' => '<string>',
'amount' => 123
],
'percentage' => 123,
'description' => '<string>',
'endDate' => '<string>'
]
]
]),
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.helloproper.com/recurring-bill-items"
payload := strings.NewReader("{\n \"leaseId\": \"<string>\",\n \"recurringBillItem\": {\n \"productKey\": \"<string>\",\n \"description\": \"<string>\",\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"quantity\": 123,\n \"vat\": {\n \"taxMode\": \"<string>\",\n \"taxRate\": 123\n },\n \"dueDateRule\": {\n \"dayOfPeriod\": 123\n },\n \"billingCycle\": {\n \"timeUnit\": \"<string>\",\n \"periodLength\": 123,\n \"start\": 123\n },\n \"startedOn\": \"<string>\",\n \"firstBillingPeriodBillItem\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"dueDate\": \"<string>\",\n \"accountingPeriod\": \"<string>\"\n },\n \"discount\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"percentage\": 123,\n \"description\": \"<string>\",\n \"endDate\": \"<string>\"\n }\n }\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.helloproper.com/recurring-bill-items")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"leaseId\": \"<string>\",\n \"recurringBillItem\": {\n \"productKey\": \"<string>\",\n \"description\": \"<string>\",\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"quantity\": 123,\n \"vat\": {\n \"taxMode\": \"<string>\",\n \"taxRate\": 123\n },\n \"dueDateRule\": {\n \"dayOfPeriod\": 123\n },\n \"billingCycle\": {\n \"timeUnit\": \"<string>\",\n \"periodLength\": 123,\n \"start\": 123\n },\n \"startedOn\": \"<string>\",\n \"firstBillingPeriodBillItem\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"dueDate\": \"<string>\",\n \"accountingPeriod\": \"<string>\"\n },\n \"discount\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"percentage\": 123,\n \"description\": \"<string>\",\n \"endDate\": \"<string>\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helloproper.com/recurring-bill-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 \"leaseId\": \"<string>\",\n \"recurringBillItem\": {\n \"productKey\": \"<string>\",\n \"description\": \"<string>\",\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"quantity\": 123,\n \"vat\": {\n \"taxMode\": \"<string>\",\n \"taxRate\": 123\n },\n \"dueDateRule\": {\n \"dayOfPeriod\": 123\n },\n \"billingCycle\": {\n \"timeUnit\": \"<string>\",\n \"periodLength\": 123,\n \"start\": 123\n },\n \"startedOn\": \"<string>\",\n \"firstBillingPeriodBillItem\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"dueDate\": \"<string>\",\n \"accountingPeriod\": \"<string>\"\n },\n \"discount\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"percentage\": 123,\n \"description\": \"<string>\",\n \"endDate\": \"<string>\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"recurringBillItemId": "<string>",
"firstDueDate": "<string>"
}Recurring bill items
Create recurring bill item
POST
/
recurring-bill-items
Create recurring bill item
curl --request POST \
--url https://api.helloproper.com/recurring-bill-items \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"leaseId": "<string>",
"recurringBillItem": {
"productKey": "<string>",
"description": "<string>",
"amount": {
"currency": "<string>",
"amount": 123
},
"quantity": 123,
"vat": {
"taxMode": "<string>",
"taxRate": 123
},
"dueDateRule": {
"dayOfPeriod": 123
},
"billingCycle": {
"timeUnit": "<string>",
"periodLength": 123,
"start": 123
},
"startedOn": "<string>",
"firstBillingPeriodBillItem": {
"amount": {
"currency": "<string>",
"amount": 123
},
"dueDate": "<string>",
"accountingPeriod": "<string>"
},
"discount": {
"amount": {
"currency": "<string>",
"amount": 123
},
"percentage": 123,
"description": "<string>",
"endDate": "<string>"
}
}
}
'import requests
url = "https://api.helloproper.com/recurring-bill-items"
payload = {
"leaseId": "<string>",
"recurringBillItem": {
"productKey": "<string>",
"description": "<string>",
"amount": {
"currency": "<string>",
"amount": 123
},
"quantity": 123,
"vat": {
"taxMode": "<string>",
"taxRate": 123
},
"dueDateRule": { "dayOfPeriod": 123 },
"billingCycle": {
"timeUnit": "<string>",
"periodLength": 123,
"start": 123
},
"startedOn": "<string>",
"firstBillingPeriodBillItem": {
"amount": {
"currency": "<string>",
"amount": 123
},
"dueDate": "<string>",
"accountingPeriod": "<string>"
},
"discount": {
"amount": {
"currency": "<string>",
"amount": 123
},
"percentage": 123,
"description": "<string>",
"endDate": "<string>"
}
}
}
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({
leaseId: '<string>',
recurringBillItem: {
productKey: '<string>',
description: '<string>',
amount: {currency: '<string>', amount: 123},
quantity: 123,
vat: {taxMode: '<string>', taxRate: 123},
dueDateRule: {dayOfPeriod: 123},
billingCycle: {timeUnit: '<string>', periodLength: 123, start: 123},
startedOn: '<string>',
firstBillingPeriodBillItem: {
amount: {currency: '<string>', amount: 123},
dueDate: '<string>',
accountingPeriod: '<string>'
},
discount: {
amount: {currency: '<string>', amount: 123},
percentage: 123,
description: '<string>',
endDate: '<string>'
}
}
})
};
fetch('https://api.helloproper.com/recurring-bill-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.helloproper.com/recurring-bill-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([
'leaseId' => '<string>',
'recurringBillItem' => [
'productKey' => '<string>',
'description' => '<string>',
'amount' => [
'currency' => '<string>',
'amount' => 123
],
'quantity' => 123,
'vat' => [
'taxMode' => '<string>',
'taxRate' => 123
],
'dueDateRule' => [
'dayOfPeriod' => 123
],
'billingCycle' => [
'timeUnit' => '<string>',
'periodLength' => 123,
'start' => 123
],
'startedOn' => '<string>',
'firstBillingPeriodBillItem' => [
'amount' => [
'currency' => '<string>',
'amount' => 123
],
'dueDate' => '<string>',
'accountingPeriod' => '<string>'
],
'discount' => [
'amount' => [
'currency' => '<string>',
'amount' => 123
],
'percentage' => 123,
'description' => '<string>',
'endDate' => '<string>'
]
]
]),
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.helloproper.com/recurring-bill-items"
payload := strings.NewReader("{\n \"leaseId\": \"<string>\",\n \"recurringBillItem\": {\n \"productKey\": \"<string>\",\n \"description\": \"<string>\",\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"quantity\": 123,\n \"vat\": {\n \"taxMode\": \"<string>\",\n \"taxRate\": 123\n },\n \"dueDateRule\": {\n \"dayOfPeriod\": 123\n },\n \"billingCycle\": {\n \"timeUnit\": \"<string>\",\n \"periodLength\": 123,\n \"start\": 123\n },\n \"startedOn\": \"<string>\",\n \"firstBillingPeriodBillItem\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"dueDate\": \"<string>\",\n \"accountingPeriod\": \"<string>\"\n },\n \"discount\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"percentage\": 123,\n \"description\": \"<string>\",\n \"endDate\": \"<string>\"\n }\n }\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.helloproper.com/recurring-bill-items")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"leaseId\": \"<string>\",\n \"recurringBillItem\": {\n \"productKey\": \"<string>\",\n \"description\": \"<string>\",\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"quantity\": 123,\n \"vat\": {\n \"taxMode\": \"<string>\",\n \"taxRate\": 123\n },\n \"dueDateRule\": {\n \"dayOfPeriod\": 123\n },\n \"billingCycle\": {\n \"timeUnit\": \"<string>\",\n \"periodLength\": 123,\n \"start\": 123\n },\n \"startedOn\": \"<string>\",\n \"firstBillingPeriodBillItem\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"dueDate\": \"<string>\",\n \"accountingPeriod\": \"<string>\"\n },\n \"discount\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"percentage\": 123,\n \"description\": \"<string>\",\n \"endDate\": \"<string>\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helloproper.com/recurring-bill-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 \"leaseId\": \"<string>\",\n \"recurringBillItem\": {\n \"productKey\": \"<string>\",\n \"description\": \"<string>\",\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"quantity\": 123,\n \"vat\": {\n \"taxMode\": \"<string>\",\n \"taxRate\": 123\n },\n \"dueDateRule\": {\n \"dayOfPeriod\": 123\n },\n \"billingCycle\": {\n \"timeUnit\": \"<string>\",\n \"periodLength\": 123,\n \"start\": 123\n },\n \"startedOn\": \"<string>\",\n \"firstBillingPeriodBillItem\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"dueDate\": \"<string>\",\n \"accountingPeriod\": \"<string>\"\n },\n \"discount\": {\n \"amount\": {\n \"currency\": \"<string>\",\n \"amount\": 123\n },\n \"percentage\": 123,\n \"description\": \"<string>\",\n \"endDate\": \"<string>\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"recurringBillItemId": "<string>",
"firstDueDate": "<string>"
}Request
string
required
The lease for which recurring bill items will be created
object
required
Show child attributes
Show child attributes
string
required
The key or identifier for the product or service billed (e.g., “key:rent”)
string
The content of the description that is going to be put on the bill
object
required
Number
The quantity of items that is going to be put on the bill
object
required
object
required
The rule used to calculate the due date
Show child attributes
Show child attributes
integer
required
The day of the period when the due date is calculated (e.g., 1 for the first day after period starts, -1 for the last day before period starts)
object
required
Show child attributes
Show child attributes
date
required
First due date for the recurring bill item in ISO 8601 format
object
required
Show child attributes
Show child attributes
object
required
date
required
The due date in ISO 8601 format of the first billing period bill item
string
required
The accounting period for the first billing period bill item, in the format “YYYY-MM-DD/YYYY-MM-DD”
object
Discount that is going to be applied to the recurring bill item
Show child attributes
Show child attributes
object
The amount that is going to be subtracted from the recurring bill item amount
Either this or “percentage” is required
number
The percentage of the recurring bill item amount that is going to be subtracted (e.g., 0.10)
Either this or “amount” is required
string
The content of the discount description that is going to be put on the bill
date
The date in ISO 8601 format on which discount ends
Response
string
The unique identifier for the created recurring bill item
date
The first due date in ISO 8601 format of the recurring bill item
⌘I