Finans API
Finans modülünün tüm işlemleri (42) ve veri modelleri (13): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Müşterilerin borçları ve ödemeleri, işletmenin harcamaları.
Modül kodu finance · 42 işlem · 13 veri modeli · 30 olay. Bir anahtar ya da token, arkasındaki kişinin bu modülde yapabildiğinden fazlasını asla yapamaz; satır düzeyindeki güvenlik uygulamadakiyle birebir aynıdır. Yetki kapsamları: finance (hepsi), finance:read (yalnız okuma) ya da finance:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
agreement_lines | agreement_line | /api/v1/agreement_lines | |||
agreements | agreement | /api/v1/agreements | finance.create_agreement | finance.update_agreement | |
commission_payouts | commission_payout | /api/v1/commission_payouts | |||
commissions | commission | /api/v1/commissions | |||
discount_lines | discount_line | /api/v1/discount_lines | |||
expense_categories | expense_category | /api/v1/expense_categories | finance.save_expense_category | ||
expenses | expense | /api/v1/expenses | finance.create_expense | finance.update_expense | |
finance_provider_events | finance_provider_event | /api/v1/finance_provider_events | |||
installments | installment | /api/v1/installments | finance.update_installment | ||
payment_allocations | payment_allocation | /api/v1/payment_allocations | |||
payment_events | payment_event | /api/v1/payment_events | |||
payment_provider_configs | payment_provider_config | /api/v1/payment_provider_configs | |||
payments | payment | /api/v1/payments |
Listeler limit (en çok 200), cursor, order (ör. -created_at), fields ve q alır; diğer her sorgu parametresi bir sütun süzgecidir: ?status=paid, ?total[gte]=100, ?id[in]=a,b, ?x=null.
İşlemler
| İşlem | Gereken izin | Ne yapar |
|---|---|---|
finance.accrue_commission | finance:write | Komisyon tahakkuk ettir |
finance.allocate_payment | finance:write | Tahsilatı dağıt |
finance.apply_discount | finance:write | İndirim uygula |
finance.approve_expense | finance:approve | Gideri onayla |
finance.approve_refund | finance:approve | İadeyi onayla |
finance.cancel_agreement | finance:manage | Sözleşmeyi iptal et |
finance.cancel_commission | finance:manage | Komisyonu iptal et |
finance.cancel_installment | finance:manage | Taksiti iptal et |
finance.cancel_payment | finance:write | Provizyonu serbest bırak |
finance.capture_payment | finance:write | Ödemeyi tahsil et |
finance.configure_payment_app | finance:manage | Ödeme uygulamasını yapılandır |
finance.create_agreement | finance:write | Sözleşme aç |
finance.create_expense | finance:write | Gider kaydet |
finance.deactivate_expense_category | finance:manage | Gider kategorisini kapat |
finance.mark_expense_paid | finance:write | Gideri ödendi işaretle |
finance.open_draft_for_source | finance:write | Kayıt için sözleşme taslağı hazırla |
finance.pay_site_agreement | finance:write | Bağlantıyla öde (site) |
finance.pay_site_order | finance:write | Siparişi öde (site) |
finance.raise_installment_notices | finance:write | Taksit hatırlatmalarını oluştur |
finance.recalculate_commission | finance:write | Komisyonu yeniden hesapla |
finance.record_commission_payout | finance:approve | Komisyon ödemesini kaydet |
finance.record_gift_card_payment | finance:write | Hediye kartı tahsilatını kaydet |
finance.record_payment | finance:write | Tahsilat kaydet |
finance.record_provider_webhook | finance:write | Ödeme bildirimini kaydet |
finance.record_source_discounts | finance:write | Mağaza indirimlerini kaydet |
finance.refund_payment | finance:manage | Tahsilatı iade et |
finance.reject_expense | finance:approve | Gideri reddet |
finance.reject_refund | finance:approve | İadeyi reddet |
finance.remove_discount | finance:manage | İndirimi kaldır |
finance.request_refund | finance:write | İade talep et |
finance.request_refunds_for_source | finance:write | İptale yanıt ver |
finance.return_gift_card_payment | finance:write | Hediye kartı tahsilatını geri al |
finance.run_recurring_expenses | finance:write | Tekrarlayan giderleri kaydet |
finance.save_expense_category | finance:manage | Gider kategorisini kaydet |
finance.schedule_installments | finance:write | Taksitlendir |
finance.set_commission_status | finance:manage | Komisyon durumunu değiştir |
finance.stop_recurring_expense | finance:write | Tekrarı durdur |
finance.take_payment | finance:write | Ödeme al |
finance.update_agreement | finance:write | Sözleşmeyi düzenle |
finance.update_expense | finance:write | Gideri düzenle |
finance.update_installment | finance:write | Taksiti düzenle |
finance.void_expense | finance:manage | Gideri geçersiz kıl |
finance.accrue_commission
Komisyon tahakkuk ettir — Satış ortağına borçlu olunanı, sözleşme günü dondurulan oranla açar.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/commissions/actions/accrue_commission- Asıl adres:
POST /api/v1/actions/finance.accrue_commission
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
agreementId | uuid | evet | Sözleşme · kimliği: agreement |
rate | number | Oran (%) · en az 0 · en çok 100 | |
amount | number (money) | Tutar · en az 0 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agreement_not_found | Sözleşme bulunmalı. |
commission_already_exists | Sözleşme başına tek komisyon. |
agreement_has_no_affiliate | Sözleşme bir satış ortağı belirtmeli. |
affiliate_not_active | Satış ortağı aktif olmalı. |
Yayımladığı olaylar: finance.commission_accrued
Neye yazar: commission (insert) — Opens the commission
curl -X POST https://app.getera.io/api/v1/commissions/actions/accrue_commission \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"agreementId":"AGREEMENT_ID"}'{
"ok": true,
"result": "…",
"events": [
"finance.commission_accrued"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.commissions.accrueCommission({
agreementId: "AGREEMENT_ID"
})era commissions accrue_commission \
--agreement-id "AGREEMENT_ID"{
"name": "era__finance__accrue_commission",
"arguments": {
"agreementId": "AGREEMENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agreement_not_found, commission_already_exists, agreement_has_no_affiliate, affiliate_not_active · 429 çok sık istek
finance.allocate_payment
Tahsilatı dağıt — Tek bir tahsilatı kapattığı taksitlere dağıtır.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/payment_allocations/actions/allocate_payment- Asıl adres:
POST /api/v1/actions/finance.allocate_payment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
paymentId | uuid | evet | Koleksiyon · kimliği: payment |
allocations | object / array | evet | Stok ayırmaları |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
payment_not_found | Tahsilat bulunmalı. |
no_allocations | En az bir dağıtım gerekli. |
unknown_allocation_target | Hedef bilinen bir kayıt türünde olmalı. |
invalid_allocation_amount | Her dağıtım sıfırdan büyük olmalı. |
duplicate_allocation_target | Bir hedef bir dağıtım talebinde yalnızca bir kez yer alır. |
allocation_exceeds_payment | Dağıtımların toplamı tahsil edilenden fazla olamaz. |
allocation_target_not_found | Hedef bulunmalı ve kullanılabilir kalmalı. |
allocation_currency_mismatch | Tahsilat ve hedef aynı para birimini kullanmalı. |
allocation_customer_mismatch | Bir müşterinin tahsilatı başkasının bakiyesini kapatamaz. |
allocation_exceeds_target | Dağıtım hedefin kalan bakiyesini aşamaz. |
Yayımladığı olaylar: finance.payment_allocated
Neye yazar: payment_allocation (insert) — Writes the allocations
curl -X POST https://app.getera.io/api/v1/payment_allocations/actions/allocate_payment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"paymentId":"PAYMENT_ID","allocations":{}}'{
"ok": true,
"result": "…",
"events": [
"finance.payment_allocated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.paymentAllocations.allocatePayment({
paymentId: "PAYMENT_ID",
allocations: {}
})era payment_allocations allocate_payment --data '{"paymentId":"PAYMENT_ID","allocations":{}}'{
"name": "era__finance__allocate_payment",
"arguments": {
"paymentId": "PAYMENT_ID",
"allocations": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 payment_not_found, no_allocations, unknown_allocation_target, invalid_allocation_amount, duplicate_allocation_target, allocation_exceeds_payment, allocation_target_not_found, allocation_currency_mismatch, allocation_customer_mismatch, allocation_exceeds_target · 429 çok sık istek
finance.apply_discount
İndirim uygula — Sözleşmeyi düşürür ve indirimli tutarı satırda dondurur.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/agreements/{id}/actions/apply_discount- Asıl adres:
POST /api/v1/actions/finance.apply_discount
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
agreementId | uuid | evet | Doldurulduğu yer: adresteki {id} · Sözleşme · kimliği: agreement |
valueType | string (enum) | Tür · İzin verilen değerler: percentage, fixed | |
value | number | evet | Değer |
name | string | Etiket · en çok 255 | |
reason | string | evet | Neden · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agreement_not_found | Sözleşme bulunmalı. |
agreement_closed | Kapanmış bir sözleşmeye indirim yapılmaz. |
discount_value_negative | İndirim negatif olamaz. |
discount_percentage_over_100 | Yüzdelik indirim 100’ü aşamaz. |
discount_after_collection | İndirim sözleşmeyi tahsil edilenin altına düşüremez. |
discount_over_cap | Çalışma alanının indirim üst sınırı aşılmamalı. |
discount_actor_required | Elle yapılan indirim, uygulayanı kaydeder. |
Yayımladığı olaylar: finance.discount_applied
Neye yazar: discount_line (insert) — Writes the discount; agreement (update) — Freezes the discounted total
curl -X POST https://app.getera.io/api/v1/agreements/AGREEMENT_ID/actions/apply_discount \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"value":1,"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"finance.discount_applied"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.agreements.applyDiscount("AGREEMENT_ID", {
value: 1,
reason: "Reason"
})era agreements apply_discount AGREEMENT_ID \
--value 1 \
--reason "Reason"{
"name": "era__finance__apply_discount",
"arguments": {
"agreementId": "AGREEMENT_ID",
"value": 1,
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agreement_not_found, agreement_closed, discount_value_negative, discount_percentage_over_100, discount_after_collection, discount_over_cap, discount_actor_required · 429 çok sık istek
finance.approve_expense
Gideri onayla — Bir gideri onaylar. Kendi gideriniz asla.
Gereken izin finance:approve · veriyi değiştirir
https://app.getera.io/api/v1/expenses/{id}/actions/approve_expense- Asıl adres:
POST /api/v1/actions/finance.approve_expense
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gider · kimliği: expense |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
expense_not_found | Gider bulunmalı. |
expense_already_decided | Gider hâlâ beklemede olmalı. |
cannot_approve_own_expense | Kimse kendi harcamasını onaylayamaz. |
Yayımladığı olaylar: finance.expense_approved
Neye yazar: expense (update) — Stamps the approval
curl -X POST https://app.getera.io/api/v1/expenses/EXPENSE_ID/actions/approve_expense \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"finance.expense_approved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.expenses.approveExpense("EXPENSE_ID")era expenses approve_expense EXPENSE_ID{
"name": "era__finance__approve_expense",
"arguments": {
"id": "EXPENSE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:approve izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 expense_not_found, expense_already_decided, cannot_approve_own_expense · 429 çok sık istek
finance.approve_refund
İadeyi onayla — Talebi onaylar ve uygular: para geri gönderilmiş olarak kaydedilir.
Gereken izin finance:approve · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/payment_events/{id}/actions/approve_refund- Asıl adres:
POST /api/v1/actions/finance.approve_refund
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
requestId | uuid | evet | Doldurulduğu yer: adresteki {id} · Talep · kimliği: payment_event |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
refund_request_not_found | Talep bulunmalı. |
refund_request_resolved | Bir talep bir kez onaylanır veya reddedilir. |
refund_not_available | Sağlayıcı hâlâ iadeye izin vermeli. |
payment_app_not_connected | Ödeme uygulaması açık değil. |
payment_credentials_invalid | Ödeme uygulamasının bağlantı bilgileri açılamadı; uygulamayı yeniden bağlayın. |
Yayımladığı olaylar: finance.refund_approved, finance.payment_refunded
Neye yazar: payment_event (insert) — Records the refund step; payment (update) — Moves the pending and refunded amounts; payment_allocation (insert) — Writes the negative allocation; installment (update) — Reopens an instalment it no longer covers
curl -X POST https://app.getera.io/api/v1/payment_events/PAYMENT_EVENT_ID/actions/approve_refund \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"finance.refund_approved",
"finance.payment_refunded"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.paymentEvents.approveRefund("PAYMENT_EVENT_ID")era payment_events approve_refund PAYMENT_EVENT_ID{
"name": "era__finance__approve_refund",
"arguments": {
"requestId": "PAYMENT_EVENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:approve izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 refund_request_not_found, refund_request_resolved, refund_not_available, payment_app_not_connected, payment_credentials_invalid · 429 çok sık istek
finance.cancel_agreement
Sözleşmeyi iptal et — Sözleşmeyi ve bekleyen taksitlerini kapatır. Hiçbir şey silinmez.
Gereken izin finance:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/agreements/{id}/actions/cancel_agreement- Asıl adres:
POST /api/v1/actions/finance.cancel_agreement
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sözleşme · kimliği: agreement |
reason | string | Neden · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agreement_not_found | Sözleşme bulunmalı. |
already_cancelled | Bir sözleşme bir kez iptal edilir. |
agreement_has_collection | İptalden önce tahsil edilmiş para iade edilmeli. |
Yayımladığı olaylar: finance.agreement_cancelled
Neye yazar: agreement (update) — Marks it cancelled; installment (update) — Cancels the pending instalments
curl -X POST https://app.getera.io/api/v1/agreements/AGREEMENT_ID/actions/cancel_agreement \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"finance.agreement_cancelled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.agreements.cancelAgreement("AGREEMENT_ID", {
reason: "Reason"
})era agreements cancel_agreement AGREEMENT_ID \
--reason "Reason"{
"name": "era__finance__cancel_agreement",
"arguments": {
"id": "AGREEMENT_ID",
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agreement_not_found, already_cancelled, agreement_has_collection · 429 çok sık istek
finance.cancel_commission
Komisyonu iptal et — Ödenmemiş bir komisyonu sıfırlar. Ödenmiş olan asla kaldırılmaz.
Gereken izin finance:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/commissions/{id}/actions/cancel_commission- Asıl adres:
POST /api/v1/actions/finance.cancel_commission
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Komisyon · kimliği: commission |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
commission_not_found | Komisyon bulunmalı. |
paid_commission_not_deletable | Ödenmiş bir komisyon ters kayıtla düzeltilir, asla kaldırılmaz. |
Yayımladığı olaylar: finance.commission_cancelled
Neye yazar: commission (update) — Cancels it and zeroes the amount
curl -X POST https://app.getera.io/api/v1/commissions/COMMISSION_ID/actions/cancel_commission \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"finance.commission_cancelled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.commissions.cancelCommission("COMMISSION_ID")era commissions cancel_commission COMMISSION_ID{
"name": "era__finance__cancel_commission",
"arguments": {
"id": "COMMISSION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 commission_not_found, paid_commission_not_deletable · 429 çok sık istek
finance.cancel_installment
Taksiti iptal et — Bir taksiti silmeden plandan çıkarır.
Gereken izin finance:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/installments/{id}/actions/cancel_installment- Asıl adres:
POST /api/v1/actions/finance.cancel_installment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Taksit · kimliği: installment |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
installment_not_found | Taksit bulunmalı. |
installment_has_collection | Karşılığında tahsilat olan bir taksit iptal edilmez, iade edilir. |
Yayımladığı olaylar: finance.installment_cancelled
Neye yazar: installment (update) — Marks it cancelled
curl -X POST https://app.getera.io/api/v1/installments/INSTALLMENT_ID/actions/cancel_installment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"finance.installment_cancelled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.installments.cancelInstallment("INSTALLMENT_ID")era installments cancel_installment INSTALLMENT_ID{
"name": "era__finance__cancel_installment",
"arguments": {
"id": "INSTALLMENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 installment_not_found, installment_has_collection · 429 çok sık istek
finance.cancel_payment
Provizyonu serbest bırak — Provizyonu alınmış ama tahsil edilmemiş olanı iptal eder.
Gereken izin finance:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/payments/{id}/actions/cancel_payment- Asıl adres:
POST /api/v1/actions/finance.cancel_payment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
paymentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Ödeme · kimliği: payment |
outcome | string (enum) | Test sonucu · Bunu yalnızca dummy ödeme altyapısı okur. · İzin verilen değerler: success, failure, pending |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
payment_not_found | Ödeme bulunmalı. |
cancel_not_available | Sağlayıcı hâlâ provizyonu serbest bırakmaya izin vermeli. |
payment_app_not_connected | Ödeme uygulaması açık değil. |
payment_credentials_invalid | Ödeme uygulamasının bağlantı bilgileri açılamadı; uygulamayı yeniden bağlayın. |
Yayımladığı olaylar: finance.payment_provider_event
Neye yazar: payment (update) — Moves the amounts and stores what the provider now allows; payment_event (insert) — Records the provider’s answer
curl -X POST https://app.getera.io/api/v1/payments/PAYMENT_ID/actions/cancel_payment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"outcome":"success"}'{
"ok": true,
"result": "…",
"events": [
"finance.payment_provider_event"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.payments.cancelPayment("PAYMENT_ID", {
outcome: "success"
})era payments cancel_payment PAYMENT_ID \
--outcome "success"{
"name": "era__finance__cancel_payment",
"arguments": {
"paymentId": "PAYMENT_ID",
"outcome": "success"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 payment_not_found, cancel_not_available, payment_app_not_connected, payment_credentials_invalid · 429 çok sık istek
finance.capture_payment
Ödemeyi tahsil et — Yalnızca provizyon alınmış parayı tahsil eder.
Gereken izin finance:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/payments/{id}/actions/capture_payment- Asıl adres:
POST /api/v1/actions/finance.capture_payment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
paymentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Ödeme · kimliği: payment |
amount | number (money) | Tutar | |
outcome | string (enum) | Test sonucu · Bunu yalnızca dummy ödeme altyapısı okur. · İzin verilen değerler: success, failure, pending |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
payment_not_found | Ödeme bulunmalı. |
charge_not_available | Sağlayıcı hâlâ tahsile izin vermeli. |
capture_exceeds_authorized | Tahsil, en fazla provizyondaki tutar kadardır. |
payment_app_not_connected | Ödeme uygulaması açık değil. |
payment_credentials_invalid | Ödeme uygulamasının bağlantı bilgileri açılamadı; uygulamayı yeniden bağlayın. |
Yayımladığı olaylar: finance.payment_provider_event, finance.payment_recorded
Neye yazar: payment (update) — Moves the amounts and stores what the provider now allows; payment_event (insert) — Records the provider’s answer; payment_allocation (insert) — Puts charged money on the instalment; installment (update) — Closes the instalment once covered
curl -X POST https://app.getera.io/api/v1/payments/PAYMENT_ID/actions/capture_payment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"amount":1}'{
"ok": true,
"result": "…",
"events": [
"finance.payment_provider_event",
"finance.payment_recorded"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.payments.capturePayment("PAYMENT_ID", {
amount: 1
})era payments capture_payment PAYMENT_ID \
--amount 1{
"name": "era__finance__capture_payment",
"arguments": {
"paymentId": "PAYMENT_ID",
"amount": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 payment_not_found, charge_not_available, capture_exceeds_authorized, payment_app_not_connected, payment_credentials_invalid · 429 çok sık istek
finance.configure_payment_app
Ödeme uygulamasını yapılandır — Bağlı bir ödeme uygulamasını açar, sırasını belirler ve test modunu seçer.
Gereken izin finance:manage · veriyi değiştirir
https://app.getera.io/api/v1/payment_provider_configs/actions/configure_payment_app- Asıl adres:
POST /api/v1/actions/finance.configure_payment_app
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
provider | string | evet | Sağlayıcı · en çok 40 |
credentialId | uuid | evet | Bağlı uygulama · kimliği: credential |
enabled | boolean | Etkin | |
testMode | boolean | Test modu | |
position | number | Sipariş · en az 0 | |
displayName | string | Ödeme ekranı etiketi · en çok 120 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
unsupported_payment_app | Yalnızca desteklenen bir çevrim içi ödeme uygulaması ayarlanabilir. |
payment_credential_mismatch | Bağlı uygulama seçilen sağlayıcıya ait olmalı. |
payment_app_unavailable | Bağlı uygulama etkin olmalı. |
Yayımladığı olaylar: finance.payment_method_changed
Neye yazar: payment_provider_config (upsert) — Saves checkout enablement, order and test mode
curl -X POST https://app.getera.io/api/v1/payment_provider_configs/actions/configure_payment_app \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"provider":"Provider","credentialId":"CREDENTIAL_ID"}'{
"ok": true,
"result": "…",
"events": [
"finance.payment_method_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.paymentProviderConfigs.configurePaymentApp({
provider: "Provider",
credentialId: "CREDENTIAL_ID"
})era payment_provider_configs configure_payment_app \
--provider "Provider" \
--credential-id "CREDENTIAL_ID"{
"name": "era__finance__configure_payment_app",
"arguments": {
"provider": "Provider",
"credentialId": "CREDENTIAL_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unsupported_payment_app, payment_credential_mismatch, payment_app_unavailable · 429 çok sık istek
finance.create_agreement
Sözleşme aç — Birinin ne borçlu olduğunu kaydeder; aksi belirtilmedikçe çalışma alanının para biriminde.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/agreements/actions/create_agreement- REST kısayolu:
POST /api/v1/agreements - Asıl adres:
POST /api/v1/actions/finance.create_agreement
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
customerId | uuid | evet | Kişi · kimliği: customer |
kind | string (enum) | Tür · İzin verilen değerler: contract, order, booking, subscription_term | |
description | string | Ne için · en çok 4000 | |
note | string | İç not · en çok 4000 | |
currency | string | Para birimi · Çalışma alanı varsayılanından önceden doldurulur. Hiçbir zaman sıfırdan yazılmaz. · en çok 3 | |
totalAmount | number (money) | Ara toplam · en az 0 | |
taxTotalAmount | number (money) | Vergi · en az 0 | |
lines | object / array | Kalemler | |
sourceModule | string | Kaynak · en çok 40 | |
sourceRecordId | uuid | Kaynak kayıt | |
affiliateId | uuid | Yönlendiren · kimliği: affiliate |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
customer_not_found | Kişi zaten müşteri olarak kayıtlı olmalı. |
customer_archived | Arşivlenmiş bir kişiyle sözleşme yapılamaz. |
invalid_currency | Para birimi bir ISO-4217 kodu olmalı. |
affiliate_not_active | Yönlendiren satış ortağı aktif olmalı. |
agreement_total_not_positive | Sözleşmenin değeri sıfırdan büyük olmalı. |
Yayımladığı olaylar: finance.agreement_created
Neye yazar: agreement (insert) — Opens the agreement; agreement_line (insert) — Writes its lines
curl -X POST https://app.getera.io/api/v1/agreements/actions/create_agreement \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"customerId":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"finance.agreement_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.agreements.create({
customerId: "CUSTOMER_ID"
})era agreements create \
--customer-id "CUSTOMER_ID"{
"name": "era__finance__create_agreement",
"arguments": {
"customerId": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 customer_not_found, customer_archived, invalid_currency, affiliate_not_active, agreement_total_not_positive · 429 çok sık istek
finance.create_expense
Gider kaydet — Bir kategoriye karşılık çıkan para; onay bekler.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/expenses/actions/create_expense- REST kısayolu:
POST /api/v1/expenses - Asıl adres:
POST /api/v1/actions/finance.create_expense
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
categoryId | uuid | evet | Kategori · kimliği: expense_category |
title | string | evet | Neydi · en çok 255 |
description | string | Açıklama · en çok 4000 | |
amount | number (money) | evet | Tutar |
currency | string | Para birimi · en çok 3 | |
expenseDate | date | evet | Tarih |
method | string (enum) | Ödeyen · İzin verilen değerler: transfer, card, cash, other | |
vendorName | string | Tedarikçi · en çok 255 | |
vendorContact | string | Tedarikçi iletişim · en çok 255 | |
receiptFileId | uuid | Makbuz · kimliği: file | |
isRecurring | boolean | Tekrarlayan | |
recurringPeriod | string (enum) | Her · İzin verilen değerler: weekly, monthly, quarterly, yearly | |
nextOccurrence | date | Sonraki vade | |
recurringUntil | date | Şu tarihe kadar tekrarla |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
expense_category_not_available | Kategori bulunmalı ve aktif olmalı. |
invalid_currency | Para birimi bir ISO-4217 kodu olmalı. |
expense_amount_negative | Gider negatif olamaz. |
expense_amount_over_cap | Çalışma alanının gider limiti geçerlidir. |
expense_date_in_future | Gider tarihi gelecekte olamaz. |
expense_recurring_period_required | Tekrarlayan bir gider bir dönem gerektirir. |
Yayımladığı olaylar: finance.expense_created
Neye yazar: expense (insert) — Records the expense
curl -X POST https://app.getera.io/api/v1/expenses/actions/create_expense \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"categoryId":"EXPENSE_CATEGORY_ID","title":"What it was","amount":1,"expenseDate":"2026-11-02"}'{
"ok": true,
"result": "…",
"events": [
"finance.expense_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.expenses.create({
categoryId: "EXPENSE_CATEGORY_ID",
title: "What it was",
amount: 1,
expenseDate: "2026-11-02"
})era expenses create \
--category-id "EXPENSE_CATEGORY_ID" \
--title "What it was" \
--amount 1 \
--expense-date "2026-11-02"{
"name": "era__finance__create_expense",
"arguments": {
"categoryId": "EXPENSE_CATEGORY_ID",
"title": "What it was",
"amount": 1,
"expenseDate": "2026-11-02"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 expense_category_not_available, invalid_currency, expense_amount_negative, expense_amount_over_cap, expense_date_in_future, expense_recurring_period_required · 429 çok sık istek
finance.deactivate_expense_category
Gider kategorisini kapat — Yeni giderlerin ona yazılmasını durdurur. Var olanlar kategorisini korur.
Gereken izin finance:manage · veriyi değiştirir
https://app.getera.io/api/v1/expense_categories/{id}/actions/deactivate_expense_category- Asıl adres:
POST /api/v1/actions/finance.deactivate_expense_category
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Kategori · kimliği: expense_category |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
expense_category_not_found | Kategori bulunmalı. |
Yayımladığı olaylar: finance.expense_category_changed
Neye yazar: expense_category (update) — Clears is_active
curl -X POST https://app.getera.io/api/v1/expense_categories/EXPENSE_CATEGORY_ID/actions/deactivate_expense_category \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"finance.expense_category_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.expenseCategories.deactivateExpenseCategory("EXPENSE_CATEGORY_ID")era expense_categories deactivate_expense_category EXPENSE_CATEGORY_ID{
"name": "era__finance__deactivate_expense_category",
"arguments": {
"id": "EXPENSE_CATEGORY_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 expense_category_not_found · 429 çok sık istek
finance.mark_expense_paid
Gideri ödendi işaretle — Paranın çıktığı günü işler. Burada “ödendi” o tarih demektir.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/expenses/{id}/actions/mark_expense_paid- Asıl adres:
POST /api/v1/actions/finance.mark_expense_paid
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gider · kimliği: expense |
paymentDate | date | Ödeme tarihi |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
expense_not_found | Gider bulunmalı. |
expense_not_approved | Bir gider ödenmeden önce onaylanır. |
expense_paid_without_date | Gideri ödendi işaretlemek tarih gerektirir. |
Yayımladığı olaylar: finance.expense_paid
Neye yazar: expense (update) — Stamps the payment date
curl -X POST https://app.getera.io/api/v1/expenses/EXPENSE_ID/actions/mark_expense_paid \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"paymentDate":"2026-11-02"}'{
"ok": true,
"result": "…",
"events": [
"finance.expense_paid"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.expenses.markExpensePaid("EXPENSE_ID", {
paymentDate: "2026-11-02"
})era expenses mark_expense_paid EXPENSE_ID \
--payment-date "2026-11-02"{
"name": "era__finance__mark_expense_paid",
"arguments": {
"id": "EXPENSE_ID",
"paymentDate": "2026-11-02"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 expense_not_found, expense_not_approved, expense_paid_without_date · 429 çok sık istek
finance.open_draft_for_source
Kayıt için sözleşme taslağı hazırla — Otomatik: kazanılan bir potansiyel müşteri, randevu, paket, sipariş veya abonelik döneminin gerektirdiği sözleşme.
Gereken izin finance:write · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/agreements/actions/open_draft_for_source- Asıl adres:
POST /api/v1/actions/finance.open_draft_for_source
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
sourceModule | string | evet | Kaynak · en çok 40 |
sourceRecordId | uuid | evet | Kaynak kayıt |
customerId | uuid | evet | Kişi · kimliği: customer |
kind | string (enum) | Tür · İzin verilen değerler: contract, order, booking, subscription_term | |
totalAmount | number (money) | Toplam · en az 0 | |
currency | string | Para birimi · en çok 3 | |
description | string | Ne için · en çok 4000 | |
activate | boolean | Aktif olarak aç | |
lines | object / array | Satılan | |
taxTotalAmount | number (money) | Üstüne eklenen vergi · en az 0 | |
discounts | object / array | Kaynakta uygulanan indirimler | |
affiliateId | uuid | Satış ortağı aracılığıyla geldi · kimliği: affiliate | |
giftCardPayments | object / array | Hediye kartlarıyla ödenen |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agreement_exists_for_source | Kaynak kayıt başına tek açık sözleşme. |
customer_not_found | Kişi bulunmalı. |
customer_archived | Arşivlenmiş bir kişi hiçbir şey üstlenmez. |
invalid_currency | Para birimi bir ISO-4217 kodu olmalı. |
payment_amount_not_positive | Hediye kartı tahsilatı sıfırdan büyüktür. |
allocation_exceeds_target | Hediye kartları sözleşmenin değerinden fazlasını ödeyemez. |
Yayımladığı olaylar: finance.agreement_created, finance.payment_recorded
Neye yazar: agreement (insert) — Drafts the agreement; agreement (update) — Totals the discounts it came with; agreement_line (insert) — Writes what was sold, with its frozen tax, when the source says; discount_line (insert) — Writes the promotions and coupons the source applied; payment (insert) — Records what gift cards already paid, as collections; payment_event (insert) — The gift card charge; payment_allocation (insert) — Allocates it to the agreement
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agreement_exists_for_source, customer_not_found, customer_archived, invalid_currency, payment_amount_not_positive, allocation_exceeds_target · 429 çok sık istek
finance.pay_site_agreement
Bağlantıyla öde (site) — Ziyaretçi randevu kaporasını, etkinlik biletini, paketi ya da açık bir taksiti ödeme bağlantısıyla; bağlı bir ödeme uygulaması ya da test yöntemiyle öder.
Gereken izin finance:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/installments/actions/pay_site_agreement- Asıl adres:
POST /api/v1/actions/finance.pay_site_agreement
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Ödeme bağlantısı |
provider | string | Ödeme yöntemi · Ödemedeki hediye kartı tutarın tamamını karşılıyorsa gerekmez. · en çok 40 | |
returnUrl | string | Dönüş URL’si · en çok 2000 | |
cancelUrl | string | İptal URL’si · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
pay_link_invalid | Bu ödeme bağlantısı geçersiz ya da artık açık değil. |
payment_method_unavailable | Ödeme yöntemi bağlı bir ödeme uygulaması olmalı; test yöntemi yalnızca canlı ortam dışında kullanılabilir. |
gift_card_hold_expired | Ödemeye eklenen hediye kartının on beş dakikalık ayırma süresi doldu. |
nothing_due | Bu bağlantıda ödenecek bir tutar kalmadı. |
Yayımladığı olaylar: finance.payment_provider_event, finance.payment_recorded, finance.installments_scheduled
Neye yazar: installment (insert) — The whole agreement as one instalment due today, when it has none; payment (insert) — Opens the transaction; payment_event (insert) — Records the provider’s answer; payment_allocation (insert) — Puts what was charged, and what a gift card paid, on the instalment; installment (update) — Closes the instalment when card and method cover it
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 pay_link_invalid, payment_method_unavailable, gift_card_hold_expired, nothing_due · 429 çok sık istek
finance.pay_site_order
Siparişi öde (site) — Ziyaretçi web siparişinde kalan tutarı bağlı bir ödeme uygulaması ya da test yöntemiyle öder.
Gereken izin finance:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/installments/actions/pay_site_order- Asıl adres:
POST /api/v1/actions/finance.pay_site_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
provider | string | Ödeme yöntemi · Ödemedeki hediye kartı tutarın tamamını karşılıyorsa gerekmez. · en çok 40 | |
returnUrl | string | Dönüş URL’si · en çok 2000 | |
cancelUrl | string | İptal URL’si · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
order_not_found | Bu sepete ait bir sipariş bulunamadı. |
payment_method_unavailable | Ödeme yöntemi bağlı bir ödeme uygulaması olmalı; test yöntemi yalnızca canlı ortam dışında kullanılabilir. |
gift_card_hold_expired | Ödemeye eklenen hediye kartının on beş dakikalık ayırma süresi doldu. |
payment_not_ready | Bu sipariş henüz ödemeye hazır değil. |
Yayımladığı olaylar: finance.payment_provider_event, finance.payment_recorded, finance.installments_scheduled
Neye yazar: installment (insert) — The whole order as one instalment due today, when it has none; payment (insert) — Opens the transaction; payment_event (insert) — Records the provider’s answer; payment_allocation (insert) — Puts what was charged, and what a gift card paid, on the instalment; installment (update) — Closes the instalment when card and method cover it
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 order_not_found, payment_method_unavailable, gift_card_hold_expired, payment_not_ready · 429 çok sık istek
finance.raise_installment_notices
Taksit hatırlatmalarını oluştur — Günlük finans işi; yaklaşan ve geciken her bekleyen taksit için yalnızca bir kez bildirim olayı üretir.
Gereken izin finance:write · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/installments/actions/raise_installment_notices- Asıl adres:
POST /api/v1/actions/finance.raise_installment_notices
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
asOf | date | Geçerlilik tarihi |
Yayımladığı olaylar: finance.installment_due, finance.installment_overdue
Neye yazar: installment (update) — Records that the customer was told (due soon / overdue)
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 429 çok sık istek
finance.recalculate_commission
Komisyonu yeniden hesapla — Bekleyen bir komisyonu tahsil edilenle uyumlu hâle getirir. Her tahsilat ve iadede çalışır; düğme elle çalıştırır.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/commissions/actions/recalculate_commission- Asıl adres:
POST /api/v1/actions/finance.recalculate_commission
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
agreementId | uuid | Sözleşme · kimliği: agreement | |
paymentId | uuid | Koleksiyon · kimliği: payment |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
commission_not_found | Yeniden hesaplanacak bir komisyon olmalı. |
Yayımladığı olaylar: finance.commission_recalculated
Neye yazar: commission (update) — Writes the amount the collections support
curl -X POST https://app.getera.io/api/v1/commissions/actions/recalculate_commission \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"agreementId":"AGREEMENT_ID"}'{
"ok": true,
"result": "…",
"events": [
"finance.commission_recalculated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.commissions.recalculateCommission({
agreementId: "AGREEMENT_ID"
})era commissions recalculate_commission \
--agreement-id "AGREEMENT_ID"{
"name": "era__finance__recalculate_commission",
"arguments": {
"agreementId": "AGREEMENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 commission_not_found · 429 çok sık istek
finance.record_commission_payout
Komisyon ödemesini kaydet — Bir satış ortağına bir grup bekleyen komisyonu ödeyen tek bir transfer.
Gereken izin finance:approve · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/commission_payouts/actions/record_commission_payout- Asıl adres:
POST /api/v1/actions/finance.record_commission_payout
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
affiliateId | uuid | evet | Satış ortağı · kimliği: affiliate |
commissionIds | object / array | evet | Komisyonlar |
paidOn | date | Ödeme tarihi | |
method | string (enum) | Yöntem · İzin verilen değerler: transfer, cash, card, other | |
reference | string | Havale açıklaması · en çok 255 | |
note | string | Not · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_commissions_selected | Bir ödeme en az bir komisyonu kapatır. |
affiliate_not_found | Satış ortağı bulunmalı. |
commission_not_payable | Her komisyon beklemede, ödenmemiş, bu satış ortağına ait ve tek para biriminde olmalı. |
Yayımladığı olaylar: finance.commission_payout_recorded, finance.commission_status_changed
Neye yazar: commission_payout (insert) — Records the transfer; commission (update) — Marks the commissions paid by it
curl -X POST https://app.getera.io/api/v1/commission_payouts/actions/record_commission_payout \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"affiliateId":"AFFILIATE_ID","commissionIds":{}}'{
"ok": true,
"result": "…",
"events": [
"finance.commission_payout_recorded",
"finance.commission_status_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.commissionPayouts.recordCommissionPayout({
affiliateId: "AFFILIATE_ID",
commissionIds: {}
})era commission_payouts record_commission_payout --data '{"affiliateId":"AFFILIATE_ID","commissionIds":{}}'{
"name": "era__finance__record_commission_payout",
"arguments": {
"affiliateId": "AFFILIATE_ID",
"commissionIds": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:approve izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_commissions_selected, affiliate_not_found, commission_not_payable · 429 çok sık istek
finance.record_gift_card_payment
Hediye kartı tahsilatını kaydet — Otomatik: bir satışın hediye kartıyla ödenen kısmı, sözleşmesine karşılık tahsilat olarak.
Gereken izin finance:write · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/payments/actions/record_gift_card_payment- Asıl adres:
POST /api/v1/actions/finance.record_gift_card_payment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
sourceModule | string | evet | Kaynak · en çok 40 |
sourceRecordId | uuid | evet | Kaynak kayıt |
giftCardId | uuid | evet | Hediye kartı |
giftCardEventId | uuid | evet | Kullanım |
amount | number (money) | evet | Tutar |
currency | string | evet | Para birimi · en çok 3 |
codeTail | string | Kodun son karakterleri · en çok 8 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_agreement_for_source | Satış zaten finansta olmalı. |
allocation_currency_mismatch | Kart yalnızca sözleşmenin para biriminde öder. |
payment_amount_not_positive | Tahsilat sıfırdan büyüktür. |
allocation_exceeds_target | Kart, tahsil edilecek kalandan fazlasını ödeyemez. |
Yayımladığı olaylar: finance.payment_recorded
Neye yazar: payment (insert) — The gift card collection; payment_event (insert) — Its charge; payment_allocation (insert) — Allocated to the agreement
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_agreement_for_source, allocation_currency_mismatch, payment_amount_not_positive, allocation_exceeds_target · 429 çok sık istek
finance.record_payment
Tahsilat kaydet — Para geldi: hareketi, olayı ve neyi kapattığını yazar.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/installments/{id}/actions/record_payment- Asıl adres:
POST /api/v1/actions/finance.record_payment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
installmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Taksit · kimliği: installment |
amount | number (money) | evet | Tutar |
method | string (enum) | Yöntem · İzin verilen değerler: transfer, card, cash, other | |
methodName | string | Yöntem ayrıntısı · en çok 255 | |
reference | string | Sağlayıcı referansı · en çok 512 | |
idempotencyKey | string | Tekrar önleme anahtarı · Bu çalışma alanı ve sağlayıcıyla sınırlıdır — hiçbir zaman genel değildir. · en çok 512 | |
occurredAt | date-time | Gerçekleştiği zaman | |
note | string | Not · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
installment_not_found | Taksit bulunmalı. |
installment_cancelled | İptal edilmiş bir taksite tahsilat yapılmaz. |
payment_amount_not_positive | Tahsilat sıfırdan büyüktür. |
duplicate_payment_idempotency_key | Aynı tahsilat asla iki kez kaydedilmez. |
overpayment | Dağıtımlar taksiti aşamaz. |
Yayımladığı olaylar: finance.payment_recorded
Neye yazar: payment (insert) — Records the movement; payment_event (insert) — Records the charge event; payment_allocation (insert) — Says what it paid off; installment (update) — Closes the instalment when it is covered
curl -X POST https://app.getera.io/api/v1/installments/INSTALLMENT_ID/actions/record_payment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"amount":1}'{
"ok": true,
"result": "…",
"events": [
"finance.payment_recorded"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.installments.recordPayment("INSTALLMENT_ID", {
amount: 1
})era installments record_payment INSTALLMENT_ID \
--amount 1{
"name": "era__finance__record_payment",
"arguments": {
"installmentId": "INSTALLMENT_ID",
"amount": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 installment_not_found, installment_cancelled, payment_amount_not_positive, duplicate_payment_idempotency_key, overpayment · 429 çok sık istek
finance.record_provider_webhook
Ödeme bildirimini kaydet — Ödeme sağlayıcısından gelen doğrulanmış bir bildirimi yalnızca bir kez kabul eder ve ilgili ödemeye uygular.
Gereken izin finance:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/payments/{id}/actions/record_provider_webhook- Asıl adres:
POST /api/v1/actions/finance.record_provider_webhook
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
provider | string | evet | Sağlayıcı · en çok 40 |
externalId | string | evet | Sağlayıcı olayı · en çok 512 |
paymentId | uuid | Doldurulduğu yer: adresteki {id} · Ödeme · kimliği: payment | |
pspReference | string | Sağlayıcı referansı · en çok 512 | |
type | string | evet | Olay türü · en çok 80 |
amount | number (money) | evet | Tutar · en az 0 |
currency | string | evet | Para birimi · en çok 3 |
message | string | Mesaj · en çok 2000 | |
occurredAt | date-time | evet | Gerçekleşme zamanı |
payloadDigest | string | evet | Veri özeti · en çok 128 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
unknown_payment_provider | Bu sağlayıcı tanınmıyor. |
webhook_payment_not_found | Bildirimdeki ödeme bu çalışma alanında bulunamadı. |
webhook_provider_mismatch | Bildirimin sağlayıcısı ödemenin sağlayıcısıyla aynı olmalı. |
Yayımladığı olaylar: finance.payment_provider_event, finance.payment_recorded
Neye yazar: finance_provider_event (insert) — Admits the external event once; payment (update) — Moves the amounts and stores what the provider now allows; payment_event (insert) — Records the provider’s answer; payment_allocation (insert) — Puts charged money on the instalment; installment (update) — Closes the instalment once covered
curl -X POST https://app.getera.io/api/v1/payments/PAYMENT_ID/actions/record_provider_webhook \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"provider":"Provider","externalId":"Provider event","type":"Event type","amount":1,"currency":"Currency","occurredAt":"2026-11-02T09:00:00Z"}'{
"ok": true,
"result": "…",
"events": [
"finance.payment_provider_event",
"finance.payment_recorded"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.payments.recordProviderWebhook("PAYMENT_ID", {
provider: "Provider",
externalId: "Provider event",
type: "Event type",
amount: 1,
currency: "Currency",
occurredAt: "2026-11-02T09:00:00Z"
})era payments record_provider_webhook PAYMENT_ID \
--provider "Provider" \
--external-id "Provider event" \
--type "Event type" \
--amount 1 \
--currency "Currency" \
--occurred-at "2026-11-02T09:00:00Z"{
"name": "era__finance__record_provider_webhook",
"arguments": {
"paymentId": "PAYMENT_ID",
"provider": "Provider",
"externalId": "Provider event",
"type": "Event type",
"amount": 1,
"currency": "Currency",
"occurredAt": "2026-11-02T09:00:00Z"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_payment_provider, webhook_payment_not_found, webhook_provider_mismatch · 429 çok sık istek
finance.record_source_discounts
Mağaza indirimlerini kaydet — Otomatik: bir siparişteki kampanya ve kuponları sözleşmesine indirim satırı olarak yansıtır.
Gereken izin finance:write · siler ya da geri alınamaz
403 machine_only).https://app.getera.io/api/v1/discount_lines/actions/record_source_discounts- Asıl adres:
POST /api/v1/actions/finance.record_source_discounts
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
sourceModule | string | evet | Kaynak · en çok 40 |
sourceRecordId | uuid | evet | Kaynak kayıt |
discounts | object / array | İndirimler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_agreement_for_source | Sipariş zaten finansta olmalı. |
Neye yazar: discount_line (delete) — Drops what the shop wrote before; discount_line (insert) — Writes the current set; agreement (update) — Totals the discounts
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_agreement_for_source · 429 çok sık istek
finance.refund_payment
Tahsilatı iade et — Parayı geri gönderir. İade ayrı bir kayıt değil, tahsilat üzerinde bir olaydır.
Gereken izin finance:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/payments/{id}/actions/refund_payment- Asıl adres:
POST /api/v1/actions/finance.refund_payment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
paymentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Koleksiyon · kimliği: payment |
amount | number (money) | evet | Tutar |
reason | string | evet | Neden · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
payment_not_found | Tahsilat bulunmalı. |
refund_not_available | Sağlayıcı bu tahsilatta hâlâ iadeye izin vermeli. |
payment_app_not_connected | Ödeme uygulaması açık değil. |
payment_credentials_invalid | Ödeme uygulamasının bağlantı bilgileri açılamadı; uygulamayı yeniden bağlayın. |
refund_exceeds_charged | İade tahsil edileni aşamaz. |
Yayımladığı olaylar: finance.payment_refunded
Neye yazar: payment_event (insert) — Records the refund event; payment (update) — Raises the refunded amount; payment_allocation (insert) — Writes the negative allocation; installment (update) — Reopens an instalment it no longer covers
curl -X POST https://app.getera.io/api/v1/payments/PAYMENT_ID/actions/refund_payment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"amount":1,"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"finance.payment_refunded"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.payments.refundPayment("PAYMENT_ID", {
amount: 1,
reason: "Reason"
})era payments refund_payment PAYMENT_ID \
--amount 1 \
--reason "Reason"{
"name": "era__finance__refund_payment",
"arguments": {
"paymentId": "PAYMENT_ID",
"amount": 1,
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 payment_not_found, refund_not_available, payment_app_not_connected, payment_credentials_invalid, refund_exceeds_charged · 429 çok sık istek
finance.reject_expense
Gideri reddet — Bir gideri nedeniyle birlikte reddeder.
Gereken izin finance:approve · veriyi değiştirir
https://app.getera.io/api/v1/expenses/{id}/actions/reject_expense- Asıl adres:
POST /api/v1/actions/finance.reject_expense
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gider · kimliği: expense |
reason | string | evet | Neden · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
expense_not_found | Gider bulunmalı. |
expense_already_decided | Gider hâlâ beklemede olmalı. |
expense_rejection_reason_required | Ret bir neden gerektirir. |
Yayımladığı olaylar: finance.expense_rejected
Neye yazar: expense (update) — Records the rejection
curl -X POST https://app.getera.io/api/v1/expenses/EXPENSE_ID/actions/reject_expense \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"finance.expense_rejected"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.expenses.rejectExpense("EXPENSE_ID", {
reason: "Reason"
})era expenses reject_expense EXPENSE_ID \
--reason "Reason"{
"name": "era__finance__reject_expense",
"arguments": {
"id": "EXPENSE_ID",
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:approve izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 expense_not_found, expense_already_decided, expense_rejection_reason_required · 429 çok sık istek
finance.reject_refund
İadeyi reddet — Talebi, nedeni tahsilatın geçmişine yazılarak reddeder.
Gereken izin finance:approve · siler ya da geri alınamaz
https://app.getera.io/api/v1/payment_events/{id}/actions/reject_refund- Asıl adres:
POST /api/v1/actions/finance.reject_refund
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
requestId | uuid | evet | Doldurulduğu yer: adresteki {id} · Talep · kimliği: payment_event |
reason | string | evet | Neden · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
refund_request_not_found | Talep bulunmalı. |
refund_request_resolved | Bir talep bir kez onaylanır veya reddedilir. |
Yayımladığı olaylar: finance.refund_rejected
Neye yazar: payment_event (insert) — Records the refund step; payment (update) — Moves the pending and refunded amounts
curl -X POST https://app.getera.io/api/v1/payment_events/PAYMENT_EVENT_ID/actions/reject_refund \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"finance.refund_rejected"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.paymentEvents.rejectRefund("PAYMENT_EVENT_ID", {
reason: "Reason"
})era payment_events reject_refund PAYMENT_EVENT_ID \
--reason "Reason"{
"name": "era__finance__reject_refund",
"arguments": {
"requestId": "PAYMENT_EVENT_ID",
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:approve izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 refund_request_not_found, refund_request_resolved · 429 çok sık istek
finance.remove_discount
İndirimi kaldır — İndirimi kaldırır ve tutarı sözleşmeye geri ekler.
Gereken izin finance:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/discount_lines/{id}/actions/remove_discount- Asıl adres:
POST /api/v1/actions/finance.remove_discount
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · İndirim · kimliği: discount_line |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
discount_not_found | İndirim bulunmalı. |
agreement_not_found | İndirimin sözleşmesi bulunmalı. |
agreement_closed | Kapanmış bir sözleşme indirimlerini korur. |
Yayımladığı olaylar: finance.discount_removed
Neye yazar: discount_line (delete) — Removes the discount; agreement (update) — Restores the total
curl -X POST https://app.getera.io/api/v1/discount_lines/DISCOUNT_LINE_ID/actions/remove_discount \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"finance.discount_removed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.discountLines.removeDiscount("DISCOUNT_LINE_ID")era discount_lines remove_discount DISCOUNT_LINE_ID{
"name": "era__finance__remove_discount",
"arguments": {
"id": "DISCOUNT_LINE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 discount_not_found, agreement_not_found, agreement_closed · 429 çok sık istek
finance.request_refund
İade talep et — Paranın geri gönderilmesini ister. Onay yetkisi olan biri evet diyene kadar hiçbir şey kıpırdamaz.
Gereken izin finance:write · siler ya da geri alınamaz
https://app.getera.io/api/v1/payments/{id}/actions/request_refund- Asıl adres:
POST /api/v1/actions/finance.request_refund
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
paymentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Koleksiyon · kimliği: payment |
amount | number (money) | evet | Tutar |
reason | string | evet | Neden · en çok 2000 |
idempotencyKey | string | Tekrar önleme anahtarı · en çok 512 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
payment_not_found | Tahsilat bulunmalı. |
refund_not_available | Sağlayıcı hâlâ iadeye izin vermeli. |
refund_exceeds_charged | İade, hâlâ iade edilebilecek tutarı aşamaz. |
Yayımladığı olaylar: finance.refund_requested
Neye yazar: payment_event (insert) — Records the refund step; payment (update) — Moves the pending and refunded amounts
curl -X POST https://app.getera.io/api/v1/payments/PAYMENT_ID/actions/request_refund \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"amount":1,"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"finance.refund_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.payments.requestRefund("PAYMENT_ID", {
amount: 1,
reason: "Reason"
})era payments request_refund PAYMENT_ID \
--amount 1 \
--reason "Reason"{
"name": "era__finance__request_refund",
"arguments": {
"paymentId": "PAYMENT_ID",
"amount": 1,
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 payment_not_found, refund_not_available, refund_exceeds_charged · 429 çok sık istek
finance.request_refunds_for_source
İptale yanıt ver — Otomatik: randevu, potansiyel müşteri veya sipariş iptal edildiğinde tahsil edilmeyeni iptal eder, tahsil edilen için iade talebi açar.
Gereken izin finance:write · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/payment_events/actions/request_refunds_for_source- Asıl adres:
POST /api/v1/actions/finance.request_refunds_for_source
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
sourceModule | string | evet | Kaynak · en çok 40 |
sourceRecordId | uuid | evet | Kaynak kayıt |
reason | string | Neden · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_agreement_for_source | Finansta bu kayda bağlı bir kayıt olmalı. |
Yayımladığı olaylar: finance.agreement_cancelled, finance.refund_requested
Neye yazar: agreement (update) — Cancels an uncollected agreement; installment (update) — Cancels its pending instalments; payment_event (insert) — Records the refund step; payment (update) — Moves the pending and refunded amounts
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_agreement_for_source · 429 çok sık istek
finance.return_gift_card_payment
Hediye kartı tahsilatını geri al — Otomatik: karta geri dönen para tahsilattan düşülür, böylece yeniden borç olur.
Gereken izin finance:write · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/payment_events/actions/return_gift_card_payment- Asıl adres:
POST /api/v1/actions/finance.return_gift_card_payment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
sourceModule | string | evet | Kaynak · en çok 40 |
sourceRecordId | uuid | evet | Kaynak kayıt |
giftCardId | uuid | evet | Hediye kartı |
amount | number (money) | evet | Tutar |
idempotencyKey | string | Tekrar önleme anahtarı · en çok 512 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_agreement_for_source | Satış finansta olmalı. |
gift_card_payment_not_found | Bu kart bu satışa ödeme yapmış olmalı. |
refund_exceeds_charged | Kartın ödediğinden fazlası geri dönmez. |
Yayımladığı olaylar: finance.payment_refunded
Neye yazar: payment_event (insert) — The return, as a refund; payment (update) — Raises the refunded amount; payment_allocation (insert) — The negative allocation that reopens the balance; installment (update) — Reopens the instalment a site-checkout card had closed
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_agreement_for_source, gift_card_payment_not_found, refund_exceeds_charged · 429 çok sık istek
finance.run_recurring_expenses
Tekrarlayan giderleri kaydet — Vadesi gelen her tekrarlayan gideri onay bekleyen yeni bir gidere kopyalar.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/expenses/actions/run_recurring_expenses- Asıl adres:
POST /api/v1/actions/finance.run_recurring_expenses
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
asOf | date | Geçerlilik tarihi |
Yayımladığı olaylar: finance.expense_created
Neye yazar: expense (insert) — One pending copy per period that came due; expense (update) — Moves the template’s next occurrence on
curl -X POST https://app.getera.io/api/v1/expenses/actions/run_recurring_expenses \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"asOf":"2026-11-02"}'{
"ok": true,
"result": "…",
"events": [
"finance.expense_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.expenses.runRecurringExpenses({
asOf: "2026-11-02"
})era expenses run_recurring_expenses \
--as-of "2026-11-02"{
"name": "era__finance__run_recurring_expenses",
"arguments": {
"asOf": "2026-11-02"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 429 çok sık istek
finance.save_expense_category
Gider kategorisini kaydet — Bir kategori ekler veya yeniden adlandırır.
Gereken izin finance:manage · veriyi değiştirir
https://app.getera.io/api/v1/expense_categories/{id}/actions/save_expense_category- REST kısayolu:
PATCH /api/v1/expense_categories/{id} - Asıl adres:
POST /api/v1/actions/finance.save_expense_category
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Kategori · kimliği: expense_category | |
name | string | evet | Ad · en çok 255 |
description | string | Açıklama · en çok 2000 | |
colour | string | Renk · en çok 7 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
expense_category_name_taken | Kategori adları çalışma alanında benzersizdir. |
expense_category_not_found | Düzenlenen kategori bulunmalı. |
Yayımladığı olaylar: finance.expense_category_changed
Neye yazar: expense_category (upsert) — Saves the category
curl -X POST https://app.getera.io/api/v1/expense_categories/EXPENSE_CATEGORY_ID/actions/save_expense_category \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"finance.expense_category_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.expenseCategories.saveExpenseCategory("EXPENSE_CATEGORY_ID", {
name: "Name"
})era expense_categories save_expense_category EXPENSE_CATEGORY_ID \
--name "Name"{
"name": "era__finance__save_expense_category",
"arguments": {
"id": "EXPENSE_CATEGORY_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 expense_category_name_taken, expense_category_not_found · 429 çok sık istek
finance.schedule_installments
Taksitlendir — Tüm vade planını tek seferde yazar.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/installments/actions/schedule_installments- Asıl adres:
POST /api/v1/actions/finance.schedule_installments
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
agreementId | uuid | evet | Sözleşme · kimliği: agreement |
installments | object / array | evet | Taksitler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agreement_not_found | Sözleşme bulunmalı. |
agreement_closed | Kapanmış bir sözleşmenin vadesi yeniden planlanmaz. |
no_installments | Plan en az bir taksit gerektirir. |
invalid_installments | Her taksidin bir vade tarihi ve tutarı olmalı. |
duplicate_installment_due_date | İki taksit aynı güne düşemez. |
installments_do_not_sum_to_total | Taksitlerin toplamı sözleşmeye eşit olmalı. |
Yayımladığı olaylar: finance.installments_scheduled
Neye yazar: installment (insert) — Writes the schedule
curl -X POST https://app.getera.io/api/v1/installments/actions/schedule_installments \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"agreementId":"AGREEMENT_ID","installments":{}}'{
"ok": true,
"result": "…",
"events": [
"finance.installments_scheduled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.installments.scheduleInstallments({
agreementId: "AGREEMENT_ID",
installments: {}
})era installments schedule_installments --data '{"agreementId":"AGREEMENT_ID","installments":{}}'{
"name": "era__finance__schedule_installments",
"arguments": {
"agreementId": "AGREEMENT_ID",
"installments": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agreement_not_found, agreement_closed, no_installments, invalid_installments, duplicate_installment_due_date, installments_do_not_sum_to_total · 429 çok sık istek
finance.set_commission_status
Komisyon durumunu değiştir — Durum geçişi kurallarına uyar; iptal edilen komisyon kesindir.
Gereken izin finance:manage · veriyi değiştirir
https://app.getera.io/api/v1/commissions/{id}/actions/set_commission_status- Asıl adres:
POST /api/v1/actions/finance.set_commission_status
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Komisyon · kimliği: commission |
status | string (enum) | evet | Durum · İzin verilen değerler: completed, cancelled |
paidAt | date | Ödeme tarihi |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
commission_not_found | Komisyon bulunmalı. |
commission_cancelled_is_final | İptal edilmiş bir komisyon yeniden açılmaz. |
invalid_commission_transition | Geçiş izin verilen bir geçiş olmalı. |
Yayımladığı olaylar: finance.commission_status_changed
Neye yazar: commission (update) — Moves the commission
curl -X POST https://app.getera.io/api/v1/commissions/COMMISSION_ID/actions/set_commission_status \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"status":"completed"}'{
"ok": true,
"result": "…",
"events": [
"finance.commission_status_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.commissions.setCommissionStatus("COMMISSION_ID", {
status: "completed"
})era commissions set_commission_status COMMISSION_ID \
--status "completed"{
"name": "era__finance__set_commission_status",
"arguments": {
"id": "COMMISSION_ID",
"status": "completed"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 commission_not_found, commission_cancelled_is_final, invalid_commission_transition · 429 çok sık istek
finance.stop_recurring_expense
Tekrarı durdur — Gider kalır; artık her dönem kopyalanmaz.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/expenses/{id}/actions/stop_recurring_expense- Asıl adres:
POST /api/v1/actions/finance.stop_recurring_expense
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gider · kimliği: expense |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
expense_not_found | Gider bulunmalı. |
expense_not_recurring | Yalnızca tekrarlayan bir gider durdurulabilir. |
Yayımladığı olaylar: finance.expense_updated
Neye yazar: expense (update) — Clears the recurrence
curl -X POST https://app.getera.io/api/v1/expenses/EXPENSE_ID/actions/stop_recurring_expense \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"finance.expense_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.expenses.stopRecurringExpense("EXPENSE_ID")era expenses stop_recurring_expense EXPENSE_ID{
"name": "era__finance__stop_recurring_expense",
"arguments": {
"id": "EXPENSE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 expense_not_found, expense_not_recurring · 429 çok sık istek
finance.take_payment
Ödeme al — Bir taksit için ödeme sağlayıcısından provizyon alır veya tahsilat yapar ve yanıtını kaydeder.
Gereken izin finance:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/installments/{id}/actions/take_payment- Asıl adres:
POST /api/v1/actions/finance.take_payment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
installmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Taksit · kimliği: installment |
amount | number (money) | evet | Tutar |
provider | string | Sağlayıcı · Şunlardan biri: manual, dummy, stripe, iyzico, paytr. · en çok 40 | |
mode | string (enum) | Çalışma biçimi · İzin verilen değerler: charge, authorize | |
outcome | string (enum) | Test sonucu · Bunu yalnızca dummy ödeme altyapısı okur. · İzin verilen değerler: success, failure, pending | |
method | string (enum) | Yöntem · İzin verilen değerler: card, transfer, cash, other | |
idempotencyKey | string | Tekrar önleme anahtarı · en çok 255 | |
note | string | Not · en çok 2000 | |
returnUrl | string | Dönüş URL’si · en çok 2000 | |
cancelUrl | string | İptal URL’si · en çok 2000 | |
customerEmail | string | Müşteri e-postası · en çok 320 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
unknown_payment_provider | Sağlayıcı kurulu olmalı. |
installment_not_found | Taksit bulunmalı. |
installment_cancelled | İptal edilmiş bir taksite karşılık ödeme alınmaz. |
payment_amount_not_positive | Ödeme sıfırdan büyüktür. |
overpayment | Ödeme hâlâ borçlu olunanı aşamaz. |
duplicate_payment_idempotency_key | Aynı anahtar asla iki kez tahsil edilmez. |
payment_app_not_connected | Çevrim içi ödeme sağlayıcısı bağlı ve açık bir uygulama olmalı. |
payment_credentials_invalid | Ödeme uygulamasının bağlantı bilgileri açılamadı; uygulamayı yeniden bağlayın. |
Yayımladığı olaylar: finance.payment_provider_event, finance.payment_recorded
Neye yazar: payment (insert) — Opens the transaction; payment (update) — Moves the amounts and stores what the provider now allows; payment_event (insert) — Records the provider’s answer; payment_allocation (insert) — Puts charged money on the instalment; installment (update) — Closes the instalment once covered
curl -X POST https://app.getera.io/api/v1/installments/INSTALLMENT_ID/actions/take_payment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"amount":1}'{
"ok": true,
"result": "…",
"events": [
"finance.payment_provider_event",
"finance.payment_recorded"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.installments.takePayment("INSTALLMENT_ID", {
amount: 1
})era installments take_payment INSTALLMENT_ID \
--amount 1{
"name": "era__finance__take_payment",
"arguments": {
"installmentId": "INSTALLMENT_ID",
"amount": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_payment_provider, installment_not_found, installment_cancelled, payment_amount_not_positive, overpayment, duplicate_payment_idempotency_key, payment_app_not_connected, payment_credentials_invalid · 429 çok sık istek
finance.update_agreement
Sözleşmeyi düzenle — Sözleşmenin söylediğini değiştirir — para birimi asla değişmez.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/agreements/{id}/actions/update_agreement- REST kısayolu:
PATCH /api/v1/agreements/{id} - Asıl adres:
POST /api/v1/actions/finance.update_agreement
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sözleşme · kimliği: agreement |
status | string (enum) | Durum · İzin verilen değerler: draft, active, fulfilled | |
description | string | Ne için · en çok 4000 | |
note | string | İç not · en çok 4000 | |
totalAmount | number (money) | Ara toplam · en az 0 | |
taxTotalAmount | number (money) | Vergi · en az 0 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agreement_not_found | Sözleşme bulunmalı. |
agreement_closed | Tamamlanmış veya iptal edilmiş bir sözleşme düzenlenmez. |
agreement_has_schedule | Toplam, zaten planlanmış taksitlerin altına inemez. |
Yayımladığı olaylar: finance.agreement_updated
Neye yazar: agreement (update) — Updates the agreement
curl -X POST https://app.getera.io/api/v1/agreements/AGREEMENT_ID/actions/update_agreement \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"status":"draft"}'{
"ok": true,
"result": "…",
"events": [
"finance.agreement_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.agreements.updateAgreement("AGREEMENT_ID", {
status: "draft"
})era agreements update_agreement AGREEMENT_ID \
--status "draft"{
"name": "era__finance__update_agreement",
"arguments": {
"id": "AGREEMENT_ID",
"status": "draft"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agreement_not_found, agreement_closed, agreement_has_schedule · 429 çok sık istek
finance.update_expense
Gideri düzenle — Henüz onaylanmamış bir gideri düzeltir.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/expenses/{id}/actions/update_expense- REST kısayolu:
PATCH /api/v1/expenses/{id} - Asıl adres:
POST /api/v1/actions/finance.update_expense
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gider · kimliği: expense |
title | string | Neydi · en çok 255 | |
description | string | Açıklama · en çok 4000 | |
amount | number (money) | Tutar · en az 0 | |
vendorName | string | Tedarikçi · en çok 255 | |
vendorContact | string | Tedarikçi iletişim · en çok 255 | |
receiptFileId | uuid | Makbuz · kimliği: file | |
categoryId | uuid | Kategori · kimliği: expense_category | |
expenseDate | date | Tarih | |
method | string (enum) | Ödeyen · İzin verilen değerler: transfer, card, cash, other |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
expense_not_found | Gider bulunmalı. |
expense_already_decided | Onaylanmış bir gider düzenlenmez. |
expense_category_not_available | Yeni kategori bulunamadı ya da kullanımda değil. |
Yayımladığı olaylar: finance.expense_updated
Neye yazar: expense (update) — Updates the expense
curl -X POST https://app.getera.io/api/v1/expenses/EXPENSE_ID/actions/update_expense \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"title":"What it was"}'{
"ok": true,
"result": "…",
"events": [
"finance.expense_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.expenses.updateExpense("EXPENSE_ID", {
title: "What it was"
})era expenses update_expense EXPENSE_ID \
--title "What it was"{
"name": "era__finance__update_expense",
"arguments": {
"id": "EXPENSE_ID",
"title": "What it was"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 expense_not_found, expense_already_decided, expense_category_not_available · 429 çok sık istek
finance.update_installment
Taksiti düzenle — Vade tarihini değiştirir veya tutarı günceller; tahsil edilenin altına asla inmez.
Gereken izin finance:write · veriyi değiştirir
https://app.getera.io/api/v1/installments/{id}/actions/update_installment- REST kısayolu:
PATCH /api/v1/installments/{id} - Asıl adres:
POST /api/v1/actions/finance.update_installment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Taksit · kimliği: installment |
dueDate | date | Vade tarihi | |
amount | number (money) | Tutar · en az 0 | |
note | string | Not · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
installment_not_found | Taksit bulunmalı. |
installment_cancelled | İptal edilmiş bir taksit düzenlenmez. |
installment_below_collected | Bir taksit, ona karşılık tahsil edilenden az olamaz. |
Yayımladığı olaylar: finance.installment_updated
Neye yazar: installment (update) — Updates the instalment
curl -X POST https://app.getera.io/api/v1/installments/INSTALLMENT_ID/actions/update_installment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"dueDate":"2026-11-02"}'{
"ok": true,
"result": "…",
"events": [
"finance.installment_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.installments.updateInstallment("INSTALLMENT_ID", {
dueDate: "2026-11-02"
})era installments update_installment INSTALLMENT_ID \
--due-date "2026-11-02"{
"name": "era__finance__update_installment",
"arguments": {
"id": "INSTALLMENT_ID",
"dueDate": "2026-11-02"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 installment_not_found, installment_cancelled, installment_below_collected · 429 çok sık istek
finance.void_expense
Gideri geçersiz kıl — Ödenmemiş bir gideri geri çeker. Ödenmiş olan kaldırılmaz, düzeltilir.
Gereken izin finance:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/expenses/{id}/actions/void_expense- Asıl adres:
POST /api/v1/actions/finance.void_expense
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gider · kimliği: expense |
reason | string | evet | Neden · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
expense_not_found | Gider bulunmalı. |
paid_expense_not_voidable | Ödenmiş bir gider geçersiz kılınmaz, düzeltilir. |
Yayımladığı olaylar: finance.expense_voided
Neye yazar: expense (update) — Records the withdrawal
curl -X POST https://app.getera.io/api/v1/expenses/EXPENSE_ID/actions/void_expense \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"finance.expense_voided"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.expenses.voidExpense("EXPENSE_ID", {
reason: "Reason"
})era expenses void_expense EXPENSE_ID \
--reason "Reason"{
"name": "era__finance__void_expense",
"arguments": {
"id": "EXPENSE_ID",
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde finance:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 expense_not_found, paid_expense_not_voidable · 429 çok sık istek
Veri modelleri
AgreementLine
Tablo agreement_line · Kaynak agreement_lines
GET /api/v1/agreement_linesGET /api/v1/agreement_lines/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
agreement_id | string (uuid) · uuid | agreement | ||
item_module | string · text | evet | ||
item_record_id | string (uuid) · uuid | evet | ||
name | string · text | |||
quantity | string (decimal) · numeric | |||
currency | string · bpchar | en çok 3 | ||
unit_amount | string (int64) · int8 | |||
total_amount | string (int64) · int8 | |||
display_order | integer · int4 | |||
created_at | string (date-time) · timestamptz | |||
tax_snapshot | boolean · bool | |||
tax_class_id | string (uuid) · uuid | evet | ||
tax_class_name | string · text | evet | ||
tax_rate | string (decimal) · numeric | |||
prices_entered_with_tax | boolean · bool | |||
discount_amount | string (int64) · int8 | |||
net_amount | string (int64) · int8 | evet | ||
tax_amount | string (int64) · int8 | evet | ||
gross_amount | string (int64) · int8 | evet |
Birincil anahtar: id
Denetimler:
CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK ((quantity > (0)::numeric))CHECK (((discount_amount >= 0) AND (COALESCE(net_amount, (0)::bigint) >= 0) AND (COALESCE(tax_amount, (0)::bigint) >= 0) AND (COALESCE(gross_amount, (0)::bigint) >= 0) AND ((NOT tax_snapshot) OR ((net_amount IS NOT NULL) AND (tax_amount IS NOT NULL) AND (gross_amount IS NOT NULL)))))CHECK (((tax_rate >= (0)::numeric) AND (tax_rate <= (100)::numeric)))CHECK ((total_amount >= 0))CHECK ((unit_amount >= 0))
Agreement
Tablo agreement · Kaynak agreements
GET /api/v1/agreementsGET /api/v1/agreements/{id}POST /api/v1/agreements→finance.create_agreementPATCH /api/v1/agreements/{id}→finance.update_agreement
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
kind | string · text | contract, order, booking, subscription_term | ||
status | string · text | draft, active, fulfilled, cancelled | ||
customer_id | string (uuid) · uuid | customer | ||
source_module | string · text | evet | ||
source_record_id | string (uuid) · uuid | evet | ||
affiliate_id | string (uuid) · uuid | evet | affiliate | |
currency | string · bpchar | en çok 3 | ||
subtotal_amount | string (int64) · int8 | |||
discount_total_amount | string (int64) · int8 | |||
tax_total_amount | string (int64) · int8 | |||
total_amount | string (int64) · int8 | |||
note | string · text | evet | ||
description | string · text | evet | ||
created_by_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
cancelled_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Denetimler:
CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK ((discount_total_amount >= 0))CHECK ((subtotal_amount >= 0))CHECK ((tax_total_amount >= 0))CHECK ((total_amount >= 0))
CommissionPayout
Tablo commission_payout · Kaynak commission_payouts
GET /api/v1/commission_payoutsGET /api/v1/commission_payouts/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
affiliate_id | string (uuid) · uuid | affiliate | ||
currency | string · bpchar | en çok 3 | ||
amount | string (int64) · int8 | |||
commission_count | integer · int4 | |||
paid_on | string (date) · date | |||
method | string · text | transfer, cash, card, other | ||
reference | string · text | evet | ||
note | string · text | evet | ||
created_by_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((amount > 0))CHECK ((commission_count > 0))CHECK ((currency ~ '^[A-Z]{3}$'::text))
Commission
Tablo commission · Kaynak commissions
GET /api/v1/commissionsGET /api/v1/commissions/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
agreement_id | string (uuid) · uuid | agreement | ||
affiliate_id | string (uuid) · uuid | affiliate | ||
currency | string · bpchar | en çok 3 | ||
amount | string (int64) · int8 | |||
rate | string (decimal) · numeric | |||
status | string · text | pending, completed, cancelled | ||
paid_at | string (date) · date | evet | ||
notes | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
payout_id | string (uuid) · uuid | evet | commission_payout | |
is_manual | boolean · bool | |||
recalculated_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Denetimler:
CHECK ((amount >= 0))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK (((rate >= (0)::numeric) AND (rate <= (100)::numeric)))
DiscountLine
Tablo discount_line · Kaynak discount_lines
GET /api/v1/discount_linesGET /api/v1/discount_lines/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
target_type | string · text | agreement, agreement_line, checkout, checkout_line, invoice | ||
target_id | string (uuid) · uuid | |||
type | string · text | manual, promotion, voucher, shipping, order_promotion | ||
value_type | string · text | percentage, fixed | ||
value | string (decimal) · numeric | |||
currency | string · bpchar | en çok 3 | ||
amount | string (int64) · int8 | |||
name | string · text | evet | ||
reason | string · text | evet | ||
applied_by | string (uuid) · uuid | evet | app_user | |
promotion_rule_id | string (uuid) · uuid | evet | ||
voucher_id | string (uuid) · uuid | evet | ||
voucher_code | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
fixed_amount | string (int64) · int8 | evet |
Birincil anahtar: id
Denetimler:
CHECK (((value_type <> 'fixed'::text) OR (fixed_amount IS NOT NULL)))CHECK ((amount >= 0))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK (((fixed_amount IS NULL) OR (fixed_amount >= 0)))CHECK ((value >= (0)::numeric))CHECK (((type <> 'manual'::text) OR (applied_by IS NOT NULL)))CHECK (((value_type <> 'percentage'::text) OR (value <= (100)::numeric)))
ExpenseCategory
Tablo expense_category · Kaynak expense_categories
GET /api/v1/expense_categoriesGET /api/v1/expense_categories/{id}PATCH /api/v1/expense_categories/{id}→finance.save_expense_category
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
name | string · text | |||
description | string · text | evet | ||
colour | string · text | |||
is_active | boolean · bool | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Expense
Tablo expense · Kaynak expenses
GET /api/v1/expensesGET /api/v1/expenses/{id}POST /api/v1/expenses→finance.create_expensePATCH /api/v1/expenses/{id}→finance.update_expense
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
category_id | string (uuid) · uuid | expense_category | ||
title | string · text | |||
description | string · text | evet | ||
currency | string · bpchar | en çok 3 | ||
amount | string (int64) · int8 | |||
expense_date | string (date) · date | |||
payment_date | string (date) · date | evet | ||
method | string · text | card, transfer, cash, other | ||
vendor_name | string · text | evet | ||
vendor_contact | string · text | evet | ||
receipt_file_id | string (uuid) · uuid | evet | file | |
is_recurring | boolean · bool | |||
recurring_period | string · text | evet | ||
next_occurrence | string (date) · date | evet | ||
approval_status | string · text | pending, approved, rejected | ||
approved_by_user_id | string (uuid) · uuid | evet | app_user | |
approved_at | string (date-time) · timestamptz | evet | ||
rejection_reason | string · text | evet | ||
created_by_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
recurring_until | string (date) · date | evet | ||
recurring_parent_id | string (uuid) · uuid | evet | expense |
Birincil anahtar: id
Denetimler:
CHECK ((amount >= 0))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK (((NOT is_recurring) OR (recurring_period IS NOT NULL)))CHECK (((recurring_period IS NULL) OR (recurring_period = ANY (ARRAY['weekly'::text, 'monthly'::text, 'quarterly'::text, 'yearly'::text]))))CHECK (((approval_status <> 'rejected'::text) OR (rejection_reason IS NOT NULL)))
FinanceProviderEvent
Tablo finance_provider_event · Kaynak finance_provider_events
GET /api/v1/finance_provider_eventsGET /api/v1/finance_provider_events/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
provider | string · text | stripe, iyzico, paytr | ||
external_id | string · text | |||
payment_id | string (uuid) · uuid | evet | payment | |
event_type | string · text | |||
amount | string (int64) · int8 | |||
currency | string · bpchar | en çok 3 | ||
psp_reference | string · text | evet | ||
payload_digest | string · text | |||
occurred_at | string (date-time) · timestamptz | |||
processed_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: workspace_id, provider, external_id
Denetimler:
CHECK ((amount >= 0))CHECK ((currency ~ '^[A-Z]{3}$'::text))
Installment
Tablo installment · Kaynak installments
GET /api/v1/installmentsGET /api/v1/installments/{id}PATCH /api/v1/installments/{id}→finance.update_installment
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
agreement_id | string (uuid) · uuid | agreement | ||
sequence | integer · int4 | |||
due_date | string (date) · date | |||
currency | string · bpchar | en çok 3 | ||
amount | string (int64) · int8 | |||
status | string · text | pending, paid, cancelled | ||
note | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
due_notice_at | string (date-time) · timestamptz | evet | ||
overdue_notice_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Denetimler:
CHECK ((amount >= 0))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK ((sequence > 0))
PaymentAllocation
Tablo payment_allocation · Kaynak payment_allocations
GET /api/v1/payment_allocationsGET /api/v1/payment_allocations/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
payment_id | string (uuid) · uuid | payment | ||
target_type | string · text | installment, agreement, invoice | ||
target_id | string (uuid) · uuid | |||
currency | string · bpchar | en çok 3 | ||
amount | string (int64) · int8 | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((amount <> 0))CHECK ((currency ~ '^[A-Z]{3}$'::text))
PaymentEvent
Tablo payment_event · Kaynak payment_events
GET /api/v1/payment_eventsGET /api/v1/payment_events/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
payment_id | string (uuid) · uuid | payment | ||
type | string · text | authorization_success, authorization_failure, authorization_adjustment, authorization_request, authorization_action_required, charge_success, charge_failure, charge_back, charge_action_required, charge_request, refund_success, refund_failure, refund_reverse, refund_request, cancel_success, cancel_failure, cancel_request, info | ||
currency | string · bpchar | en çok 3 | ||
amount | string (int64) · int8 | |||
include_in_calculations | boolean · bool | |||
psp_reference | string · text | evet | ||
idempotency_key | string · text | evet | ||
message | string · text | evet | ||
external_url | string · text | evet | ||
app_id | string (uuid) · uuid | evet | ||
app_identifier | string · text | evet | ||
actor_user_id | string (uuid) · uuid | evet | app_user | |
occurred_at | string (date-time) · timestamptz | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((currency ~ '^[A-Z]{3}$'::text))
PaymentProviderConfig
Tablo payment_provider_config · Kaynak payment_provider_configs
GET /api/v1/payment_provider_configsGET /api/v1/payment_provider_configs/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
provider | string · text | stripe, iyzico, paytr | ||
enabled | boolean · bool | |||
test_mode | boolean · bool | |||
position | integer · int4 | |||
display_name | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: workspace_id, credential_id · workspace_id, provider
Denetimler:
CHECK (("position" >= 0))
Payment
Tablo payment · Kaynak payments
GET /api/v1/paymentsGET /api/v1/payments/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
customer_id | string (uuid) · uuid | evet | customer | |
name | string · text | evet | ||
message | string · text | evet | ||
psp_reference | string · text | evet | ||
idempotency_key | string · text | evet | ||
app_id | string (uuid) · uuid | evet | ||
app_identifier | string · text | evet | ||
external_url | string · text | evet | ||
available_actions | string[] · text[] | |||
last_refund_success | boolean · bool | |||
currency | string · bpchar | en çok 3 | ||
authorized_amount | string (int64) · int8 | |||
charged_amount | string (int64) · int8 | |||
refunded_amount | string (int64) · int8 | |||
canceled_amount | string (int64) · int8 | |||
authorize_pending_amount | string (int64) · int8 | |||
charge_pending_amount | string (int64) · int8 | |||
refund_pending_amount | string (int64) · int8 | |||
cancel_pending_amount | string (int64) · int8 | |||
method | string · text | card, transfer, cash, gift_card, other | ||
method_name | string · text | evet | ||
cc_first_digits | string · text | evet | ||
cc_last_digits | string · text | evet | ||
cc_brand | string · text | evet | ||
cc_exp_month | integer · int2 | evet | ||
cc_exp_year | integer · int2 | evet | ||
gift_card_last_chars | string · text | evet | ||
gift_card_brand | string · text | evet | ||
actor_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
pending_installment_id | string (uuid) · uuid | evet | installment | |
gift_card_id | string (uuid) · uuid | evet | ||
gift_card_event_id | string (uuid) · uuid | evet | ||
checkout_url | string · text | evet | ||
provider_status | string · text | evet | ||
provider_expires_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Denetimler:
CHECK ((authorize_pending_amount >= 0))CHECK ((authorized_amount >= 0))CHECK ((cancel_pending_amount >= 0))CHECK ((canceled_amount >= 0))CHECK (((cc_exp_month >= 1) AND (cc_exp_month <= 12)))CHECK ((cc_exp_year >= 2000))CHECK ((charge_pending_amount >= 0))CHECK ((charged_amount >= 0))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK (((method <> 'gift_card'::text) OR (gift_card_id IS NOT NULL)))CHECK ((refund_pending_amount >= 0))CHECK ((refunded_amount >= 0))
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
finance.agreement_cancelled | Bir sözleşme iptal edildi. | id, customerId |
finance.agreement_created | Bir sözleşme açıldı. | id, customerId, affiliateId, currency, totalAmount, kind, sourceModule, sourceRecordId |
finance.agreement_updated | Bir sözleşme değişti. | id |
finance.commission_accrued | Bir satış ortağı için komisyon tahakkuk etti. | id, agreementId, affiliateId, amount, currency |
finance.commission_cancelled | Bir komisyon iptal edildi. | id |
finance.commission_payout_recorded | Bir iş ortağına yapılan havale bir grup komisyonu ödedi. | id, affiliateId, amount, currency, count |
finance.commission_recalculated | Bekleyen bir komisyon tahsil edilene göre değişti (K-09). | id, agreementId, from, to |
finance.commission_status_changed | Bir komisyonun durumu değişti. | id, from, to |
finance.discount_applied | Bir sözleşmeye indirim uygulandı. | id, agreementId, amount, currency |
finance.discount_removed | Bir indirim kaldırıldı. | id, agreementId |
finance.expense_approved | Bir gider onaylandı. | id |
finance.expense_category_changed | Gider sözlüğü değişti. | id |
finance.expense_created | Bir gider kaydedildi. | id, amount, currency |
finance.expense_paid | Bir gider ödendi. | id |
finance.expense_rejected | Bir gider reddedildi. | id |
finance.expense_updated | Bir gider düzeltildi. | id |
finance.expense_voided | Ödenmemiş bir gider geri çekildi. | id |
finance.installment_cancelled | Bir taksit plandan çıkarıldı. | id, agreementId |
finance.installment_due | Bir taksidin vadesi, Finans ayarlarında belirlenen hatırlatma aralığına girdi. | id, agreementId, customerId, customerName, description, sequence, dueDate, amount, outstandingAmount, currency, outstandingText, daysUntilDue |
finance.installment_overdue | Bir taksidin vadesi geçti ve hâlâ ödenmesi gereken tutar var. | id, agreementId, customerId, customerName, description, sequence, dueDate, amount, outstandingAmount, currency, outstandingText, daysOverdue |
finance.installment_updated | Bir taksit taşındı ya da değişti. | id, agreementId |
finance.installments_scheduled | Bir vade planı yazıldı. | agreementId, count, totalAmount |
finance.payment_allocated | Bir tahsilat hedeflere dağıtıldı. | id, count |
finance.payment_method_changed | Bağlı bir ödeme uygulaması açıldı, kapatıldı, sırası değişti ya da test/canlı modu değişti. | provider, enabled |
finance.payment_provider_event | Bir ödeme sağlayıcısı bir yetkilendirme, tahsilat ya da serbest bırakma isteğine yanıt verdi. | id, provider, type, amount |
finance.payment_recorded | Bir ödeme kaydedildi. | id, installmentId, agreementId, amount, currency, customerId, customerName, amountText |
finance.payment_refunded | Bir ödeme iade edildi. | id, amount, currency |
finance.refund_approved | Bir iade isteği onaylandı ve uygulandı. | id, paymentId, amount, currency |
finance.refund_rejected | Bir iade isteği reddedildi. | id, paymentId, amount |
finance.refund_requested | Bir iade istendi ve onay bekliyor. | id, paymentId, amount, currency |