Ana içeriğe geç

Siparişten fatura oluşturma

Belirli bir sipariş kaydına bağlı olarak fatura oluşturma ile aynı doğrulama kurallarına uyan gövdeyi POST edersiniz. Başarılı yanıtta siparişin invoice_id alanı güncellenir ve sipariş kaydı döner.

İstek

POST /api/order/{id}/invoice
Accept: application/json
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{id} paneldeki sipariş kaydı ID’sidir. İstek gövdesi POST /api/invoices ile aynı yapıdadır; ayrıntılı alan tablosu için bkz. Fatura oluşturma.

Gövdeyi sıfırdan yazmayın

GET /api/order/{id}/invoice-data çağrısı, siparişten üretilmiş hazır fatura gövdesini döndürür. Bu gövdeyi alıp gerekiyorsa birkaç alanını değiştirip buraya gönderebilirsiniz.

Gövdede dikkat edilecekler

AlanNot
sale_channel_idZorunludur ve siparişin bağlı olduğu kanalın ID’si olmalıdır.
order_idSiparişin platform_id değeri. Aynı kanal + aynı order_id için daha önce fatura oluşturulmuşsa istek mükerrer fatura hatasıyla reddedilir.
lines[].idsale_channel_id gönderildiği için zorunludur; sipariş satırının platform_id değerini kullanın.
lines[].exemption_code / exemption_reasontax_rate: 0 olan satırlarda zorunludur. Sipariş satırları bu bilgiyi taşımadığından, varsayılan ayarlarınız boşsa bu alanları kendiniz doldurmalısınız — bkz. Sabitler.

Örnek istekler

<?php
// 1) Siparişten üretilmiş hazır gövdeyi al
$ch = curl_init('https://app.faturaentegrator.com/api/order/30/invoice-data');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Accept: application/json', 'Authorization: Bearer YOUR_API_KEY'],
CURLOPT_RETURNTRANSFER => true,
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);

// 2) Gerekirse düzenle (örn. KDV %0 satırlar için istisna bilgisi)
foreach ($body['lines'] as &$line) {
if ((float) $line['tax_rate'] === 0.0 && empty($line['exemption_code'])) {
$line['exemption_code'] = 301;
$line['exemption_reason'] = '11/1-a Mal İhracatı (KDV)';
}
}
unset($line);

// 3) Faturayı oluştur
$ch = curl_init('https://app.faturaentegrator.com/api/order/30/invoice');
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

Yanıt sipariş kaydıdır (tek sipariş detayı ile aynı yapı); yeni oluşturulan faturanın ID’si invoice_id alanında döner.

{
"data": {
"id": 30,
"platform_id": "ORD-2026-1001",
"invoice_id": 812,
"invoice": {
"id": 812,
"workflow_status": "processing",
"formal_status": "pending",
"pdf_url": null
},
"...": "..."
}
}

Fatura asenkron resmileştirilir; ETTN, fatura numarası ve PDF adresi bu yanıtta yer almaz. Durumu izlemek için callback bildirimi tanımlayın veya invoice_id ile tek fatura detayını sorgulayın.

ipucu

Dikkat: Bu endpoint yolu /api/order/{id}/invoice şeklindedir; listeleme için kullandığınız /api/orders ile karıştırmayın.