Ana içeriğe geç

Fatura oluşturma

Yeni bir fatura kaydı oluşturmak için bu endpoint kullanılır. customer içinde id zorunludur ve alıcı bilgileri gövdede bulunmalıdır; her faturada yeni müşteri oluşturmanız gerekmez. lines içinde panel ürününe ait id kullanabilirsiniz; satırda fatura için zorunlu alanlar yine de eksiksiz gönderilmelidir (her seferinde POST /api/products gerekmez).

İstek

POST /api/invoices
Accept: application/json
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Üst düzey alanlar

AlanTipZorunluAçıklama
typestringEvetFatura tipi; bkz. Sabitler — InvoiceType.
invoice_integration_idnumberKoşulluPanelde tanımlı fatura hesabı (entegrasyon veya e-fatura portalı) kaydının ID’si. workflow_status taslak (predraft) değilse zorunludur.
sale_channel_idnumberHayırSatış kanalı ID’si.
order_idstringHayırHarici sipariş tanımlayıcısı.
order_d_idstringHayırMağaza / kanal sipariş numarası.
order_created_atstringKoşulluorder_id varsa Y-m-d formatında tarih.
currencystringHayırPara birimi (örn. TRY).
currency_ratenumberHayırKur (varsayılan davranış uygulama tarafında).
issue_datestringEvetDüzenleme tarihi Y-m-d, bugünden ileri olamaz.
issue_timestringEvetSaat H:i.
waybill_numberstringHayırİrsaliye no (sayısal string).
waybill_datestringHayırİrsaliye tarihi Y-m-d.
cash_salebooleanEvetPeşin satış mı?
due_datestringKoşullucash_sale: false ise zorunlu (Y-m-d).
payment_datestringKoşullucash_sale: true ise zorunlu (Y-m-d).
callback_urlstringHayırGeçerli URL.
descriptionstringHayırAçıklama.
linesarrayEvetEn az bir satır; aşağıdaki tabloya bakın.
is_internet_salebooleanHayırİnternet satışı.
internet_saleobjectKoşulluis_internet_sale: true ise zorunlu.
is_need_shipmentbooleanHayırSevkiyat bilgisi gerekli mi (varsayılan uygulama mantığına bağlı).
shipmentobjectKoşulluSevkiyat gerekiyorsa; firma veya kurye VKN + unvan bilgisi kuralları uygulanır.
customerobjectEvetAşağıdaki customer tablosu; id zorunlu (panelde kayıtlı müşteri).

lines[] satır alanları

AlanTipZorunluAçıklama
idnumberHayırPanelde kayıtlı ürün kartı ID’si. Verildiğinde satırı ürünle ilişkilendirir; yine de aşağıdaki zorunlu fatura alanları (ad, miktar, birim, fiyat, KDV vb.) doldurulmalıdır.
namestringEvetÜrün/hizmet adı.
quantitynumberEvetMiktar, min 1.
unitstringEvetÖlçü birimi (UN/UBL kodu, örn. C62 adet).
unit_pricenumberEvetBirim fiyat ≥ 0.
tax_ratestringEvetKDV oranı: 0, 1, 2, 8, 10, 18, 20.
skustringHayırStok kodu.
descriptionstringHayırSatır açıklaması.
discount_typestringHayıramount veya percentage.
discountnumberHayırİndirim tutarı oranı.
exemption_codestringHayırİstisna kodu.
exemption_reasonstringHayırİstisna gerekçesi.
extra_taxesarrayHayırEk vergiler; her eleman tax_code, tax_rate.

customer alanları

AlanTipZorunluAçıklama
idnumberEvetPaneldeki müşteri kaydı ID’si.
typestringEvetperson veya company.
tax_numberstringEvetVKN/TCKN (10 veya 11 hane).
tax_officestringKoşulluTüzel kişide zorunlu.
titlestringKoşulluTüzel kişide ünvan zorunlu; gerçek kişide ad/soyad.
namestringKoşulluGerçek kişi için ad.
surnamestringKoşulluGerçek kişi için soyad.
countrystringEvetÜlke.
addressstringEvetAdres.
citystringEvetİl.
districtstringEvetİlçe.
postcodestringHayırPosta kodu.
phonestringHayırTelefon.
emailstringHayırE-posta.
ibanstringHayırIBAN.

internet_sale alanları

is_internet_sale: true gönderildiğinde bu nesne zorunludur.

AlanTipZorunluAçıklama
web_addressstringHayırSatışın gerçekleştiği web adresi.
payment_methodstringHayırÖdeme yöntemi — bkz. Sabitler: internet_sale.payment_method.
payment_platformstringHayırÖdeme altyapısı / aracı adı (örn. iyzico, stripe). Maks. 255 karakter.
payment_datestringHayırÖdemenin gerçekleştiği tarih (Y-m-d).

shipment alanları

is_need_shipment: true gönderildiğinde bu nesne zorunludur. Sevkiyatı gerçekleştiren kargo firması bilgileri (company_title + company_tax_number) ya da kurye bilgileri (courier_name + courier_tax_number) çiftinden en az biri eksiksiz doldurulmalıdır; her iki çiftin birden boş gönderilmesi doğrulama hatasına yol açar.

AlanTipZorunluAçıklama
company_titlestringKoşulluKargo firması ünvanı. courier_name verilmemişse zorunlu. Maks. 255 karakter.
company_tax_numberstringKoşulluKargo firması vergi/TC kimlik numarası. company_title ile birlikte doldurulur. Maks. 20 karakter.
courier_namestringKoşulluKurye adı. company_title verilmemişse zorunlu. Maks. 255 karakter.
courier_tax_numberstringKoşulluKurye vergi/TC kimlik numarası. courier_name ile birlikte doldurulur. Maks. 20 karakter.
delivery_datestringEvet*Teslimat tarihi (Y-m-d). is_need_shipment: true ise zorunludur.

Örnek istekler

<?php
$body = [
'sale_channel_id' => 1,
'invoice_integration_id' => 9,
'type' => 'SATIS',
'issue_date' => '2026-04-08',
'issue_time' => '14:30',
'cash_sale' => true,
'payment_date' => '2026-04-08',
'currency' => 'TRY',
'currency_rate' => 1,
'is_internet_sale' => true,
'internet_sale' => [
'web_address' => 'https://example.com',
'payment_method' => 'credit_or_debit',
'payment_platform' => 'iyzico',
'payment_date' => '2026-04-08',
],
'customer' => [
'id' => 1002,
'type' => 'person',
'tax_number' => '11111111111',
'tax_office' => '',
'name' => 'Şevket',
'surname' => 'Yılmaz',
'phone' => '+90 532 123 45 67',
'email' => 'sevket@example.com',
'address' => 'İstiklal Caddesi No: 10',
'district' => 'Beyoğlu',
'city' => 'İstanbul',
'country' => 'TÜRKİYE',
'postcode' => '34000',
'iban' => '',
],
'lines' => [
[
'id' => 1001,
'name' => 'POS Entegratör Lite',
'description' => '',
'sku' => '002',
'quantity' => 1,
'unit' => 'C62',
'unit_price' => 5000,
'discount_type' => 'amount',
'discount' => 0,
'tax_rate' => 20,
'extra_taxes' => [
['tax_rate' => 2, 'tax_code' => '0059'],
],
],
],
];

$ch = curl_init('https://app.faturaentegrator.com/api/invoices');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($body),
CURLOPT_HTTPHEADER => [
'Accept: application/json',
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);

Örnek yanıt

Başarılı oluşturmada fatura kaynağı tek kayıt olarak döner (data); alanlar uygulama sürümüne göre genişletilebilir. Detaylı örnek için Postman dokümantasyonundaki Invoice → store gövdesine bakın.