Recibos electrónicos
Un e-receipt es la versión digital de un ticket o nota de venta. Es un comprobante de pago que puedes darle a tu cliente sin solicitarle sus datos fiscales. Dicho comprobante incluye toda la información de la venta con el propósito de que pueda facturarse si el cliente lo solicita y también para incluirse dentro de una factura global.
Al crear un e-receipt en Facturapi, tus clientes tendrán acceso a un sitio web a donde podrán llenar sus datos fiscales y descargar su facuta (portal de autofactura).
También puedes crear una factura global al final del mes que incluya todos aquellos recibos que no fueron facturados.
Crear un recibo
Para ver las descripciones de todos los parámetros, consulta la referencia completa del método Crear Recibo.
Opcionalmente, puedes asociar un cliente al recibo enviando el campo customer (ya sea
el ID de un cliente existente o el objeto del cliente para crearlo).
- Node.js
- C#
- Java
- PHP
- cURL
const facturapi = new Facturapi('sk_test_API_KEY');
const receipt = await facturapi.receipts.create({
folio_number: 1234,
payment_form: Facturapi.PaymentForm.DINERO_ELECTRONICO,
items: [{
quantity: 1,
product: {
description: 'Ukelele',
product_key: '60131324',
price: 345.60,
sku: 'ABC1234'
}
}]
});
var facturapi = new FacturapiClient("sk_test_API_KEY");
var receipt = await facturapi.Receipt.CreateAsync(new Dictionary<string, object>
{
["folio_number"] = 1234,
["payment_form"] = Facturapi.PaymentForm.DINERO_ELECTRONICO,
["items"] = new Dictionary<string, object>[]
{
new Dictionary<string, object>
{
["description"] = "Ukelele",
["product_key"] = "60131324",
["price"] = 345.60,
["sku"] = "ABC1234"
}
}
});
import io.facturapi.Facturapi;
import java.util.List;
import java.util.Map;
Facturapi facturapi = new Facturapi("sk_test_API_KEY");
var receipt = facturapi.receipts().create(Map.of(
"folio_number", 1234,
"payment_form", "03",
"items", List.of(Map.of(
"quantity", 1,
"product", Map.of(
"description", "Ukelele",
"product_key", "60131324",
"price", 345.60,
"sku", "ABC1234"
)
))
));
$facturapi = new Facturapi("sk_test_API_KEY");
$receipt = $facturapi->Receipts->create([
"folio_number" => 1234,
"payment_form" => "03",
"items" => [
[
"description" => "Ukelele",
"product_key" => "60131324",
"price" => 345.60,
"sku" => "ABC1234"
]
]
]);
curl https://www.facturapi.io/v2/receipts \
-H "Authorization: Bearer sk_test_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"folio_number": 1234,
"payment_form": "03",
"items": [{
"quantity": 1,
"product": {
"description": "Ukelele",
"product_key": "60131324",
"price": 345.60,
"sku": "ABC1234"
}
}]
}'
Cliente asociado al recibo
Un recibo puede existir sin cliente asociado. Ese estado significa que el destino de facturación todavía no está decidido.
Puedes asociar un cliente al recibo desde el método
Crear Recibo, enviando el campo
customer, o después con
Asignar o reasignar cliente a recibo.
En ambos casos puedes enviar el ID de un cliente existente o un objeto para crear uno nuevo.
curl https://www.facturapi.io/v2/receipts/58e93bd8e86eb318b019743d \
-H "Authorization: Bearer sk_test_API_KEY" \
-H "Content-Type: application/json" \
-X PUT \
-d '{
"customer": "58e93bd8e86eb318b0197456"
}'
Portal de Autofactura
Cuando creas un e-receipt, tienes la opción de enviarlo por correo electrónico a tu cliente. En el correo se incluye un enlace a un portal de autofactura donde tu cliente podrá llenar sus datos fiscales y descargar su factura.
Para más información consulta el artículo de Autofactura.
Formas de facturar recibos
Los recibos abiertos pueden facturarse a un cliente específico o incluirse en una
factura global a PUBLICO EN GENERAL.
- Facturar un recibo crea una factura
para un solo recibo. Si envías
customer, ese cliente se usa como receptor y sobrescribe el cliente asignado previamente al recibo. Si omitescustomer, el recibo debe tener un cliente asignado. - Facturar múltiples recibos
crea una factura para varios recibos seleccionados por
key. Si envíascustomer, ese cliente se usa para todos los recibos incluidos. Si omitescustomer, todos los recibos deben tener asignado el mismo cliente; si hay clientes distintos o recibos sin cliente, la operación falla. - Vista previa PDF de factura múltiple
y
dry_runvalidan las mismas reglas de cliente que la creación real, pero no persisten cambios. - Factura global también agrupa
múltiples recibos, pero siempre los factura al cliente genérico
PUBLICO EN GENERAL. Los recibos incluidos quedan asociados a ese cliente y cambian sustatusa"invoiced_globally".
Facturar un recibo
Por medio del método Facturar Recibo puedes convertir
un e-receipt en una factura a un cliente específico. Si el recibo ya tiene un cliente
asignado, puedes omitir customer; si envías customer, ese cliente será el receptor
de la factura.
- Node.js
- C#
- PHP
- cURL
const invoice = await facturapi.receipts.invoice(receipt.id, {
customer: {
legal_name: 'Roger Watters',
tax_id: 'ROWA121212A11',
email: 'roger@pinkfloyd.com'
},
folio_number: 914,
series: 'F'
});
var invoice = await facturapi.Receipt.InvoiceAsync(receipt.Id, new Dictionary<string, object>
{
["customer"] = new Dictionary<string, object>
{
["legal_name"] = "Roger Watters",
["tax_id"] = "ROWA121212A11",
["email"] = "roger@pinkfloyd.com"
},
["folio_number"] = 914,
["series"] = "F"
});
$invoice = $facturapi->Receipts->invoice($receipt->id, [
"customer" => [
"legal_name" => "Roger Watters",
"tax_id" => "ROWA121212A11",
"email" => "roger@pinkfloyd.com"
],
"folio_number" => 914,
"series" => "F"
]);
curl https://www.facturapi.io/v2/receipts/5ebd8e56f5687a013ca0df46/invoice \
-H "Authorization: Bearer sk_test_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"legal_name": "Roger Watters",
"tax_id": "ROWA121212A11",
"email": "roger@pinkfloyd.com"
},
"folio_number": 914,
"series": "F"
}'
Facturar múltiples recibos
El método Facturar múltiples recibos
crea una sola factura a partir de recibos abiertos seleccionados por key.
También puedes enviar dry_run: true para validar la operación y obtener un resumen
sin crear la factura, o usar la vista previa PDF.