Ana içeriğe geç

Satış Oluştur

POST /v1/integrations/orders

Siparişi Finans Fatura tarafında bir satış kaydına dönüştürür. Ürünler barkod veya stok koduyla eşlenir, alıcı bilgileri satışın üzerine yazılır, satış mükellefin ciro ve stok raporlarına girer.

Bu, entegrasyonun ilk ve zorunlu adımıdır.

İstek​

POST /v1/integrations/orders
{
"provider": "ECOMSOFT",
"external_id": "ORD-2026-00184",
"order_number": "184",
"ordered_at": "2026-08-16T11:20:00Z",
"payment_status": "PAID",
"currency": "TRY",
"total_price": 1200,
"buyer": {
"title": "Test Müşteri",
"tckn": "11111111111",
"email": "[email protected]",
"phone": "5551112233",
"address": "Kadıköy / İstanbul"
},
"lines": [
{
"external_line_id": "L1",
"sku": "SRV-001",
"barcode": "8690000000001",
"title": "Danışmanlık hizmeti",
"quantity": 1,
"unit_price": 1200,
"total_price": 1200,
"vat_rate": 20,
"discount": 0
}
]
}

Gövde alanları​

AlanTipZorunluAçıklama
external_idstring✅Sizin sisteminizdeki sipariş kimliği. Tekrarlı gönderimi engelleyen anahtar.
linesdizi✅En az bir satır.
providerstring—Kaynak markası. Bkz. Kaynak etiketi.
order_numberstring—Mükellefin gördüğü sipariş numarası.
customer_namestring—Alıcı adı (görüntüleme için).
ordered_atRFC 3339—Sipariş tarihi. Boşsa istek anı.
statusstring—Sizdeki sipariş durumu (bilgi amaçlı).
payment_statusstring—PAID | PENDING. Boşsa PAID.
currencystring—Boşsa TRY. TRY dışıysa bkz. Döviz ve kur.
exchange_ratesayı—1 birim currency kaç TL. Boş ya da 0 gönderirseniz bizim kurumuzu kullanırız. Bkz. Döviz ve kur.
exchange_rate_sourcestring—TCMB | MANUAL. Boşsa MANUAL.
exchange_rate_datestring—Kurun ait olduğu gün (27.09.2026).
total_pricesayı—Sipariş toplamı.
invoice_exemption_codestring—KDV istisna kodu (GİB 2xx/3xx). %0 KDV'li satır varsa gerekli — bkz. KDV istisnası.
invoice_exemption_reasonstring—İstisna kodunun metni. Kodla birlikte gönderilir.
buyernesne✅Fatura alıcısı. Satışın üzerine yazılır. Bkz. Alıcı.

Satır alanları (lines[])​

AlanTipZorunluAçıklama
titlestring✅Ürün adı. Faturada bu isim görünür.
quantitysayı✅Miktar.
skustring—Stok kodu. Ürün eşlemede kullanılır.
barcodestring—Barkod. Eşlemede önceliklidir.
external_line_idstring—Sizdeki satır kimliği.
unit_pricesayı—Birim fiyat (KDV dahil).
total_pricesayı—Satır toplamı (KDV dahil). Boşsa unit_price × quantity.
vat_ratesayı—KDV oranı, yüzde olarak (20).
discountsayı—Satır indirimi.
Fiyatlar KDV dahil gönderilir

Bu uçta unit_price ve total_price KDV dahil tutarlardır. KDV, orana göre bu tutarın içinden ayrıştırılır.

Fatura kesme ucundaki canonical gövdesi ise KDV hariç çalışır. İki ucu karıştırmayın — en sık yapılan hata budur.

Alıcı​

{
"title": "Örnek Ticaret A.Ş.",
"contact_name": "Ayşe Yılmaz",
"email": "[email protected]",
"phone": "5551112233",
"tckn": "",
"tax_number": "1234567890",
"tax_office": "Kadıköy",
"address": "Caferağa Mah. ... Kadıköy / İstanbul"
}
AlanZorunluBelgedeki karşılığı
title✅Unvan / Ad Soyad. Boşsa contact_name kullanılır; ikisi de boşsa istek 400 döner.
contact_name—Yetkili kişi. title boşsa unvan yerine geçer.
tckn—VKN/TCKN — bireysel alıcı (11 hane).
tax_number—VKN/TCKN — kurumsal alıcı (10 hane). İkisi birden gelirse bu kazanır.
tax_office—Vergi dairesi. Kurumsal alıcıda tax_number ile birlikte gönderin.
address—Adres.
email—E-posta. e-Arşiv'de belgenin gönderim şeklini belirler, bkz. E-posta.
phone—Telefon.

Alıcı bilgisi nerede durur​

Gönderdiğiniz alıcı, satış kaydının üzerine kopyalanır — belgenin fatura alıcısı odur. Fatura kesilirken alıcı bu bilgiden kurulur; mükellefin elle girmesi gerekmez.

Cari hesap açılmaz. Eskiden her alıcı için bir cari kartı aranır, yoksa oluşturulurdu; artık öyle değil. Tek seferlik e-ticaret alıcıları cari listesini şişiriyordu ve satışın kayda geçmesi için gereken şey zaten alıcının kendisiydi, bir kart değil. Borç/ödeme takibi istediğiniz alıcılar için cari kartı panelden açılır ve satışla ilişkilendirilir.

Kopya olması kasıtlıdır: belge, kesildiği andaki alıcıyı taşır. Alıcının bilgisi sonradan değişse de kesilmiş belgenin üzerindeki bilgi değişmez.

Kimlik: VKN ve TCKN tek alandır​

İstekte ikisini ayrı gönderirsiniz (hangisi olduğunu bilen taraf sizsiniz), belgede tek bir kimlik alanı vardır. İkisi birden geldiyse tax_number kazanır — belge kuruma kesilir.

Kimlik zorunlu değildir; kanalınız tutmuyor olabilir (Shopify fatura adresinde VKN/TCKN tutmaz). Ama gönderebiliyorsanız gönderin: e-Fatura mükellefi olan bir alıcının belgesi ancak kimliği varken GİB'de sorgulanıp e-Faturaya yükseltilir, aksi hâlde mükellef VKN'yi fatura ekranında elle girer.

E-posta​

email nezaket alanı değildir: e-Arşiv belgesinde GİB'in zorunlu tuttuğu gönderim şekli (EREPSENDT) bu alandan türetilir — e-posta varsa ELEKTRONIK, yoksa KAGIT olarak beyan edilir. Son tüketiciye belgeyi e-posta ile ulaştırmak istiyorsanız alıcının e-postasını göndermeniz gerekir.

Alıcı zorunlu

buyer göndermezseniz ya da unvan çıkmazsa satış oluşmaz, istek 400 döner: alan hiç yoksa ERROR_VALIDATION (errors[].field = "buyer"), varsa ama adlandıramıyorsa ERROR_BUYER_TITLE_REQUIRED. Kimlik (tckn / tax_number) zorunlu değildir — kanalınız tutmuyor olabilir — ama belgeyi taşıyacak bir title (ya da contact_name) şarttır: alıcısız bir belge kesilemez.

Yanıt​

201 Created
{
"imported": true,
"already_imported": false,
"integration_id": 42,
"external_id": "ORD-2026-00184",
"transaction_id": "9f1c2d3e-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
"currency": "USD",
"exchange_rate": 41.37,
"exchange_rate_source": "TCMB",
"exchange_rate_date": "27.09.2026"
}

Dövizli satışta hangi kuru kullandığımız yanıtta döner — kendi kurunuzu gönderdiyseniz o (MANUAL), göndermediyseniz bizimki (TCMB). TRY satışta bu alanlar hiç dönmez.

transaction_id, oluşan satışın kimliğidir. Faturayı hemen kesecekseniz bu değeri fatura ucuna transaction_header_id olarak geçirin.

Döviz ve kur​

TRY dışı bir satışın faturası, TL karşılığının türetildiği kur olmadan kesilemez: mevzuat yurt içi alıcıda TL karşılığını şart koşuyor ve GİB görüntüleyicisi TL tutarları bu kurdan hesaplıyor.

Kuru siz belirleyebilirsiniz, belirlemek zorunda da değilsiniz:

Gönderdiğiniz exchange_rateNe olur
yok ya da 0Bizim kurumuzu kullanırız (TCMB döviz alış). Yanıtta exchange_rate_source: "TCMB" döner.
> 0Sizin kurunuz aynen kullanılır, MANUAL olarak işaretlenir. TCMB ile karşılaştırılmaz.

Kur uydurulmaz: TCMB bülteni o para birimini taşımıyorsa istek ERROR_EXCHANGE_RATE_REQUIRED ile döner ve kuru sizden ister. Kimsenin seçmediği bir rakamla belge çıkmasındansa satış beklemede kalır.

TCMB bülteninin takvimi

Bülten hafta içi ~15:30'da yayımlanır, hafta sonu yayımlanmaz. Pazartesi sabahı kesilen bir belge cumanın bültenini taşır — yanıtta dönen exchange_rate_date bunu açık eder. Satır tutarları sipariş para biriminde kalır; çevrilmez.

İadede kur TCMB'den alınmaz: iade asıl satışın kurunu tekrar eder, yeni bir kur belirlemez. exchange_rate göndermezseniz asıl satışın kurunu kendimiz buluruz — aylar önceki bir satışı bugünün kuruyla iade etmek yanlış beyandır.

KDV istisnası​

%0 KDV'li bir satır, istisna sebebi olmadan faturalanamaz. GİB şematronu sebebi olmayan %0 KDV'li satırı reddediyor.

İstisna belge genelinde tek koddur, satır bazında değil — bir mükellef pratikte tek istisna türüyle çalışır (ihracatçı hep "11/1-a mal ihracatı"). Kod yalnız %0 KDV'li satırlara iliştirilir; KDV'li satıra dokunulmaz, yoksa karışık belgede istisna beyanı vergili satırı da kapsamış görünürdü.

{
"currency": "USD",
"invoice_exemption_code": "301",
"invoice_exemption_reason": "11/1-a Mal ihracatı",
"lines": [
{ "title": "Danışmanlık", "quantity": 1, "unit_price": 1000, "vat_rate": 0 }
]
}

Kod 2xx (kısmi istisna, KDVK md. 17) ya da 3xx (tam istisna, iade hakkı doğurur) olmalıdır. Listede olmayan bir kod reddedilmez — GİB'in tam kod listesi geniştir ve son söz şematronundur.

Göndermezseniz istek kabul edilir, satış oluşur, ama faturası kesilemez: belge ERROR_INVOICE_ZERO_VAT_NEEDS_EXEMPTION ile durur ve mükellef kodu panelden seçerek kesebilir. Kanalınız GİB istisna kodunu tutmuyorsa bu kasıtlı çıkış yoludur — satışı kaybetmemek için.

Fatura tipini göndermeyin: sunucu satırlardan türetir (%0 KDV → ISTISNA).

Tekrarlı gönderim​

Aynı external_id ikinci kez gönderilirse yeni satış oluşmaz:

200 OK
{
"imported": false,
"already_imported": true,
"integration_id": 42,
"external_id": "ORD-2026-00184",
"transaction_id": "9f1c2d3e-4a5b-6c7d-8e9f-0a1b2c3d4e5f"
}

Bu bir hata değildir. Webhook tekrarları ve retry'lar için güvenle kullanabilirsiniz — 201 yerine 200 alırsanız kayıt zaten bizde demektir.

Kaynak etiketi​

provider alanı, satışın nereden geldiğini işaretler. Mükellef, panelindeki satış listesinde kaynağı görür.

  • Finans Fatura mağazasında kayıtlı bir markaysa, satış sizin logonuzla listelenir
  • Tanınmayan bir değer gönderilirse kaynak FINANSFATURA olarak görünür — istek reddedilmez

Markanızın kayıtlı hâle gelmesi için Partner Programı'na bakın.

Sınırlar​

  • Satırlarda para birimi karışımı desteklenmez; tüm satırlar currency ile aynı para biriminde olmalıdır
  • Tevkifat ve özel matrah bu uçta gönderilmez: ikisi de satır bazındadır ve satışın değil belgenin özelliğidir — fatura ucunda gönderilir
  • Sipariş iptali ve iade bu uçta ele alınmaz; oluşmuş satış panelden düzenlenir