MFatura Entegrasyon API
<?php
// E-Fatura Oluşturma (PHP)
//MFatura API Sürüm 1.0.1 (25.09.2025)
$apikey = "API_KEY"; //MFatura tarafından verilen API Anahtarı (Zorunlu)
$fatura_siparisno = "YSIP1234"; //Benzersiz Sipariş Numaranız (Min. 8 Zorunlu)
$fatura_unvan = "FİRMA ÜNVANINI"; //Müşteri Firma Ünvanı (Zorunlu)
$fatura_vd = "VERGİ DAİRESİ ADI"; //Müşteri Vergi Dairesi Adı (Zorunlu)
$fatura_vn = "11111111111"; //Müşteri Vergi Numarası (Zorunlu - Yok ise 11 adet 1)
$fatura_adres = "Örnek Mh. Örnek Cd. No:1 K:1 D:1"; //Müşteri Adresi (Zorunlu)
$fatura_ilce = "İlçe"; //Müşteri İlçe (Zorunlu)
$fatura_sehir = "Şehir"; //Müşteri Şehir (Zorunlu)
$fatura_eposta = "info@ornekfirma.com"; //Müşteri E-Psta (Zorunlu)
$fatura_tel = "08501234567"; //Müşteri Telefon (Zorunlu)
$fatura_toplam = "30.00"; //KDV Dahil Fatura Toplam Tutarı (Zorunlu)
//Yardımcı Fonksiyon Değiştirmeyiniz
function BirimTanim($gelen) {
switch($gelen) {
case "Adet": return "C62";
case "Koli": return "C62";
case "Metre": return "MTR";
case "M2": return "B32";
case "Kg": return "KGM";
case "Litre": return "LTR";
default: return "C62";
}
}
//Yardımcı Fonksiyon Değiştirmeyiniz
function UTF8Donustur($gelen) {
if ($gelen === null) return null;
if (function_exists('mb_detect_encoding')) {
$enc = mb_detect_encoding($gelen, array('UTF-8','ISO-8859-9','windows-1254','ISO-8859-1'), true);
if ($enc && $enc !== 'UTF-8') {
$out = @iconv($enc, "UTF-8//IGNORE", $gelen);
if ($out !== false) return $out;
}
}
return $gelen;
}
//Ürünler
$malHizmet = array();
$malHizmet[] = array(
"isim" => UTF8Donustur("Örnek Ürün 1"),
"adet" => "1",
"birim" => BirimTanim("Adet"),
"birimfiyat" => "8.3333",
"kdv" => "20",
"allowanceCharge" => array("rate" => "0", "amount" => "0")
);
$malHizmet[] = array(
"isim" => UTF8Donustur("Örnek Ürün 2"),
"adet" => "2",
"birim" => BirimTanim("Adet"),
"birimfiyat" => "8.3333",
"kdv" => "20",
"allowanceCharge" => array("rate" => "0", "amount" => "0")
);
$urunlerJson = json_encode($malHizmet);
//POST Edilecek Parametreler
$post = array(
"apikey" => $apikey,
"tarih" => date('Y-m-d'),
"saat" => date('H:i:s'),
"vergiNo" => $fatura_vn,
"vergiDairesi" => UTF8Donustur($fatura_vd),
"faturaNotu" => "", //Boş ise otomatik fatura tutarını yazı ile yazar
"isim" => UTF8Donustur($fatura_unvan),
"sehir" => UTF8Donustur($fatura_sehir),
"mahalleSemtIlce" => UTF8Donustur($fatura_ilce),
"adres" => UTF8Donustur($fatura_adres),
"eposta" => $fatura_eposta,
"tel1" => $fatura_tel,
"tel2" => "0",
"urunler" => $urunlerJson,
"sipno" => UTF8Donustur($fatura_siparisno),
"otomatiknotolustur" => "1",
"faturatoplam" => $fatura_toplam,
"faturaImza" => "1"
);
$body = http_build_query($post, '', '&');
//Gönderim
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.mfatura.com/api/efatura/e-fatura-servis.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 45);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
'Accept: application/json',
'Expect:',
'Connection: close',
'User-Agent: PHP/5.3 cURL'
));
$response = curl_exec($ch);
$errno = curl_errno($ch);
$error = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($errno) {
$sonuc = "Hata - " . $errno . " " . $error;
} else {
$sonuc = $response;
}
//Sonuç
echo $sonuc;
?>
# cURL ile Gönderim (Terminal)
# MFatura API Sürüm 1.0.1 (25.09.2025)
curl -X POST "https://www.mfatura.com/api/efatura/e-fatura-servis.php" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
-H "Accept: application/json" \
--data-urlencode "apikey=API_KEY" \
--data-urlencode "tarih=2025-09-25" \
--data-urlencode "saat=12:34:56" \
--data-urlencode "vergiNo=1111111111" \
--data-urlencode "vergiDairesi=VERGİ DAİRESİ ADI" \
--data-urlencode "isim=FİRMA ÜNVANINIZ" \
--data-urlencode "sehir=Şehir" \
--data-urlencode "mahalleSemtIlce=İlçe" \
--data-urlencode "adres=Örnek Mh. Örnek Cd. No:1 K:1 D:1" \
--data-urlencode "eposta=info@ornekfirma.com" \
--data-urlencode "tel1=08501234567" \
--data-urlencode "tel2=0" \
--data-urlencode "sipno=YSIP1234" \
--data-urlencode "otomatiknotolustur=1" \
--data-urlencode "faturatoplam=30.00" \
--data-urlencode "faturaImza=1" \
--data-urlencode "urunler=[{\"isim\":\"Örnek Ürün 1\",\"adet\":\"1\",\"birim\":\"C62\",\"birimfiyat\":\"8.3333\",\"kdv\":\"20\",\"allowanceCharge\":{\"rate\":\"0\",\"amount\":\"0\"}},{\"isim\":\"Örnek Ürün 2\",\"adet\":\"2\",\"birim\":\"C62\",\"birimfiyat\":\"8.3333\",\"kdv\":\"20\",\"allowanceCharge\":{\"rate\":\"0\",\"amount\":\"0\"}}]"
// E-Fatura Oluşturma (C# / .NET 6 ve üzeri)
// MFatura API Sürüm 1.0.1 (25.09.2025)
// C# - .NET 6 ve üzeri konsol uygulaması (Program.cs).
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
Console.OutputEncoding = Encoding.UTF8;
using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(45) };
client.DefaultRequestHeaders.Accept.ParseAdd("application/json");
var urunler = new[]
{
new { isim = "Örnek Ürün 1", adet = "1", birim = "C62", birimfiyat = "8.3333", kdv = "20", allowanceCharge = new { rate = "0", amount = "0" } },
new { isim = "Örnek Ürün 2", adet = "2", birim = "C62", birimfiyat = "8.3333", kdv = "20", allowanceCharge = new { rate = "0", amount = "0" } },
};
var simdi = DateTime.Now;
// Sipariş numarası her yeni fatura için benzersiz olmalıdır.
var post = new Dictionary<string, string>
{
["apikey"] = "API_KEY",
["tarih"] = simdi.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture),
["saat"] = simdi.ToString("HH:mm:ss", CultureInfo.InvariantCulture),
["vergiNo"] = "11111111111",
["vergiDairesi"] = "VERGİ DAİRESİ ADI",
["faturaNotu"] = "",
["isim"] = "FİRMA ÜNVANINIZ",
["sehir"] = "Şehir",
["mahalleSemtIlce"] = "İlçe",
["adres"] = "Örnek Mh. Örnek Cd. No:1 K:1 D:1",
["eposta"] = "info@ornekfirma.com",
["tel1"] = "08501234567",
["tel2"] = "0",
["urunler"] = JsonSerializer.Serialize(urunler),
["sipno"] = "YSIP1234",
["otomatiknotolustur"] = "1",
["faturatoplam"] = "30.00",
["faturaImza"] = "1",
};
try
{
using var body = new FormUrlEncodedContent(post);
body.Headers.ContentType!.CharSet = "UTF-8";
using var response = await client.PostAsync(
"https://www.mfatura.com/api/efatura/e-fatura-servis.php", body);
var sonuc = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
Console.WriteLine("HTTP Hatası: " + (int)response.StatusCode);
Console.WriteLine(sonuc);
}
catch (HttpRequestException error)
{
Console.WriteLine("Bağlantı hatası: " + error.Message);
}
catch (TaskCanceledException)
{
Console.WriteLine("İstek zaman aşımına uğradı.");
}
# E-Fatura Oluşturma (Python 3)
# MFatura API Sürüm 1.0.1 (25.09.2025)
# Python 3 - ek paket gerektirmez.
import json
from datetime import datetime
from urllib.parse import urlencode
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError
url = "https://www.mfatura.com/api/efatura/e-fatura-servis.php"
# Sipariş numarası her yeni fatura için benzersiz olmalıdır.
urunler = [
{
"isim": "Örnek Ürün 1",
"adet": "1",
"birim": "C62",
"birimfiyat": "8.3333",
"kdv": "20",
"allowanceCharge": {
"rate": "0",
"amount": "0"
}
},
{
"isim": "Örnek Ürün 2",
"adet": "2",
"birim": "C62",
"birimfiyat": "8.3333",
"kdv": "20",
"allowanceCharge": {
"rate": "0",
"amount": "0"
}
}
]
simdi = datetime.now()
post = {
"apikey": "API_KEY",
"tarih": simdi.strftime("%Y-%m-%d"),
"saat": simdi.strftime("%H:%M:%S"),
"vergiNo": "11111111111",
"vergiDairesi": "VERGİ DAİRESİ ADI",
"faturaNotu": "",
"isim": "FİRMA ÜNVANINIZ",
"sehir": "Şehir",
"mahalleSemtIlce": "İlçe",
"adres": "Örnek Mh. Örnek Cd. No:1 K:1 D:1",
"eposta": "info@ornekfirma.com",
"tel1": "08501234567",
"tel2": "0",
"urunler": json.dumps(urunler, ensure_ascii=False),
"sipno": "YSIP1234",
"otomatiknotolustur": "1",
"faturatoplam": "30.00",
"faturaImza": "1",
}
body = urlencode(post, encoding="utf-8").encode("ascii")
request = Request(url, data=body, headers={
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Accept": "application/json",
}, method="POST")
try:
with urlopen(request, timeout=45) as response:
print(response.read().decode("utf-8", errors="replace"))
except HTTPError as error:
print("HTTP Hatası:", error.code)
print(error.read().decode("utf-8", errors="replace"))
except (URLError, TimeoutError) as error:
print("Bağlantı hatası:", error)
// E-Fatura Oluşturma (JavaScript / Node.js 18 ve üzeri)
// MFatura API Sürüm 1.0.1 (25.09.2025)
// Ek paket gerektirmez. Sunucuda çalıştırın; API anahtarını tarayıcıya koymayın.
async function faturaOlustur() {
const urunler = [
{
"isim": "Örnek Ürün 1",
"adet": "1",
"birim": "C62",
"birimfiyat": "8.3333",
"kdv": "20",
"allowanceCharge": {
"rate": "0",
"amount": "0"
}
},
{
"isim": "Örnek Ürün 2",
"adet": "2",
"birim": "C62",
"birimfiyat": "8.3333",
"kdv": "20",
"allowanceCharge": {
"rate": "0",
"amount": "0"
}
}
];
const simdi = new Date();
const ikiHane = (deger) => String(deger).padStart(2, "0");
// Yerel tarih ve saat kullanılır.
const tarih = simdi.getFullYear() + "-" + ikiHane(simdi.getMonth() + 1)
+ "-" + ikiHane(simdi.getDate());
const saat = ikiHane(simdi.getHours()) + ":" + ikiHane(simdi.getMinutes())
+ ":" + ikiHane(simdi.getSeconds());
// Sipariş numarası her yeni fatura için benzersiz olmalıdır.
const post = {
apikey: "API_KEY",
tarih: tarih,
saat: saat,
vergiNo: "11111111111",
vergiDairesi: "VERGİ DAİRESİ ADI",
faturaNotu: "",
isim: "FİRMA ÜNVANINIZ",
sehir: "Şehir",
mahalleSemtIlce: "İlçe",
adres: "Örnek Mh. Örnek Cd. No:1 K:1 D:1",
eposta: "info@ornekfirma.com",
tel1: "08501234567",
tel2: "0",
urunler: JSON.stringify(urunler),
sipno: "YSIP1234",
otomatiknotolustur: "1",
faturatoplam: "30.00",
faturaImza: "1",
};
const controller = new AbortController();
const zamanAsimi = setTimeout(() => controller.abort(), 45000);
try {
const response = await fetch(
"https://www.mfatura.com/api/efatura/e-fatura-servis.php",
{
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Accept": "application/json"
},
body: new URLSearchParams(post),
signal: controller.signal
}
);
const sonuc = await response.text();
if (!response.ok) console.error("HTTP Hatası:", response.status);
console.log(sonuc);
} catch (error) {
console.error("İstek hatası:", error.message);
} finally {
clearTimeout(zamanAsimi);
}
}
faturaOlustur();
Örnek Başarılı Yanıt
https://www.mfatura.com/api/efatura/efatura.php?k=ETTN_No //Oluşan Fatura PDF URL
Örnek Başarısız Yanıt
Hata - hata kodu ve hata mesajı
MFatura ile şimdi tanışın!
Uygulamamızı indirip ücretsiz deneyebilirsiniz...


