Bir kart ödemesi, siparişi zaten belirten bir kart takas/mutabakat raporu aracılığıyla defterlerinize ulaşır. Bir USDC transferi ise size yalnızca bir adres, bir tutar ve bir işlem hash'i ile ulaşır; başka bir bilgi taşımaz. Kripto ödeme mutabakatı, fatura işletmenin referansını taşıdığında işe yarar, çünkü transfer bunu taşıyamaz.
Bu rehber, stablecoin kabul edip euro cinsinden tahsilat yapan satıcılar, PSP'ler ve EMI'lerdeki finans ve operasyon ekipleri içindir. Her fatura kaydının hangi alanlara ihtiyaç duyduğunu, kısmi ve yanlış coin ile yapılan ödemelerin nasıl ele alınacağını, webhook'ların ve API'nin defteri nasıl beslediğini ve tüm bunları ne kadar süre saklamanız gerektiğini belirleyen AB kurallarını açıklar.
Önemli anlar
Kısaca
- Bir ERC-20 transferi yalnızca gönderen, alıcı ve tutarı taşır. Sipariş referansı ödemede değil, faturada bulunmalıdır.
- Faturayı EUR cinsinden fiyatlandırın ve bu euro tutarını kaydedin. Kripto tutarı, denetim izi için sakladığınız türetilmiş bir sayıdır.
- İşin büyük kısmı istisnalarda yoğunlaşır: kısmi ödemeler, süresi dolmuş faturalar, yanlış coin. Bunları ay sonunda değil, her gün gözden geçirin.
- Webhook'u tetikleyici olarak kullanın, gerçek kaynak olarak faturayı kimliğiyle yeniden okuyun ve güvenlik ağı ile CSV dışa aktarımınızın kaynağı olarak fatura listesini her gece çekin.
Kripto ödeme mutabakatı neden kartlardan daha zor?#
Kripto ödeme mutabakatı daha zordur, çünkü bir blokzincir transferinin sipariş numaranız için bir alanı yoktur. Ethereum'da, ERC-20 token standardı (EIP-20) transfer olayını `Transfer(address _from, address _to, uint256 _value)` olarak tanımlar: kim gönderdi, kim aldı ve ne kadar. Not alanı, fatura numarası ya da müşteri adı yoktur.
Banka ve kart ödemeleri ters yönde kurgulanmıştır. Bir SEPA transferinde ödeyenin dolduracağı bir açıklama alanı vardır ve bir acquirer'ın kart takas/mutabakat raporu her kart işlemini satıcı referansınızla listeler. Muhasebe sisteminiz bu referansa göre eşleştirme yapar.
Stablecoin'lerde üç şey daha işi zorlaştırır:
- Tutar nadiren yuvarlaktır. USDC cinsinden fiyatlandırılan 250 EUR'luk bir fatura 279,2846 USDC gibi bir rakama dönüşür; bu nedenle benzer büyüklükteki iki fatura birbirine benzeyebilir.
- Ödeme hemen kesinleşmez. Ethereum her 12 saniyede bir blok üretir, ancak ethereum.org'a göre (sayfa Ekim 2026'da güncellendi) "bir Ethereum bloğunun kesinleşmesi yaklaşık 15 dakika sürer." Bir transfer görünür olabilir ve yine de sayılmayabilir.
- Ödeyenler hata yapar. Eksik gönderir, iki kez gönderir, farklı bir coin gönderir ya da fatura süresi dolduktan sonra öder.
Bu nedenle bağlantı, ödeme yapılmadan önce kurulmalıdır: her sipariş için bir fatura, siparişinizin kimliğini ve kendi ödeme adresini taşıyan bir fatura. Böylece gelen her transfer, neyin ödemesi olduğunu zaten bilen bir kayda düşer.
Her kripto fatura kaydında hangi alanlar bulunmalı?#
Her faturada dört şeyi birbirine bağlayan sabit bir alan seti bulunmalıdır: siparişiniz, euro fiyatı, zincir üstü transfer ve nihai durum. Bunlardan biri eksikse, birisi eşleştirmeyi elle yapmak zorunda kalır. Aşağıdaki tablo ItisPay fatura API'sinin alan adlarını kullanır; diğer sağlayıcılar aynı kavramlar için farklı adlar kullanabilir.
| Alan | İçeriği | Muhasebenin neden ihtiyaç duyduğu |
|---|---|---|
| invoice_id | Sağlayıcının atadığı benzersiz kimlik | Her arama ve her defter satırı için birincil anahtar |
| order_id | Siparişiniz veya sözleşme numaranız; sipariş başına benzersiz | ERP, mağaza veya CRM'nize bağlantı; kartlarda ek çaba gerektirmeden gelen referans |
| order_name | Siparişin kısa açıklaması | Bir kişinin mağazayı açmadan bir istisnayı kontrol etmesini sağlar |
| fiat_amount, fiat_currency | EUR cinsinden fiyat | Kaydettiğiniz gelir rakamı |
| currency, crypto_amount | Faturalandırılan coin ve ödenmesi gereken tutar | Ödeyenden ne göndermesinin istendiğini gösterir |
| actual_crypto_amount_paid | Gerçekte ne ulaştı | Eksik ve fazla ödemeyi tespit eder |
| currency_paid | Kullanılan coin, faturalandırılandan farklıysa | Yanlış coin ile yapılan ödemeleri inceleme için işaretler |
| network, address | Blokzincir ağı ve ödeme adresi | Paranın nereye gönderildiğini kanıtlar; her izleme veya iade için gereklidir |
| transactions (tx_hash, amount, status) | Gelen her transfer için bir satır | Bir fatura birden fazla transfer alabilir; her hash zincir üstü kanıtınızdır |
| status | new, pending, completed, expired, cancelled, paid_partial | Kaydedip kaydetmeyeceğinize, göndermeye, takip etmeye veya kapatmaya karar verir |
| created_at, updated_at, expires_at | Zaman damgaları | Ay sonu kesim tarihi ve siparişin ne zaman ödendiğinin kanıtı |
Bunların ikisi işin büyük kısmını yapar. `order_id`, bir blokzincir transferinin taşıyamayacağı referanstır; bu nedenle onu kendi sisteminizden ayarlayın ve her müşteri için değil, her sipariş için benzersiz tutun. `transactions` listesi önemlidir, çünkü bir fatura her zaman tek seferde ödenmez: her transfer kendi hash'i ve durumuyla kendi satırını alır, böylece ödenen tutarı hangi transferlerin oluşturduğunu görebilirsiniz.
Kripto tutarını tüm ondalıklarıyla ayrı bir sütunda saklayın. Genel defteriniz euro sentleriyle çalışır; kripto sütunları ise defter değeri değil, kanıttır.

Deftere hangi euro tutarı işlenmeli?#
Deftere faturadaki euro fiyatını işleyin. Fatura EUR cinsinden kesildiğinde sağlayıcı, güncel kur üzerinden bunu bir kripto para tutarına çevirir ve ödeyen bu tutarı gönderir. Ödeme hesabınıza euro olarak aktarılırsa, faturadaki euro tutarı gelirinizdir; kripto tutarı ise paranın nasıl geldiğine dair teknik bir ayrıntıdır.
Bu, EUR'ya dönüşümle kripto ödemelerini otomatik olarak kabul eden ekiplerin kripto muhasebesine neredeyse hiç ihtiyaç duymamasının başlıca nedenidir: ay sonunda değerlemesi gereken bir coin bilançoda bulunmaz.
Stablecoin'leri elinizde tutarsanız bu değişir. IFRS Yorumlama Komitesi Haziran 2019'da, kripto varlıkların işletmenin olağan faaliyetleri çerçevesinde satış amacıyla tutulması hâlinde IAS 2 (stoklar), aksi hâlde IAS 38 (maddi olmayan duran varlıklar) kapsamına girdiğine karar verdi. Kripto para tanımı, sahibi ile bir başka taraf arasında sözleşme yaratan varlıkları dışarıda bırakır. USDC farklıdır: Circle, USDC'nin “ABD doları karşılığında 1:1 itfa edilebilir” olduğunu belirtir ve Temmuz 2024'ten itibaren Circle, Fransız düzenleyici kurum ACPR'nin verdiği elektronik para lisansı kapsamında AB'de USDC ve EURC'yi e-para token'ları olarak ihraç etmektedir. Elinizdeki bir stablecoin'in nasıl sınıflandırılacağı denetçinize ait bir sorudur. Alındığı anda EUR'ya çevirmek bu soruyu gündemden çıkarır.
Kısmi ödemeler ve yanlış coin durumunda ne yapılır?#
`completed` olmayan her faturayı, sahibi ve son tarihi olan bir istisna olarak ele alın. Kripto ödeme mutabakatı çabasının büyük kısmı burada yoğunlaşır; tamamen ödenmiş bir fatura kendiliğinden eşleşir.
ItisPay durumlarını kullanarak, her durumun finans açısından ne anlama geldiğini şöyle özetleyebiliriz:
| Durum | Ne oldu | Finans ne yapar | Teslim mi, serbest bırakma mı? |
|---|---|---|---|
| new | Fatura açık, hiçbir şey alınmadı | Kaydedilecek bir şey yok | Hayır |
| pending | Bir transfer görüldü, henüz kesinleşmedi | Durumun değişmesini bekleyin | Hayır |
| completed | Tam olarak ödendi | Geliri EUR fiyatıyla kaydedin, siparişi serbest bırakın | Evet |
| paid_partial | Tutarın bir kısmı ulaştı | Kalanı isteyin, iade edin veya anlaşmayla kapatın | Duruma göre |
| expired | Tam ödeme yapılmadan süre doldu | Siparişi kapatın; geç gelen transferleri kontrol edin | Hayır |
| cancelled | Faturayı siz iptal ettiniz | Muhasebe kaydı yapılmaz; müşteri hâlâ ödemek isterse faturayı yeniden oluşturun | Hayır |
Kısmi ödemeler#
Kısmi bir ödeme genellikle ödeyenin cüzdanının veya borsasının tutardan ücret kesmesi ya da ödeyenin tutarı yanlış girmesi anlamına gelir. ItisPay her transferi ayrı kaydeder; bu nedenle ikinci bir transfer faturayı tamamlayabilir. Faturada ayrıca `allowed_error_percent` ayarı bulunur: fatura bazında belirlenen küçük bir tolerans payıdır; böylece küçük bir farkla eksik kalan bir ödeme yine de ödenmiş sayılır. Bunu bir kez politika olarak belirleyin; örneğin banka transferinde de silebileceğiniz bir düzeyde olsun ve vaka vaka değiştirmeyin.
Kalan tutar hiç gelmezse, sabit bir gün sayısı içinde karar verin: eksik tutarı kabul edip silin, gelen tutarı iade edin veya siparişi iptal edin. Ödenmiş bir siparişin arkasında neden daha az para olduğunu denetçinin görebilmesi için kararı fatura kaydına yazın.
Yanlış coin veya geç ödeme#
Ödeyen faturada yazılandan farklı bir stablecoin gönderdiğinde, `currency_paid` alanı bunu gösterir. Bunu otomatik olarak kaydetmeyin: tutarı ve euro değerini kontrol edin, ardından kabul edin veya iade edin. Süresi dolmuş bir faturaya yapılan transfer de benzerdir. Para zincir üzerindedir, ancak siparişiniz kapanmıştır; bu nedenle birinin siparişi yeniden açıp açmayacağına ya da parayı geri göndereceğine karar vermesi gerekir. Siparişi sizin tarafınızda iptal ederseniz, geç bir ödeme gelmeden önce kayıtlarınızın faturayı kapalı göstermesi için faturayı API üzerinden iptal edin (durum güncellemesi).
Webhook'lar ve API kripto ödeme mutabakatını nasıl beslemeli?#
Üç katman kullanın: webhook bir şeyin değiştiğini söyler, faturanın yeni bir okuması neyin doğru olduğunu söyler, tüm faturaların gece çekilen listesi ise ilk ikisinin kaçırdığı her şeyi yakalar.
- Her faturada bir `callback_url` bulunabilir; sağlayıcı durum güncellemelerini buraya gönderir. Mesajı bir tetikleyici olarak ele alın, kanıt olarak değil.
- Her webhook'ta `GET /invoices/{invoice_id}` çağrısı yapın ve yanıttaki durum ile tutarlara göre hareket edin. API çağrısı API anahtarınızı gerektirdiğinden, bu adım uç noktanıza yapılan sahte veya tekrar oynatılmış çağrılara karşı sizi korur.
- İşleyiciyi idempotent yapın: aynı durum iki kez gelebilir. Defter kaydınızı `invoice_id` ile durumun birleşimine göre anahtarlayın; böylece tekrar eden bir kayıt hiçbir şeyi değiştirmez.
- Her gece, `updated_at` alanına göre sıralanmış tüm faturaları en yeniden en eskiye doğru listeleyin ve son çalıştırmanıza kadar sayfalayın; ayrıca hâlâ `new`, `pending` veya `paid_partial` durumundaki her faturayı yeniden kontrol edin. Bunları defterinizle karşılaştırın. Sağlayıcının kayıtlarında ödenmiş ama sizin defterinizde açık görünen her fatura bir istisnadır.
Test için ItisPay, bir faturanın durum değişikliğini simüle eden bir uç nokta ile `invoice_id` veya `order_id` ile son webhook'u yeniden gönderen bir uç nokta sunar. Sunucunuz kapalıysa yeniden göndermeyi kullanın. Birden çok ödeme yöntemini tek bir ödeme orkestrasyonu katmanı üzerinden yönlendiren ekipler aynı deseni her ödeme kanalına uygular.

Muhasebe için CSV dışa aktarımı nasıl oluşturulur?#
Dışa aktarımı fatura listesi API'sinden oluşturun: her fatura için bir satır ve her transfer için bir satır. ItisPay'de `GET /invoices` durum, coin ve oluşturulma tarihine göre filtreler, tarihe veya tutara göre sıralar ve sayfa sayısıyla birlikte sayfa başına en fazla 100 fatura döndürür. Küçük bir script, bir gün veya bir ay için sayfaları gezebilir ve yukarıdaki alan tablosundaki sütunları yazabilir.
İki dosya, tek dosyadan daha iyi işe yarar:
- `invoices.csv`: invoice_id, order_id, fiat_amount, fiat_currency, currency, crypto_amount, actual_crypto_amount_paid, status, created_at, updated_at. Muhasebeci bu dosyayı içe aktarır ve satışlarla eşleştirir.
- `transfers.csv`: invoice_id, tx_hash, amount, currency, transfer durumu, zaman. Bu dosya, denetçi için kanıt dosyasıdır.
Fatura dosyasını, kart ödemesi tahsilat raporunu içe aktardığınız gibi muhasebe aracınıza aktarın: sipariş başına bir satır, euro cinsinden, eşleştirme anahtarı olarak sipariş kimliği.
Kripto ödeme kayıtlarını hangi AB kuralları şekillendirir?#
Bağlamı üç AB kuralı belirler. Bunlardan hiçbiri tüccarı kripto varlık hizmet sağlayıcısı (CASP) yapmaz, ancak hangi verilerin var olacağını ve ne kadar süreyle saklanacağını belirlerler.
- Fon Transferi Tüzüğü (AB) 2023/1113. 30 Aralık 2024'ten itibaren, ödeyicinin kripto varlık hizmet sağlayıcısı her transferin, ödeyici ve alıcıya ilişkin bilgilerle, örneğin adlar ve defter adresleriyle birlikte gönderilmesini sağlamak zorundadır (Madde 14). Veri, transferin içinde değil, yanında seyahat eder. Kendi kendine barındırılan bir cüzdana veya bu cüzdandan yapılan 1.000 EUR'yu aşan transferler için ilgili taraftaki sağlayıcı, o cüzdanın kendi müşterisine ait olup olmadığını değerlendirmek zorundadır (Madde 14 ve 16). Bu, lisanslı sağlayıcının görevidir ve bir ödemenin incelemede beklemesinin nedenlerinden biridir.
- Kayıt tutma. Mevcut AML Direktifi (AB) 2015/849'un 40. maddesine göre yükümlü kuruluşlar, işlem kayıtlarını iş ilişkisi sona erdikten veya işlem gerçekleştikten sonra beş yıl boyunca saklar. Yeni AML Tüzüğü (AB) 2024/1624, beş yıllık süreyi korur (Madde 77) ve 10 Temmuz 2027'den itibaren uygulanır.
- DAC8, Direktif (AB) 2023/2226. 1 Ocak 2026'dan itibaren kripto varlık hizmet sağlayıcıları, kullanıcılarının kripto işlemlerini vergi otoritelerine bildirir. Kendi kayıtlarınız, sağlayıcınızın bildirdikleriyle uyuşmalıdır.
Lisanslı bir ortak üzerinden çalışıyorsanız, ortak MiCA ve bu kurallar kapsamındaki CASP yükümlülüklerini üstlenir. Bu konu, MiCA CASP lisansı rehberimizde anlatılmaktadır. Yine de sipariş kayıtlarınızı ve kendi tarafınızdaki izi tutmaya devam edersiniz.
Kripto mutabakatında hâlâ insan gerektiren noktalar nerede?#
Otomasyon, tam ödenmiş durumu yönetir. Geri kalanı için adı belli bir sorumlu kişi ve kısa bir yazılı politika gerekir.
Nerede işe yaramaz
- İadeler geri alma değil, yeni giden transferlerdir. Bir adrese veya IBAN'a ödeme ve kendi kayıtlarını gerektirirler.
- Bir borsa hesabından gönderen ödeyici, gönderen adresiyle her zaman tanımlanamaz. Eşleştirmeyi yalnızca faturaya göre yapın, asla göndericiye göre yapmayın.
- Süresi dolmuş faturaya yapılan ödemeler, mükerrer ödemeler ve yanlış coinlerin tümü bir insan kararı gerektirir.
- Ağ ücretleri ve yuvarlama küçük farklara yol açar. Bir tolerans sınırını bir kez belirleyin ve buna bağlı kalın.
Beş adımda günlük kripto ödeme mutabakat rutini#
Kısa bir günlük rutin, ay sonu kapanışını bir formalite haline getirir:
- API'den son çalıştırmadan bu yana oluşturulan veya güncellenen faturaları çekin ve fatura ile transfer dosyalarını güncelleyin.
- Her `completed` faturanın mağazanızda veya ERP'nizde eşleşen ödenmiş bir siparişi olduğunu kontrol edin ve tersini de kontrol edin.
- İstisna listesini işleyin: `paid_partial`, süresi dolmuş faturalara yapılan ödemeler, yanlış coinler. Her birini yazılı bir kararla kapatın.
- Banka hesabınıza gelen euro tahsilatını, dönem için tamamlanmış faturaların toplamıyla eşleştirin. IBAN'ınıza yapılan tahsilat, sanal IBAN'lar sayesinde akışları iş kolu bazında ayırmada yardımcı olur.
- Her iki dosyayı en az beş yıl boyunca arşivleyin.
Bu altyapıyı kendiniz kurmadan stablecoin kabul etmek ve euro almak istiyorsanız, ItisPay API'yi, faturalandırmayı ve mutabakat verilerini sağlar: fatura ve sipariş kimlikleri, transfer başına hash'ler, durumlar ve webhook'lar. Lisanslama, KYC ve IBAN'ınıza tahsilat, AB lisanslı CASP + Ödeme Kuruluşu ortağımız aracılığıyla yürütülür ve çoğu ekip KYB'den ilk işleme bir haftadan kısa sürede geçer.
Bu makale yalnızca bilgilendirme amaçlıdır ve hukuki veya düzenleyici tavsiye niteliği taşımaz.


