Crear albarán
https://api.afer.pro/crearAlbaran
Crea un albarán de venta con sus líneas y sus movimientos de inventario, sin emitir factura.
Útil cuando la venta se entrega antes de facturar o cuando agrupas varias operaciones en una factura posterior. El albarán se crea revisado, con numeración automática y fecha de hoy.
El cliente se resuelve igual que en crearFactura: puedes enviar cliente.id si ya conoces el cliente de facturación, o el objeto cliente completo para buscarlo por CIF o darlo de alta.
Las líneas con artículo en modo venta generan su movimiento de inventario y consolidan stock, igual que la factura.
Envía tus claves API en las cabeceras X-API-KEY y X-API-SECRET. La cuenta sobre la que se opera se resuelve automáticamente a partir de la clave. Cómo obtener tus claves →
Parámetros del cuerpo
El cuerpo de la petición es un objeto JSON con Content-Type: application/json.
clienteobjectobligatorio | Cliente de facturación. Envía {"id": 123} para usar un cliente existente, o el objeto completo (mismos campos que en crearFactura) para alta/actualización por CIF. |
idintopcional | ID de un cliente de facturación existente. Si se envía, se usa directamente. |
nombre_fiscal, cif, direccion…stringopcional | Datos de alta si no envías id. Mismos campos que el objeto cliente de crearFactura. |
pedidoobjectobligatorio | Cabecera de la operación. |
obrastringobligatorio | Concepto o referencia de la operación. |
detalles_operacionstringopcional | Observaciones. Admite HTML. |
promo_codestringopcional | Código promocional aplicado. |
detallesarrayobligatorio | Líneas del albarán. Misma estructura que las líneas de crearFactura: cantidad, descripcion, importe_unitario, iva, descuento, articulo_fk, variacion_articulo_fk, descripcion_ampliada, startDate, endDate. |
Ejemplo de petición
curl -X POST 'https://api.afer.pro/crearAlbaran' \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: afer_tk_TU_TOKEN' \
-H 'X-API-SECRET: afer_sk_TU_SECRET' \
-d '{
"cliente": {
"nombre_fiscal": "Inmaculada Calderón Puyol",
"cif": "31696215N",
"direccion": "Rioja, 1",
"cp": "11407",
"poblacion": "Jerez de la Frontera",
"provincia": "Cádiz",
"pais": "España",
"email": "inma@ejemplo.com"
},
"pedido": {
"obra": "Entrega pedido web 1786212236453"
},
"detalles": [
{
"cantidad": 2,
"articulo_fk": 405171,
"variacion_articulo_fk": 0,
"descripcion": "Shower gel Fig fields of the island",
"importe_unitario": 6.6115702,
"iva": 21
}
]
}'
<?php
$data = [
'cliente' => [
'nombre_fiscal' => 'Inmaculada Calderón Puyol',
'cif' => '31696215N',
'direccion' => 'Rioja, 1',
'cp' => '11407',
'poblacion' => 'Jerez de la Frontera',
'provincia' => 'Cádiz',
'pais' => 'España',
'email' => 'inma@ejemplo.com',
],
'pedido' => [
'obra' => 'Entrega pedido web 1786212236453',
],
'detalles' => [
0 => [
'cantidad' => 2,
'articulo_fk' => 405171,
'variacion_articulo_fk' => 0,
'descripcion' => 'Shower gel Fig fields of the island',
'importe_unitario' => 6.6115702,
'iva' => 21,
],
],
];
$ch = curl_init('https://api.afer.pro/crearAlbaran');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-API-KEY: afer_tk_TU_TOKEN',
'X-API-SECRET: afer_sk_TU_SECRET',
]);
$respuesta = json_decode(curl_exec($ch), true);
curl_close($ch);
const respuesta = await fetch('https://api.afer.pro/crearAlbaran', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': 'afer_tk_TU_TOKEN',
'X-API-SECRET': 'afer_sk_TU_SECRET'
},
body: JSON.stringify({
"cliente": {
"nombre_fiscal": "Inmaculada Calderón Puyol",
"cif": "31696215N",
"direccion": "Rioja, 1",
"cp": "11407",
"poblacion": "Jerez de la Frontera",
"provincia": "Cádiz",
"pais": "España",
"email": "inma@ejemplo.com"
},
"pedido": {
"obra": "Entrega pedido web 1786212236453"
},
"detalles": [
{
"cantidad": 2,
"articulo_fk": 405171,
"variacion_articulo_fk": 0,
"descripcion": "Shower gel Fig fields of the island",
"importe_unitario": 6.6115702,
"iva": 21
}
]
})
});
const resultado = await respuesta.json();
Respuesta
Devuelve el identificador cifrado del albarán creado.
{
"errorCode": 200,
"errorMsg": "",
"data": "aBc123XyZ456…"
}
- El albarán no genera cobros ni vencimientos: estos se crean al facturarlo desde Afer.
- Las líneas con
startDate/endDatecomputan como reservas en consultarDisponibilidadArticulos.