Saltar al contenido principal

API de Cotizaciones (CRM)

Cuando un cliente le pide una cotización desde su página web, o su equipo de ventas trabaja con una herramienta propia que necesita hablar con Zauru, estos endpoints son el puente. El módulo de CRM de Zauru expone una serie de endpoints JSON que le permiten integrar sus aplicaciones externas con las funcionalidades de cotización, catálogo de productos, creación de órdenes de venta y gestión de contactos.

Obtener ítems disponibles para la venta

Devuelve el catálogo de ítems y paquetes (bundles) disponibles para la venta, agrupados por categoría, junto con sus precios, existencias y descuentos aplicables.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/get_items_for_sale.json?client=1

Esto devolverá un JSON similar a este:

{
"": {
"958866": [
"Carga de información - CINF",
{
"flexible": true,
"price": null
},
"infinite",
[],
"",
"",
{
"payee_id": null
}
],
"22986": [
"cheque rechazado - O29",
{
"flexible": true,
"price": "100.0"
},
"infinite",
[],
"",
"",
{
"payee_id": null
}
]
},
"cuotas mensuales": {
"101018": [
"10 usuarios - CM62",
{
"flexible": false,
"price": "931.0"
},
"infinite",
[
{
"discount_id": 1,
"discount_name": "2 módulos",
"discount_amount": null,
"discount_percent": 0.2872,
"remove_decimals": true,
"min_quantity_threshold": 2
},
{
"discount_id": 2,
"discount_name": "3 módulos",
"discount_amount": null,
"discount_percent": 0.398,
"remove_decimals": true,
"min_quantity_threshold": 3
}
],
"",
"",
{
"payee_id": null
}
],
"101019": [
"11 usuarios - CM63",
{
"flexible": false,
"price": "982.0"
},
"infinite",
[
{
"discount_id": 1,
"discount_name": "2 módulos",
"discount_amount": null,
"discount_percent": 0.2872,
"remove_decimals": true,
"min_quantity_threshold": 2
},
{
"discount_id": 2,
"discount_name": "3 módulos",
"discount_amount": null,
"discount_percent": 0.398,
"remove_decimals": true,
"min_quantity_threshold": 3
}
],
"",
"",
{
"payee_id": null
}
]
}
}

Obtener ítems disponibles para la venta con imágenes

Igual que el anterior, pero incluye las imágenes codificadas de cada ítem.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/get_items_for_sale_with_images.json?client=1

Esto devolverá un JSON similar a este:

{
"": {
"958866": [
"Carga de información - CINF",
{
"flexible": true,
"price": null
},
"infinite",
[],
{
"url": null,
"thumbnail_fill": {
"url": null
}
},
"",
{
"payee_id": null
}
],
"22986": [
"cheque rechazado - O29",
{
"flexible": true,
"price": "100.0"
},
"infinite",
[],
{
"url": null,
"thumbnail_fill": {
"url": null
}
},
"",
{
"payee_id": null
}
]
},
"cuotas mensuales": {
"101018": [
"10 usuarios - CM62",
{
"flexible": false,
"price": "931.0"
},
"infinite",
[
{
"discount_id": 1,
"discount_name": "2 módulos",
"discount_amount": null,
"discount_percent": 0.2872,
"remove_decimals": true,
"min_quantity_threshold": 2
},
{
"discount_id": 2,
"discount_name": "3 módulos",
"discount_amount": null,
"discount_percent": 0.398,
"remove_decimals": true,
"min_quantity_threshold": 3
}
],
{
"url": "http://res.cloudinary.com/hurynnu8i/image/upload/v1498690031/item101018_lkbbwdodsywwtb9mq5xb.png",
"thumbnail_fill": {
"url": "http://res.cloudinary.com/hurynnu8i/image/upload/b_rgb:fff,c_pad,g_center,h_80,w_80/v1498690031/item101018_lkbbwdodsywwtb9mq5xb.png"
}
},
"",
{
"payee_id": null
}
],
"101019": [
"11 usuarios - CM63",
{
"flexible": false,
"price": "982.0"
},
"infinite",
[
{
"discount_id": 1,
"discount_name": "2 módulos",
"discount_amount": null,
"discount_percent": 0.2872,
"remove_decimals": true,
"min_quantity_threshold": 2
},
{
"discount_id": 2,
"discount_name": "3 módulos",
"discount_amount": null,
"discount_percent": 0.398,
"remove_decimals": true,
"min_quantity_threshold": 3
}
],
{
"url": "http://res.cloudinary.com/hurynnu8i/image/upload/v1498690131/item101019_whyopb33ssir5mlvwp20.png",
"thumbnail_fill": {
"url": "http://res.cloudinary.com/hurynnu8i/image/upload/b_rgb:fff,c_pad,g_center,h_80,w_80/v1498690131/item101019_whyopb33ssir5mlvwp20.png"
}
},
"",
{
"payee_id": null
}
]
}
}

Obtener agencias válidas para un conjunto de ítems

Dado un listado de ítems y cantidades, devuelve las agencias que tienen existencias suficientes para cumplir con el pedido.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"items": [
{"id": "1", "quantity": 5},
{"id": "b2", "quantity": 3}
]
}' \
https://app.zauru.com/crm/quotes/get_valid_agencies_for_items.json

Esto devolverá un JSON similar a este:

{
"status": 500,
"data": [
{
"id": 1,
"name": "Tienda",
"items": [
{
"max": 0,
"item": "b2"
}
]
},
{
"id": 2,
"name": "central",
"items": [
{
"max": 0,
"item": "b2"
}
]
}
]
}

Obtener vendedores activos

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/active_sellers.json

Esto devolverá un JSON similar a este:

{
"1": "Empleado Vendedor Senior",
"93": "Brian"
}

Obtener etiquetas activas

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/active_tags.json

Esto devolverá un JSON similar a este:

{
"90": "implementaciones zauru",
"2005": "ingreso de póliza(s)"
}

Obtener monedas activas

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/active_currencies.json

Esto devolverá un JSON similar a este:

{
"1": [
"Quetzal",
"Q",
"GTQ"
],
"3": [
"Lempira",
"L",
"LHN"
]
}

Obtener métodos de contacto

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/contact_methods.json

Esto devolverá un JSON similar a este:

{
"4": "telefono",
"85": "presencial"
}

Obtener categorías de beneficiarios

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/payee_categories.json

Esto devolverá un JSON similar a este:

{
"453": "4 a 6",
"5931": "Cliente Ejemplo, SRL"
}

Obtener información del vendedor

Devuelve la información del vendedor y de su entidad (empresa).

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/seller_info.json?seller_id=1

Esto devolverá un JSON similar a este:

{
"seller": {
"id": 1,
"name": "Empleado Vendedor Senior",
"email": "vendedor@ejemplo.com",
"phone_number": "5555-0001"
},
"entity": {
"id": 2,
"name": "Empresa Ejemplo, S.A.",
"logo": {
"url": "http://res.cloudinary.com/hurynnu8i/image/upload/v1484748859/logo2_rgtgpkt22jsgrvyjxcii.png",
"thumb": {
"url": "http://res.cloudinary.com/hurynnu8i/image/upload/c_scale,h_50,w_50/v1484748859/logo2_rgtgpkt22jsgrvyjxcii.png"
},
"standard": {
"url": "http://res.cloudinary.com/hurynnu8i/image/upload/c_fit,h_200,w_400/v1484748859/logo2_rgtgpkt22jsgrvyjxcii.png"
},
"header": {
"url": "http://res.cloudinary.com/hurynnu8i/image/upload/c_fit,h_200,w_1000/v1484748859/logo2_rgtgpkt22jsgrvyjxcii.png"
}
}
}
}

Obtener términos de pago activos

Devuelve los términos de pago aplicables a un cliente específico según su categoría.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/active_payment_terms.json?client=1

Esto devolverá un JSON similar a este:

{
"3444": "implementaciones ejemplo",
"3443": "mensualidades ejemplo"
}

Obtener descuentos por término de pago

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/discounts.json?payment_term=1

Esto devolverá un JSON similar a este:

{}

Obtener nombre de una entidad

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/1/entity_name.json

Esto devolverá un JSON similar a este:

{
"name": "Entidad Ejemplo, S.A."
}

Obtener plantillas de impresión disponibles para cotizaciones

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/crm/quotes/print_templates.json

Esto devolverá un JSON similar a este:

{
"811": "Cotización de Contratos",
"973": "Cotización de Factura"
}

Crear una cotización efímera

Crea un objeto de cotización efímero (no se guarda permanentemente) útil para previsualizar o calcular totales.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"taxable": "1",
"contact_tin": "C/F",
"contact_name": "CONSUMIDOR FINAL",
"date_raw": "2024-05-01",
"subtotal": "100.00",
"total": "100.00",
"payment_term_id": "2",
"entity_id": "1",
"creator_id": "1",
"quote_details_attributes": [
{"item_id": "1", "quantity": "1", "unit_price": "100.00"}
]
}' \
https://app.zauru.com/crm/quotes/new_quote.json

Generar HTML de una cotización desde una plantilla

Genera el HTML de la cotización usando una plantilla de impresión específica. Requiere el encabezado Quote-Type con valor INVOICE, CONTRACT o CASE.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-H "Quote-Type: INVOICE" \
-X POST \
-d '{
"print_template_id": "1",
"quote": {
"taxable": "1",
"date": "2024-05-01",
"subtotal": "100.00",
"total": "100.00"
},
"payee": {
"name": "Cliente Prueba",
"tin": "C/F"
}
}' \
https://app.zauru.com/crm/quotes/get_html_from_print_template.json

Esto devolverá un JSON similar a este:

{
"quote_html": "",
"error": "undefined method `date=' for #<Quote:0x00000001181379c8 @taxable=\"1\">\n\n send(\"#{name}=\", value)\n ^^^^\nDid you mean? date"
}

Generar PDF de una cotización desde una plantilla

Genera un PDF de la cotización usando una plantilla de impresión. Requiere el encabezado Quote-Type.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-H "Quote-Type: INVOICE" \
-X POST \
-d '{
"print_template_id": "1",
"quote": {
"taxable": "1",
"date": "2024-05-01",
"subtotal": "100.00",
"total": "100.00"
},
"payee": {
"name": "Cliente Prueba",
"tin": "C/F"
}
}' \
https://app.zauru.com/crm/quotes/get_pdf_from_print_template.json

Enviar cotización por correo

Envía una cotización en formato PDF por correo electrónico usando una plantilla de impresión.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-H "Quote-Type: INVOICE" \
-X POST \
-d '{
"id": "INVOICEQUOTE1231",
"print_template_id": "1",
"mail_template_name": "cotizacion",
"mail_title": "Su cotización",
"mail_body_message": "Adjunto su cotización",
"recipient_email": "cliente@ejemplo.com",
"attachment_name": "cotizacion.pdf",
"quote": {
"taxable": "1",
"date": "2024-05-01",
"subtotal": "100.00",
"total": "100.00"
},
"payee": {
"name": "Cliente Prueba",
"tin": "C/F"
}
}' \
https://app.zauru.com/crm/quotes/send_print_template_mail.json

Obtener URL de un PDF generado desde una plantilla

Genera un PDF temporal de la cotización y devuelve una URL de acceso.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-H "Quote-Type: INVOICE" \
-X POST \
-d '{
"print_template_id": "1",
"quote": {
"taxable": "1",
"date": "2024-05-01",
"subtotal": "100.00",
"total": "100.00"
},
"payee": {
"name": "Cliente Prueba",
"tin": "C/F"
}
}' \
https://app.zauru.com/crm/quotes/get_url_from_template.json

Esto devolverá un JSON similar a este:

{
"status": 5,
"message": "undefined method `date=' for #<Quote:0x0000000117ad6c00 @taxable=\"1\">\n\n send(\"#{name}=\", value)\n ^^^^\nDid you mean? date"
}

Enviar correo con archivo adjunto

Envía un correo electrónico con uno o más archivos adjuntos desde URLs externas.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"id": "INVOICEQUOTE1231",
"mail_template_name": "cotizacion",
"mail_title": "Su documento",
"mail_body_message": "Adjunto su documento",
"recipient_email": "cliente@ejemplo.com",
"attached_file_url": "https://ejemplo.com/archivo.pdf",
"attachment_name": "documento.pdf",
"client_name": "Cliente Prueba"
}' \
https://app.zauru.com/crm/quotes/send_attachment_mail.json

Crear beneficiario (cliente) desde CRM

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"payee": {
"name": "Cliente CRM",
"tin": "12345678-9",
"buyer": true,
"currency_id": "1"
}
}' \
https://app.zauru.com/crm/quotes/create_payee.json

Esto devolverá un JSON similar a este:

{
"id": 1,
"zid": 2,
"id_number": null,
"active": true,
"name": "Cliente CRM",
"vendor": false,
"buyer": true,
"tin": "12345678-9",
"reference": null,
"address_line_1": null,
"address_line_2": null,
"delivery_address": null,
"currency_id": 3,
"credit_limit": "0.0",
"payee_category_id": null,
"web": null,
"phone": null,
"email": null,
"contact": null,
"contact_phone": null,
"contact_email": null,
"contact2": null,
"contact2_phone": null,
"contact2_email": null,
"notes": null,
"entity_id": 4,
"updater_id": 5,
"created_at": "2026-08-06T04:16:46.229Z",
"updated_at": "2026-08-06T04:16:46.229Z",
"employee_id": null,
"service_provider": true,
"invoices_in_credit_limit": null,
"payment_delay_in_credit_limit": false,
"pdf": {
"url": null,
"thumbnail": {
"url": null
}
},
"image": {
"url": null,
"standard": {
"url": null
},
"thumbnail": {
"url": null
},
"pos": {
"url": null
}
},
"excempt": false,
"small_taxpayer": false,
"foreign": false,
"latitude": null,
"longitude": null,
"great_contributor": null,
"tax_withholding_agent": false,
"subject_to_withholding_taxes": false,
"personal_identification_number": null,
"client_for_export": false,
"payee_activity_id": null,
"city_id": null,
"taxpayer_registry": null,
"district_id": null,
"default_payment_term_id": null,
"country_id": null
}

Actualizar beneficiario desde CRM

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X PATCH \
-d '{
"payee": {
"name": "Cliente CRM Actualizado",
"email": "cliente@ejemplo.com"
}
}' \
https://app.zauru.com/crm/quotes/update_payee/1.json

Esto devolverá un JSON similar a este:

{
"id": "2080191",
"zid": "87",
"id_number": null,
"active": true,
"name": "Cliente CRM",
"vendor": false,
"buyer": true,
"tin": "12345678-9",
"reference": null,
"address_line_1": null,
"address_line_2": null,
"delivery_address": null,
"currency_id": "1",
"credit_limit": "0.0",
"payee_category_id": null,
"web": null,
"phone": null,
"email": null,
"contact": null,
"contact_phone": null,
"contact_email": null,
"contact2": null,
"contact2_phone": null,
"contact2_email": null,
"notes": null,
"entity_id": "1303",
"updater_id": "23",
"created_at": "2026-08-06 04:12:08.19016",
"updated_at": "2026-08-06 04:12:08.19016",
"employee_id": null,
"service_provider": true,
"invoices_in_credit_limit": null,
"payment_delay_in_credit_limit": false,
"pdf": null,
"image": null,
"excempt": false,
"small_taxpayer": false,
"foreign": false,
"latitude": null,
"longitude": null,
"great_contributor": null,
"tax_withholding_agent": false,
"subject_to_withholding_taxes": false,
"personal_identification_number": null,
"client_for_export": false,
"payee_activity_id": null,
"city_id": null,
"taxpayer_registry": null,
"district_id": null,
"default_payment_term_id": null,
"country_id": null
}

Crear orden de venta (Sales Order)

Crea una orden de venta (factura no pagada) a partir de los detalles de la cotización.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"invoice": {
"payee_id": "1",
"agency_id": "1",
"taxable": "1",
"date": "2024-05-01",
"payment_term_id": "2",
"invoice_details_attributes": [
{"item_id": "1", "quantity": "2", "unit_price": "100.00"}
]
}
}' \
https://app.zauru.com/crm/quotes/sales_orders.json

Esto devolverá un JSON similar a este:

{}

Crear contrato en borrador (Draft Contract)

Crea un contrato en estado borrador a partir de los detalles de la cotización.

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"contract": {
"payee_id": "1",
"taxable": "1",
"start_date": "2024-05-01",
"contract_details_attributes": [
{"item_id": "1", "quantity": "2", "unit_price_cost": "100.00"}
]
}
}' \
https://app.zauru.com/crm/quotes/draft_contracts.json

Esto devolverá un JSON similar a este:

{
"id": "10830",
"zid": "54",
"document_type": "1",
"reference": null,
"taxable": false,
"entity_id": "717",
"active": true,
"payee_id": "545676",
"infinite": false,
"start_date": "2020-11-19",
"fees": "8",
"current_fee": "8",
"periodicity": "14",
"periodicity_measure": "1",
"interest_rate": null,
"interest_rate_periodicity_measure": "1",
"total_amount": "1500.00",
"upfront_payment": "0.00",
"responsible_id": "5316",
"arrears_active": false,
"arrears_item_id": null,
"arrears_detailed": false,
"arrears_starts_in_days": "0",
"arrears_amount": null,
"arrears_interest_rate": null,
"arrears_interest_rate_periodicity_measure": "4",
"arrears_formula_id": null,
"arrears_periodicity": "1",
"arrears_periodicity_measure": "1",
"running": false,
"runner_id": "1601",
"running_since": "2021-02-04 00:00:00",
"autogenerated_documents_count": "8",
"closed": true,
"closer_id": "1601",
"closed_since": "2021-03-11 11:00:50",
"updater_id": "1601",
"image": null,
"pdf": null,
"memo": null,
"payment_term_id": "1891",
"charge_term_id": null,
"extra_splits_accounts": null,
"extra_splits_accounts_amounts": null,
"extra_splits_accounts_amounts_formula": null,
"created_at": "2021-02-04 03:42:00.840953",
"updated_at": "2021-03-11 11:00:50.630916",
"symptom": null,
"serial_id": null,
"courtesy": false,
"warranty": false,
"discount": null,
"advanced_fees": "0",
"voided": false,
"voider_id": null,
"voided_at": null,
"start_fee": "0",
"initial_foreign_fees": "0",
"crm_url": null,
"not_included_vat": null,
"external_image_url": null,
"interest_rate_2": null,
"interest_rate_periodicity_measure_2": "4",
"total_amount_2": null,
"id_number": null,
"import": false,
"historical_fees": "0",
"needs_payment": false,
"payment_method_id": null,
"payment_after_days": "0"
}

¿Le fue útil esta guía?