Skip to main content
POST
/
v1
/
organizations
/
{organization_id}
/
billing-packages
Create a BillingPackage
curl --request POST \
  --url https://ledger.sandbox.lerian.net/v1/organizations/{organization_id}/billing-packages \
  --header 'Content-Type: application/json' \
  --data '
{
  "createdAt": "<string>",
  "enable": true,
  "id": "<string>",
  "label": "<string>",
  "ledgerId": "<string>",
  "organizationId": "<string>",
  "type": "<string>",
  "updatedAt": "<string>",
  "accountTarget": {
    "aliases": [
      "<string>"
    ],
    "portfolioId": "<string>",
    "segmentId": "<string>"
  },
  "assetCode": "<string>",
  "countMode": "<string>",
  "creditAccountAlias": "<string>",
  "debitAccountAlias": "<string>",
  "deletedAt": "<string>",
  "description": "<string>",
  "discountTiers": [
    {
      "discountPercentage": "<string>",
      "minQuantity": 123
    }
  ],
  "feeAmount": "<string>",
  "freeQuota": 123,
  "maintenanceCreditAccount": "<string>",
  "pricingModel": "<string>",
  "tiers": [
    {
      "minQuantity": 123,
      "unitPrice": "<string>",
      "maxQuantity": 123
    }
  ]
}
'
import requests

url = "https://ledger.sandbox.lerian.net/v1/organizations/{organization_id}/billing-packages"

payload = {
"createdAt": "<string>",
"enable": True,
"id": "<string>",
"label": "<string>",
"ledgerId": "<string>",
"organizationId": "<string>",
"type": "<string>",
"updatedAt": "<string>",
"accountTarget": {
"aliases": ["<string>"],
"portfolioId": "<string>",
"segmentId": "<string>"
},
"assetCode": "<string>",
"countMode": "<string>",
"creditAccountAlias": "<string>",
"debitAccountAlias": "<string>",
"deletedAt": "<string>",
"description": "<string>",
"discountTiers": [
{
"discountPercentage": "<string>",
"minQuantity": 123
}
],
"feeAmount": "<string>",
"freeQuota": 123,
"maintenanceCreditAccount": "<string>",
"pricingModel": "<string>",
"tiers": [
{
"minQuantity": 123,
"unitPrice": "<string>",
"maxQuantity": 123
}
]
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
createdAt: '<string>',
enable: true,
id: '<string>',
label: '<string>',
ledgerId: '<string>',
organizationId: '<string>',
type: '<string>',
updatedAt: '<string>',
accountTarget: {aliases: ['<string>'], portfolioId: '<string>', segmentId: '<string>'},
assetCode: '<string>',
countMode: '<string>',
creditAccountAlias: '<string>',
debitAccountAlias: '<string>',
deletedAt: '<string>',
description: '<string>',
discountTiers: [{discountPercentage: '<string>', minQuantity: 123}],
feeAmount: '<string>',
freeQuota: 123,
maintenanceCreditAccount: '<string>',
pricingModel: '<string>',
tiers: [{minQuantity: 123, unitPrice: '<string>', maxQuantity: 123}]
})
};

fetch('https://ledger.sandbox.lerian.net/v1/organizations/{organization_id}/billing-packages', 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://ledger.sandbox.lerian.net/v1/organizations/{organization_id}/billing-packages",
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([
'createdAt' => '<string>',
'enable' => true,
'id' => '<string>',
'label' => '<string>',
'ledgerId' => '<string>',
'organizationId' => '<string>',
'type' => '<string>',
'updatedAt' => '<string>',
'accountTarget' => [
'aliases' => [
'<string>'
],
'portfolioId' => '<string>',
'segmentId' => '<string>'
],
'assetCode' => '<string>',
'countMode' => '<string>',
'creditAccountAlias' => '<string>',
'debitAccountAlias' => '<string>',
'deletedAt' => '<string>',
'description' => '<string>',
'discountTiers' => [
[
'discountPercentage' => '<string>',
'minQuantity' => 123
]
],
'feeAmount' => '<string>',
'freeQuota' => 123,
'maintenanceCreditAccount' => '<string>',
'pricingModel' => '<string>',
'tiers' => [
[
'minQuantity' => 123,
'unitPrice' => '<string>',
'maxQuantity' => 123
]
]
]),
CURLOPT_HTTPHEADER => [
"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://ledger.sandbox.lerian.net/v1/organizations/{organization_id}/billing-packages"

payload := strings.NewReader("{\n \"createdAt\": \"<string>\",\n \"enable\": true,\n \"id\": \"<string>\",\n \"label\": \"<string>\",\n \"ledgerId\": \"<string>\",\n \"organizationId\": \"<string>\",\n \"type\": \"<string>\",\n \"updatedAt\": \"<string>\",\n \"accountTarget\": {\n \"aliases\": [\n \"<string>\"\n ],\n \"portfolioId\": \"<string>\",\n \"segmentId\": \"<string>\"\n },\n \"assetCode\": \"<string>\",\n \"countMode\": \"<string>\",\n \"creditAccountAlias\": \"<string>\",\n \"debitAccountAlias\": \"<string>\",\n \"deletedAt\": \"<string>\",\n \"description\": \"<string>\",\n \"discountTiers\": [\n {\n \"discountPercentage\": \"<string>\",\n \"minQuantity\": 123\n }\n ],\n \"feeAmount\": \"<string>\",\n \"freeQuota\": 123,\n \"maintenanceCreditAccount\": \"<string>\",\n \"pricingModel\": \"<string>\",\n \"tiers\": [\n {\n \"minQuantity\": 123,\n \"unitPrice\": \"<string>\",\n \"maxQuantity\": 123\n }\n ]\n}")

req, _ := http.NewRequest("POST", url, payload)

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://ledger.sandbox.lerian.net/v1/organizations/{organization_id}/billing-packages")
.header("Content-Type", "application/json")
.body("{\n \"createdAt\": \"<string>\",\n \"enable\": true,\n \"id\": \"<string>\",\n \"label\": \"<string>\",\n \"ledgerId\": \"<string>\",\n \"organizationId\": \"<string>\",\n \"type\": \"<string>\",\n \"updatedAt\": \"<string>\",\n \"accountTarget\": {\n \"aliases\": [\n \"<string>\"\n ],\n \"portfolioId\": \"<string>\",\n \"segmentId\": \"<string>\"\n },\n \"assetCode\": \"<string>\",\n \"countMode\": \"<string>\",\n \"creditAccountAlias\": \"<string>\",\n \"debitAccountAlias\": \"<string>\",\n \"deletedAt\": \"<string>\",\n \"description\": \"<string>\",\n \"discountTiers\": [\n {\n \"discountPercentage\": \"<string>\",\n \"minQuantity\": 123\n }\n ],\n \"feeAmount\": \"<string>\",\n \"freeQuota\": 123,\n \"maintenanceCreditAccount\": \"<string>\",\n \"pricingModel\": \"<string>\",\n \"tiers\": [\n {\n \"minQuantity\": 123,\n \"unitPrice\": \"<string>\",\n \"maxQuantity\": 123\n }\n ]\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://ledger.sandbox.lerian.net/v1/organizations/{organization_id}/billing-packages")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"createdAt\": \"<string>\",\n \"enable\": true,\n \"id\": \"<string>\",\n \"label\": \"<string>\",\n \"ledgerId\": \"<string>\",\n \"organizationId\": \"<string>\",\n \"type\": \"<string>\",\n \"updatedAt\": \"<string>\",\n \"accountTarget\": {\n \"aliases\": [\n \"<string>\"\n ],\n \"portfolioId\": \"<string>\",\n \"segmentId\": \"<string>\"\n },\n \"assetCode\": \"<string>\",\n \"countMode\": \"<string>\",\n \"creditAccountAlias\": \"<string>\",\n \"debitAccountAlias\": \"<string>\",\n \"deletedAt\": \"<string>\",\n \"description\": \"<string>\",\n \"discountTiers\": [\n {\n \"discountPercentage\": \"<string>\",\n \"minQuantity\": 123\n }\n ],\n \"feeAmount\": \"<string>\",\n \"freeQuota\": 123,\n \"maintenanceCreditAccount\": \"<string>\",\n \"pricingModel\": \"<string>\",\n \"tiers\": [\n {\n \"minQuantity\": 123,\n \"unitPrice\": \"<string>\",\n \"maxQuantity\": 123\n }\n ]\n}"

response = http.request(request)
puts response.read_body
{
  "createdAt": "<string>",
  "enable": true,
  "id": "<string>",
  "label": "<string>",
  "ledgerId": "<string>",
  "organizationId": "<string>",
  "type": "<string>",
  "updatedAt": "<string>",
  "accountTarget": {
    "aliases": [
      "<string>"
    ],
    "portfolioId": "<string>",
    "segmentId": "<string>"
  },
  "assetCode": "<string>",
  "countMode": "<string>",
  "creditAccountAlias": "<string>",
  "debitAccountAlias": "<string>",
  "deletedAt": "<string>",
  "description": "<string>",
  "discountTiers": [
    {
      "discountPercentage": "<string>",
      "minQuantity": 123
    }
  ],
  "eventFilter": {
    "status": "<string>",
    "transactionRoute": "<string>"
  },
  "feeAmount": "<string>",
  "freeQuota": 123,
  "maintenanceCreditAccount": "<string>",
  "pricingModel": "<string>",
  "tiers": [
    {
      "minQuantity": 123,
      "unitPrice": "<string>",
      "maxQuantity": 123
    }
  ]
}
{
"code": "<string>",
"detail": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"status": 123,
"title": "<string>",
"type": "about:blank"
}

Headers

Content-Type
string

The type of media of the resource. Recommended value is application/json.

X-Request-Id
string<uuid>

A unique identifier used to trace and track each request.

Authorization
string

Bearer JWT token for authentication. Required when PLUGIN_AUTH_ENABLED=true (enforced in multi-tenant deployments). Optional in default OSS single-tenant mode. Format: Bearer <token>

Path Parameters

organization_id
string<uuid>
required

The unique identifier of the Organization associated with the Ledger.

Body

application/json
createdAt
string
required
Example:

"2026-01-01T00:00:00Z"

enable
boolean | null
required
Example:

true

id
string
required
Example:

"00000000-0000-0000-0000-000000000000"

label
string
required
Example:

"Monthly Volume Billing"

ledgerId
string
required
Example:

"00000000-0000-0000-0000-000000000000"

organizationId
string
required
Example:

"00000000-0000-0000-0000-000000000000"

type
string
required
Example:

"volume"

updatedAt
string
required
Example:

"2026-01-01T00:00:00Z"

accountTarget
object
assetCode
string
Example:

"BRL"

countMode
string
Example:

"perRoute"

creditAccountAlias
string
Example:

"account_fees_credit"

debitAccountAlias
string
Example:

"account_fees_debit"

deletedAt
string
Example:

"2026-06-01T00:00:00Z"

description
string
Example:

"Charges per completed transaction route"

discountTiers
object[] | null
eventFilter
object
feeAmount
string
Example:

"50.00"

freeQuota
integer<int64>
Example:

100

maintenanceCreditAccount
string
Example:

"account_maintenance_credit"

pricingModel
string
Example:

"tiered"

tiers
object[] | null

Response

OK

createdAt
string
required
Example:

"2026-01-01T00:00:00Z"

enable
boolean | null
required
Example:

true

id
string
required
Example:

"00000000-0000-0000-0000-000000000000"

label
string
required
Example:

"Monthly Volume Billing"

ledgerId
string
required
Example:

"00000000-0000-0000-0000-000000000000"

organizationId
string
required
Example:

"00000000-0000-0000-0000-000000000000"

type
string
required
Example:

"volume"

updatedAt
string
required
Example:

"2026-01-01T00:00:00Z"

accountTarget
object
assetCode
string
Example:

"BRL"

countMode
string
Example:

"perRoute"

creditAccountAlias
string
Example:

"account_fees_credit"

debitAccountAlias
string
Example:

"account_fees_debit"

deletedAt
string
Example:

"2026-06-01T00:00:00Z"

description
string
Example:

"Charges per completed transaction route"

discountTiers
object[] | null
eventFilter
object
feeAmount
string
Example:

"50.00"

freeQuota
integer<int64>
Example:

100

maintenanceCreditAccount
string
Example:

"account_maintenance_credit"

pricingModel
string
Example:

"tiered"

tiers
object[] | null