php
1,
"tipo_comprobante" => 11, // Factura C
"concepto" => 1,
"doc_tipo" => 80,
"doc_nro" => 20002307554, // CUIT de prueba válido
"cuit_emisor" => 20002307554, // Colocar el Cuit Emisor
"condicion_iva_receptor" => 5,
"fecha_comprobante" => date('Ymd'),
"importe_total" => 2420,
"importe_gravado" => 2420,
"importe_iva" => 0,
"generar_pdf" => true,
"items" => [
[
"codigo" => "001",
"descripcion" => "Producto A",
"cantidad" => 2,
"precio_unitario" => 1000,
"importeItem" => 2000,
"Alic" => 21,
"UnidadMedida" => "unidades"
],
[
"codigo" => "002",
"descripcion" => "Producto B",
"cantidad" => 1,
"precio_unitario" => 420,
"importeItem" => 420,
"Alic" => 21,
"UnidadMedida" => "unidades"
]
]
];
curl_setopt_array($curl, array(
CURLOPT_URL => "https:///api.viasrv.com/api/factura",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer tutoken",
"Idempotency-Key: " . uniqid(),
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
echo "HTTP Code: " . $httpCode . "\n\n";
if ($err) {
echo "cURL Error #:" . $err . "\n";
} else {
echo "Respuesta:\n" . $response . "\n";
}
?>
JavaScript (Fetch API)
const token = 'tutoken';
const url = 'https://api.viasrv.com/api/factura';
const data = {
punto_venta: 1,
tipo_comprobante: 11, // Factura C
concepto: 1,
doc_tipo: 80,
doc_nro: 20002307554, // CUIT de prueba válido
cuit_emisor: 20002307554,
condicion_iva_receptor: 5,
fecha_comprobante: new Date().toISOString().slice(0,10).replace(/-/g,""), // YYYYMMDD
importe_total: 2420,
importe_gravado: 2420,
importe_iva: 0,
generar_pdf: true,
items: [
{
codigo: "001",
descripcion: "Producto A",
cantidad: 2,
precio_unitario: 1000,
importeItem: 2000,
Alic: 21,
UnidadMedida: "unidades"
},
{
codigo: "002",
descripcion: "Producto B",
cantidad: 1,
precio_unitario: 420,
importeItem: 420,
Alic: 21,
UnidadMedida: "unidades"
}
]
};
fetch(url, {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Idempotency-Key': 'id_' + Math.random().toString(36).substr(2, 9),
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json().then(json => ({ status: response.status, body: json })))
.then(res => {
console.log("HTTP Code:", res.status);
console.log("Respuesta:", res.body);
})
.catch(err => console.error("Error:", err));
Python
import requests
import datetime
import uuid
url = "https://api.viasrv.com/api/factura"
token = "tutoken"
data = {
"punto_venta": 1,
"tipo_comprobante": 11, # Factura C
"concepto": 1,
"doc_tipo": 80,
"doc_nro": 20002307554, # CUIT de prueba válido
"cuit_emisor": 20002307554,
"condicion_iva_receptor": 5,
"fecha_comprobante": datetime.datetime.now().strftime("%Y%m%d"),
"importe_total": 2420,
"importe_gravado": 2420,
"importe_iva": 0,
"generar_pdf": True,
"items": [
{
"codigo": "001",
"descripcion": "Producto A",
"cantidad": 2,
"precio_unitario": 1000,
"importeItem": 2000,
"Alic": 21,
"UnidadMedida": "unidades"
},
{
"codigo": "002",
"descripcion": "Producto B",
"cantidad": 1,
"precio_unitario": 420,
"importeItem": 420,
"Alic": 21,
"UnidadMedida": "unidades"
}
]
}
headers = {
"Authorization": f"Bearer {token}",
"Idempotency-Key": str(uuid.uuid4()),
"Content-Type": "application/json"
}
try:
response = requests.post(url, json=data, headers=headers)
print(f"HTTP Code: {response.status_code}")
print("Respuesta:")
print(response.text)
except requests.exceptions.RequestException as err:
print(f"Error en la conexión: {err}")
C# (.NET Core / HttpClient)
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.viasrv.com/api/factura";
var token = "tutoken";
var payload = new
{
punto_venta = 1,
tipo_comprobante = 11, // Factura C
concepto = 1,
doc_tipo = 80,
doc_nro = 20002307554, // CUIT válido
cuit_emisor = 20002307554,
condicion_iva_receptor = 5,
fecha_comprobante = DateTime.Now.ToString("yyyyMMdd"),
importe_total = 2420,
importe_gravado = 2420,
importe_iva = 0,
generar_pdf = true,
items = new[]
{
new { codigo = "001", descripcion = "Producto A", cantidad = 2, precio_unitario = 1000, importeItem = 2000, Alic = 21, UnidadMedida = "unidades" },
new { codigo = "002", descripcion = "Producto B", cantidad = 1, precio_unitario = 420, importeItem = 420, Alic = 21, UnidadMedida = "unidades" }
}
};
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
client.DefaultRequestHeaders.Add("Idempotency-Key", Guid.NewGuid().ToString());
var json = JsonSerializer.Serialize(payload);
var content = new StringContent(json, Encoding.UTF8, "application/json");
try
{
var response = await client.PostAsync(url, content);
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine($"HTTP Code: {(int)response.StatusCode}");
Console.WriteLine("Respuesta:\n" + responseBody);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
}