Ana içeriğe geç

İ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 404 döner.
  • İrsaliyenin durumu completed olmalı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/invoices ile 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.

AlanNot
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​

<?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);

Ö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.