Facturis Online - API
Interfata pentru programarea de aplicatii, poate fi folosita pentru integrarea operatiunilor din programul de facturare si gestiune Facturis Online in alte aplicatii cum ar fi magazinele pe internet, si alte sisteme de comert electronic.

In acest scop va prezentam in continuare lista actualizata a functiilor API implementate in Facturis Online, impreuna cu metoda de apelare, specificatii privind raspunsul, tratarea eventualelor erori si exemplul de apelare din PHP.
Lista completa cu facilitatile facturis online o gasiti la
Interogarea Stocului


Metoda de apelare a stocului se gaseste la adresa: https://www.facturis-online.ro/facturis/api/get_stoc.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

parola - cod unic firma generat din facturis online (pentru acest cod, va rog sa ne trimiteti o cerere de pe adresa de email a contului de admin )
pdl - punctul de lucru asa cum este inregistrat in sistem, numai daca este altul decat sediul social
gest - gestiunea numai daca sunt mai multe pe acelasi punct de lucru
data - data stocului in format 'Y-m-d' (ex: 2013-12-31), numai daca se doreste alta data decat cea de azi
prod - numele produsului pentru care se doreste stocul, daca nu se trimite se intorc toate produsele

In cazul in care datele sunt furnizate corect, raspunsul va fi sub forma unui string JSON, a caror campuri vor fi aranjate in urmatoarea ordine:

Cod Produs, Nume Produs, Cantitate in Stoc, Pret fara TVA (Achizitie), Pret cu TVA (Achizitie), Valoare fara TVA (Achizitie) , Valoare fara TVA (Achizitie), Pret fara TVA (Vanzare), Pret cu TVA (Vanzare), Valoare fara TVA (vanzare), Valoare cu TVA (vanzare), Moneda, Punct de lucru - Gestiune, Data, id produs FO, id gestiune FO, Cod SKU, Alt Cod

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare 1 - Nu se poate face autentificarea
Eroare 2 - Date de logare incorecte
Eroare: 3 - Nu a fost gasita o gestiune pentru punctul de lucru curent
Eroare: 4 - Data nu este valida
...

Va prezentam mai jos modul de apelare al acestei metode in PHP:

								  $parola = ""; // cod unic firma generat din facturis online
								  $pdl = ""; //punctul de lucru daca este altul decat sediul social
								  $gest = ""; //gestiunea numai daca sunt mai multe pe acelasi punct de lucru
								  $data = ""; //data stocului 'Y-m-d' numai daca se doreste alta data decat cea de azi
								  $prod = "";// numele produsului pentru care se doreste stocul, daca nu se trimite se intorc toate produsele
								  $cod = "";// codul produsului pentru care se doreste stocul, daca nu se trimite se intorc toate produsele
								  $codSku = "";// codul SKU al produsului pentru care se doreste stocul, daca nu se trimite se intorc toate produsele
								  $codAlt = "";// Alt cod al produsului pentru care se doreste stocul, daca nu se trimite se intorc toate produsele								  
								  $idFO = "";// id-ul din facturis online al produsului pentru care se doreste stocul, daca nu se trimite se intorc toate produsele								  
								 
								  $curl_options = array(
									CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/get_stoc.php",
									CURLOPT_POST => true,
									CURLOPT_POSTFIELDS => "parola=$parola&pdl=$pdl&gest=$gest&data=$data&prod=$prod",
									CURLOPT_RETURNTRANSFER => true,
									CURLOPT_HEADER => false,
									CURLOPT_TIMEOUT => 30,
									CURLOPT_CONNECTTIMEOUT => 5
								  );
								 
								  $curl = curl_init();
								  curl_setopt_array( $curl, $curl_options );
								  $result = curl_exec( $curl );

//daca raspunsul este o eroare
								  if (strrpos($result, "Eroare") !== false){
									echo $result;
									die;
								  }
								 
								  $result = (array) json_decode($result);
								 
//daca nu e nici o eroare se parseaza rezultatul
									foreach ($result as $vals) {
									   
//afisam pe linii (fiecare linie contine valorile intr-un vector unidimensional)
//daca dorim obtinerea unei valori din linie trebuie sa apelam $vals[positie]

										print_r($vals);
										echo '<br />';

									}
							
Afisarea Nomeclatorului de Produse


Metoda de apelare a listei cu produse se gaseste la adresa: https://www.facturis-online.ro/facturis/api/get_products.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

parola - cod unic firma generat din facturis online (pentru acest cod, va rog sa ne trimiteti o cerere de pe adresa de email a contului de admin )

In cazul in care datele sunt furnizate corect, raspunsul va fi sub forma unui string JSON, a caror campuri vor fi aranjate in urmatoarea ordine:

id produs FO, Nume Produs, Unitate de Masura, Cota TVA, Pret vanzare fara TVA, Pret vanzare cu TVA, Moneda, Cod Produs, Observatii1, Observatii2, Tipul Produsului, Categorie Produs, Acciza fara TVA (daca este cazul), Cod SKU, Alt Cod

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare 1 - Nu se poate face autentificarea
Eroare 2 - Date de logare incorecte
...

Va prezentam mai jos modul de apelare al acestei metode in PHP:

  $parola = ""; // cod unic firma generat din facturis online
 
  $curl_options = array(
    CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/get_products.php",
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => "parola=$parola",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CONNECTTIMEOUT => 5
  );
 
  $curl = curl_init();
  curl_setopt_array( $curl, $curl_options );
  $result = curl_exec( $curl );

//daca raspunsul este o eroare
  if (strrpos($result, "Eroare") !== false){
    echo $result;
    die;
  }
 
  $result = (array) json_decode($result);
 
//daca nu e nici o eroare se parseaza rezultatul
    foreach ($result as $vals) {
       
//afisam pe linii (fiecare linie contine valorile intr-un vector unidimensional)
//daca dorim obtinerea unei valori din linie trebuie sa apelam $vals[positie]
        print_r($vals);
        echo '<br />';

    }
							
Afisarea Nomeclatorului de Clienti


Metoda de apelare a listei cu clienti se gaseste la adresa: https://www.facturis-online.ro/facturis/api/get_clients.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

parola - cod unic firma generat din facturis online (pentru acest cod, va rog sa ne trimiteti o cerere de pe adresa de email a contului de admin )

In cazul in care datele sunt furnizate corect, raspunsul va fi sub forma unui string JSON, a caror campuri vor fi aranjate in urmatoarea ordine:

id client FO, Nume Client, Cod Fiscal/CNP, Nr. Reg./CI, Telefon, Tip (Persoana), Sediu, Judet, Email, Cont, Banca, Obs. Factura, Adresa Livrare, Nr. Zile Scadenta

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare 1 - Nu se poate face autentificarea
Eroare 2 - Date de logare incorecte
...

Va prezentam mai jos modul de apelare al acestei metode in PHP:

$parola = ""; // cod unic firma generat din facturis online
 
  $curl_options = array(
    CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/get_clients.php",
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => "parola=$parola",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CONNECTTIMEOUT => 5
  );
 
  $curl = curl_init();
  curl_setopt_array( $curl, $curl_options );
  $result = curl_exec( $curl );

 //daca raspunsul este o eroare
  if (strrpos($result, "Eroare") !== false){
    echo $result;
    die;
  }
 
  $result = (array) json_decode($result);
 
 //daca nu e nici o eroare se parseaza rezultatul
    foreach ($result as $vals) {
       
//afisam pe linii (fiecare linie contine valorile intr-un vector unidimensional)
//daca dorim obtinerea unei valori din linie trebuie sa apelam $vals[positie]
        print_r($vals);
         echo '<br />';

    }
							
Adaugarea Facturilor, Proformelor, Avizelor


Metoda de adaugare a documentelor se apeleaza la adresa: https://www.facturis-online.ro/facturis/api/add_invoice.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

xml_string - textul xml ce contine datele de logare si factura cu produse

In cazul in care datele sunt furnizate corect, se introduce documentul in sistem si se intoarce PDF-ul pentru listare ori salvare

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare: 4 - Autentificare client esuata
...
Eroare: 12 - Data emiterii nu este valida
...
Eroare: 16 - Trebuie completat Cod Fiscal/CNP
...
Eroare: 27 - Valoarea TVA trebuie sa fie numerica! - nodul: n
...

Va prezentam mai jos modul de apelare al acestei metode in PHP:

  $xml_string='<?xml version="1.0" encoding="ISO-8859-1"?>
<addInvoice>
    <login>
         <pass>!parola_primita_de_la_facturis_online!</pass>
    </login>
	<getDetails>
		 false
	</getDetails>
    <invoice>
        <office></office>
        <administration></administration> 
        <type>A</type>
        <series>XXXX</series>
        <number>3</number>
        <issueDate>2013-06-11 08:00:00</issueDate>
        <dueDate>2013-06-11</dueDate>
        <currency>RON</currency>
        <client>client</client>
        <clientType>Juridica</clientType>
        <registerNumber>J/1981/2134</registerNumber>
        <taxCode>ro 123455</taxCode>
        <address>Adresa</address>
        <county>Judet</county>
        <bankAccount>roncb343432xxxx</bankAccount>
        <bank>banca</bank>
        <representative>delegat</representative>
        <representativeId>xx324234</representativeId>
        <deliveryPerson>persoana de livrare</deliveryPerson>
        <deliveryPersonID>actul de identitate al persoanei de livrare</deliveryPersonID>
        <deliveryAddress>adresa de livrare</deliveryAddress>		
        <observations>...</observations>
        <VATrate>24%</VATrate>
        <paymentType>Ordin de Plata</paymentType>
		<Status>Emisa</Status>
		<Oras>Bucuresti</Oras>
        <products>
            <product>
                <productId>12345</productId>
                <productName>produs1</productName>
                <unit>buc</unit>
                <amount>2</amount>
                <unitPrice>6</unitPrice>
                <value>12</value>
                <VAT>2.88</VAT>
                <discount>0</discount>
                <productCodEan></productCodEan>
                <productCodSku></productCodSku>
                <productAltCod></productAltCod>
                <sincStocField></sincStocField>
            </product>
            <product>
                <productId>123456</productId>
                <productName>produs2</productName>
                <unit>buc</unit>
                <amount>1</amount>
                <unitPrice>120</unitPrice>
                <value>120</value>
                <VAT>28.80</VAT>
                <discount>0</discount> 
                <productCodEan></productCodEan>
                <productCodSku></productCodSku>
                <productAltCod></productAltCod>
                <sincStocField></sincStocField>				
            </product>
            <product>
                <productId>1234567</productId>
                <productName>produs3</productName>
                <unit>buc</unit>
                <amount>3</amount>
                <unitPrice>50</unitPrice>
                <value>150</value>
                <VAT>36</VAT>
                <discount>6</discount>
                <productCodEan></productCodEan>
                <productCodSku></productCodSku>
                <productAltCod></productAltCod>
                <sincStocField></sincStocField>				
            </product>
        </products>
    </invoice>
</addInvoice>';

 $curl_options = array(
    CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/add_invoice.php",
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => "xml_string=$xml_string",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CONNECTTIMEOUT => 5
  );
 
  $curl = curl_init();
  curl_setopt_array( $curl, $curl_options );
  $result = curl_exec( $curl );

 //daca raspunsul este o eroare
  if (strrpos($result, "Eroare") !== false){
    echo $result;
    die;
  }

  // Daca se doreste returnarea seriei si numarului (tag-ul getDetails este true)
  // var_dump(json_decode($result));
  // die;
 
    header('Cache-Control: public');
    header('Content-type: application/pdf');
    //daca se doreste salvata
    //header('Content-Disposition: attachment; filename="invoice.pdf"');
    //daca se doreste vizualizata
    header('Content-Disposition: inline; filename="invoice.pdf"');
    header('Content-Length: '.strlen($result));
    echo $result;
    die; 
							


si descrierea tag-urilor XML:

							
<?xml version="1.0" encoding="ISO-8859-1"?>
<addInvoice>
    <login>
         <pass>!parola_primita_de_la_facturis_online!</pass>
		 <!-- cod unic firma generat din facturis-online.ro - obligatoriu -->
    </login>
	<getDetails>
		 false
	</getDetails>
	<!-- daca acest flag este true, se intoarce seria si numarul documentului. Daca este false, se intoarce pdf-ul generat -->
    <invoice>
        <office></office>
		<!-- denumire punct de lucru din facturis-online.ro - optional -->
        <administration></administration>
		<!-- denumire gestiune din facturis-online.ro - optional -->   
        <type>A</type>
		<!-- tipul documentului (F - factura, P - proforma, A - aviz) - obligatoriu -->
        <series>XXXX</series>
		<!-- seria documentului - optional -->
        <number>3</number>
		<!-- numarul documentului - optional -->
        <issueDate>2013-06-11 08:00:00</issueDate>
		<!-- data emiterii in format (AAAA-LL-ZZ HH:MM:SS) - obligatoriu -->
        <dueDate>2013-06-11</dueDate>
		<!-- data scadenta in format (AAAA-LL-ZZ) - obligatoriu -->
        <currency>RON</currency>
		<!-- moneda - obligatoriu -->
        <client>client</client>
		<!-- numele complet al clientului - obligatoriu -->
        <clientType>Juridica</clientType>
		<!-- tipul clientului (persoana <Juridica, Fizica>) - obligatoriu -->
        <registerNumber>J/1981/2134</registerNumber>
		<!-- Nr. Reg. Comertului (pt. persoane juridice) / CI  (pt. persoane fizice) - obligatoriu -->
        <taxCode>ro 123455</taxCode>
		<!-- Cod Fiscal (pt. persoane juridice) /CNP (pt. persoane fizice) - obligatoriu -->
        <address>Adresa</address>
		<!-- adresa clientului - obligatoriu -->
        <county>Judet</county>
		<!-- judetul clientului - obligatoriu -->
        <bankAccount>roncb343432xxxx</bankAccount>
		<!-- contul bancar al clientului - optional -->
        <bank>banca</bank>
		<!-- banca clientului - optional -->
        <representative>delegat</representative>
		<!-- delegat - optional -->
        <representativeId>xx324234</representativeId>
		<!-- act delegat - optional -->
        <deliveryPerson>persoana de livrare</deliveryPerson>
		<!-- persoana livrare - optional -->
        <deliveryPersonID>actul de identitate al persoana de livrare</deliveryPersonID>
		<!-- actul de identitate al persoanei de livrare - optional -->		
        <deliveryAddress>adresa de livrare</deliveryAddress>
		<!-- adresa de livrare - optional -->		
        <observations>...</observations>
		<!-- observatii - optional -->
        <VATrate>24%</VATrate>
		<!-- cota tva (text ex: 24%, 9%, Scutit de TVA ) - optional -->
        <paymentType>Ordin de Plata</paymentType>
		<!-- modalitate de plata (Bon Fiscal,Card,Card Partial,Chitanta (cash),Chitanta Partial,Chitanta (ramburs),Fila CEC,Ordin Bancar,Ordin de Plata,Ramburs,Ramburs in cont,Ramburs cash) - optional -->
        <Status>Emisa</Status>
		<!-- starea documentului: pt. Factura (Emisa, Platita, Partial Platita, Anulata), pt. Proforma (Emisa, Transformata), pt. Aviz (Emisa, Anulata) -->
        <Oras>Bucuresti</Oras>
		<!-- Orasul ce va fi afisat pe factura la datele firmei emitente -->		
		<products>
            <product>
                <productId>12345</productId>
				<!-- id produs FO - optional -->
                <productName>produs1</productName>
				<!-- nume produs - obligatoriu -->
                <unit>buc</unit>
				<!-- unitate de masura - obligatoriu -->
                <amount>2</amount>
				<!-- cantitate - obligatoriu -->
                <unitPrice>6</unitPrice>
				<!-- pret unitar fara TVA - obligatoriu -->
                <value>12</value>
				<!-- valoare totala fara TVA - obligatoriu -->
                <VAT>2.88</VAT>
				<!-- valoare TVA - obligatoriu -->
                <discount>0</discount>
				<!-- discount - suma ce va fi scazuta din valoarea totala cu TVA - obligatoriu -->
                <productCodEan></productCodEan>
				<!-- codul EAN - optional -->
                <productCodSku></productCodSku>
				<!-- codul SKU - optional -->
                <productAltCod></productAltCod>
				<!-- alt cod suplimentar - optional -->
                <sincStocField></sincStocField>					
				<!-- campul dupa care se face identificarea produsului in facturis online valori posibile (productId, productCodEan, productCodSku, productAltCod) - implicit identificarea se face dupa numele produsului - optional -->
            </product>
        </products>
    </invoice>
</addInvoice>	
Adaugarea NIR-urilor


Metoda de adaugare a documentelor se apeleaza la adresa: https://www.facturis-online.ro/facturis/api/add_nir.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

xml_string - textul xml ce contine datele de logare si NIR-ul cu produse

In cazul in care datele sunt furnizate corect, se introduce documentul in sistem si se intoarce PDF-ul pentru listare ori salvare

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare: 4 - Autentificare client esuata
...
Eroare: 12 - Data emiterii nu este valida


Va prezentam mai jos modul de apelare al acestei metode in PHP:

$xml_string='<?xml version="1.0" encoding="ISO-8859-1"?>
<addDoc>
  <login>
       <pass>!parola_primita_de_la_facturis_online!</pass>
  </login>  
  <nir>
      <office></office>
      <administration></administration>      
      <number>3</number>
      <issueDate>2014-06-11</issueDate>
      <supplier>furnizor</supplier>
	  <autoNr>nr. auto</autoNr>
      <docType>tip document</docType>
	  <docNr>nr. document</docNr>
      <observations>...</observations>
      <products>
          <product>
              <productId>1</productId>
              <productName>produs1</productName>
              <unit>buc</unit>
              <amount_in>2</amount_in>
              <unitPrice_in>6</unitPrice_in>
              <value_in>12</value_in>
			  <VATrate_in>24%</VATrate_in>
              <VAT_in>2.88</VAT_in>			  
              <amount>2</amount>
              <unitPrice>6</unitPrice>
              <value>12</value>
			  <VATrate>24%</VATrate>
              <VAT>2.88</VAT>
          </product>
          <product>
              <productId>2</productId>
              <productName>produs2</productName>
              <unit>buc</unit>
              <amount_in>3</amount_in>
              <unitPrice_in>6</unitPrice_in>
              <value_in>12</value_in>
			  <VATrate_in>24%</VATrate_in>
              <VAT_in>2.88</VAT_in>			  
              <amount>3</amount>
              <unitPrice>12</unitPrice>
              <value>24</value>
			  <VATrate>9%</VATrate>
              <VAT>2.16</VAT>
          </product>		  
      </products>
  </nir>
</addDoc>';
 
 $curl_options = array(
  CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/add_nir.php",
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => "xml_string=$xml_string",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HEADER => false,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_CONNECTTIMEOUT => 5
);
 
$curl = curl_init();
curl_setopt_array( $curl, $curl_options );
$result = curl_exec( $curl );

 //daca raspunsul este o eroare
if (strrpos($result, "Eroare") !== false){
  echo $result;
  die;
}
 
  header('Cache-Control: public');
  header('Content-type: application/pdf');
  //daca se doreste salvata
  //header('Content-Disposition: attachment; filename="invoice.pdf"');
  //daca se doreste vizualizata
  header('Content-Disposition: inline; filename="invoice.pdf"');
  header('Content-Length: '.strlen($result));
  echo $result;
  die;
							


si descrierea tag-urilor XML:

							
<?xml version="1.0" encoding="ISO-8859-1"?>
<addDoc>
  <login>
       <pass>!parola_primita_de_la_facturis_online!</pass>
	   <!-- cod unic firma generat din facturis-online.ro - obligatoriu -->
  </login>  
  <nir>
      <office></office>
	  <!-- denumire punct de lucru din facturis-online.ro - optional -->
      <administration></administration>
	  <!-- denumire gestiune din facturis-online.ro - optional -->
      <number>3</number>
	  <!-- numar NIR - optional -->
      <issueDate>2014-06-11</issueDate>
	  <!-- Data emiterii - obligatoriu -->
      <supplier>furnizor</supplier>
	  <!-- Furnizor - obligatoriu -->
	  <autoNr>nr. auto</autoNr>
	  <!-- Nr. auto - optional -->
      <docType>tip document</docType>
	  <!-- Tipul documentului pe baza caruia se inregistreaza NIR-ul - obligatoriu -->
	  <docNr>nr. document</docNr>
	  <!-- Numarul documentului pe baza caruia se inregistreaza NIR-ul - obligatoriu -->	  
      <observations>...</observations>
	  <!-- Observatii - optional -->
      <products>
          <product>
              <productId>1</productId>
			  <!-- cod produs - optional -->
              <productName>produs1</productName>
			  <!-- nume produs - obligatoriu -->
              <unit>buc</unit>
			  <!-- unitate de masura - obligatoriu -->
              <amount_in>2</amount_in>
			  <!-- cantitate conform document- obligatoriu -->
              <unitPrice_in>6</unitPrice_in>
			  <!-- pret unitar fara TVA achizitie- obligatoriu -->
              <value_in>12</value_in>
			  <!-- valoare totala fara TVA achizitie- obligatoriu -->
			  <VATrate_in>24%</VATrate_in>
			  <!-- Cota TVA achizitie - obligatoriu -->
              <VAT_in>2.88</VAT_in>
			  <!-- valoare TVA achizitie- obligatoriu -->	
              <amount>2</amount>
			  <!-- cantitate receptionata- obligatoriu -->
              <unitPrice>6</unitPrice>
			  <!-- pret unitar fara TVA vanzare- obligatoriu -->
              <value>12</value>
			  <!-- valoare totala fara TVA vanzare- obligatoriu -->
			  <VATrate>24%</VATrate>
			  <!-- Cota TVA vanzare - obligatoriu -->
              <VAT>2.88</VAT>
			  <!-- valoare TVA vanzare- obligatoriu -->	
          </product>
          <product>
              <productId>2</productId>
			  <!-- cod produs - optional -->
              <productName>produs3</productName>
			  <!-- nume produs - obligatoriu -->
              <unit>buc</unit>
			  <!-- unitate de masura - obligatoriu -->
              <amount_in>3</amount_in>
			  <!-- cantitate conform document- obligatoriu -->
              <unitPrice_in>6</unitPrice_in>
			  <!-- pret unitar fara TVA achizitie- obligatoriu -->
              <value_in>18</value_in>
			  <!-- valoare totala fara TVA achizitie- obligatoriu -->
			  <VATrate_in>24%</VATrate_in>
			  <!-- Cota TVA achizitie - obligatoriu -->
              <VAT_in>4.32</VAT_in>
			  <!-- valoare TVA achizitie- obligatoriu -->	
              <amount>3</amount>
			  <!-- cantitate receptionata- obligatoriu -->
              <unitPrice>8</unitPrice>
			  <!-- pret unitar fara TVA vanzare- obligatoriu -->
              <value>24</value>
			  <!-- valoare totala fara TVA vanzare- obligatoriu -->
			  <VATrate>9%</VATrate>
			  <!-- Cota TVA vanzare - obligatoriu -->
              <VAT>2.16</VAT>
			  <!-- valoare TVA vanzare- obligatoriu -->	
          </product>		  
      </products>
  </nir>
</addDoc>
Adaugarea Clientilor


Metoda de adaugare a clientilor se apeleaza la adresa: https://www.facturis-online.ro/facturis/api/add_clients.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

xml_string - textul xml ce contine datele de logare si datele clientului

In cazul in care datele sunt furnizate corect, se introduce clientul si se intoarce un mesaj de succes

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare: 7 - Trebuie completat Nr. Reg./CI
Eroare: 8 - Trebuie completat Cod Fiscal/CNP
...

Va prezentam mai jos modul de apelare al acestei metode in PHP:

$xml_string='<?xml version="1.0" encoding="ISO-8859-1"?>
<addClient>
    <login>
         <pass>!parola_primita_de_la_facturis_online!</pass>
    </login>   
    <client>
        <name>SC TEST SRL</name>
        <clientType>Juridica</clientType>
        <registerNumber>J/1981/2134</registerNumber>
        <taxCode>ro 123455</taxCode>
        <address>Adresa</address>
        <county>Judet</county>
        <bankAccount>roncb343432xxxx</bankAccount>
        <bank>banca</bank>
        <email>email</email>
        <phone>telefon</phone>
        <obs>observatii</obs>
        <deliveryAddress>observatii</deliveryAddress>
    </client>
</addClient>';
 
 $curl_options = array(
    CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/add_clients.php",
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => "xml_string=$xml_string",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CONNECTTIMEOUT => 5
  );
 
  $curl = curl_init();
  curl_setopt_array( $curl, $curl_options );
  $result = curl_exec( $curl );

 //daca raspunsul este o eroare
  if (strrpos($result, "Eroare") !== false){
    echo $result;
    die;
  }

    echo $result;
    die;
							


si descrierea tag-urilor XML:

							
<?xml version="1.0" encoding="ISO-8859-1"?>
<addClient>
    <login>
         <pass>!parola_primita_de_la_facturis_online!</pass>
		 <!-- cod unic firma generat din facturis-online.ro - obligatoriu -->
    </login>   
    <client>
        <name>SC TEST SRL</name>
		<!-- numele complet al clientului - obligatoriu -->
        <clientType>Juridica</clientType>
		<!-- tipul clientului (persoana <Juridica, Fizica>) - obligatoriu -->
        <registerNumber>J/1981/2134</registerNumber>
		<!-- Nr. Reg. Comertului (pt. persoane juridice) / CI  (pt. persoane fizice) - obligatoriu -->
        <taxCode>ro 123455</taxCode>
		<!-- Cod Fiscal (pt. persoane juridice) /CNP (pt. persoane fizice) - obligatoriu -->
        <address>Adresa</address>
		<!-- adresa clientului - obligatoriu -->
        <county>Judet</county>
		<!-- judetul clientului - obligatoriu -->
        <bankAccount>roncb343432xxxx</bankAccount>
		<!-- contul bancar al clientului - optional -->
        <bank>banca</bank>
		<!-- banca clientului - optional -->
        <email>email</email>
		<!-- email-ul clientului - optional -->
        <phone>telefon</phone>
		<!-- telefonul-ul clientului - optional -->
        <obs>observatii</obs>
		<!-- observatii - optional -->
        <deliveryAddress>observatii</deliveryAddress>
		<!-- adresa de livrare - optional -->
    </client>
</addClient>
Adaugarea Produselor


Metoda de adaugare a produselor se apeleaza la adresa: https://www.facturis-online.ro/facturis/api/add_products.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

xml_string - textul xml ce contine datele de logare si datele produsului

In cazul in care datele sunt furnizate corect, se introduce produsul si se intoarce un mesaj de succes

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare: 5 - Trebuie completat codul produsului
Eroare: 6 - Trebuie completat numele produsului
...

Va prezentam mai jos modul de apelare al acestei metode in PHP:

 $xml_string='<?xml version="1.0" encoding="ISO-8859-1"?>
<addProduct>
    <login>
         <pass>!parola_primita_de_la_facturis_online!</pass>
    </login>   
    <product>
        <productId>3</productId>
        <productName>produs3</productName>
        <unit>buc</unit>
        <unitPrice>50</unitPrice>
        <unitPriceWithVAT>50</unitPriceWithVAT>
        <VATproc>24</VATproc>
        <currency>RON</currency>
        <type>Produs</type>
        <category>categorie</category>
        <obs>observatii</obs>
    </product>
</addProduct>';
 
 $curl_options = array(
    CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/add_products.php",
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => "xml_string=$xml_string",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CONNECTTIMEOUT => 5
  );
 
  $curl = curl_init();
  curl_setopt_array( $curl, $curl_options );
  $result = curl_exec( $curl );

 //daca raspunsul este o eroare
  if (strrpos($result, "Eroare") !== false){
    echo $result;
    die;
  }

    echo $result;
    die;
							


si descrierea tag-urilor XML:

							
<?xml version="1.0" encoding="ISO-8859-1"?>
<addProduct>
    <login>
         <pass>!parola_primita_de_la_facturis_online!</pass>
		 <!-- cod unic firma generat din facturis-online.ro - obligatoriu -->
    </login>   
    <product>
        <productId>3</productId>
		<!-- cod unic produs - obligatoriu -->
        <productName>produs3</productName>
		<!-- nume produs - obligatoriu -->
        <unit>buc</unit>
		<!-- unitate de masura - optional -->
        <unitPrice>50</unitPrice>
		<!-- pret unitar fara TVA - optional -->
        <unitPriceWithVAT>50</unitPriceWithVAT>
		<!-- pret unitar cu TVA - optional -->
        <VATproc>24</VATproc>
		<!-- procent TVA - optional -->
        <currency>RON</currency>
		<!-- moneda TVA - optional -->
        <type>Produs</type>
		<!-- moneda Produs, Altceva, Inactiv - optional -->
        <category>categorie</category>
		<!-- categorie - optional -->
        <obs>observatii</obs>
		<!-- observatii - optional -->
    </product>
</addProduct>
Modificarea Clientilor


Metoda de modificare a clientilor se apeleaza la adresa: https://www.facturis-online.ro/facturis/api/modify_clients.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

xml_string - textul xml ce contine datele de logare si datele clientului

In cazul in care datele sunt furnizate corect, se modifica clientul si se intoarce un mesaj de succes

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare: 7 - Trebuie completat Nr. Reg./CI
Eroare: 8 - Trebuie completat Cod Fiscal/CNP
...

Va prezentam mai jos modul de apelare al acestei metode in PHP:

$xml_string='<?xml version="1.0" encoding="ISO-8859-1"?>
<addClient>
    <login>
         <pass>!parola_primita_de_la_facturis_online!</pass>
    </login>   
    <client>
        <name>SC TEST SRL</name>
        <clientType>Juridica</clientType>
        <registerNumber>J/1981/2134</registerNumber>
        <taxCode>ro 123455</taxCode>
        <address>Adresa</address>
        <county>Judet</county>
        <bankAccount>roncb343432xxxx</bankAccount>
        <bank>banca</bank>
        <email>email</email>
        <phone>telefon</phone>
        <obs>observatii</obs>
        <deliveryAddress>observatii</deliveryAddress>
    </client>
</addClient>';
 
 $curl_options = array(
    CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/modify_clients.php",
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => "xml_string=$xml_string",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CONNECTTIMEOUT => 5
  );
 
  $curl = curl_init();
  curl_setopt_array( $curl, $curl_options );
  $result = curl_exec( $curl );

 //daca raspunsul este o eroare
  if (strrpos($result, "Eroare") !== false){
    echo $result;
    die;
  }

    echo $result;
    die;
							


si descrierea tag-urilor XML:

							
<?xml version="1.0" encoding="ISO-8859-1"?>
<addClient>
    <login>
         <pass>!parola_primita_de_la_facturis_online!</pass>
		 <!-- cod unic firma generat din facturis-online.ro - obligatoriu -->
    </login>   
    <client>
        <name>SC TEST SRL</name>
		<!-- numele complet al clientului - obligatoriu -->
        <clientType>Juridica</clientType>
		<!-- tipul clientului (persoana <Juridica, Fizica>) - obligatoriu -->
        <registerNumber>J/1981/2134</registerNumber>
		<!-- Nr. Reg. Comertului (pt. persoane juridice) / CI  (pt. persoane fizice) - obligatoriu -->
        <taxCode>ro 123455</taxCode>
		<!-- Cod Fiscal (pt. persoane juridice) /CNP (pt. persoane fizice) - obligatoriu -->
        <address>Adresa</address>
		<!-- adresa clientului - obligatoriu -->
        <county>Judet</county>
		<!-- judetul clientului - obligatoriu -->
        <bankAccount>roncb343432xxxx</bankAccount>
		<!-- contul bancar al clientului - optional -->
        <bank>banca</bank>
		<!-- banca clientului - optional -->
        <email>email</email>
		<!-- email-ul clientului - optional -->
        <phone>telefon</phone>
		<!-- telefonul-ul clientului - optional -->
        <obs>observatii</obs>
		<!-- observatii - optional -->
        <deliveryAddress>observatii</deliveryAddress>
		<!-- adresa de livrare - optional -->
    </client>
</addClient>
Modificarea Produselor


Metoda de modificare a produselor se apeleaza la adresa: https://www.facturis-online.ro/facturis/api/modify_products.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

xml_string - textul xml ce contine datele de logare si datele produsului

In cazul in care datele sunt furnizate corect, se modifica produsul si se intoarce un mesaj de succes

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare: 5 - Trebuie completat codul produsului
Eroare: 6 - Trebuie completat numele produsului
...

Va prezentam mai jos modul de apelare al acestei metode in PHP:

 $xml_string='<?xml version="1.0" encoding="ISO-8859-1"?>
<addProduct>
    <login>
         <pass>!parola_primita_de_la_facturis_online!</pass>
    </login>   
    <product>
        <productId>3</productId>
        <productName>produs3</productName>
        <unit>buc</unit>
        <unitPrice>50</unitPrice>
        <unitPriceWithVAT>50</unitPriceWithVAT>
        <VATproc>24</VATproc>
        <currency>RON</currency>
        <type>Produs</type>
        <category>categorie</category>
        <obs>observatii</obs>
    </product>
</addProduct>';
 
 $curl_options = array(
    CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/modify_products.php",
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => "xml_string=$xml_string",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CONNECTTIMEOUT => 5
  );
 
  $curl = curl_init();
  curl_setopt_array( $curl, $curl_options );
  $result = curl_exec( $curl );

 //daca raspunsul este o eroare
  if (strrpos($result, "Eroare") !== false){
    echo $result;
    die;
  }

    echo $result;
    die;
							


si descrierea tag-urilor XML:

							
<?xml version="1.0" encoding="ISO-8859-1"?>
<addProduct>
    <login>
         <pass>!parola_primita_de_la_facturis_online!</pass>
		 <!-- cod unic firma generat din facturis-online.ro - obligatoriu -->
    </login>   
    <product>
        <productId>3</productId>
		<!-- cod unic produs - obligatoriu -->
        <productName>produs3</productName>
		<!-- nume produs - obligatoriu -->
        <unit>buc</unit>
		<!-- unitate de masura - optional -->
        <unitPrice>50</unitPrice>
		<!-- pret unitar fara TVA - optional -->
        <unitPriceWithVAT>50</unitPriceWithVAT>
		<!-- pret unitar cu TVA - optional -->
        <VATproc>24</VATproc>
		<!-- procent TVA - optional -->
        <currency>RON</currency>
		<!-- moneda TVA - optional -->
        <type>Produs</type>
		<!-- moneda Produs, Altceva, Inactiv - optional -->
        <category>categorie</category>
		<!-- categorie - optional -->
        <obs>observatii</obs>
		<!-- observatii - optional -->
    </product>
</addProduct>
Modificarea statusului Facturilor, Proformelor, Avizelor


Metoda de modificare a statusului facturilor, proformelor si avizelor se apeleaza la adresa: https://www.facturis-online.ro/facturis/api/modify_invoice.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

xml_string - textul xml ce contine datele de logare si datele produsului

In cazul in care datele sunt furnizate corect, se modifica statusul si se intoarce un mesaj de succes

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare: 10 - Trebuie sa completati seria documentului
Eroare: 11 - Trebuie sa completati numarul documentului
...

Va prezentam mai jos modul de apelare al acestei metode in PHP:

$xml_string='<?xml version="1.0" encoding="ISO-8859-1"?>
<addInvoice>
  <login>
       <pass>!parola_primita_de_la_facturis_online!</pass>
  </login>   
  <invoice>
      <office></office>
      <type>F</type>
      <series>XXXX</series>
      <number>3</number>
	  <status>Anulata</status>
  </invoice>
</addInvoice>';
 
 $curl_options = array(
  CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/modify_invoice.php",
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => "xml_string=$xml_string",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HEADER => false,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_CONNECTTIMEOUT => 5
);
 
$curl = curl_init();
curl_setopt_array( $curl, $curl_options );
$result = curl_exec( $curl );

 //daca raspunsul este o eroare
if (strrpos($result, "Eroare") !== false){
  echo $result;
  die;
}
    echo $result;
    die;
  
							


si descrierea tag-urilor XML:

							
<?xml version="1.0" encoding="ISO-8859-1"?>
<addInvoice>
  <login>
       <pass>!parola_primita_de_la_facturis_online!</pass>
	    <!-- cod unic firma generat din facturis-online.ro - obligatoriu -->
  </login>   
  <invoice>
      <office></office>
	  <!-- denumire punct de lucru din facturis-online.ro - optional -->
      <type>F</type>
	  <!-- tipul documentului (F - factura, P - proforma, A - aviz) - obligatoriu -->
      <series>XXXX</series>
	  <!-- seria documentului - obligatoriu -->
      <number>3</number>
	  <!-- numarul documentului - obligatoriu -->
	  <status>Anulata</status>
	  <!-- statusul documentului (Factura - Emisa,Platita,Partial Platita,Anulata; Proforma - Emisa,Transformata,Anulata; Aviz - Emisa,Anulata) - obligatoriu -->
  </invoice>
</addInvoice>
Listarea / Salvarea Facturilor, Proformelor, Avizelor


Metoda de salvare a facturilor, proformelor si avizelor se apeleaza la adresa: https://www.facturis-online.ro/facturis/api/print_invoice.php

Iata mai jos modul de apelare al acestei metode

Se face un POST pe pagina cu urmatorii parametrii:

xml_string - textul xml ce contine datele de logare si datele produsului

In cazul in care datele sunt furnizate corect, se returneaza documentul in format pdf

In cazul in care apare o eroare aceasta va fi listata ca in exemplele urmatoare:

Eroare: 10 - Trebuie sa completati seria documentului
Eroare: 11 - Trebuie sa completati numarul documentului
...

Va prezentam mai jos modul de apelare al acestei metode in PHP:

$xml_string='<?xml version="1.0" encoding="ISO-8859-1"?>
<addInvoice>
  <login>
       <pass>!parola_primita_de_la_facturis_online!</pass>
  </login>   
  <invoice>
      <type>F</type>
      <series>XXXX</series>
      <number>3</number>
  </invoice>
</addInvoice>';
 
 $curl_options = array(
  CURLOPT_URL => "https://www.facturis-online.ro/facturis/api/print_invoice.php",
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => "xml_string=$xml_string",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HEADER => false,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_CONNECTTIMEOUT => 5
);
 
$curl = curl_init();
curl_setopt_array( $curl, $curl_options );
$result = curl_exec( $curl );

 //daca raspunsul este o eroare
if (strrpos($result, "Eroare") !== false){
  echo $result;
  die;
}
 
  header('Cache-Control: public');
  header('Content-type: application/pdf');
  //daca se doreste salvata
  //header('Content-Disposition: attachment; filename="invoice.pdf"');
  //daca se doreste vizualizata
  header('Content-Disposition: inline; filename="invoice.pdf"');
  header('Content-Length: '.strlen($result));
  echo $result;
  die; 
  
							


si descrierea tag-urilor XML:

							
<?xml version="1.0" encoding="ISO-8859-1"?>
<addInvoice>
  <login>
       <pass>!parola_primita_de_la_facturis_online!</pass>
	    <!-- cod unic firma generat din facturis-online.ro - obligatoriu -->
  </login>   
  <invoice>
      <type>F</type>
	  <!-- tipul documentului (F - factura, P - proforma, A - aviz) - obligatoriu -->
      <series>XXXX</series>
	  <!-- seria documentului - obligatoriu -->
      <number>3</number>
	  <!-- numarul documentului - obligatoriu -->
  </invoice>
</addInvoice>


Modulul API poate fi folosit GRATUIT de catre toti clientii Facturis Online. Speram ca aceasta interfata de interconectare sa va fie de folos in automatizarea sincronizarii datelor, va stam la dispozitie pentru informatii suplimentare daca e cazul si asteptam noutati in ceea ce priveste integrarea de la dvs.