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

KaynakTabloListeleme ve okumaPOSTPATCHDELETE
agreement_linesagreement_line/api/v1/agreement_lines
agreementsagreement/api/v1/agreementsfinance.create_agreementfinance.update_agreement
commission_payoutscommission_payout/api/v1/commission_payouts
commissionscommission/api/v1/commissions
discount_linesdiscount_line/api/v1/discount_lines
expense_categoriesexpense_category/api/v1/expense_categoriesfinance.save_expense_category
expensesexpense/api/v1/expensesfinance.create_expensefinance.update_expense
finance_provider_eventsfinance_provider_event/api/v1/finance_provider_events
installmentsinstallment/api/v1/installmentsfinance.update_installment
payment_allocationspayment_allocation/api/v1/payment_allocations
payment_eventspayment_event/api/v1/payment_events
payment_provider_configspayment_provider_config/api/v1/payment_provider_configs
paymentspayment/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

İşlemGereken izinNe yapar
finance.accrue_commissionfinance:writeKomisyon tahakkuk ettir
finance.allocate_paymentfinance:writeTahsilatı dağıt
finance.apply_discountfinance:writeİndirim uygula
finance.approve_expensefinance:approveGideri onayla
finance.approve_refundfinance:approveİadeyi onayla
finance.cancel_agreementfinance:manageSözleşmeyi iptal et
finance.cancel_commissionfinance:manageKomisyonu iptal et
finance.cancel_installmentfinance:manageTaksiti iptal et
finance.cancel_paymentfinance:writeProvizyonu serbest bırak
finance.capture_paymentfinance:writeÖdemeyi tahsil et
finance.configure_payment_appfinance:manageÖdeme uygulamasını yapılandır
finance.create_agreementfinance:writeSözleşme aç
finance.create_expensefinance:writeGider kaydet
finance.deactivate_expense_categoryfinance:manageGider kategorisini kapat
finance.mark_expense_paidfinance:writeGideri ödendi işaretle
finance.open_draft_for_sourcefinance:writeKayıt için sözleşme taslağı hazırla
finance.pay_site_agreementfinance:writeBağlantıyla öde (site)
finance.pay_site_orderfinance:writeSiparişi öde (site)
finance.raise_installment_noticesfinance:writeTaksit hatırlatmalarını oluştur
finance.recalculate_commissionfinance:writeKomisyonu yeniden hesapla
finance.record_commission_payoutfinance:approveKomisyon ödemesini kaydet
finance.record_gift_card_paymentfinance:writeHediye kartı tahsilatını kaydet
finance.record_paymentfinance:writeTahsilat kaydet
finance.record_provider_webhookfinance:writeÖdeme bildirimini kaydet
finance.record_source_discountsfinance:writeMağaza indirimlerini kaydet
finance.refund_paymentfinance:manageTahsilatı iade et
finance.reject_expensefinance:approveGideri reddet
finance.reject_refundfinance:approveİadeyi reddet
finance.remove_discountfinance:manageİndirimi kaldır
finance.request_refundfinance:writeİade talep et
finance.request_refunds_for_sourcefinance:writeİptale yanıt ver
finance.return_gift_card_paymentfinance:writeHediye kartı tahsilatını geri al
finance.run_recurring_expensesfinance:writeTekrarlayan giderleri kaydet
finance.save_expense_categoryfinance:manageGider kategorisini kaydet
finance.schedule_installmentsfinance:writeTaksitlendir
finance.set_commission_statusfinance:manageKomisyon durumunu değiştir
finance.stop_recurring_expensefinance:writeTekrarı durdur
finance.take_paymentfinance:writeÖdeme al
finance.update_agreementfinance:writeSözleşmeyi düzenle
finance.update_expensefinance:writeGideri düzenle
finance.update_installmentfinance:writeTaksiti düzenle
finance.void_expensefinance:manageGideri 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

POSThttps://app.getera.io/api/v1/commissions/actions/accrue_commission
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.accrue_commission

Girdi

AlanTürZorunluAçıklama
agreementIduuidevetSözleşme · kimliği: agreement
ratenumberOran (%) · en az 0 · en çok 100
amountnumber (money)Tutar · en az 0

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
agreement_not_foundSözleşme bulunmalı.
commission_already_existsSözleşme başına tek komisyon.
agreement_has_no_affiliateSözleşme bir satış ortağı belirtmeli.
affiliate_not_activeSatış 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/payment_allocations/actions/allocate_payment
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.allocate_payment

Girdi

AlanTürZorunluAçıklama
paymentIduuidevetKoleksiyon · kimliği: payment
allocationsobject / arrayevetStok ayırmaları

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
payment_not_foundTahsilat bulunmalı.
no_allocationsEn az bir dağıtım gerekli.
unknown_allocation_targetHedef bilinen bir kayıt türünde olmalı.
invalid_allocation_amountHer dağıtım sıfırdan büyük olmalı.
duplicate_allocation_targetBir hedef bir dağıtım talebinde yalnızca bir kez yer alır.
allocation_exceeds_paymentDağıtımların toplamı tahsil edilenden fazla olamaz.
allocation_target_not_foundHedef bulunmalı ve kullanılabilir kalmalı.
allocation_currency_mismatchTahsilat ve hedef aynı para birimini kullanmalı.
allocation_customer_mismatchBir müşterinin tahsilatı başkasının bakiyesini kapatamaz.
allocation_exceeds_targetDağı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":{}}'
Yanıt
{
  "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":{}}'
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/agreements/{id}/actions/apply_discount
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.apply_discount

Girdi

AlanTürZorunluAçıklama
agreementIduuidevetDoldurulduğu yer: adresteki {id} · Sözleşme · kimliği: agreement
valueTypestring (enum)Tür · İzin verilen değerler: percentage, fixed
valuenumberevetDeğer
namestringEtiket · en çok 255
reasonstringevetNeden · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
agreement_not_foundSözleşme bulunmalı.
agreement_closedKapanmış bir sözleşmeye indirim yapılmaz.
discount_value_negativeİndirim negatif olamaz.
discount_percentage_over_100Yü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_requiredElle 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/expenses/{id}/actions/approve_expense
API anahtarı ya da OAuth token · finance:approve
  • Asıl adres: POST /api/v1/actions/finance.approve_expense

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Gider · kimliği: expense

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
expense_not_foundGider bulunmalı.
expense_already_decidedGider hâlâ beklemede olmalı.
cannot_approve_own_expenseKimse 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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/payment_events/{id}/actions/approve_refund
API anahtarı ya da OAuth token · finance:approve
  • Asıl adres: POST /api/v1/actions/finance.approve_refund

Girdi

AlanTürZorunluAçıklama
requestIduuidevetDoldurulduğu yer: adresteki {id} · Talep · kimliği: payment_event

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
refund_request_not_foundTalep bulunmalı.
refund_request_resolvedBir talep bir kez onaylanır veya reddedilir.
refund_not_availableSağ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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/agreements/{id}/actions/cancel_agreement
API anahtarı ya da OAuth token · finance:manage
  • Asıl adres: POST /api/v1/actions/finance.cancel_agreement

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Sözleşme · kimliği: agreement
reasonstringNeden · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
agreement_not_foundSözleşme bulunmalı.
already_cancelledBir 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/commissions/{id}/actions/cancel_commission
API anahtarı ya da OAuth token · finance:manage
  • Asıl adres: POST /api/v1/actions/finance.cancel_commission

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Komisyon · kimliği: commission

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
commission_not_foundKomisyon 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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/installments/{id}/actions/cancel_installment
API anahtarı ya da OAuth token · finance:manage
  • Asıl adres: POST /api/v1/actions/finance.cancel_installment

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Taksit · kimliği: installment

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
installment_not_foundTaksit bulunmalı.
installment_has_collectionKarşı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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/payments/{id}/actions/cancel_payment
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.cancel_payment

Girdi

AlanTürZorunluAçıklama
paymentIduuidevetDoldurulduğu yer: adresteki {id} · Ödeme · kimliği: payment
outcomestring (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:

KodNe zaman reddedilir
payment_not_foundÖdeme bulunmalı.
cancel_not_availableSağ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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/payments/{id}/actions/capture_payment
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.capture_payment

Girdi

AlanTürZorunluAçıklama
paymentIduuidevetDoldurulduğu yer: adresteki {id} · Ödeme · kimliği: payment
amountnumber (money)Tutar
outcomestring (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:

KodNe zaman reddedilir
payment_not_foundÖdeme bulunmalı.
charge_not_availableSağlayıcı hâlâ tahsile izin vermeli.
capture_exceeds_authorizedTahsil, 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}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/payment_provider_configs/actions/configure_payment_app
API anahtarı ya da OAuth token · finance:manage
  • Asıl adres: POST /api/v1/actions/finance.configure_payment_app

Girdi

AlanTürZorunluAçıklama
providerstringevetSağlayıcı · en çok 40
credentialIduuidevetBağlı uygulama · kimliği: credential
enabledbooleanEtkin
testModebooleanTest modu
positionnumberSipariş · en az 0
displayNamestringÖdeme ekranı etiketi · en çok 120

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
unsupported_payment_appYalnızca desteklenen bir çevrim içi ödeme uygulaması ayarlanabilir.
payment_credential_mismatchBağlı uygulama seçilen sağlayıcıya ait olmalı.
payment_app_unavailableBağ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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/agreements/actions/create_agreement
API anahtarı ya da OAuth token · finance:write
  • REST kısayolu: POST /api/v1/agreements
  • Asıl adres: POST /api/v1/actions/finance.create_agreement

Girdi

AlanTürZorunluAçıklama
customerIduuidevetKişi · kimliği: customer
kindstring (enum)Tür · İzin verilen değerler: contract, order, booking, subscription_term
descriptionstringNe için · en çok 4000
notestringİç not · en çok 4000
currencystringPara birimi · Çalışma alanı varsayılanından önceden doldurulur. Hiçbir zaman sıfırdan yazılmaz. · en çok 3
totalAmountnumber (money)Ara toplam · en az 0
taxTotalAmountnumber (money)Vergi · en az 0
linesobject / arrayKalemler
sourceModulestringKaynak · en çok 40
sourceRecordIduuidKaynak kayıt
affiliateIduuidYönlendiren · kimliği: affiliate

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
customer_not_foundKişi zaten müşteri olarak kayıtlı olmalı.
customer_archivedArşivlenmiş bir kişiyle sözleşme yapılamaz.
invalid_currencyPara birimi bir ISO-4217 kodu olmalı.
affiliate_not_activeYönlendiren satış ortağı aktif olmalı.
agreement_total_not_positiveSö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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/expenses/actions/create_expense
API anahtarı ya da OAuth token · finance:write
  • REST kısayolu: POST /api/v1/expenses
  • Asıl adres: POST /api/v1/actions/finance.create_expense

Girdi

AlanTürZorunluAçıklama
categoryIduuidevetKategori · kimliği: expense_category
titlestringevetNeydi · en çok 255
descriptionstringAçıklama · en çok 4000
amountnumber (money)evetTutar
currencystringPara birimi · en çok 3
expenseDatedateevetTarih
methodstring (enum)Ödeyen · İzin verilen değerler: transfer, card, cash, other
vendorNamestringTedarikçi · en çok 255
vendorContactstringTedarikçi iletişim · en çok 255
receiptFileIduuidMakbuz · kimliği: file
isRecurringbooleanTekrarlayan
recurringPeriodstring (enum)Her · İzin verilen değerler: weekly, monthly, quarterly, yearly
nextOccurrencedateSonraki vade
recurringUntildateŞu tarihe kadar tekrarla

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
expense_category_not_availableKategori bulunmalı ve aktif olmalı.
invalid_currencyPara birimi bir ISO-4217 kodu olmalı.
expense_amount_negativeGider negatif olamaz.
expense_amount_over_capÇalışma alanının gider limiti geçerlidir.
expense_date_in_futureGider tarihi gelecekte olamaz.
expense_recurring_period_requiredTekrarlayan 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/expense_categories/{id}/actions/deactivate_expense_category
API anahtarı ya da OAuth token · finance:manage
  • Asıl adres: POST /api/v1/actions/finance.deactivate_expense_category

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kategori · kimliği: expense_category

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
expense_category_not_foundKategori 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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/expenses/{id}/actions/mark_expense_paid
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.mark_expense_paid

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Gider · kimliği: expense
paymentDatedateÖdeme tarihi

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
expense_not_foundGider bulunmalı.
expense_not_approvedBir gider ödenmeden önce onaylanır.
expense_paid_without_dateGideri ö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"}'
Yanıt
{
  "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"
tools/call
{
  "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

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/agreements/actions/open_draft_for_source
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.open_draft_for_source

Girdi

AlanTürZorunluAçıklama
sourceModulestringevetKaynak · en çok 40
sourceRecordIduuidevetKaynak kayıt
customerIduuidevetKişi · kimliği: customer
kindstring (enum)Tür · İzin verilen değerler: contract, order, booking, subscription_term
totalAmountnumber (money)Toplam · en az 0
currencystringPara birimi · en çok 3
descriptionstringNe için · en çok 4000
activatebooleanAktif olarak aç
linesobject / arraySatılan
taxTotalAmountnumber (money)Üstüne eklenen vergi · en az 0
discountsobject / arrayKaynakta uygulanan indirimler
affiliateIduuidSatış ortağı aracılığıyla geldi · kimliği: affiliate
giftCardPaymentsobject / arrayHediye kartlarıyla ödenen

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
agreement_exists_for_sourceKaynak kayıt başına tek açık sözleşme.
customer_not_foundKişi bulunmalı.
customer_archivedArşivlenmiş bir kişi hiçbir şey üstlenmez.
invalid_currencyPara birimi bir ISO-4217 kodu olmalı.
payment_amount_not_positiveHediye kartı tahsilatı sıfırdan büyüktür.
allocation_exceeds_targetHediye 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)

Bir web sitesi işlemi: siteniz bunu site API’si üzerinden çağırır (/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).
POSThttps://app.getera.io/api/v1/installments/actions/pay_site_agreement
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.pay_site_agreement

Girdi

AlanTürZorunluAçıklama
tokenuuidevetÖdeme bağlantısı
providerstringÖdeme yöntemi · Ödemedeki hediye kartı tutarın tamamını karşılıyorsa gerekmez. · en çok 40
returnUrlstringDönüş URL’si · en çok 2000
cancelUrlstringİptal URL’si · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
pay_link_invalidBu ö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_dueBu 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)

Bir web sitesi işlemi: siteniz bunu site API’si üzerinden çağırır (/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).
POSThttps://app.getera.io/api/v1/installments/actions/pay_site_order
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.pay_site_order

Girdi

AlanTürZorunluAçıklama
tokenuuidevetSepet
providerstringÖdeme yöntemi · Ödemedeki hediye kartı tutarın tamamını karşılıyorsa gerekmez. · en çok 40
returnUrlstringDönüş URL’si · en çok 2000
cancelUrlstringİptal URL’si · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
order_not_foundBu 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_readyBu 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

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/installments/actions/raise_installment_notices
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.raise_installment_notices

Girdi

AlanTürZorunluAçıklama
asOfdateGeç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

POSThttps://app.getera.io/api/v1/commissions/actions/recalculate_commission
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.recalculate_commission

Girdi

AlanTürZorunluAçıklama
agreementIduuidSözleşme · kimliği: agreement
paymentIduuidKoleksiyon · kimliği: payment

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
commission_not_foundYeniden 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/commission_payouts/actions/record_commission_payout
API anahtarı ya da OAuth token · finance:approve
  • Asıl adres: POST /api/v1/actions/finance.record_commission_payout

Girdi

AlanTürZorunluAçıklama
affiliateIduuidevetSatış ortağı · kimliği: affiliate
commissionIdsobject / arrayevetKomisyonlar
paidOndateÖdeme tarihi
methodstring (enum)Yöntem · İzin verilen değerler: transfer, cash, card, other
referencestringHavale açıklaması · en çok 255
notestringNot · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
no_commissions_selectedBir ödeme en az bir komisyonu kapatır.
affiliate_not_foundSatış ortağı bulunmalı.
commission_not_payableHer 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":{}}'
Yanıt
{
  "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":{}}'
tools/call
{
  "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

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/payments/actions/record_gift_card_payment
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.record_gift_card_payment

Girdi

AlanTürZorunluAçıklama
sourceModulestringevetKaynak · en çok 40
sourceRecordIduuidevetKaynak kayıt
giftCardIduuidevetHediye kartı
giftCardEventIduuidevetKullanım
amountnumber (money)evetTutar
currencystringevetPara birimi · en çok 3
codeTailstringKodun son karakterleri · en çok 8

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
no_agreement_for_sourceSatış zaten finansta olmalı.
allocation_currency_mismatchKart yalnızca sözleşmenin para biriminde öder.
payment_amount_not_positiveTahsilat sıfırdan büyüktür.
allocation_exceeds_targetKart, 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

POSThttps://app.getera.io/api/v1/installments/{id}/actions/record_payment
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.record_payment

Girdi

AlanTürZorunluAçıklama
installmentIduuidevetDoldurulduğu yer: adresteki {id} · Taksit · kimliği: installment
amountnumber (money)evetTutar
methodstring (enum)Yöntem · İzin verilen değerler: transfer, card, cash, other
methodNamestringYöntem ayrıntısı · en çok 255
referencestringSağlayıcı referansı · en çok 512
idempotencyKeystringTekrar ö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
occurredAtdate-timeGerçekleştiği zaman
notestringNot · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
installment_not_foundTaksit bulunmalı.
installment_cancelledİptal edilmiş bir taksite tahsilat yapılmaz.
payment_amount_not_positiveTahsilat sıfırdan büyüktür.
duplicate_payment_idempotency_keyAynı tahsilat asla iki kez kaydedilmez.
overpaymentDağı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}'
Yanıt
{
  "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
tools/call
{
  "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)

POSThttps://app.getera.io/api/v1/payments/{id}/actions/record_provider_webhook
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.record_provider_webhook

Girdi

AlanTürZorunluAçıklama
providerstringevetSağlayıcı · en çok 40
externalIdstringevetSağlayıcı olayı · en çok 512
paymentIduuidDoldurulduğu yer: adresteki {id} · Ödeme · kimliği: payment
pspReferencestringSağlayıcı referansı · en çok 512
typestringevetOlay türü · en çok 80
amountnumber (money)evetTutar · en az 0
currencystringevetPara birimi · en çok 3
messagestringMesaj · en çok 2000
occurredAtdate-timeevetGerçekleşme zamanı
payloadDigeststringevetVeri özeti · en çok 128

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
unknown_payment_providerBu sağlayıcı tanınmıyor.
webhook_payment_not_foundBildirimdeki ödeme bu çalışma alanında bulunamadı.
webhook_provider_mismatchBildirimin 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/discount_lines/actions/record_source_discounts
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.record_source_discounts

Girdi

AlanTürZorunluAçıklama
sourceModulestringevetKaynak · en çok 40
sourceRecordIduuidevetKaynak kayıt
discountsobject / arrayİndirimler

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
no_agreement_for_sourceSipariş 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

POSThttps://app.getera.io/api/v1/payments/{id}/actions/refund_payment
API anahtarı ya da OAuth token · finance:manage
  • Asıl adres: POST /api/v1/actions/finance.refund_payment

Girdi

AlanTürZorunluAçıklama
paymentIduuidevetDoldurulduğu yer: adresteki {id} · Koleksiyon · kimliği: payment
amountnumber (money)evetTutar
reasonstringevetNeden · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
payment_not_foundTahsilat bulunmalı.
refund_not_availableSağ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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/expenses/{id}/actions/reject_expense
API anahtarı ya da OAuth token · finance:approve
  • Asıl adres: POST /api/v1/actions/finance.reject_expense

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Gider · kimliği: expense
reasonstringevetNeden · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
expense_not_foundGider bulunmalı.
expense_already_decidedGider hâlâ beklemede olmalı.
expense_rejection_reason_requiredRet 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/payment_events/{id}/actions/reject_refund
API anahtarı ya da OAuth token · finance:approve
  • Asıl adres: POST /api/v1/actions/finance.reject_refund

Girdi

AlanTürZorunluAçıklama
requestIduuidevetDoldurulduğu yer: adresteki {id} · Talep · kimliği: payment_event
reasonstringevetNeden · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
refund_request_not_foundTalep bulunmalı.
refund_request_resolvedBir 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/discount_lines/{id}/actions/remove_discount
API anahtarı ya da OAuth token · finance:manage
  • Asıl adres: POST /api/v1/actions/finance.remove_discount

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · İndirim · kimliği: discount_line

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
discount_not_foundİndirim bulunmalı.
agreement_not_foundİndirimin sözleşmesi bulunmalı.
agreement_closedKapanmış 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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/payments/{id}/actions/request_refund
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.request_refund

Girdi

AlanTürZorunluAçıklama
paymentIduuidevetDoldurulduğu yer: adresteki {id} · Koleksiyon · kimliği: payment
amountnumber (money)evetTutar
reasonstringevetNeden · en çok 2000
idempotencyKeystringTekrar önleme anahtarı · en çok 512

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
payment_not_foundTahsilat bulunmalı.
refund_not_availableSağ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"}'
Yanıt
{
  "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"
tools/call
{
  "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

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/payment_events/actions/request_refunds_for_source
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.request_refunds_for_source

Girdi

AlanTürZorunluAçıklama
sourceModulestringevetKaynak · en çok 40
sourceRecordIduuidevetKaynak kayıt
reasonstringNeden · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
no_agreement_for_sourceFinansta 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

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/payment_events/actions/return_gift_card_payment
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.return_gift_card_payment

Girdi

AlanTürZorunluAçıklama
sourceModulestringevetKaynak · en çok 40
sourceRecordIduuidevetKaynak kayıt
giftCardIduuidevetHediye kartı
amountnumber (money)evetTutar
idempotencyKeystringTekrar önleme anahtarı · en çok 512

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
no_agreement_for_sourceSatış finansta olmalı.
gift_card_payment_not_foundBu kart bu satışa ödeme yapmış olmalı.
refund_exceeds_chargedKartı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

POSThttps://app.getera.io/api/v1/expenses/actions/run_recurring_expenses
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.run_recurring_expenses

Girdi

AlanTürZorunluAçıklama
asOfdateGeç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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/expense_categories/{id}/actions/save_expense_category
API anahtarı ya da OAuth token · finance:manage
  • REST kısayolu: PATCH /api/v1/expense_categories/{id}
  • Asıl adres: POST /api/v1/actions/finance.save_expense_category

Girdi

AlanTürZorunluAçıklama
iduuidDoldurulduğu yer: adresteki {id} · Kategori · kimliği: expense_category
namestringevetAd · en çok 255
descriptionstringAçıklama · en çok 2000
colourstringRenk · en çok 7

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
expense_category_name_takenKategori adları çalışma alanında benzersizdir.
expense_category_not_foundDü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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/installments/actions/schedule_installments
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.schedule_installments

Girdi

AlanTürZorunluAçıklama
agreementIduuidevetSözleşme · kimliği: agreement
installmentsobject / arrayevetTaksitler

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
agreement_not_foundSözleşme bulunmalı.
agreement_closedKapanmış bir sözleşmenin vadesi yeniden planlanmaz.
no_installmentsPlan en az bir taksit gerektirir.
invalid_installmentsHer taksidin bir vade tarihi ve tutarı olmalı.
duplicate_installment_due_dateİki taksit aynı güne düşemez.
installments_do_not_sum_to_totalTaksitlerin 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":{}}'
Yanıt
{
  "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":{}}'
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/commissions/{id}/actions/set_commission_status
API anahtarı ya da OAuth token · finance:manage
  • Asıl adres: POST /api/v1/actions/finance.set_commission_status

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Komisyon · kimliği: commission
statusstring (enum)evetDurum · İzin verilen değerler: completed, cancelled
paidAtdateÖdeme tarihi

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
commission_not_foundKomisyon bulunmalı.
commission_cancelled_is_finalİptal edilmiş bir komisyon yeniden açılmaz.
invalid_commission_transitionGeç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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/expenses/{id}/actions/stop_recurring_expense
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.stop_recurring_expense

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Gider · kimliği: expense

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
expense_not_foundGider bulunmalı.
expense_not_recurringYalnı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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/installments/{id}/actions/take_payment
API anahtarı ya da OAuth token · finance:write
  • Asıl adres: POST /api/v1/actions/finance.take_payment

Girdi

AlanTürZorunluAçıklama
installmentIduuidevetDoldurulduğu yer: adresteki {id} · Taksit · kimliği: installment
amountnumber (money)evetTutar
providerstringSağlayıcı · Şunlardan biri: manual, dummy, stripe, iyzico, paytr. · en çok 40
modestring (enum)Çalışma biçimi · İzin verilen değerler: charge, authorize
outcomestring (enum)Test sonucu · Bunu yalnızca dummy ödeme altyapısı okur. · İzin verilen değerler: success, failure, pending
methodstring (enum)Yöntem · İzin verilen değerler: card, transfer, cash, other
idempotencyKeystringTekrar önleme anahtarı · en çok 255
notestringNot · en çok 2000
returnUrlstringDönüş URL’si · en çok 2000
cancelUrlstringİptal URL’si · en çok 2000
customerEmailstringMüşteri e-postası · en çok 320

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
unknown_payment_providerSağlayıcı kurulu olmalı.
installment_not_foundTaksit 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_keyAynı 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}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/agreements/{id}/actions/update_agreement
API anahtarı ya da OAuth token · finance:write
  • REST kısayolu: PATCH /api/v1/agreements/{id}
  • Asıl adres: POST /api/v1/actions/finance.update_agreement

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Sözleşme · kimliği: agreement
statusstring (enum)Durum · İzin verilen değerler: draft, active, fulfilled
descriptionstringNe için · en çok 4000
notestringİç not · en çok 4000
totalAmountnumber (money)Ara toplam · en az 0
taxTotalAmountnumber (money)Vergi · en az 0

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
agreement_not_foundSözleşme bulunmalı.
agreement_closedTamamlanmış veya iptal edilmiş bir sözleşme düzenlenmez.
agreement_has_scheduleToplam, 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/expenses/{id}/actions/update_expense
API anahtarı ya da OAuth token · finance:write
  • REST kısayolu: PATCH /api/v1/expenses/{id}
  • Asıl adres: POST /api/v1/actions/finance.update_expense

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Gider · kimliği: expense
titlestringNeydi · en çok 255
descriptionstringAçıklama · en çok 4000
amountnumber (money)Tutar · en az 0
vendorNamestringTedarikçi · en çok 255
vendorContactstringTedarikçi iletişim · en çok 255
receiptFileIduuidMakbuz · kimliği: file
categoryIduuidKategori · kimliği: expense_category
expenseDatedateTarih
methodstring (enum)Ödeyen · İzin verilen değerler: transfer, card, cash, other

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
expense_not_foundGider bulunmalı.
expense_already_decidedOnaylanmış bir gider düzenlenmez.
expense_category_not_availableYeni 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/installments/{id}/actions/update_installment
API anahtarı ya da OAuth token · finance:write
  • REST kısayolu: PATCH /api/v1/installments/{id}
  • Asıl adres: POST /api/v1/actions/finance.update_installment

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Taksit · kimliği: installment
dueDatedateVade tarihi
amountnumber (money)Tutar · en az 0
notestringNot · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
installment_not_foundTaksit bulunmalı.
installment_cancelledİptal edilmiş bir taksit düzenlenmez.
installment_below_collectedBir 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/expenses/{id}/actions/void_expense
API anahtarı ya da OAuth token · finance:manage
  • Asıl adres: POST /api/v1/actions/finance.void_expense

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Gider · kimliği: expense
reasonstringevetNeden · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
expense_not_foundGider 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"}'
Yanıt
{
  "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"
tools/call
{
  "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_lines
  • GET /api/v1/agreement_lines/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
agreement_idstring (uuid) · uuidagreement
item_modulestring · textevet
item_record_idstring (uuid) · uuidevet
namestring · text
quantitystring (decimal) · numeric
currencystring · bpcharen çok 3
unit_amountstring (int64) · int8
total_amountstring (int64) · int8
display_orderinteger · int4
created_atstring (date-time) · timestamptz
tax_snapshotboolean · bool
tax_class_idstring (uuid) · uuidevet
tax_class_namestring · textevet
tax_ratestring (decimal) · numeric
prices_entered_with_taxboolean · bool
discount_amountstring (int64) · int8
net_amountstring (int64) · int8evet
tax_amountstring (int64) · int8evet
gross_amountstring (int64) · int8evet

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

SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
kindstring · textcontract, order, booking, subscription_term
statusstring · textdraft, active, fulfilled, cancelled
customer_idstring (uuid) · uuidcustomer
source_modulestring · textevet
source_record_idstring (uuid) · uuidevet
affiliate_idstring (uuid) · uuidevetaffiliate
currencystring · bpcharen çok 3
subtotal_amountstring (int64) · int8
discount_total_amountstring (int64) · int8
tax_total_amountstring (int64) · int8
total_amountstring (int64) · int8
notestring · textevet
descriptionstring · textevet
created_by_user_idstring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
cancelled_atstring (date-time) · timestamptzevet

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_payouts
  • GET /api/v1/commission_payouts/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
affiliate_idstring (uuid) · uuidaffiliate
currencystring · bpcharen çok 3
amountstring (int64) · int8
commission_countinteger · int4
paid_onstring (date) · date
methodstring · texttransfer, cash, card, other
referencestring · textevet
notestring · textevet
created_by_user_idstring (uuid) · uuidevetapp_user
created_atstring (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/commissions
  • GET /api/v1/commissions/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
agreement_idstring (uuid) · uuidagreement
affiliate_idstring (uuid) · uuidaffiliate
currencystring · bpcharen çok 3
amountstring (int64) · int8
ratestring (decimal) · numeric
statusstring · textpending, completed, cancelled
paid_atstring (date) · dateevet
notesstring · textevet
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
payout_idstring (uuid) · uuidevetcommission_payout
is_manualboolean · bool
recalculated_atstring (date-time) · timestamptzevet

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_lines
  • GET /api/v1/discount_lines/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
target_typestring · textagreement, agreement_line, checkout, checkout_line, invoice
target_idstring (uuid) · uuid
typestring · textmanual, promotion, voucher, shipping, order_promotion
value_typestring · textpercentage, fixed
valuestring (decimal) · numeric
currencystring · bpcharen çok 3
amountstring (int64) · int8
namestring · textevet
reasonstring · textevet
applied_bystring (uuid) · uuidevetapp_user
promotion_rule_idstring (uuid) · uuidevet
voucher_idstring (uuid) · uuidevet
voucher_codestring · textevet
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
fixed_amountstring (int64) · int8evet

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

SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
namestring · text
descriptionstring · textevet
colourstring · text
is_activeboolean · bool
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Expense

Tablo expense · Kaynak expenses

SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
category_idstring (uuid) · uuidexpense_category
titlestring · text
descriptionstring · textevet
currencystring · bpcharen çok 3
amountstring (int64) · int8
expense_datestring (date) · date
payment_datestring (date) · dateevet
methodstring · textcard, transfer, cash, other
vendor_namestring · textevet
vendor_contactstring · textevet
receipt_file_idstring (uuid) · uuidevetfile
is_recurringboolean · bool
recurring_periodstring · textevet
next_occurrencestring (date) · dateevet
approval_statusstring · textpending, approved, rejected
approved_by_user_idstring (uuid) · uuidevetapp_user
approved_atstring (date-time) · timestamptzevet
rejection_reasonstring · textevet
created_by_user_idstring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
recurring_untilstring (date) · dateevet
recurring_parent_idstring (uuid) · uuidevetexpense

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_events
  • GET /api/v1/finance_provider_events/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
providerstring · textstripe, iyzico, paytr
external_idstring · text
payment_idstring (uuid) · uuidevetpayment
event_typestring · text
amountstring (int64) · int8
currencystring · bpcharen çok 3
psp_referencestring · textevet
payload_digeststring · text
occurred_atstring (date-time) · timestamptz
processed_atstring (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

SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
agreement_idstring (uuid) · uuidagreement
sequenceinteger · int4
due_datestring (date) · date
currencystring · bpcharen çok 3
amountstring (int64) · int8
statusstring · textpending, paid, cancelled
notestring · textevet
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
due_notice_atstring (date-time) · timestamptzevet
overdue_notice_atstring (date-time) · timestamptzevet

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_allocations
  • GET /api/v1/payment_allocations/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
payment_idstring (uuid) · uuidpayment
target_typestring · textinstallment, agreement, invoice
target_idstring (uuid) · uuid
currencystring · bpcharen çok 3
amountstring (int64) · int8
created_atstring (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_events
  • GET /api/v1/payment_events/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
payment_idstring (uuid) · uuidpayment
typestring · textauthorization_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
currencystring · bpcharen çok 3
amountstring (int64) · int8
include_in_calculationsboolean · bool
psp_referencestring · textevet
idempotency_keystring · textevet
messagestring · textevet
external_urlstring · textevet
app_idstring (uuid) · uuidevet
app_identifierstring · textevet
actor_user_idstring (uuid) · uuidevetapp_user
occurred_atstring (date-time) · timestamptz
created_atstring (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_configs
  • GET /api/v1/payment_provider_configs/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
providerstring · textstripe, iyzico, paytr
enabledboolean · bool
test_modeboolean · bool
positioninteger · int4
display_namestring · textevet
created_atstring (date-time) · timestamptz
updated_atstring (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/payments
  • GET /api/v1/payments/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
customer_idstring (uuid) · uuidevetcustomer
namestring · textevet
messagestring · textevet
psp_referencestring · textevet
idempotency_keystring · textevet
app_idstring (uuid) · uuidevet
app_identifierstring · textevet
external_urlstring · textevet
available_actionsstring[] · text[]
last_refund_successboolean · bool
currencystring · bpcharen çok 3
authorized_amountstring (int64) · int8
charged_amountstring (int64) · int8
refunded_amountstring (int64) · int8
canceled_amountstring (int64) · int8
authorize_pending_amountstring (int64) · int8
charge_pending_amountstring (int64) · int8
refund_pending_amountstring (int64) · int8
cancel_pending_amountstring (int64) · int8
methodstring · textcard, transfer, cash, gift_card, other
method_namestring · textevet
cc_first_digitsstring · textevet
cc_last_digitsstring · textevet
cc_brandstring · textevet
cc_exp_monthinteger · int2evet
cc_exp_yearinteger · int2evet
gift_card_last_charsstring · textevet
gift_card_brandstring · textevet
actor_user_idstring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
pending_installment_idstring (uuid) · uuidevetinstallment
gift_card_idstring (uuid) · uuidevet
gift_card_event_idstring (uuid) · uuidevet
checkout_urlstring · textevet
provider_statusstring · textevet
provider_expires_atstring (date-time) · timestamptzevet

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.

OlayNe olurTaşıdığı alanlar
finance.agreement_cancelledBir sözleşme iptal edildi.id, customerId
finance.agreement_createdBir sözleşme açıldı.id, customerId, affiliateId, currency, totalAmount, kind, sourceModule, sourceRecordId
finance.agreement_updatedBir sözleşme değişti.id
finance.commission_accruedBir satış ortağı için komisyon tahakkuk etti.id, agreementId, affiliateId, amount, currency
finance.commission_cancelledBir komisyon iptal edildi.id
finance.commission_payout_recordedBir iş ortağına yapılan havale bir grup komisyonu ödedi.id, affiliateId, amount, currency, count
finance.commission_recalculatedBekleyen bir komisyon tahsil edilene göre değişti (K-09).id, agreementId, from, to
finance.commission_status_changedBir komisyonun durumu değişti.id, from, to
finance.discount_appliedBir sözleşmeye indirim uygulandı.id, agreementId, amount, currency
finance.discount_removedBir indirim kaldırıldı.id, agreementId
finance.expense_approvedBir gider onaylandı.id
finance.expense_category_changedGider sözlüğü değişti.id
finance.expense_createdBir gider kaydedildi.id, amount, currency
finance.expense_paidBir gider ödendi.id
finance.expense_rejectedBir gider reddedildi.id
finance.expense_updatedBir gider düzeltildi.id
finance.expense_voidedÖdenmemiş bir gider geri çekildi.id
finance.installment_cancelledBir taksit plandan çıkarıldı.id, agreementId
finance.installment_dueBir 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_overdueBir 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_updatedBir taksit taşındı ya da değişti.id, agreementId
finance.installments_scheduledBir vade planı yazıldı.agreementId, count, totalAmount
finance.payment_allocatedBir tahsilat hedeflere dağıtıldı.id, count
finance.payment_method_changedBağ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_eventBir ödeme sağlayıcısı bir yetkilendirme, tahsilat ya da serbest bırakma isteğine yanıt verdi.id, provider, type, amount
finance.payment_recordedBir ödeme kaydedildi.id, installmentId, agreementId, amount, currency, customerId, customerName, amountText
finance.payment_refundedBir ödeme iade edildi.id, amount, currency
finance.refund_approvedBir iade isteği onaylandı ve uygulandı.id, paymentId, amount, currency
finance.refund_rejectedBir iade isteği reddedildi.id, paymentId, amount
finance.refund_requestedBir iade istendi ve onay bekliyor.id, paymentId, amount, currency
Bu sayfa yardımcı oldu mu?