İrsaliyeyi faturalandırma
Tamamlanmış bir giden irsaliyeden fatura oluşturmak için bu endpoint kullanılır. Fatura oluşturma ile aynı gövdeyi gönderirsiniz. Başarılı yanıtta oluşan fatura döner ve irsaliyenin invoice_id alanı güncellenir.
İstek
POST /api/waybills/{id}/invoice
Accept: application/json
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Hangi irsaliyeler faturalandırılabilir?
- Yalnızca giden irsaliyeler faturalandırılabilir. Gelen irsaliye ID'si için
404döner. - İrsaliyenin durumu
completedolmalıdır:Yalnızca tamamlanmış irsaliyeler faturalanabilir. - Her irsaliye bir kez faturalandırılabilir:
Bu irsaliye için daha önce fatura oluşturulmuş. - Fatura oluşturma,
POST /api/invoicesile aynı şekilde planınızdan 1 hak düşer.
Gövde
Gövde POST /api/invoices ile birebir aynı doğrulama kurallarına tabidir. Tüm alanlar için bkz. Fatura oluşturma. Gövde irsaliyeden otomatik doldurulmaz; müşteri ve kalem bilgilerini kendiniz göndermelisiniz.
| Alan | Not |
|---|---|
waybill_number / waybill_date | İrsaliye bilgisinin faturada görünmesi için irsaliyenin document_number ve issue_date değerlerini gönderin. |
customer | İrsaliyenin parties.delivery tarafındaki alıcı bilgileriyle doldurabilirsiniz. |
lines[] | İrsaliye kalemlerinden türetebilirsiniz. Fatura kurallarına göre sale_channel_id gönderildiğinde lines[].id zorunludur. |
Örnek istekler
- 💻 cURL
- 🐘 PHP
- 🟢 Node.js
- 🐍 Python
curl -X POST "https://app.faturaentegrator.com/api/waybills/214/invoice" \
-H "Accept: application/json" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{
"type": "SATIS",
"cash_sale": false,
"invoice_integration_id": 9,
"sale_channel_id": 1,
"issue_date": "2026-09-30",
"issue_time": "11:00",
"currency": "TRY",
"currency_rate": 1,
"waybill_number": "IRS2026000000101",
"waybill_date": "2026-09-30",
"customer": {
"id": "WAYBILL-CUSTOMER-1",
"type": "company",
"tax_number": "1234567890",
"title": "Örnek Ticaret A.Ş.",
"tax_office": "Kadıköy",
"country": "Türkiye",
"city": "İstanbul",
"district": "Kadıköy",
"address": "Örnek Mah. Örnek Sok. No:1"
},
"lines": [
{ "id": "SKU-001", "name": "Örnek Ürün", "quantity": 2, "unit": "C62", "unit_price": 100, "tax_rate": 20 }
]
}'
<?php
$headers = ['Accept: application/json', 'Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'];
// 1) İrsaliyeyi al
$ch = curl_init('https://app.faturaentegrator.com/api/waybills/214');
curl_setopt_array($ch, [CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true]);
$waybill = json_decode(curl_exec($ch), true)['data'];
curl_close($ch);
$delivery = current(array_filter($waybill['parties'], fn ($p) => $p['role'] === 'delivery'));
// 2) Fatura gövdesini irsaliyeden türet
$body = [
'type' => 'SATIS',
'cash_sale' => false,
'invoice_integration_id' => $waybill['invoice_integration_id'],
'sale_channel_id' => 1,
'issue_date' => date('Y-m-d'),
'issue_time' => date('H:i'),
'currency' => $waybill['currency'],
'currency_rate' => (float) $waybill['currency_rate'],
'waybill_number' => $waybill['document_number'],
'waybill_date' => $waybill['issue_date'],
'customer' => [
'id' => $delivery['identifier_number'],
'type' => strlen($delivery['identifier_number']) === 10 ? 'company' : 'person',
'tax_number' => $delivery['identifier_number'],
'title' => $delivery['title'],
'name' => $delivery['name'],
'surname' => $delivery['surname'],
'tax_office' => $delivery['tax_office'],
'country' => $delivery['country'],
'city' => $delivery['city'],
'district' => $delivery['district'],
'address' => $delivery['address'],
],
'lines' => array_map(fn ($line) => [
'id' => $line['seller_product_code'] ?? $line['id'],
'name' => $line['name'],
'quantity' => (float) $line['quantity'],
'unit' => $line['unit'],
'unit_price' => (float) $line['unit_price'],
'tax_rate' => (float) $line['tax_rate'],
], $waybill['lines']),
];
// 3) Faturalandır
$ch = curl_init('https://app.faturaentegrator.com/api/waybills/214/invoice');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($body),
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
]);
$invoice = json_decode(curl_exec($ch), true);
curl_close($ch);
const res = await fetch('https://app.faturaentegrator.com/api/waybills/214/invoice', {
method: 'POST',
headers: {
Accept: 'application/json',
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify(faturaGovdesi), // POST /api/invoices ile aynı yapı
});
const invoice = await res.json();
import requests
r = requests.post(
'https://app.faturaentegrator.com/api/waybills/214/invoice',
json=fatura_govdesi, # POST /api/invoices ile aynı yapı
headers={'Accept': 'application/json', 'Authorization': 'Bearer YOUR_API_KEY'},
)
invoice = r.json()
Örnek yanıt
Yanıt, tek fatura detayı ile aynı yapıdaki fatura kaydıdır.
{
"data": {
"id": 815,
"workflow_status": "processing",
"formal_status": "pending",
"waybill_number": "IRS2026000000101",
"...": "..."
}
}
Fatura asenkron resmileştirilir. Durumu izlemek için fatura gövdesinde callback_url gönderin veya dönen id ile tek fatura detayını sorgulayın.