Billing Schedules
Urmărește abonamentele, onorariile lunare și plățile în rate într-un singur loc
Configurezi un abonament, un onorariu lunar sau o plată în rate, îi legi facturile și chitanțele și vezi exact cât s-a plătit, ce mai e de plătit și cum stai cu fiecare client sau furnizor.
Creează un cont gratuitCont gratuit, fără card. Pachetul Plăți recurente costă 51,95 lei/lună, fără TVA, și îl adaugi din aplicație.
FACTURARE FLEXIBILĂ
Facturezi orice înțelegere, oricum ar arăta
Abonamente, plăți în rate sau amândouă, în același plan de plată. Alegi pentru fiecare client cum îl facturezi.
Un plan de plată funcționează în unul din două moduri: fie îl administrează Enlivy cap-coadă, fie doar urmărește un abonament pe care îl ai deja în altă parte. Alegi pentru fiecare client și poți folosi ambele moduri în același timp.
Planurile administrate de Enlivy facturează în două feluri, abonament recurent sau rate fixe, și le poți combina în același plan: o taxă inițială, o perioadă introductivă cu durată fixă, apoi un onorariu recurent, pe termen nedeterminat. Îl configurezi o singură dată.
-
Abonamente recurente
Aceeași sumă se repetă cu frecvența aleasă, de la săptămânal la anual, pe termen nedeterminat sau până la o dată de final.
-
Plăți în rate fixe
Un număr fix de rate, fiecare cu suma și data ei, facturate la termen și încasate automat de pe cardul salvat, dacă există unul.
-
Faze și combinații
Crești sau scazi prețul de la o fază la alta ori combini în același plan o taxă unică, un preț introductiv și un abonament continuu.
-
Administrat aici sau sincronizat
Lași Enlivy să administreze cap-coadă facturarea nouă sau imporți abonamentele pe care le ai deja și le ții sincronizate, fără nicio migrare.
FĂRĂ INTERVENȚIE MANUALĂ
Plățile merg după programul stabilit
Configurezi planul o singură dată. La fiecare ciclu, Enlivy emite factura, aplică taxele și debitează cardul salvat.
La fiecare ciclu, Enlivy generează factura, cu număr și taxe, iar dacă există un card salvat încasează suma automat, prin contul tău Stripe, așa că banii ajung direct la tine.
Enlivy ține și evidența corectă: când Stripe confirmă o plată cu cardul, marchează factura ca plătită, iar o verificare făcută în fiecare oră în Stripe prinde orice confirmare pierdută.
-
Facturat la scadență
O verificare care rulează în fiecare oră trece prin toate planurile active și emite fiecare factură când ajunge la scadență.
-
Încasat automat
Cardul salvat e debitat când se creează factura, fără ca clientul să facă ceva și fără debitări duble din greșeală.
-
Contul tău, banii tăi
Încasările trec prin contul tău de plăți, așa că banii ajung direct la tine, niciodată la Enlivy.
-
Confirmările pierdute, recuperate
Enlivy marchează factura ca plătită când Stripe confirmă plata cu cardul, iar verificarea din fiecare oră recuperează orice confirmare pierdută.
-
Și transfer bancar sau plată manuală
Nu toți plătesc cu cardul. Plățile manuale și transferurile bancare le urmărești alături de cele automate.
Unde s-au dus banii?
Plățile stau prin foldere, emailuri și tabele, iar când cineva întreabă cât a plătit de fapt un client, răspunsul nu e simplu.
-
Plățile unui client, greu de adunat
Fără Enlivy: Un client îți plătește lunar de 8 luni. Cât a plătit în total? Ce mai are de plătit? N-ar trebui să cauți prin documente vechi ca să afli.
Cu Enlivy: Planul de plată al clientului arată fiecare factură și plată, cu totalurile și sumele de încasat mereu la zi.
-
Situația pe un an, greu de văzut
Fără Enlivy: Știi ce s-a întâmplat luna asta, dar cât te-a costat un furnizor pe tot anul? Datele există, doar că sunt împrăștiate în documente separate de-a lungul anului.
Cu Enlivy: Fiecare plan păstrează toată istoria relației, așa că situația pe un an o vezi dintr-un click, fără să cauți.
-
Istoricul plăților, în trei locuri
Fără Enlivy: Facturi într-un folder, chitanțe în altul, confirmări în email. Ca să răspunzi la „cât le-am plătit?”, cauți în toate trei.
Cu Enlivy: Facturile, chitanțele și plățile stau pe planul de plată de care țin, într-un singur istoric, ordonat și mereu la zi.
-
Reconciliere manuală
Fără Enlivy: La sfârșit de lună stai ore întregi în tabele: potrivești plăți cu facturi, aduni totaluri și speri că cifrele ies.
Cu Enlivy: Enlivy marchează factura ca plătită când plata cu cardul e confirmată, iar transferurile bancare le legi dintr-un click, așa că totalurile rămân la zi fără niciun tabel.
CE STĂ ÎN SPATE
Clienții își pot face singuri modificările, în siguranță
Să le dai clienților controlul are sens doar dacă sistemul care face calculele e de încredere.
- Prețul vechi, păstrat exact
Când un client își schimbă planul, ce avea deja își păstrează prețul, moneda și cantitatea agreate, până la ultimul ban, oricâte schimbări ar face. Poți crește prețurile de listă fără să pierzi clienții existenți din cauza asta.
- Previzualizarea arată exact suma debitată
Ecranul „cât mă va costa?” rulează logica reală de facturare fără să salveze nimic, deci fără niciun risc, la cursurile valabile în momentul în care confirmi. Pe factură nu apar surprize.
- Calcul pro rata corect, într-un singur sens
La un upgrade, clientul plătește doar diferența netă, calculată proporțional cu timpul rămas, pe o singură factură. La un downgrade nu se dau bani înapoi. Liniile în valută sunt convertite înainte de calcul.
- Un pachet, în orice monedă
Stabilești prețul aceluiași pachet în fiecare monedă și facturezi fiecare client în moneda lui. Dacă un curs lipsește sau nu e la zi, Enlivy oprește debitarea în loc să factureze greșit. Corectitudinea e mai importantă decât încasarea.
- Nicio debitare dublă
Fiecare debitare e blocată cât timp se procesează și are o cheie unică, așa că un dublu click, o reîncercare sau o suprapunere cu rularea facturării nu pot debita un client de două ori.
- Reluare automată după un card expirat
Dacă un card expiră, Enlivy suspendă abonamentul în loc să încerce debitarea iar și iar. Când e adăugat un card valid, abonamentul se reia și Enlivy încasează suma restantă. Nu pierzi bani din cauza unui card expirat.
Autoservirea clienților, stabilită pe fiecare plan
Fiecare plan de plată are propriile reguli de autoservire. Pentru fiecare regulă poți folosi valoarea implicită a pachetului sau poți alege alta, așa că decizi exact ce poate face un client singur.
- Schimbă planul
Folosește valoarea implicită a pachetului · Permite · Nu permite
- Anulează abonamentul
Folosește valoarea implicită a pachetului · Permite · Nu permite
- Suspendă și reia
Folosește valoarea implicită a pachetului · Permite · Nu permite
ÎNCEARCĂ
Modifică un abonament activ
Acesta e editorul real „Schimbă termenii pachetului”. Deschide panoul, adaugă sau modifică o linie, alege când intră în vigoare modificările și urmărește cum se recalculează previzualizarea, exact cum o vede un client.
FUNCȚIONALITĂȚI
Tot ce îți trebuie ca să urmărești plățile recurente
De la facturarea automată la un istoric bun pentru audit, pentru firmele care au nevoie de răspunsuri, nu doar de date.
- Toate planurile, într-o listă
Vezi toate planurile de plată într-o singură listă: de încasat și de plătit, active și finalizate. Filtrezi după direcție, status, emitent sau destinatar.
- Știi cine primește emailurile
Pe fiecare plan vezi dacă notificările pe email sunt active și la ce adresă ajung. Poți pune o adresă proprie în locul adresei utilizatorului destinatar, iar adresele CC configurate rămân la vedere.
- Facturare automată, verificată orar
Un proces rulează în fundal la fiecare oră și verifică toate planurile active. Când o plată ajunge la scadență, Enlivy generează factura: cu număr, cu taxe, gata de folosit.
- Debitarea automată a cardului
Cardul e debitat automat când se creează fiecare factură, fără ca clientul să facă ceva. Fiecare debitare se execută o singură dată, chiar dacă cererea se repetă, așa că nu apar niciodată debitări duble din greșeală.
- Documente legate
Legi facturi, chitanțe sau fluturași de salariu de orice plan de plată. Enlivy completează automat sumele, taxele și statusul plății, iar tu câștigi ore întregi în fiecare lună.
- Frecvențe flexibile
Săptămânal, la două săptămâni, lunar sau anual. Fără dată de final sau până la o anumită dată. Fiecare fază poate avea și un număr fix de repetări înainte să treacă la următoarea.
- Facturare în mai multe monede
Ofertezi într-o monedă și facturezi în alta. La fiecare ciclu, Enlivy convertește factura la cursul de referință din data ei, cu un comision de conversie opțional care acoperă diferența de curs.
- Statusul fiecărui plan
Marchezi planurile ca fiind în așteptare, active sau anulate. Dashboardul rămâne aerisit și îți arată ce contează acum.
- Refolosești și modifici
Copiezi un plan existent pentru o înțelegere asemănătoare. Modifici planurile active când se schimbă înțelegerea.
CINE PRIMEȘTE NOTIFICĂRILE
Vezi cine primește notificările unui plan
Pe plan vezi dacă notificările pe email sunt active, cine le primește și ce adrese CC sunt configurate. Verifică-le înainte să te bazezi pe o notificare de plată.
Fiecare relație financiară, într-un plan de plată
-
Creează planul de plată
Configurezi orice relație de facturare în câteva secunde. Alegi direcția (clientul te plătește pe tine sau tu plătești un furnizor), tipul (abonament sau plată în rate) și frecvența.
-
Leagă documentele
Legi de plan facturile, chitanțele sau fluturașii de salariu. Enlivy preia automat sumele, taxele și statusul plății și formează istoricul plăților fără să introduci nimic de mână.
-
Urmărește cum se actualizează
Când facturile sunt plătite sau chitanțele procesate, planul de plată arată situația la zi, așa că nimeni nu mai ține statusurile într-un tabel.
-
Vezi imaginea completă
Vezi totalul plătit, datele plăților, facturile neachitate și stadiul exact al fiecărei relații financiare, dintr-un singur dashboard.
Referință API
Planuri de plată prin API
Automatizezi complet facturarea recurentă. Un plan de plată app-managed este rulat în întregime de Enlivy. Planul emite facturile la frecvența stabilită de tine, debitează metoda de plată salvată și trece prin propriul ciclu de viață: pending, active, paused, cancelling, completed. Stabilești o singură dată ce conține, iar Enlivy îl facturează după program.
Referința de mai jos acoperă doar planurile app-managed. Enlivy lucrează și cu planuri găzduite de Stripe, în care Stripe deține abonamentul și face facturarea. Acestea se administrează din Stripe, așa că nu descriem aici cum le creezi sau le modifici. Un plan app-managed îl compui în două feluri: din faze definite de tine (propriile linii recurente și frecvența lor) sau dintr-un pachet comercial de tip abonament (un șablon reutilizabil). Exemplele de mai jos le acoperă pe amândouă, plus listarea, editarea, reconfigurarea și anularea.
Listezi planurile cu paginare, filtre și căutare full-text. Filtrezi după status, direcție (outbound / inbound), expeditor, destinatar, contract, cont bancar sau după oricare dintre intervalele de date (starts_at, ends_at, created_at, updated_at). Poți include în răspuns fazele și plățile generate.
/organizations/<organization_id>/billing-schedules # status: pending | active | payment_method_required | paused | cancelling | completed | cancelled
curl -G 'https://api.enlivy.com/organizations/<organization_id>/billing-schedules' \
--data-urlencode 'page=1' \
--data-urlencode 'limit=20' \
--data-urlencode 'status=active' \
--data-urlencode 'direction=outbound' \
--data-urlencode 'include=receiver_user,phases,payments' \
--data-urlencode 'include_meta=navigation' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
// status: pending | active | payment_method_required | paused | cancelling | completed | cancelled
const query = new URLSearchParams({
page: "1",
limit: "20",
status: "active",
direction: "outbound",
include: "receiver_user,phases,payments",
include_meta: "navigation",
});
const result = await fetch(`${baseUrl}/organizations/${organizationId}/billing-schedules?${query}` , {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
},
}).then((response) => response.json());Obții un singur plan cu tot ce ține de el: fazele și liniile lor, plățile generate până acum, părțile implicate și pachetul sau contractul legat. Din next_payment_create_at afli când emite Enlivy următoarea factură, iar total / paid_total îți arată progresul.
/organizations/<organization_id>/billing-schedules/<billing_schedule_id> # includes: sender_user, receiver_user, contract, billing_package,
# subscription_term, phases, payments, deleted_by_user
curl -G 'https://api.enlivy.com/organizations/<organization_id>/billing-schedules/<billing_schedule_id>' \
--data-urlencode 'include=phases,payments,receiver_user,billing_package' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const billingScheduleId = "<billing_schedule_id>";
// includes: sender_user, receiver_user, contract, billing_package,
// subscription_term, phases, payments, deleted_by_user
const query = new URLSearchParams({
include: "phases,payments,receiver_user,billing_package",
});
const result = await fetch(`${baseUrl}/organizations/${organizationId}/billing-schedules/${billingScheduleId}?${query}` , {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
},
}).then((response) => response.json());Cea mai directă cale de a factura: definești una sau mai multe faze, fiecare cu frecvența și liniile ei. Enlivy emite o factură la fiecare ciclu al unei faze și o încasează. Fazele există doar la planurile app-managed.
/organizations/<organization_id>/billing-schedules curl -X POST 'https://api.enlivy.com/organizations/<organization_id>/billing-schedules' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"management_type": "app_managed",
"direction": "outbound",
"status": "active",
"organization_sender_user_id": "<org_user_sender_id>",
"organization_receiver_user_id": "<org_user_receiver_id>",
"currency": "EUR",
"payment_method": "stripe_card_payment",
"organization_user_payment_method_id": "<payment_method_id>",
"name_lang_map": {
"en": "Monthly Retainer"
},
"note_lang_map": {
"en": "Includes support and hosting."
},
"is_email_notifications_active": true,
"email_notifications_to": "billing@acme.example",
"customer_can_reconfigure": false,
"customer_can_cancel": true,
"customer_can_pause": false,
"phases": [
{
"frequency": "monthly",
"execute_after": "2026-08-01",
"max_occurrences": 12,
"due_date_type": "custom_days",
"due_date_days": 14,
"order": 0,
"line_items": [
{
"name_lang_map": {
"en": "Retainer"
},
"quantity": 1,
"price": 500,
"organization_tax_class_id": "<tax_class_id>"
},
{
"organization_product_id": "<product_id>",
"quantity": 2,
"price": 49.9
}
]
}
]
}'const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const result = await fetch(`${baseUrl}/organizations/${organizationId}/billing-schedules` , {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
"Content-Type": "application/json" ,
},
body: JSON.stringify({
// exemplul acoperă doar app_managed
management_type: "app_managed",
// outbound = tu facturezi un client; inbound = tu ești facturat
direction: "outbound",
// facturarea începe imediat
status: "active",
// cel care facturează (tu)
organization_sender_user_id: "<org_user_sender_id>",
// clientul (obligatoriu pentru outbound)
organization_receiver_user_id: "<org_user_receiver_id>",
currency: "EUR",
// bank_transfer | card_payment | stripe_card_payment | paypal | cash | paid_by_personal_funds
payment_method: "stripe_card_payment",
// cardul salvat de pe care se încasează automat (trebuie să fie al destinatarului)
organization_user_payment_method_id: "<payment_method_id>",
name_lang_map: {
// hărți pe limbi, nu texte simple
en: "Monthly Retainer",
},
note_lang_map: { en: "Includes support and hosting." },
is_email_notifications_active: true,
email_notifications_to: "billing@acme.example",
// ce poate face singur clientul din portal
customer_can_reconfigure: false,
customer_can_cancel: true,
customer_can_pause: false,
// totalurile și datele (total, paid_total, starts_at, ends_at, next_payment_create_at)
// sunt calculate de Enlivy, NU le trimiți.
// phases sunt valabile DOAR pentru app_managed (stripe_hosted le respinge). Maximum 20.
phases: [
{
// weekly | biweekly | monthly | yearly
frequency: "monthly",
// data primei rulări pentru această fază
execute_after: "2026-08-01",
// se oprește după N facturi (lipsă = fără sfârșit)
max_occurrences: 12,
// immediate | end_of_month | custom_days
due_date_type: "custom_days",
// obligatoriu doar când due_date_type = custom_days
due_date_days: 14,
order: 0,
line_items: [
{
name_lang_map: {
// obligatoriu dacă nu trimiți organization_product_id
en: "Retainer",
},
quantity: 1,
// suma: zecimal cu semn, în unități ÎNTREGI (nu în cenți)
price: 500,
organization_tax_class_id: "<tax_class_id>",
},
{
// preia numele și taxele implicite din produs
organization_product_id: "<product_id>",
quantity: 2,
price: 49.9,
},
],
},
],
}),
}).then((response) => response.json());În loc să construiești fazele de mână, creezi planul dintr-un pachet comercial de tip abonament, pe care îl refolosești. Pachetul stabilește ce se facturează, iar tu alegi doar varianta de frecvență și ce elemente din grupurile pachetului incluzi.
/organizations/<organization_id>/billing-schedules/from-billing-package # Pachetul comercial aduce fazele și elementele, așa că nu le trimiți aici.
curl -X POST 'https://api.enlivy.com/organizations/<organization_id>/billing-schedules/from-billing-package' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"organization_billing_package_id": "<billing_package_id>",
"organization_billing_package_subscription_term_id": "<subscription_term_id>",
"selected_group_items": [
{
"id": "<group_item_id>",
"quantity": 1
},
{
"id": "<other_group_item_id>",
"quantity": 3
}
],
"organization_sender_user_id": "<org_user_sender_id>",
"organization_receiver_user_id": "<org_user_receiver_id>",
"status": "active",
"payment_method": "bank_transfer",
"currency": "EUR",
"start_at": "2026-11-01",
"is_email_notifications_active": true
}'const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
// Pachetul comercial aduce fazele și elementele, așa că nu le trimiți aici.
const result = await fetch(`${baseUrl}/organizations/${organizationId}/billing-schedules/from-billing-package` , {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
"Content-Type": "application/json" ,
},
body: JSON.stringify({
// atașezi un pachet comercial cu ABONAMENT; el definește fazele și elementele
organization_billing_package_id: "<billing_package_id>",
// opțional: alegi varianta de recurență; lipsă = cea implicită a pachetului
organization_billing_package_subscription_term_id: "<subscription_term_id>",
// opțional: alegi ce elemente din grupurile pachetului intră (și cantitățile)
selected_group_items: [
{ id: "<group_item_id>", quantity: 1 },
{ id: "<other_group_item_id>", quantity: 3 },
],
organization_sender_user_id: "<org_user_sender_id>",
organization_receiver_user_id: "<org_user_receiver_id>",
// pending | active
status: "active",
payment_method: "bank_transfer",
currency: "EUR",
start_at: "2026-11-01",
is_email_notifications_active: true,
}),
}).then((response) => response.json());Actualizezi metadatele (numele, notele, setările de notificare, opțiunile de self-service) și controlezi ciclul de viață prin status: pui pe pauză un plan activ, reiei unul pus pe pauză sau îl marchezi pentru anulare. Trimiți doar ce vrei să schimbi.
/organizations/<organization_id>/billing-schedules/<billing_schedule_id> # ca să schimbi CE se facturează într-un plan de plată creat din pachet,
# folosești /reconfigure de mai jos, nu editarea de aici.
curl -X PUT 'https://api.enlivy.com/organizations/<organization_id>/billing-schedules/<billing_schedule_id>' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"status": "paused",
"note_lang_map": {
"en": "Paused at customer request."
},
"is_email_notifications_active": false,
"customer_can_cancel": true
}'const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const billingScheduleId = "<billing_schedule_id>";
// ca să schimbi CE se facturează într-un plan de plată creat din pachet,
// folosești /reconfigure de mai jos, nu editarea de aici.
const result = await fetch(`${baseUrl}/organizations/${organizationId}/billing-schedules/${billingScheduleId}` , {
method: "PUT",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
"Content-Type": "application/json" ,
},
body: JSON.stringify({
// ciclu de viață: active <-> paused; setezi "cancelling" ca să se oprească la finalul ciclului
status: "paused",
note_lang_map: { en: "Paused at customer request." },
is_email_notifications_active: false,
customer_can_cancel: true,
}),
}).then((response) => response.json());Schimbi ce facturează un plan creat dintr-un pachet: înlocuiești pachetul, schimbi perioada de abonament, ajustezi elementele alese și cantitățile, suprascrii prețuri sau adaugi linii personalizate facturate o singură dată. Începi întotdeauna cu o previzualizare: endpoint-ul de previzualizare returnează conținutul rezultat și eventualul calcul pro rata, înainte să fie debitat vreun ban.
/organizations/<organization_id>/billing-schedules/<billing_schedule_id>/preview-reconfigure +1# 1. Previzualizare: nu se aplică nimic; primești noua componență și proratarea
curl -X POST 'https://api.enlivy.com/organizations/<organization_id>/billing-schedules/<billing_schedule_id>/preview-reconfigure' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"organization_billing_package_id": "<billing_package_id>",
"organization_billing_package_subscription_term_id": "<subscription_term_id>",
"selected_group_items": [
{
"id": "<group_item_id>",
"quantity": 2,
"price_override": 39,
"pricing_currency": "EUR"
}
],
"custom_line_items": [
{
"name_lang_map": {
"en": "One-off setup"
},
"quantity": 1,
"price": 150
}
],
"proration_mode": "prorate_next_invoice"
}'
# 2. Aplici
curl -X PUT 'https://api.enlivy.com/organizations/<organization_id>/billing-schedules/<billing_schedule_id>/reconfigure' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"organization_billing_package_id": "<billing_package_id>",
"organization_billing_package_subscription_term_id": "<subscription_term_id>",
"selected_group_items": [
{
"id": "<group_item_id>",
"quantity": 2,
"price_override": 39,
"pricing_currency": "EUR"
}
],
"custom_line_items": [
{
"name_lang_map": {
"en": "One-off setup"
},
"quantity": 1,
"price": 150
}
],
"proration_mode": "prorate_next_invoice"
}'const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const billingScheduleId = "<billing_schedule_id>";
const headers = {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
"Content-Type": "application/json" ,
};
// 1. Previzualizare: nu se aplică nimic; primești noua componență și proratarea
const result1 = await fetch(`${baseUrl}/organizations/${organizationId}/billing-schedules/${billingScheduleId}/preview-reconfigure` , {
method: "POST",
headers,
body: JSON.stringify({
organization_billing_package_id: "<billing_package_id>",
organization_billing_package_subscription_term_id: "<subscription_term_id>",
selected_group_items: [
// price_override + pricing_currency îți permit un preț diferit de cel din pachet
{
id: "<group_item_id>",
quantity: 2,
price_override: 39,
pricing_currency: "EUR",
},
],
custom_line_items: [{ name_lang_map: { en: "One-off setup" }, quantity: 1, price: 150 }],
// cum se facturează schimbarea: none | prorate_immediately | prorate_next_invoice
// (prorate_immediately cere un plan de plată activ)
proration_mode: "prorate_next_invoice",
}),
}).then((response) => response.json());
// 2. Aplici
const result2 = await fetch(`${baseUrl}/organizations/${organizationId}/billing-schedules/${billingScheduleId}/reconfigure` , {
method: "PUT",
headers,
body: JSON.stringify({
organization_billing_package_id: "<billing_package_id>",
organization_billing_package_subscription_term_id: "<subscription_term_id>",
selected_group_items: [
// price_override + pricing_currency îți permit un preț diferit de cel din pachet
{
id: "<group_item_id>",
quantity: 2,
price_override: 39,
pricing_currency: "EUR",
},
],
custom_line_items: [{ name_lang_map: { en: "One-off setup" }, quantity: 1, price: 150 }],
// cum se facturează schimbarea: none | prorate_immediately | prorate_next_invoice
// (prorate_immediately cere un plan de plată activ)
proration_mode: "prorate_next_invoice",
}),
}).then((response) => response.json());Citești analize agregate de venit recurent pe toate planurile: situația la un moment dat (summary, cu o proiecție pentru perioada următoare) sau evoluția lună de lună (history_monthly). Așa alimentezi dashboard-uri de MRR fără să descarci singur fiecare plan.
/organizations/<organization_id>/billing-schedules/analytics/summary # analyticsType: summary | history_monthly
curl -G 'https://api.enlivy.com/organizations/<organization_id>/billing-schedules/analytics/summary' \
--data-urlencode 'start_date=2026-01-01T00:00:00Z' \
--data-urlencode 'end_date=2026-12-31T23:59:59Z' \
--data-urlencode 'direction=outbound' \
--data-urlencode 'convert_to_currency=EUR' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const analyticsType = "summary";
// analyticsType: summary | history_monthly
const query = new URLSearchParams({
start_date: "2026-01-01T00:00:00Z",
end_date: "2026-12-31T23:59:59Z",
direction: "outbound",
convert_to_currency: "EUR",
});
const result = await fetch(`${baseUrl}/organizations/${organizationId}/billing-schedules/analytics/${analyticsType}?${query}` , {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
},
}).then((response) => response.json());Ștergi un plan prin soft delete. Dacă vrei să-l păstrezi, e mai bine să setezi statusul pe cancelling (facturarea viitoare se oprește la finalul ciclului); îl ștergi doar când vrei să dispară. Îl poți restaura ulterior.
/organizations/<organization_id>/billing-schedules/<billing_schedule_id> # ștergere reversibilă; restaurezi cu POST /billing-schedules/restore/{scheduleId}
curl -X DELETE 'https://api.enlivy.com/organizations/<organization_id>/billing-schedules/<billing_schedule_id>' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const billingScheduleId = "<billing_schedule_id>";
// ștergere reversibilă; restaurezi cu POST /billing-schedules/restore/{scheduleId}
const result = await fetch(`${baseUrl}/organizations/${organizationId}/billing-schedules/${billingScheduleId}` , {
method: "DELETE",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
},
}).then((response) => response.json());Unde se potrivește
Face parte din aceste soluții
- Agenții și studiouri Parte de bază Ratele și abonamentele de mentenanță se facturează la fiecare scadență, cu plata prin card sau prin transfer bancar. Vezi soluția
- Autori de cursuri Parte de bază La fiecare scadență, planul de plată emite factura și debitează cardul salvat. Vezi soluția
- Facturare lunară Parte de bază Planul, data de facturare și metoda de plată ale fiecărui client. La fiecare ciclu se emite factura și se debitează cardurile salvate. Vezi soluția
- Echipe de vânzări Opțional Adaugă venituri recurente. Fiecare plan de plată emite factura la scadență și debitează cardurile salvate. Vezi soluția
Funcționează împreună cu
- Facturi Emiți factura, o trimiți clientului și o legi de contractul, chitanța sau tranzacția bancară de care ține. Facturile către clienții din România le trimiți în e-Factura prin conexiunea ANAF configurată.
- Chitanțe Înregistrezi banii încasați și pe cei plătiți, păstrezi la un loc documentele justificative și, când e nevoie, legi chitanța de factura sau contractul de care ține.
- Fluturași de salariu Cifrele le calculează contabilul tău. În Enlivy le înregistrezi: fiecare sumă pe linia ei codificată, cu termenii folosiți în țara ta, verificată cu totalurile fluturașului. Fluturașul e legat de raportul de muncă, de contractul și de plata lui.
- Utilizatori În Enlivy îți adaptezi ușor rolurile și permisiunile pentru clienți, parteneri, contabili și administratori, ca accesul fiecăruia să fie sigur și eficient.
- Contracte Redactezi contracte din șabloane, le trimiți la semnat cu verificarea identității prin SMS sau email și urmărești fiecare semnătură și fiecare reînnoire.
- Pachete comerciale Creezi o singură dată un pachet comercial și îl vinzi săptămânal, lunar, anual sau la orice interval dintre ele. Clienții se abonează și își administrează cardul dintr-un portal cu brandul tău, iar dacă le permiți, schimbă ciclul sau nivelul, suspendă ori anulează abonamentul. Cu pachetul Plăți recurente, Enlivy facturează fiecare ciclu, iar plățile cu cardul se încasează prin contul tău Stripe.
- Integrare Slack Nu mai verifica dashboard-urile ca să afli ce s-a schimbat. Enlivy îți aduce în Slack momentele importante, de la plăți și propuneri până la conversațiile din Helpdesk. Te conectezi o dată, alegi evenimentele și le trimiți pe canalele potrivite.
- MCP Conectezi Enlivy la Claude, ChatGPT, Cursor sau orice alt asistent AI prin MCP. Întrebi despre facturi, contracte și pipeline și rezolvi lucruri concrete, în siguranță, fără să depășești ce poate face deja contul tău.