Cart


Representa un Carrito de Compras.

El atributo billing representa los datos de facturación. Son opcionales y sólo tienen efecto si se desea una factura personalizada.

El atributo payment_info contiene los datos del pago:

  • is_balance_in_use activa o desactiva el uso de saldo para el pago del pedido.
  • promo_code_id indica el ID del PromoCode a usar.
  • currency_iso representa la moneda del pago para que se haga la conversión de montos y mostrar el pago en la moneda elegida.
  • payment_method_type indica el tipo de método de pago. gateway para las integraciones y form para los pagos manuales.
  • payment_method_id posee el ID del método de pago. Contiene el ID del PaymentMethod en caso de gateway o el ID del Form en casos de payment_method_type=form

El atributo delivery almacena los datos de la entrega. Los atributos latitude_e6 y longitude_e6 contiene las coordenadas de la ubicación de entrega. En caso de órdenes PickUp, se debe configurar ambos valores en 0.

  • address contiene la ubicación descriptiva (en texto).
  • notes contiene las notas adicionales de entrega. Por ejemplo: "Dejar con el vigilante".
  • is_gift indica que el pedido se trata de un regalo. En caso de is_gift=true se debe enviar receiver_name y receiver_phone con el nombre y teléfono de la persona que recibe el pedido.
  • scheduled_at contiene la fecha y hora de programación de la orden en UTC. Si es null, la orden será ASAP.
  • selected_delivery_id contiene la flota elegida para el delivery. En caso de no especificar, el API asignará la flota por defecto para la entrega.

currency_iso Representa la moneda del pedido (refleja la moneda de la Company). No se puede modificar. status indica el estado actual del carrito (En construcción, se usará con las listas de compras). items representa el detalle de productos del carrito. Cada item tiene un atributo is_valid que indica si la configuración del producto es válida (en construcción). Actualmente siempre devuelve true.

El atributo resume contiene los valores calculados del Carrito.

  • is_valid si los datos son válidos. Esto no toma en cuenta la configuración de productos, sino los datos de entrega y pagos.
  • prices muestra el monto total del pedido. En caso que prices contenga un array errors no vacío, indica que los productos en cuestión ya no son válidos para hacer el pedido, y dichos errores deben corregirse.
  • fees contiene el detalle de las tarifas a cobrar.
    • subtotal muestra el total sumado de los productos elegidos.
    • delivery_details contiene el desglose de los montos de envío.
    • selected_delivery_id indica el ID de la flota elegida para el envío.
    • available_delivery_providers contiene una lista de las flotas disponibles para hacer tu envío. El usuario podría elegir entre ellas.
    • service_details contiene el desglose de los montos de los cargos por servicio. Si el label es - se debe mostrar el texto de "Servicio" según el idioma que corresponda.
    • discount_details contiene el desglose de los descuentos aplicados.
    • taxes_details contiene el desglose de los ajustes adicionales aplicados al monto del pedido.
    • total_to_pay representa el total a pagar aplicando todos los elementos indicados arriba.
    • estimated_route contiene información de la ruta estimada para realizar la entrega.
    • payment contiene información a mostrar para el pago. payment.debt contiene la deuda total con el saldo y descuentos ya aplicados. A esto se le suma el payment.payment_tax que indica las comisiones de pago adicionales para el método de pago seleccionado. Por último, el payment.payment_total indica el monto total a pagar con las comisiones de pago ya sumadas. Los atributos con prefijo payment_ muestran la información en la moneda del pago en vez de la moneda de la Company.
    • Si payment_error no es null, indica que no se puede usar el método de pago elegido y se muestra información del motivo.

Modelo Cart

{
    "id": 4,
    "client_id": 10148,
    "branch_id": 138,
    "resume": {
        "is_valid": true,
        "goods_type": null,
        "is_service": true,
        "is_custom_pickup": true,
        "is_digital": false,
        "prices": {
            "subtotal_original_e2": 0,
            "subtotal_e2": 0,
            "weight": 0,
            "errors": []
        },
        "fees": {
            "coordinates_e6": [
                0,
                0
            ],
            "distance_in_meters": 0,
            "available_balance": {
                "amount_e2": 13959,
                "currency_iso": "USD",
                "formatted_iso": "USD 139.59",
                "formatted": "139.59$"
            },
            "subtotal_e2": 0,
            "subtotal": {
                "amount_e2": 0,
                "currency_iso": "USD",
                "formatted_iso": "USD 0.00",
                "formatted": "0.00$"
            },
            "delivery_fee_e2": 0,
            "delivery_details": null,
            "selected_delivery_id": null,
            "available_delivery_providers": null,
            "service_e2": 0,
            "service_details": [],
            "discount": 0,
            "discount_details": [],
            "taxes_e2": 0,
            "taxes_details": [],
            "total_e2": 0,
            "total": {
                "amount_e2": 0,
                "currency_iso": "USD",
                "formatted_iso": "USD 0.00",
                "formatted": "0.00$"
            },
            "balance_payment": {
                "amount_e2": 0,
                "currency_iso": "USD",
                "formatted_iso": "USD 0.00",
                "formatted": "0.00$"
            },
            "total_to_pay": {
                "amount_e2": 0,
                "currency_iso": "USD",
                "formatted_iso": "USD 0.00",
                "formatted": "0.00$"
            },
            "estimated_route": null,
            "estimated_weight": 0,
            "payment": null,
            "payment_error": null
        },
        "checkout": null,
        "items_count": 0
    },
    "delivery": {
        "selected_delivery_id": null,
        "selected_delivery_type": 1,
        "scheduled_at": null,
        "receiver_name": null,
        "receiver_phone": null,
        "is_gift": false,
        "latitude_e6": 0,
        "longitude_e6": 0,
        "address": null,
        "notes": null,
        "pickup_latitude_e6": 0,
        "pickup_longitude_e6": 0,
        "pickup_address": "Villa Venecia, Cumana, Sucre, Venezuela",
        "locations": [
            {
                "latitude_e6": 10450452,
                "longitude_e6": -64174234,
                "address": "Villa Venecia, Cumana, Sucre, Venezuela",
                "notes": null
            }
        ],
        "is_trip": false
    },
    "billing": {
        "dni": null,
        "phone": null,
        "name": null,
        "email": null,
        "address": null
    },
    "payment_info": {
        "is_balance_in_use": true,
        "promo_code_id": null,
        "promo_code": null,
        "currency_iso": null,
        "payment_method_type": null,
        "payment_method_id": null,
        "company_id": 116,
        "is_valid": true
    },
    "currency_iso": "USD",
    "status": "pending",
    "created_at": "2024-05-29 13:26:59",
    "updated_at": "2025-06-10 14:53:19"
}
Atributo Tipo Descripción
id int -
client_id int -
branch_id int\|null -
resume CartResume\|null -
delivery DeliveryInfo -
billing BillingInfo\|null -
payment_info PaymentInfo -
currency_iso string -
status string -
created_at datetime\|null -
updated_at datetime\|null -

Listar Cart

{info} Soporta: Paginación Filters Carga dinámica

Método URI Cabeceras
GET /companies/{companyId}/carts Authorization

Mostrar Cart

{info} Soporta: Carga dinámica

Método URI Cabeceras
GET /companies/{companyId}/carts/{cartId} Authorization

Actualizar Cart

Método URI Cabeceras
PATCH /companies/{companyId}/carts/{cartId} Authorization
{
    "billing": {
        "dni": "nullable|string|max:32",
        "phone": "nullable|string|max:32",
        "name": "nullable|string|max:80",
        "email": "nullable|string|email:rfc,filter",
        "address": "nullable|string|max:512"
    },
    "delivery": {
        "selected_delivery_id": "nullable|integer",
        "scheduled_at": "nullable|date",
        "receiver_name": "nullable|string|max:80",
        "receiver_phone": "nullable|string|max:32",
        "is_gift": "boolean",
        "latitude_e6": "integer|between:-90000000,90000000",
        "longitude_e6": "integer|between:-180000000,180000000",
        "address": "nullable|string|max:512",
        "notes": "nullable|string|max:255",
        "locations": [
            {
                "latitude_e6": "required|integer|between:-90000000,90000000",
                "longitude_e6": "required|integer|between:-180000000,180000000",
                "address": "nullable|string|max:512",
                "notes": "nullable|string|max:255"
            }
        ],
        "is_trip": "boolean"
    },
    "payment_info": {
        "is_balance_in_use": "boolean",
        "promo_code_id": "nullable|integer",
        "currency_iso": "nullable|string|max:8",
        "payment_method_type": "nullable|string|in:gateway,form,post-payment,balance",
        "payment_method_id": "nullable"
    }
}

Eliminar Cart

Método URI Cabeceras
DELETE /companies/{companyId}/carts/{cartId} Authorization

Acciones de Cart

Show Latest

{info} Soporta: Carga dinámica

Método URI Cabeceras
GET /companies/{companyId}/clients/{clientId}/carts/latest Authorization

Show For Branch

{info} Soporta: Carga dinámica

Método URI Cabeceras
GET /companies/{companyId}/clients/{clientId}/branches/{branchId}/carts Authorization

Show For Branch

{info} Soporta: Carga dinámica

Método URI Cabeceras
GET /companies/{companyId}/clients/{clientId}/branches/{branchId}/carts Authorization

Clear

Método URI Cabeceras
POST /companies/{companyId}/carts/{cartId}/clear Authorization

Checkout

Recalcula los datos del carrito con la data actual.

Método URI Cabeceras
POST /companies/{companyId}/carts/{cartId}/checkout Authorization
{
    "submit": "nullable|boolean"
}

Replace

Método URI Cabeceras
POST /companies/{companyId}/carts/{cartId}/replace-items-from-order Authorization
{
    "order_id": "required|integer|exists:orders,id"
}

Enlaces de Cart