Billing talep yaratır; recognition kazanılmış geliri ölçer
Bill veya invoice, commercial terms altında müşteriden istenen tutarı temsil eder. Recognition ise promised goods/services'in transferi ve reporting period içinde tanınması gereken consideration ile ilgilidir. Bu event'ler farklı zamanlarda ve farklı oranlarda gerçekleşebilir.
Annual prepaid subscription, implementation fee, usage charge, credit ve contract modification bu ayrımı görünür kılar. Cash revenue'dan önce gelebilir; revenue invoice'dan önce kazanılabilir; tek invoice birden fazla performance obligation'a bağlı olabilir.
Ayrı domain'ler daha temiz kontrol sağlar
Billing engine pricing, metering, proration, tax ve collection state'e ihtiyaç duyar. Recognition engine contract allocation, performance obligations, schedules, adjustments ve accounting evidence ister. Source data paylaşılabilir ama bütün state ve rule'ları birleştirmek operational change ile financial reporting'i gereksiz bağlar.
Boundary açık olmalı
Temiz mimari hangi commercial event'in recognition input'u olduğunu, amendment'ların nasıl versionlandığını ve recognized amount'un contract, invoice, usage ve adjustment'a nasıl trace edileceğini tanımlar. Amaç iki izole sistem değil; durable evidence ile bağlı iki accountable domain'dir.
Product architecture'ı accounting advice ile karıştırma
Kesin muhasebe uygulaması geçerli standarda, sözleşme gerçeklerine ve professional judgment'a bağlıdır. Infrastructure bu karar için gereken data ve controls'ü korumalı; invoice date equals revenue date gibi basit varsayımları hard-code etmemelidir.
Commercial event ile accounting event arasında traceability koruyun
Separation disconnected system kurmak anlamına gelmez. Billing domain invoice issued, usage rated, credit applied, contract changed ve payment collected gibi durable commercial event'ler üretmeli; bu event'lerde recognition domain'in accounting treatment'ı underlying commercial evidence'a bağlayabileceği identifier'lar bulunmalıdır. Recognition domain kendi schedule ve adjustment'larını tutarken billing'i general ledger gibi davranmaya zorlamaz.
Traceability özellikle contract değiştiğinde önemlidir. Upgrade, downgrade, cancellation, credit ve amendment future invoice'ları değiştirebilir ve accounting treatment'ı da etkileyebilir. İki domain yalnız current snapshot paylaşıyorsa finance recognized amount'un neden değiştiğini açıklamak için gereken history'yi kaybeder. Versioned event'ler karar sırasını korur.
Pricing release'lerini financial close'a bağlamayın
Billing system'leri product team yeni plan, discount, packaging ve usage model çıkardığı için sık değişir. Revenue recognition farklı change discipline altında çalışır; accounting logic financial reporting ve audit'i etkiler. Tek combined engine bu release cadence'lerini birbirine bağlar: product change accounting-risk change'e dönüşür, accounting control ordinary commercial iteration'ı yavaşlatabilir.
Daha temiz boundary, validated contract ve transaction evidence paylaşırken her domain'in uygun governance ile evrilmesini sağlar. Product team pricing behavior'ı recognition schedule'ı yeniden yazmadan genişletebilir; finance accounting policy veya classification'ı müşterinin nasıl bill edildiğini değiştirmeden güncelleyebilir.
Domain'ler arası reconciliation tasarlayın
Billing ve recognition ayrı olduğunda architecture explicit reconciliation gerektirir. Finance contracted consideration, billed amount, collected cash, deferred balance ve recognized revenue arasındaki ilişkiyi açıklayabilmelidir. Farklar her zaman error değildir; ancak beklenen ve açıklanabilir olmalıdır.
Bu reconciliation business'a göre contract, invoice line, service period veya performance obligation etrafında organize edilebilir. Temel prensip boundary'nin black box değil evidence üretmesidir. Separation controllability'yi iyileştirmeli, uncertainty'yi bir sistemden diğerine taşımamalıdır.
Accounting standard'larını code template değil requirement olarak kullanın
IFRS 15 gibi standard'lar customer contract'larından revenue için prensipler sunar, ancak implementation contract facts ve accounting judgment'a bağlıdır. Product architecture, invoice'dan universal formula ile treatment çıkarmaya çalışmak yerine configurable schedule, allocation input, modification ve audit evidence sağlamalıdır.
Bu yaklaşım ürünün farkında olmadan accounting advice üretmesini de engeller. Infrastructure professional judgment'ı operational olarak uygulanabilir ve auditable hale getirmelidir; judgment'ın kendisinin yerine geçmemelidir.
Billing ve recognition farklı business sorularına cevap verir.
Cash, invoice ve revenue timing ciddi biçimde ayrışabilir.
Domain ayrımı pricing operations ile financial reporting coupling'ini azaltır.
Recognition sistemi contract ve operational evidence'a traceability korumalıdır.
