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.
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
| Alan | Not |
|---|---|
sale_channel_id | Zorunludur ve siparişin bağlı olduğu kanalın ID’si olmalıdır. |
order_id | Sipariş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[].id | sale_channel_id gönderildiği için zorunludur; sipariş satırının platform_id değerini kullanın. |
lines[].exemption_code / exemption_reason | tax_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
- 💻 cURL
- 🐘 PHP
- 🟢 Node.js
- 🐍 Python
curl -X POST "https://app.faturaentegrator.com/api/order/30/invoice" \
-H "Accept: application/json" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
-d @fatura-govdesi.json
<?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);
const headers = {
Accept: 'application/json',
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
};
// 1) Hazır fatura gövdesini al
const prep = await fetch('https://app.faturaentegrator.com/api/order/30/invoice-data', { headers });
const body = await prep.json();
// 2) Faturayı oluştur
const res = await fetch('https://app.faturaentegrator.com/api/order/30/invoice', {
method: 'POST',
headers,
body: JSON.stringify(body),
});
const data = await res.json();
import requests
headers = {'Accept': 'application/json', 'Authorization': 'Bearer YOUR_API_KEY'}
body = requests.get(
'https://app.faturaentegrator.com/api/order/30/invoice-data', headers=headers
).json()
data = requests.post(
'https://app.faturaentegrator.com/api/order/30/invoice', json=body, headers=headers
).json()
Ö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.
Dikkat: Bu endpoint yolu /api/order/{id}/invoice şeklindedir; listeleme için kullandığınız /api/orders ile karıştırmayın.