Download OpenAPI specification:Download
This API lets you do everything Cargo By Rappi can do — create and track deliveries, manage stores and users — without opening the Cargo portal. This page is the reference for every public endpoint; the guide below is the fastest path from zero to a delivered order.
Everything here can also be done in the portal, which is handy for browsing orders and configuration while you build your integration:
A minimal integration is really just one call (order-create). The steps below add the pieces most partners want, in the order you'll build them.
user-tokenEvery request is authenticated with an API key sent in the user-token HTTP header. There is no login/OAuth flow: your KAM (Key Account Manager) at Rappi Cargo provisions the token for your account. Send it on every call; a missing or invalid token returns 401 Unauthorized.
Tip: use the DEV server (see the "Servers" dropdown) while integrating, then switch the base URL to your country's production server when you go live. The token is environment-specific.
An order always starts at a picking point — the store the courier picks up from. Create your stores once via picking-point create (or in the portal). You'll reference a store in each order either by Cargo's picking_point_id or by your own external_picking_point_id. You only do this when your stores change, not per order.
Call Order-validate to check whether an order could be created, without creating it. It runs the same coverage/time/availability checks as create and returns the estimated ETA and trip distance. Many partners call it at checkout to show an ETA or to block an order Rappi can't deliver. It's optional — skip it if you don't need the preview.
Order-create is the one required call. The request is built around action points — the ordered stops the courier makes. The essentials:
STORE and one CLIENT. A PICK_UP at the store then a DROP_OFF at the client is the typical shape.products array. On PICK_UP points list what's collected there; on DROP_OFF points send an empty [] (the courier drops off everything gathered so far). The field must be present on every action point — omitting it fails validation.order_id (your identifier). It doubles as the idempotency key, so retries won't create duplicate orders.total_value to the full amount the client pays. For CASH orders this is exactly what the courier collects (plus tip).See the "Create an order" examples for ready-to-send request bodies (simple, multi-store, and inverse/return deliveries).
To repeat a delivery you already created — the same stores, client and products — you don't have to rebuild the payload: order-creation-body returns the original request body ready to be sent back to order-create as a duplicate.
Use Order-status to follow the order. Two options: poll the endpoint, or (recommended) have Cargo push updates to a webhook — give your KAM the URL (and any header) and you'll receive a call on every status change. Status events can repeat (e.g. multiple on_the_route events across action points).
Order-cancel cancels an order via API. It only works while the order is in created, in_progress or in_store; once it's on_the_route (the courier holds the products) it can no longer be canceled this way.
Verify these before going live; each is a frequent cause of rejected or failed orders:
lat/lng, use between 2 and 9 decimals. If you don't, make sure the address is precise enough to geocode.phone_country_code).STORE and one CLIENT.total_value is the full charge: for CASH orders it must equal exactly what the courier collects — include surcharges, not just the sum of product prices.This endpoint allows you to create an order in the Rappi Cargo system and request a driver.
The endpoint is built around action points. Each action is a stop that the driver will make to fulfill the order, making it possible to create many order variations sucha as the ones presented in the examples. Every order must have at least one action point of type STORE and at least one action point of type CLIENT. Whenever an action point is of type DROP_OFF the driver will deliver all the products that he has picked up until that point.
| user-token required | string Token |
| total_value required | number >= 1 Required. Total monetary value of the order in the country's minor-unit-free currency (e.g. COP). Mandatory because for CASH orders this is the exact amount the courier must collect from the client (the courier charges |
| vehicle_type required | string Enum: "CAR" "BIKE" Required. Vehicle used for the delivery, which determines couriers eligible for assignment and the max cargo size. Send |
| payment_method required | string Enum: "CASH" "ONLINE" Required. How the client pays. It changes what the courier does on delivery, so it cannot be defaulted: |
required | Array of objects (ActionPointV3DTO) Required, at least 2. The ordered list of stops the courier makes to fulfill the order. Each action point is either a store ( |
| order_id required | string [ 1 .. 255 ] characters Required, except when duplicating an order with |
| user_tip | number >= 0 The Tip that the client wants to pay the courier. If the order is paid in cash, the courier will charge the total_value + tip. Tip directly paid to the courier. It is recommended that orders include tip because it makes them more attractive to couriers, thus they are incentivized to accept the orders quicker. This must be a positive integer. This should not be greater than the total_value of the order |
| partner_tip | number >= 0 The tip that the partner wants to pay the courier. This tip will not be charged to the user, it will be charged to the partner in the order charge. Tip directly paid to the courier. It is recommended that orders include tip because it makes them more attractive to couriers, thus they are incentivized to accept the orders quicker. This must be a positive integer. This should not be greater than the total_value of the order |
object Client contact and address information. Required whenever the order has a | |
| partner_channel | string Enum: "ECOMMERCE" "MOBILE_APP" "PHONE" "INTERNAL" Partner's channel for the order. The way the order was received. We don't do anything with this, we just store it and show it to you |
| priority_enabled | boolean Default: false Flag to enable priority delivery for this order |
| deliver_at | string The date at which the order should be delivered. It should be a valid UTC date time in ISO format (e.g., 2024-05-23T23:09:49.530Z).Only add this field if you want to schedule the order. Do not use it for immediate deliveries. |
| parent_order_id | number Duplicates an existing order instead of creating a new one from scratch: send the |
| in_store_reference_id | string Can be a shorter or different version of the order_id, used in the store, and easier to ask for by the courier |
| preparation_time | number >= 1 Preparation time of an order in minutes. The assignation algorithm will use this information to time the arrival of the driver as close to the end of the preparation time as possible. |
| requires_photo | boolean Indicates if the order requires a photo to be taken at the time of delivery. Overrides the retailer configuration. |
| requires_handshake | boolean Indicates if the order requires a code to be handed by the user at the time of delivery. Overrides the retailer configuration. |
| handshake_code | string Caller-supplied code cargo should use for this order's handshake, instead of generating one. Must be a numeric string, 3 to 6 digits long — that length rule is the same for every order, whatever flow it resolves to. Honouring the code is what depends on the flow: it is supported on the basic RESTAURANT flow (one store pick-up followed by one client drop-off, with no picking, check-in or return), while an order that resolves to RAPPI_FAVOR (multi-stop or inverse) is rejected with 400 once its flow is known, because cargo cannot register the code with the handshake service in time for that flow. Only takes effect when the order actually ends up requiring a handshake — send |
| sales_channel | string Sales channel from where the order was created. |
| use_optimal_pp_order | boolean Indicates if the order should be rearranged to optimize the order of the action points. |
| slot_id | number Slot id used to schedule the order. When provided, the order is scheduled to the slot's date and time (midpoint between start_time and end_time) and slot.current is incremented after creation. |
| cargo_order_id required | bigint |
| rappi_order_id required | bigint |
| external_order_id required | string | number |
| tracking_url required | string This link allows the customer to track the order status in realtime. It will be sent via SMS and Email to the client. |
| eta required | number |
required | object (IntervalDto) |
| trip_distance required | number It is an estimated distance, calculated by a proprietary service in Rappi. This can be used to estimate the cost of the delivery service. |
| estimated_price required | number It is an estimated price based on your billing info. |
| requires_handshake required | boolean Indicates if the order will need handshake code to verify delivery. |
| rain_charge required | boolean Flag that indicates if the order has a rain charge. |
| raining_charge required | number It is an estimated price based on your billing info. |
| high_demand_charge required | number It is an estimated price based on your billing info. |
A simple order from store to client
{- "total_value": 40000,
- "user_tip": 1500,
- "vehicle_type": "BIKE",
- "payment_method": "ONLINE",
- "action_points": [
- {
- "external_picking_point_id": "PP_123",
- "instructions": "Ir a la puerta 23, decir que vienen de parte de EcommerceX",
- "products": [
- {
- "product_id": "HAM123",
- "name": "Hamburguesa con queso",
- "description": "Hamburguesa de carne de res 125g con queso",
- "units": 2,
- "ean": "HAMBURGER123",
- "unit_price": 15500
}
], - "action_type": "PICK_UP",
- "location_type": "STORE"
}, - {
- "products": [ ],
- "action_type": "DROP_OFF",
- "location_type": "CLIENT"
}
], - "client_info": {
- "email": "oscar@yahoo.com",
- "phone": "3234334356",
- "first_name": "Oscar",
- "last_name": "Perez",
- "address": "calle 93 #19-58",
- "lat": 4.678646,
- "lng": -74.05549,
- "complement": "edificio X apartamento Y",
- "city": "Bogota",
- "comments": "Dejar en porteria",
- "zip_code": "110221"
}, - "order_id": "lx3eRfCZ49-WTS57",
- "in_store_reference_id": "WTS57"
}{- "cargo_order_id": 8907,
- "rappi_order_id": 11232442,
- "external_order_id": "ABC123XYZ, 123456",
- "eta": 31,
- "eta_interval": {
- "lower": 28,
- "upper": 35
}, - "trip_distance": 0,
- "estimated_price": 0,
- "requires_handshake": true,
- "rain_charge": true,
- "raining_charge": 0,
- "high_demand_charge": 0
}Rappi makes some validations before allowing the creation of an order. In order to verify that the order-create endpoint will have a successful response, this endpoint can be used. This can be useful to block the creation of the order in the partners system in cases where Rappi Cargo is the only delivery provider.
Additionally, the endpoint provides extra insights regarding the order that may be useful to receive before creating the order such as the ETA and the distance of the trip. This endpoint only goes through the validations, without creating the order.
The validations that Rappi does are:
All of the action points are inside a Rappi coverage area. Ask your commercial contact for a map regarding Rappi's coverage in LatAm.
The travel time between the action points is under 40 minutes. This is the journey from the first to the last action point. Travel time is estimated by a proprietary service that determines the travel time between two coordinates.
There is current courier availability.
If any of these fail, the endpoint will respond with an error state and the reason for the error.
| user-token required | string Token |
| total_value required | number >= 1 Required. Total monetary value of the order in the country's minor-unit-free currency (e.g. COP). Mandatory because for CASH orders this is the exact amount the courier must collect from the client (the courier charges |
| vehicle_type required | string Enum: "CAR" "BIKE" Required. Vehicle used for the delivery, which determines couriers eligible for assignment and the max cargo size. Send |
| payment_method required | string Enum: "CASH" "ONLINE" Required. How the client pays. It changes what the courier does on delivery, so it cannot be defaulted: |
required | Array of objects (ActionPointV3DTO) Required, at least 2. The ordered list of stops the courier makes to fulfill the order. Each action point is either a store ( |
| user_tip | number >= 0 The Tip that the client wants to pay the courier. If the order is paid in cash, the courier will charge the total_value + tip. Tip directly paid to the courier. It is recommended that orders include tip because it makes them more attractive to couriers, thus they are incentivized to accept the orders quicker. This must be a positive integer. This should not be greater than the total_value of the order |
| partner_tip | number >= 0 The tip that the partner wants to pay the courier. This tip will not be charged to the user, it will be charged to the partner in the order charge. Tip directly paid to the courier. It is recommended that orders include tip because it makes them more attractive to couriers, thus they are incentivized to accept the orders quicker. This must be a positive integer. This should not be greater than the total_value of the order |
object Client contact and address information. Required whenever the order has a | |
| partner_channel | string Enum: "ECOMMERCE" "MOBILE_APP" "PHONE" "INTERNAL" Partner's channel for the order. The way the order was received. We don't do anything with this, we just store it and show it to you |
| priority_enabled | boolean Default: false Flag to enable priority delivery for this order |
| service_delivery required | string If the field answers IMMEDIATE_DELIVERY this means Cargo is able to perform a delivery for the retailer |
| active required | boolean |
| eta_for_immediate_delivery required | number It is an estimated time of arrival, calculated by a proprietary service in Rappi. This time of arrival can be used to show the user an ETA. |
| trip_distance required | number It is an estimated distance in Kilometers, calculated by a proprietary service in Rappi. This can be used to estimate the cost of the delivery service. Cargo charges using the ceiling function on the trip distance to turn it into an integer. |
required | object Time interval for the immediate delivery |
| internal_validations required | object |
| estimated_price required | number It is an estimated price based on your billing info. |
| rain_charge required | number Flag that indicates if the order has a rain charge. |
| raining_charge required | number It is an estimated price based on your billing info. |
| high_demand_charge required | number It is an estimated price based on your billing info. |
A simple order from store to client
{- "total_value": 40000,
- "user_tip": 1500,
- "vehicle_type": "BIKE",
- "payment_method": "ONLINE",
- "action_points": [
- {
- "external_picking_point_id": "PP_123",
- "instructions": "Ir a la puerta 23, decir que vienen de parte de EcommerceX",
- "products": [
- {
- "product_id": "HAM123",
- "name": "Hamburguesa con queso",
- "description": "Hamburguesa de carne de res 125g con queso",
- "units": 2,
- "ean": "HAMBURGER123",
- "unit_price": 15500
}
], - "action_type": "PICK_UP",
- "location_type": "STORE"
}, - {
- "products": [ ],
- "action_type": "DROP_OFF",
- "location_type": "CLIENT"
}
], - "client_info": {
- "email": "oscar@yahoo.com",
- "phone": "3234334356",
- "first_name": "Oscar",
- "last_name": "Perez",
- "address": "calle 93 #19-58",
- "lat": 4.678646,
- "lng": -74.05549,
- "complement": "edificio X apartamento Y",
- "city": "Bogota",
- "comments": "Dejar en porteria",
- "zip_code": "110221"
}
}{- "service_delivery": "IMMEDIATE_DELIVERY",
- "active": true,
- "eta_for_immediate_delivery": 30,
- "trip_distance": 3.14,
- "eta_interval_for_immediate_delivery": {
- "lower": 28,
- "upper": 35
}, - "internal_validations": { },
- "estimated_price": 0,
- "rain_charge": 0,
- "raining_charge": 0,
- "high_demand_charge": 0
}Returns the request body that created an existing order, already prepared to be sent back to order-create. It is the shortcut for duplicating an order — repeating a delivery with the same stores, client, products and options — without rebuilding the payload on your side.
Typical uses are a delivery that came back to the store and has to go out again, a client that asks for the same order later in the day, or a re-attempt after a failed delivery.
How to use it
GET /v3/order-creation-body/{rappi_order_id} with the rappi_order_id Cargo returned when the original order was created.body from the response and change anything you need (products, tip, deliver_at, …). Everything else can be sent as is.POST that body to order-create. The response is the usual create response, with the rappi_order_id of the new order.What comes prepared in the body
order_id is removed. The duplicate does not reuse your identifier: Cargo derives one from the original, in the form {original order_id}:cargo:duplicate:{n}, where n grows with each duplicate. It is returned to you in the create response.parent_order_id is set to the rappi_order_id of the original order. This is what links the duplicate to it, and it replaces order_id — send one or the other, never both.Things to keep in mind
user-token are returned. Orders of another account are reported as 404, the same as orders that do not exist.| rappi_order_id required | number Example: 123456789 Rappi identifier of the order to duplicate — the |
| user-token required | string Token |
required | object The body that created the original order, ready to be sent to order-create to duplicate it. | ||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
{- "body": {
- "total_value": 20500,
- "user_tip": 0,
- "partner_tip": 0,
- "vehicle_type": "BIKE",
- "payment_method": "ONLINE",
- "action_points": [
- {
- "picking_point_id": 123,
- "external_picking_point_id": "1234567",
- "instructions": "Ir a la puerta 23, decir que vienen de parte de EcommerceX",
- "products": [
- {
- "product_id": "pr123k",
- "name": "zapatos superstart",
- "description": "talla 42",
- "units": 2,
- "ean": "dsada1231",
- "unit_price": 10250
}
], - "action_type": "PICK_UP",
- "location_type": "STORE"
}
], - "client_info": {
- "email": "oscar@yahoo.com",
- "phone": "3023311130",
- "phone_country_code": "57",
- "first_name": "Oscar",
- "last_name": "Perez",
- "address": "calle 93 #19-58",
- "google_place_id": "ChIJPdeRfD-FP44RSuTa17bkshg",
- "lat": 4.67864,
- "lng": -74.05549,
- "complement": "edificio X apartamento Y",
- "city": "Bogota",
- "comments": "Dejar en porteria",
- "zip_code": "110221"
}, - "partner_channel": "PHONE",
- "priority_enabled": false,
- "deliver_at": "2022-10-13T04:23:03.560Z",
- "order_id": "123456744",
- "parent_order_id": 123456789,
- "in_store_reference_id": "string",
- "preparation_time": 20,
- "requires_photo": true,
- "requires_handshake": true,
- "handshake_code": "482",
- "sales_channel": "string",
- "use_optimal_pp_order": true,
- "slot_id": 42
}
}This API call gives the retailer the possibility to cancel an order in case he needs to. The order can only be canceled by the retailer when it is in state created, in_progress or in_store. Once the order is on_the_route (the courier has the products), the order cannot be canceled by the retailer.
| user-token required | string Token |
| external_order_id | string [ 1 .. 255 ] characters Order id in your database |
| rappi_order_id | number Id of generated Rappi order |
| cargo_order_id | number Order id in cargo's system |
| partner_cancelation_reason | string Enum: "CANCELED_BY_END_USER" "WILL_USE_OTHER_PROVIDER" "ASSIGNMENT_TOOK_TOO_LONG" "RT_TOOK_TOO_LONG" "UNAVAILABLE_PRODUCTS" "PAYMENT_FAILED" "WRONG_ORDER_DATA" "POSSIBLE_FRAUD_RT" "POSSIBLE_FRAUD_USER" "WILL_CREATE_NEW_ORDER" "RT_DOES_NOT_ANSWER" "OTHER" The cancelation reason for the order. While this field is not required, it helps in understanding the operative issues that may occur and to analyze the data to improve operations. The possible reasons are: CANCELED_BY_END_USER: The end user asked the partner to cancel the order. WILL_USE_OTHER_PROVIDER: The partner will use another logistics provider to deliver this order. ASSIGNMENT_TOOK_TOO_LONG: Rappi took too long to assign a driver. RT_TOOK_TOO_LONG: The assigned Rappi took too long getting to the store, or getting to the client. UNAVAILABLE_PRODUCTS: One or more products were unavailable and the order cannot be delivered this way. PAYMENT_FAILED: The online payment failed after the order was created. WRONG_ORDER_DATA: The order was created with invalid data. POSSIBLE_FRAUD_RT: The partner suspects the RT could be fraudulent. POSSIBLE_FRAUD_USER: The partner suspects the end user could be fraudulent. WILL_CREATE_NEW_ORDER: Order will be created with another data RT_DOES_NOT_ANSWER: The assigned RT does not answer the phone and is not completing the order. OTHER: Your reason is not listed here, please specify in the "partner_cancelation_reason_other" property. |
| partner_cancelation_reason_other | string If you sent OTHER as the reason, specify here what reason you did not find |
| successfull | boolean Indicates if cancellation was succesful |
{- "external_order_id": "123456744",
- "rappi_order_id": 958257716,
- "cargo_order_id": 109069,
- "partner_cancelation_reason": "POSSIBLE_FRAUD_RT",
- "partner_cancelation_reason_other": "I no longer wanted to deliver the product"
}{- "successfull": true
}This endpoint is used to get updates on the state of an order.
It can either be called by sending a POST request to /order-status or by using the order status webhook. In order to configure the webhook, contact a KAM of the Rappi Cargo team and provide us with the endpoint where the status calls will be sent and, if needed, the header that must be included. The webhook sends updates every time the status of the order changes. The status changes can be repeated, for example, an order with multiple action points will have multiple on_the_route events when moving between action points.
The list of possible order status is available here
| user-token required | string Token |
| external_order_id | string <= 255 characters >= 1 Order id in your database |
| rappi_order_id | number Id of generated Rappi order |
| cargo_order_id | number Order id in cargo's system |
| estimated_price required | number Value estimated for the order |
| estimated_tax_base_price required | number Value estimated for the order |
| in_store_reference_id required | object In store reference id |
| sales_channel required | object Sales channel from where the order was created. |
| order_ready_at required | object Order ready at |
| payment_method required | string Payment method used. CASH or ONLINE |
| rain_charge required | object States if a rain charge applies for this order |
| raining_charge required | object States if a rain charge applies for this order |
| high_demand_charge required | number Value estimated for the order |
| version required | number Version of the endpoint that created this order. |
| handoff_code required | string This represents the code that the store must give to the courier with the order. We generate the code some time after the creation of the order, so it might be null for some seconds. We will send a request to your sever as soon as we generate the code. The payload for such request has the same structure as the order status changes requests. Both handoff_code and handoff_qr are generated at the same time. |
| handoff_qr required | string This represents the QR code that the store must give to the courier with the order. We suggest using a library to render the actual QR from this string. We generate the qr some time after the creation of the order, so it might be null for some seconds. We will send a request to your sever as soon as we generate the QR. The payload for such request has the same structure as the order status changes requests. Both handoff_code and handoff_qr are generated at the same time. |
| was_processed_by_agent required | boolean This attribute is true if the order was closed by a support agent. |
| deliver_at required | string |
| rappi_order_id required | string This represents the rappi order id |
| external_order_id required | string Represents the id on your system |
| callback_header required | string |
| callback_header_value required | string |
| cargo_order_id required | string Represents the id in Cargo's system |
| state required | string Represents the status of the order. The possible states are available here. |
| order_created_at required | string |
| retailer_id required | number |
| brand_id required | string |
| total_value required | number |
required | object (ClientDTOV3) |
required | object (PriceDTOV3) |
| callBack required | string |
| handshake_code required | string |
| order_status_id required | number |
| tracking_url required | string |
| collect_cash required | number |
| cancelled_at required | string |
| delivered_at required | string |
| delivery_assigned_at required | string |
| transport_media_type required | string |
required | Array of objects (OrderHistoryV3) |
required | Array of objects (ActionPointDTOV3) |
| state_detail required | string |
| was_cancelled_by_integration required | boolean |
required | Array of objects (OrderModificationDto) |
| eta required | string |
| current_eta required | number Minutes until delivery |
| final_delivery_point_image required | object Final delivery point image url of the order when the courier wasn't able to deliver correctly and had to leave the order in a safe place |
| final_delivery_comments required | object Final delivery comments of the order when the courier wasn't able to deliver correctly and had to leave the order in a safe place |
| final_delivery_lat required | object Final delivery lat of the order when the courier wasn't able to deliver correctly and had to leave the order in a safe place |
| final_delivery_lng required | object Final delivery lng of the order when the courier wasn't able to deliver correctly and had to leave the order in a safe place |
object ETA with min/max delivery times and publishable range | |
object (StoreKeeperDTOV3) | |
| cancelation_reason | string Enum: "client_doesnt_answer" "sk_doesnt_answer" "lack_of_rt" "wrong_address_client_wants_to_change_orders" "problems_with_client_payment" "product_not_available" "client_fraud_suspicion" "technical_problems" "sk_doesnt_want_delivery_order_with_product" "another_sk_took_order" "closed_store" "delivery_delay" "big_order_rt_innapropiate_vehicle" "sk_couldnt_complete_order" "duplicated_order" "incomplete_order_bad_state" "does_not_work_with_rappi" "didnt_cancel_by_automation" "released_with_product" "wants_cancel_between_eta_no_delay" "price_difference" "client_whim_not_allowed_favor" "billing_error" "inner_test" "review" "cancel_by_user" "too_many_releases" "cancel_by_automation" "badly_located_pin" "client_wanted_to_change_address" "client_doesnt_receive" "technical_problems_ally" "rt_couldnt_continue_with_product" "client_doesnt_receive_problems_with_order" "client_doesnt_receive_wanted_to_change_products" "client_doesnt_receive_duplicated_order" "order_not_closed" "product_not_available_at_store" "client_doesnt_receive_bad_state" "rt_couldnt_continue" "client_doesnt_have_how_to_pay" "client_wants_to_change_payment_method" "client_doesnt_receive_wants_to_cancel" "limbo" "other" "relaunch" The reason for the cancellation of the order |
| cancel_tipification | string Enum: "EARLY" "RT_TO_STORE" "RT_IN_STORE" "RT_TO_USER" "RT_AT_USER" "DELAY_RT" "LACK_OF_RT" "LATE_ASSIGNMENT" "RT_ISSUE" The tipification of the cancellation of the order |
| cancelation_moment | string Enum: "RT_UNASSIGNED" "RT_TO_STORE" "RT_IN_STORE" "RT_TO_USER" "RT_AT_USER" The moment of the cancellation of the order |
| cancellation_username | object The name of the user that sent the cancellation request. It will be Null if the cancellation was made by Rappi. |
| order_ids_in_bundle | Array of numbers The Rappi Order Ids with which this order is bundled. This means that the same driver is assigned to these orders and will deliver them in a route. This attribute will only be sent when the status changes to “in_progress” meaning that a driver has just been assigned to the order. If this order is not bundled the attribute will be an empty array. |
| debt_cancellation_user_name | string The name of the user that cancelled the debt of the order |
| debt_cancelled_at | string The datetime at which the debt was cancelled |
{- "external_order_id": "123456744",
- "rappi_order_id": 958257716,
- "cargo_order_id": 109069
}{- "eta_range": {
- "delivery_min_time": "35",
- "delivery_max_time": "50",
- "delivery_time": "40",
- "eta_publish": "2:35 PM - 2:50 PM"
}, - "estimated_price": 3,
- "estimated_tax_base_price": 3,
- "in_store_reference_id": { },
- "sales_channel": { },
- "order_ready_at": "2022-09-12T21:41:39.694Z",
- "payment_method": "ONLINE",
- "rain_charge": { },
- "raining_charge": { },
- "high_demand_charge": 3,
- "version": 3,
- "handoff_code": "3756",
- "handoff_qr": "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",
- "was_processed_by_agent": true,
- "deliver_at": "2022-09-12T21:41:39.694Z",
- "rappi_order_id": 11232442,
- "external_order_id": "MANDNFA-234",
- "callback_header": "ApiToken",
- "callback_header_value": "e093b561-7922-4c40-92d1-1ab0a1dd8a51",
- "cargo_order_id": 11232442,
- "state": "in_progress",
- "order_created_at": "2022-09-12T21:41:39.694Z",
- "retailer_id": 18,
- "brand_id": 11232442,
- "total_value": 22000,
- "client": {
- "first_name": "Juan",
- "last_name": "Perez",
- "phone": "3001234567",
- "address": "742 de Evergreen Terrace",
- "lat": 4.60971,
- "lng": -74.08175,
- "email": "fake@email.com",
- "address_description": "Apartamento 1229",
- "address_comments": "Dejar en porteria"
}, - "storeKeeper": {
- "id": 11232442,
- "phone": "3001234567",
- "first_name": "Juan",
- "email": "test@test.com",
- "last_name": "Perez",
- "lat": 4.60971,
- "lng": -74.08175,
- "transport_media_type": "car",
- "timestamp": "2025-01-22T13:38:20.000Z"
}, - "price": {
- "total": 1000,
- "courier_tip_total": 1000
}, - "handshake_code": "ApiToken",
- "order_status_id": 24,
- "collect_cash": 0,
- "cancelled_at": "2022-09-12T21:41:39.694Z",
- "delivered_at": "2022-09-12T21:41:39.694Z",
- "delivery_assigned_at": "2022-09-12T21:41:39.694Z",
- "transport_media_type": "car",
- "order_update": [
- {
- "id": 209952,
- "order_id": 110157,
- "order_status_id": 1,
- "rappi_order_id": 958284269,
- "core_status": "created",
- "updated_at": "2022-10-15T19:58:29.000Z"
}
], - "action_points": [
- {
- "id": "fake@email.com",
- "index": 0,
- "external_picking_point_id": "1a43nq2nqo343n",
- "picking_point_id": "234521",
- "picking_point_name": "Sede norte",
- "instructions": "Recoger productos",
- "check_in_required": true,
- "return_allowed": true,
- "executed": true,
- "products": true,
- "lat": 4.7071,
- "lng": -74.10721234,
- "address": "742 de Evergreen Terrace",
- "city": "Bogota",
- "zip_code": "110321",
- "description": "Recoger productos",
- "comments": "Recoger productos",
- "contact_email": "prueba@rappi.com",
- "contact_phone": "3001234567",
- "contact_name": "Juan",
- "started_at": "2022-11-23T03:41:59.648Z",
- "executed_at": "2022-11-23T03:41:59.648Z"
}
], - "state_detail": "canceled_by_fraud",
- "was_cancelled_by_integration": true,
- "order_modification": [
- {
- "id": 37158688,
- "type": "string",
- "order_id": 110530,
- "rappi_order_id": 958294916,
- "created_at": "2022-11-23T03:41:59.648Z"
}
], - "eta": "string",
- "cancelation_reason": "client_doesnt_answer",
- "cancel_tipification": "EARLY",
- "cancelation_moment": "RT_UNASSIGNED",
- "current_eta": 27,
- "final_delivery_comments": "Señor deje su pedido en portería, recibio Juan Lopez",
- "final_delivery_lat": 4.741345,
- "final_delivery_lng": -74.741345,
- "cancellation_username": "User 123",
- "order_ids_in_bundle": [
- 0
], - "debt_cancellation_user_name": "string",
- "debt_cancelled_at": "string"
}{- "eta_range": {
- "delivery_min_time": "35",
- "delivery_max_time": "50",
- "delivery_time": "40",
- "eta_publish": "2:35 PM - 2:50 PM"
}, - "estimated_price": 3,
- "estimated_tax_base_price": 3,
- "in_store_reference_id": { },
- "sales_channel": { },
- "order_ready_at": "2022-09-12T21:41:39.694Z",
- "payment_method": "ONLINE",
- "rain_charge": { },
- "raining_charge": { },
- "high_demand_charge": 3,
- "version": 3,
- "handoff_code": "3756",
- "handoff_qr": "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",
- "was_processed_by_agent": true,
- "deliver_at": "2022-09-12T21:41:39.694Z",
- "rappi_order_id": 11232442,
- "external_order_id": "MANDNFA-234",
- "callback_header": "ApiToken",
- "callback_header_value": "e093b561-7922-4c40-92d1-1ab0a1dd8a51",
- "cargo_order_id": 11232442,
- "state": "in_progress",
- "order_created_at": "2022-09-12T21:41:39.694Z",
- "retailer_id": 18,
- "brand_id": 11232442,
- "total_value": 22000,
- "client": {
- "first_name": "Juan",
- "last_name": "Perez",
- "phone": "3001234567",
- "address": "742 de Evergreen Terrace",
- "lat": 4.60971,
- "lng": -74.08175,
- "email": "fake@email.com",
- "address_description": "Apartamento 1229",
- "address_comments": "Dejar en porteria"
}, - "storeKeeper": {
- "id": 11232442,
- "phone": "3001234567",
- "first_name": "Juan",
- "email": "test@test.com",
- "last_name": "Perez",
- "lat": 4.60971,
- "lng": -74.08175,
- "transport_media_type": "car",
- "timestamp": "2025-01-22T13:38:20.000Z"
}, - "price": {
- "total": 1000,
- "courier_tip_total": 1000
}, - "handshake_code": "ApiToken",
- "order_status_id": 24,
- "collect_cash": 0,
- "cancelled_at": "2022-09-12T21:41:39.694Z",
- "delivered_at": "2022-09-12T21:41:39.694Z",
- "delivery_assigned_at": "2022-09-12T21:41:39.694Z",
- "transport_media_type": "car",
- "order_update": [
- {
- "id": 209952,
- "order_id": 110157,
- "order_status_id": 1,
- "rappi_order_id": 958284269,
- "core_status": "created",
- "updated_at": "2022-10-15T19:58:29.000Z"
}
], - "action_points": [
- {
- "id": "fake@email.com",
- "index": 0,
- "external_picking_point_id": "1a43nq2nqo343n",
- "picking_point_id": "234521",
- "picking_point_name": "Sede norte",
- "instructions": "Recoger productos",
- "check_in_required": true,
- "return_allowed": true,
- "executed": true,
- "products": true,
- "lat": 4.7071,
- "lng": -74.10721234,
- "address": "742 de Evergreen Terrace",
- "city": "Bogota",
- "zip_code": "110321",
- "description": "Recoger productos",
- "comments": "Recoger productos",
- "contact_email": "prueba@rappi.com",
- "contact_phone": "3001234567",
- "contact_name": "Juan",
- "started_at": "2022-11-23T03:41:59.648Z",
- "executed_at": "2022-11-23T03:41:59.648Z"
}
], - "state_detail": "canceled_by_fraud",
- "was_cancelled_by_integration": true,
- "order_modification": [
- {
- "id": 37158688,
- "type": "string",
- "order_id": 110530,
- "rappi_order_id": 958294916,
- "created_at": "2022-11-23T03:41:59.648Z"
}
], - "eta": "string",
- "cancelation_reason": "client_doesnt_answer",
- "cancel_tipification": "EARLY",
- "cancelation_moment": "RT_UNASSIGNED",
- "current_eta": 27,
- "final_delivery_comments": "Señor deje su pedido en portería, recibio Juan Lopez",
- "final_delivery_lat": 4.741345,
- "final_delivery_lng": -74.741345,
- "cancellation_username": "User 123",
- "order_ids_in_bundle": [
- 0
], - "debt_cancellation_user_name": "string",
- "debt_cancelled_at": "string"
}| user-token required | string Token |
| id required | string |
| lat required | number |
| lng required | number |
| address required | string |
| city required | string |
| phone required | string |
| zip_code required | string |
| retailer_id required | string |
| picking_point_id required | number |
| order_type_id required | number |
| order_status_id required | number |
| delivery_type_id required | number |
| dispatch_group_id required | number |
| dispatch_group_priority required | number |
| rappi_order_id required | string |
| integration_external_id required | number |
| external_order_id required | string |
| total_value required | number |
| destination_lat required | number |
| destination_lng required | number |
| destination_address required | string |
| destination_city required | string |
| destination_zip_code required | string |
| destination_description required | string |
| destination_comments required | string |
| destination_email required | string |
| destination_phone required | string |
| destination_first_name required | string |
| destination_last_name required | string |
| destination_external_id required | string |
| created_at required | string |
| delivery_assigned_at required | string |
| delivered_at required | string |
| cancelled_at required | string |
| collect_cash required | number |
| roundtrip required | boolean |
| roundtrip_comments required | string |
| callback required | string |
| sk_id required | string |
| sk_phone required | string |
| sk_email required | string |
| sk_type required | string |
| sk_reassigned required | boolean |
| sk_first_name required | string |
| sk_last_name required | string |
| transport_media_type required | string |
| sk_lat required | number |
| sk_lng required | number |
| sk_position_updated_at required | string |
required | object |
| placed_at required | string |
| user_id required | number |
| total_weight required | number |
| total_volume required | number |
| tracking_code required | string |
| user_experience_rate required | number |
| user_experience_comments required | string |
| handshake_code required | string |
| handshake_response required | string |
| eta required | number |
| calculated_tip required | string |
| user_tip required | string |
| default_tip required | string |
| order_update required | Array of strings |
[- {
- "id": "",
- "lat": 8907,
- "lng": 8907,
- "address": 8907,
- "city": 8907,
- "phone": 8907,
- "zip_code": 8907,
- "retailer_id": 8907,
- "picking_point_id": 8907,
- "order_type_id": 8907,
- "order_status_id": 8907,
- "delivery_type_id": 8907,
- "dispatch_group_id": 8907,
- "dispatch_group_priority": 8907,
- "rappi_order_id": 8907,
- "integration_external_id": 8907,
- "external_order_id": 8907,
- "total_value": 8907,
- "destination_lat": 8907,
- "destination_lng": 8907,
- "destination_address": 8907,
- "destination_city": 8907,
- "destination_zip_code": 8907,
- "destination_description": 8907,
- "destination_comments": 8907,
- "destination_email": 8907,
- "destination_phone": 8907,
- "destination_first_name": 8907,
- "destination_last_name": 8907,
- "destination_external_id": 8907,
- "created_at": 8907,
- "delivery_assigned_at": 8907,
- "delivered_at": 8907,
- "cancelled_at": 8907,
- "collect_cash": 8907,
- "roundtrip": 8907,
- "roundtrip_comments": 8907,
- "callback": 8907,
- "sk_id": 8907,
- "sk_phone": 8907,
- "sk_email": 8907,
- "sk_type": 8907,
- "sk_reassigned": 8907,
- "sk_first_name": 8907,
- "sk_last_name": 8907,
- "transport_media_type": 8907,
- "sk_lat": 8907,
- "sk_lng": 8907,
- "sk_position_updated_at": 8907,
- "additional_data": 8907,
- "placed_at": 8907,
- "user_id": 8907,
- "total_weight": 8907,
- "total_volume": 8907,
- "tracking_code": 8907,
- "user_experience_rate": 8907,
- "user_experience_comments": 8907,
- "handshake_code": 8907,
- "handshake_response": 8907,
- "eta": 8907,
- "calculated_tip": 8907,
- "user_tip": 8907,
- "default_tip": 8907,
- "order_update": [
- "string"
]
}
]Calling this endpoint will mark this order as ready to be picked up. This means we will speed up the assignment process if there is no courier assigned. If there is, we will send a notification letting the courier know that the order is ready
| rappi_order_id required | number |
| user-token required | string Token |
{- "message": "action_points.0.products should not be empty",
- "type": "ValidationError",
- "code": "FIELD_VALIDATION",
- "status": 400,
- "field": "action_points.0.products"
}Confirms that an order that never reached the customer came back to your store successfully. This is the endpoint you call to close the return: the order moves to returned and the courier gets a push notification in the Rappi app telling them your store accepted the delivery back.
Call it when the courier is physically in front of you handing the order back, once you have checked that everything you expected is there. The confirmation is irreversible — from Rappi's side it is the receipt that your store already got the products or the cash back — so a second call on the same order fails.
Why it also settles the courier's debt
When an order carrying cash or products does not reach the customer, Rappi registers a debt against the courier for the value of the order, which would otherwise be discounted from their earnings. Confirming the return is what clears that debt: your confirmation is the proof that the courier gave the goods or the money back, so the two happen in the same call. This is why most of the errors below talk about the debt — they are the financial side of a return that cannot be confirmed yet.
When can it be called
The order must be in one of these states:
| Status | Condition |
|---|---|
canceled |
only if the order was flagged as returnable (return_allowed) |
failed_delivery |
— |
failed_return |
— |
return_in_store |
— |
returned |
— |
On top of that, the order must have a courier assigned, must not have been confirmed before, and must have a pending debt in Rappi's system.
Permissions
The user behind the user-token needs the ORDER_REMOVE_DEBT permission over the picking point of the order. Orders that belong to a different account are reported as 404, the same as orders that do not exist, so a wrong token cannot be used to probe for order ids.
Return orders
If you send the id of a return order created by Cargo, the confirmation is applied to the original order that generated the return, so you can always use the id you are tracking.
Retries
The debt is registered in a separate financial system and can take a few seconds to appear after the order fails, so a return can be valid and still not be confirmable for a moment. A 422 with code ORDER_WITH_WRONG_DEBT means the amount is not settled yet — wait and retry. A 422 with ORDER_HAS_NO_DEBT or ORDER_HAS_DEBT_ADJUSTMENT means there is nothing left to settle and the return needs no confirmation; do not retry those.
| rappi_order_id required | number Example: 123456789 Rappi identifier of the order being returned — the |
| user-token required | string Token |
{- "message": "Order with rappi_order_id: 123456789 is not eligible for debt cancelation",
- "code": "ORDER_NOT_ELIGIBLE_FOR_DEBT_CANCELATION",
- "status": 400
}Returns the permission groups (roles) available for your account. Use the id of the desired group as the permission_group_id when creating or updating a user.
| user-token required | string Token |
| id required | number Unique identifier of the permission group |
| brand_id required | number Identifier of the associated brand |
| picking_point_permissions required | Array of strings Items Enum: "PP_MANAGE" "PP_UPDATE_WITH_INCENTIVE_SETTINGS" "PP_UPDATE" "PP_CREATE" "PP_READ" "PP_DELETE" "ORDER_MANAGE" "ORDER_CREATE" "ORDER_CANCEL" "ORDER_REMOVE_DEBT" "ORDER_ADD_INCENTIVE" "ORDER_POSITION" "ORDER_VALIDATE" "ORDER_HAND_RT" "ORDER_READY" Permissions related to picking points |
| retailer_permissions required | Array of strings Items Enum: "RETAILER_MANAGE" "RETAILER_READ" "RETAILER_UPDATE" "RETAILER_UPDATE_WITH_INCENTIVE_SETTINGS" "PP_MANAGE" "PP_UPDATE_WITH_INCENTIVE_SETTINGS" "PP_UPDATE" "PP_CREATE" "PP_READ" "PP_DELETE" "ORDER_MANAGE" "ORDER_CREATE" "ORDER_CANCEL" "ORDER_REMOVE_DEBT" "ORDER_ADD_INCENTIVE" "ORDER_POSITION" "ORDER_VALIDATE" "ORDER_HAND_RT" "ORDER_READY" Permissions related to retailers |
| global_permissions required | Array of strings Items Enum: "MANAGE_ACCOUNT" "CREATE_USER" "UPDATE_USER" "DELETE_USER" "LIST_USERS" "USER_DETAIL" "CHANGE_PASSWORDS" "MI_TIENDA_GET_STORES" "MI_TIENDA_ACTIVATE_STORES" "PARTNER_PORTAL_GET_STORES" "PARTNER_PORTAL_ACTIVATE_STORES" "REPORTS" "CONTROL_TOWER" "HANDLE_ROLES" "MANAGE_SETTLEMENT" "DEV_PORTAL" "RETAILER_MANAGE" "RETAILER_READ" "RETAILER_UPDATE" "RETAILER_UPDATE_WITH_INCENTIVE_SETTINGS" "PP_MANAGE" "PP_UPDATE_WITH_INCENTIVE_SETTINGS" "PP_UPDATE" "PP_CREATE" "PP_READ" "PP_DELETE" "ORDER_MANAGE" "ORDER_CREATE" "ORDER_CANCEL" "ORDER_REMOVE_DEBT" "ORDER_ADD_INCENTIVE" "ORDER_POSITION" "ORDER_VALIDATE" "ORDER_HAND_RT" "ORDER_READY" Global permissions |
| name required | string Name of the permission group |
| description required | string Description of the permission group |
| level required | string Enum: "GLOBAL" "RETAILER" "PICKING_POINT" Level of the permission group (e.g., RETAILER) |
| created_at required | string Timestamp when the permission group was created. ISO String |
| updated_at required | string Timestamp when the permission group was last updated. ISO String |
[- {
- "id": 123,
- "brand_id": 12345,
- "picking_point_permissions": [
- "PP_MANAGE"
], - "retailer_permissions": [
- "RETAILER_MANAGE"
], - "global_permissions": [
- "MANAGE_ACCOUNT"
], - "name": "Visualizador Global",
- "description": "Ve todas las órdenes de todas las tiendas",
- "level": "GLOBAL",
- "created_at": "2025-01-23T16:08:30.672Z",
- "updated_at": "2025-01-23T16:08:30.672Z"
}
]| user-token required | string Token |
| user_enabled required | boolean Whether the user can log in and use the platform right away. Send |
| email required | string [ 5 .. 255 ] characters Email of the user being created. Used as the login identifier, so it must be unique — creating a user with an email that already exists is rejected. |
| password required | string [ 8 .. 80 ] characters Password for the new user. Must be 8-80 characters and include at least one lowercase letter, one uppercase letter and one digit. |
| name required | string [ 2 .. 60 ] characters Full name of the user, shown across the platform. |
| phone required | string [ 7 .. 15 ] characters Phone of the user. Digits only (no spaces, dashes or country-code prefix). |
| confirm_password required | string [ 8 .. 80 ] characters Must exactly match |
| permission_group_id required | number Id of the permission group (role) assigned to the user. This determines what the user can do in the platform. Retrieve the available permission groups from the permission-group list endpoint or the Cargo portal. |
| picking_points | Array of numbers Cargo ids of the picking points (stores) this user will have access to. Omit to grant access to all of the retailer's picking points. Use |
| retailers | Array of numbers Ids of the retailers the user belongs to. Optional; when provided it must contain at least one id. Most integrations only need one retailer and can omit this. |
| external_picking_points | Array of strings Picking points the user will have access to, referenced by your own external id instead of Cargo's |
| name required | string Name of the user. |
| email required | string Email of the user, used to log in. |
| user_enabled required | boolean Whether the user is currently enabled to use the platform. |
| id required | number Cargo id of the user. |
| has_token required | boolean Whether this user has an API token issued (i.e. can authenticate against this API via the |
| phone | string Phone of the user. Null if none was set. |
{- "user_enabled": true,
- "email": "julian@email.com",
- "password": "Passw0rd?",
- "name": "Julian",
- "phone": "3011234567",
- "confirm_password": "Passw0rd?",
- "picking_points": [
- 2,
- 1,
- 3
], - "permission_group_id": 42,
- "retailers": [
- 100
], - "external_picking_points": [
- "FH0197",
- "FH0198"
]
}{- "name": "Juan",
- "email": "juan@gmail.com",
- "phone": "3111234567",
- "user_enabled": false,
- "id": 1234567,
- "has_token": false
}| user-token required | string Token |
| id required | number User id |
| user_enabled | boolean Whether the user can log in and use the platform right away. Send |
| password | string [ 8 .. 80 ] characters Password for the new user. Must be 8-80 characters and include at least one lowercase letter, one uppercase letter and one digit. |
| name | string [ 2 .. 60 ] characters Full name of the user, shown across the platform. |
| phone | string [ 7 .. 15 ] characters Phone of the user. Digits only (no spaces, dashes or country-code prefix). |
| confirm_password | string [ 8 .. 80 ] characters Must exactly match |
| picking_points | Array of numbers Cargo ids of the picking points (stores) this user will have access to. Omit to grant access to all of the retailer's picking points. Use |
| permission_group_id | number Id of the permission group (role) assigned to the user. This determines what the user can do in the platform. Retrieve the available permission groups from the permission-group list endpoint or the Cargo portal. |
| retailers | Array of numbers Ids of the retailers the user belongs to. Optional; when provided it must contain at least one id. Most integrations only need one retailer and can omit this. |
| external_picking_points | Array of strings Picking points the user will have access to, referenced by your own external id instead of Cargo's |
string User email |
| name required | string Name of the user. |
| email required | string Email of the user, used to log in. |
| user_enabled required | boolean Whether the user is currently enabled to use the platform. |
| id required | number Cargo id of the user. |
| has_token required | boolean Whether this user has an API token issued (i.e. can authenticate against this API via the |
| phone | string Phone of the user. Null if none was set. |
{- "user_enabled": true,
- "password": "Passw0rd?",
- "name": "Julian",
- "phone": "3011234567",
- "confirm_password": "Passw0rd?",
- "picking_points": [
- 2,
- 1,
- 3
], - "permission_group_id": 42,
- "retailers": [
- 100
], - "external_picking_points": [
- "FH0197",
- "FH0198"
], - "id": 1234567,
- "email": "juan@email.com"
}{- "name": "Juan",
- "email": "juan@gmail.com",
- "phone": "3111234567",
- "user_enabled": false,
- "id": 1234567,
- "has_token": false
}| user-token required | string Token |
| id required | number Id of the user you want to delete |
| id required | number Cargo id of the user that was deleted. |
| success required | boolean Whether the deletion succeeded. |
{- "id": 1234567
}{- "id": 1234567,
- "success": true
}| offset | number Example: offset=0 Number of users to skip before collecting the page. Defaults to 0 when omitted. |
| limit | number Example: limit=50 Number of users to retrieve (page size). Defaults to 50 when omitted. |
| user-token required | string Token |
| name required | string Name of the user. |
| email required | string Email of the user, used to log in. |
| user_enabled required | boolean Whether the user is currently enabled to use the platform. |
| id required | number Cargo id of the user. |
| has_token required | boolean Whether this user has an API token issued (i.e. can authenticate against this API via the |
| phone | string Phone of the user. Null if none was set. |
[- {
- "name": "Juan",
- "email": "juan@gmail.com",
- "phone": "3111234567",
- "user_enabled": false,
- "id": 1234567,
- "has_token": false
}
]| id required | number Example: 1234567 Id of the user you want to retrieve |
| user-token required | string Token |
| name required | string Name of the user. |
| email required | string Email of the user, used to log in. |
| user_enabled required | boolean Whether the user is currently enabled to use the platform. |
| id required | number Cargo id of the user. |
| has_token required | boolean Whether this user has an API token issued (i.e. can authenticate against this API via the |
| phone | string Phone of the user. Null if none was set. |
{- "name": "Juan",
- "email": "juan@gmail.com",
- "phone": "3111234567",
- "user_enabled": false,
- "id": 1234567,
- "has_token": false
}| user-token required | string Token |
| lat required | number Latitude number of the picking point |
| lng required | number Longitude number of the picking point |
| address required | string Address of the picking point |
| city required | string City of the picking point |
| phone required | string Phone number of the picking point |
| name required | string Name of the picking point |
| contact_name required | string Name of the contact in the picking point |
| contact_email required | string Email of the contact in the picking point |
| preparation_time required | number Preparation time of an order in minutes. The assignation algorithm will use this information to time the arrival of the driver as close to the end of the preparation time as possible. |
| zip_code | string Zip code of the picking point |
| status | number Default: 1 Status of the picking point |
| external_id | string ID in your database, of the picking point registered in the Retailer Portal |
| rappi_store_id | object The Rappi Store id of the picking point, having this value will allow us to provide an improved experience such as having the same checkin code for Rappi and Cargo orders. |
| default_tip | float This sets the default tip of the picking point that takes into account semaphore limits and will be used as a tip where this picking point is the first store in an order |
| handshake_enabled | boolean If the value of the order has this value or higher, a verification code will be required on delivery |
| return_enabled | boolean This enables the return feature to the picking point |
| handoff_enabled | boolean This enables the handoff feature, you may ask your commercial about this feature |
| multiple_stops_tips | float Tip amount added to orders with multiple stops (more than 2 action points) when the retailer has multiple_stops_tips_status enabled |
| address required | string Address of the picking point |
| city required | string City of the picking point |
| contact_name required | string Name of the contact in the picking point |
| contact_email required | object Email of the contact in the picking point |
| external_id required | number ID in your database, of the picking point registered in the Retailer Portal |
| lat required | number Latitude number of the picking point |
| lng required | number Longitude number of the picking point |
| name required | string Name of the picking point |
| other required | string Extra information of the picking point |
| phone required | string Phone number of the picking point |
| preparation_time required | number Preparation time of an order in minutes |
| retailer_id required | string Retailer id in Cargo's DB |
| rappi_city_code | number City id in Rappi's DB |
| rappi_store_id | number store id in Rappi's DB |
| rappi_zone_id | number Geolocation zone id in Rappi's DB |
| status | number Store status |
| zip_code | string Zip code of the picking point |
| checkin_enabled | boolean Checkin enabled feature |
| return_enabled | boolean Return enabled feature |
| product_return_instructions | string Return instructions for that picking point |
| default_tip | float default tip of the picking point |
| min_saturation_for_default_tips | float Minimum fleet saturation (orders per courier in the zone) from which default_tip applies. Null inherits the retailer value. |
{- "lat": 4.60971,
- "lng": -74.08175,
- "address": "Carrera 123 #12 - 1",
- "city": "Bogotá",
- "phone": "31212345567",
- "zip_code": "123321",
- "status": 1,
- "name": "Restaurante laureles",
- "contact_name": "Julian",
- "contact_email": "julian@email.com",
- "preparation_time": 30,
- "external_id": "1234567",
- "rappi_store_id": 99019292,
- "default_tip": 500,
- "handshake_enabled": true,
- "return_enabled": true,
- "handoff_enabled": true,
- "multiple_stops_tips": 500
}{- "address": "Calle 123 #12 1",
- "city": "Bogotá",
- "contact_name": "Julian",
- "contact_email": "julian@email.com",
- "external_id": 1234567,
- "lat": 4.60971,
- "lng": -74.08175,
- "name": "Restaurant at laureles",
- "other": "Store with 3 yellow doors",
- "phone": "31212345567",
- "preparation_time": 30,
- "rappi_city_code": 1234567,
- "rappi_store_id": 1234567,
- "rappi_zone_id": 1234567,
- "retailer_id": 1234567,
- "status": 1,
- "zip_code": "123321",
- "checkin_enabled": true,
- "return_enabled": true,
- "product_return_instructions": "By the red door",
- "default_tip": 1234,
- "min_saturation_for_default_tips": 1.7
}| user-token required | string Token |
| id required | number Id of the picking point you want to update |
| lat | number Latitude number of the picking point |
| lng | number Longitude number of the picking point |
| address | string Address of the picking point |
| city | string City of the picking point |
| phone | string Phone number of the picking point |
| zip_code | string Zip code of the picking point |
| status | number Default: 1 Status of the picking point |
| name | string Name of the picking point |
| contact_name | string Name of the contact in the picking point |
| contact_email | string Email of the contact in the picking point |
| preparation_time | number Preparation time of an order in minutes. The assignation algorithm will use this information to time the arrival of the driver as close to the end of the preparation time as possible. |
| external_id | string ID in your database, of the picking point registered in the Retailer Portal |
| rappi_store_id | object The Rappi Store id of the picking point, having this value will allow us to provide an improved experience such as having the same checkin code for Rappi and Cargo orders. |
| default_tip | float This sets the default tip of the picking point that takes into account semaphore limits and will be used as a tip where this picking point is the first store in an order |
| handshake_enabled | boolean If the value of the order has this value or higher, a verification code will be required on delivery |
| return_enabled | boolean This enables the return feature to the picking point |
| handoff_enabled | boolean This enables the handoff feature, you may ask your commercial about this feature |
| multiple_stops_tips | float Tip amount added to orders with multiple stops (more than 2 action points) when the retailer has multiple_stops_tips_status enabled |
| address required | string Address of the picking point |
| city required | string City of the picking point |
| contact_name required | string Name of the contact in the picking point |
| contact_email required | object Email of the contact in the picking point |
| external_id required | number ID in your database, of the picking point registered in the Retailer Portal |
| lat required | number Latitude number of the picking point |
| lng required | number Longitude number of the picking point |
| name required | string Name of the picking point |
| other required | string Extra information of the picking point |
| phone required | string Phone number of the picking point |
| preparation_time required | number Preparation time of an order in minutes |
| retailer_id required | string Retailer id in Cargo's DB |
| rappi_city_code | number City id in Rappi's DB |
| rappi_store_id | number store id in Rappi's DB |
| rappi_zone_id | number Geolocation zone id in Rappi's DB |
| status | number Store status |
| zip_code | string Zip code of the picking point |
| checkin_enabled | boolean Checkin enabled feature |
| return_enabled | boolean Return enabled feature |
| product_return_instructions | string Return instructions for that picking point |
| default_tip | float default tip of the picking point |
| min_saturation_for_default_tips | float Minimum fleet saturation (orders per courier in the zone) from which default_tip applies. Null inherits the retailer value. |
{- "lat": 4.60971,
- "lng": -74.08175,
- "address": "Carrera 123 #12 - 1",
- "city": "Bogotá",
- "phone": "31212345567",
- "zip_code": "123321",
- "status": 1,
- "name": "Restaurante laureles",
- "contact_name": "Julian",
- "contact_email": "julian@email.com",
- "preparation_time": 30,
- "external_id": "1234567",
- "rappi_store_id": 99019292,
- "default_tip": 500,
- "handshake_enabled": true,
- "return_enabled": true,
- "handoff_enabled": true,
- "multiple_stops_tips": 500,
- "id": 1234567
}{- "address": "Calle 123 #12 1",
- "city": "Bogotá",
- "contact_name": "Julian",
- "contact_email": "julian@email.com",
- "external_id": 1234567,
- "lat": 4.60971,
- "lng": -74.08175,
- "name": "Restaurant at laureles",
- "other": "Store with 3 yellow doors",
- "phone": "31212345567",
- "preparation_time": 30,
- "rappi_city_code": 1234567,
- "rappi_store_id": 1234567,
- "rappi_zone_id": 1234567,
- "retailer_id": 1234567,
- "status": 1,
- "zip_code": "123321",
- "checkin_enabled": true,
- "return_enabled": true,
- "product_return_instructions": "By the red door",
- "default_tip": 1234,
- "min_saturation_for_default_tips": 1.7
}| offset required | number Example: offset=1 Amount of picking points you will skip in the a query |
| limit required | number Example: limit=50 Amount of picking points you will retrieve (amount of user per page) |
| orderdir | string Example: orderdir=asc Direction for orderby: asc or desc. Defaults to asc |
| orderby | string Example: orderby=name The attribute that the picking points will be ordered by. Note that adding this parameter will slow down the query |
| user-token required | string Token |
| address required | string Address of the picking point |
| city required | string City of the picking point |
| contact_name required | string Name of the contact in the picking point |
| contact_email required | object Email of the contact in the picking point |
| external_id required | number ID in your database, of the picking point registered in the Retailer Portal |
| lat required | number Latitude number of the picking point |
| lng required | number Longitude number of the picking point |
| name required | string Name of the picking point |
| other required | string Extra information of the picking point |
| phone required | string Phone number of the picking point |
| preparation_time required | number Preparation time of an order in minutes |
| retailer_id required | string Retailer id in Cargo's DB |
| rappi_city_code | number City id in Rappi's DB |
| rappi_store_id | number store id in Rappi's DB |
| rappi_zone_id | number Geolocation zone id in Rappi's DB |
| status | number Store status |
| zip_code | string Zip code of the picking point |
| checkin_enabled | boolean Checkin enabled feature |
| return_enabled | boolean Return enabled feature |
| product_return_instructions | string Return instructions for that picking point |
| default_tip | float default tip of the picking point |
| min_saturation_for_default_tips | float Minimum fleet saturation (orders per courier in the zone) from which default_tip applies. Null inherits the retailer value. |
[- {
- "address": "Calle 123 #12 1",
- "city": "Bogotá",
- "contact_name": "Julian",
- "contact_email": "julian@email.com",
- "external_id": 1234567,
- "lat": 4.60971,
- "lng": -74.08175,
- "name": "Restaurant at laureles",
- "other": "Store with 3 yellow doors",
- "phone": "31212345567",
- "preparation_time": 30,
- "rappi_city_code": 1234567,
- "rappi_store_id": 1234567,
- "rappi_zone_id": 1234567,
- "retailer_id": 1234567,
- "status": 1,
- "zip_code": "123321",
- "checkin_enabled": true,
- "return_enabled": true,
- "product_return_instructions": "By the red door",
- "default_tip": 1234,
- "min_saturation_for_default_tips": 1.7
}
]| lat required | number Example: lat=4.60971 Latitude of the reference point |
| lng required | number Example: lng=-74.08175 Longitude of the reference point |
| user-token required | string Token |
required | Array of objects (PickingPointNearbyItemResDTO) List of the 5 nearest picking points | ||||||||||||||||||||||
Array
| |||||||||||||||||||||||
{- "picking_points": [
- {
- "id": 1,
- "name": "Restaurant at laureles",
- "address": "Calle 123 #12 1",
- "city": "Bogotá",
- "phone": "31212345567",
- "lat": 4.60971,
- "lng": -74.08175,
- "retailer_id": 1234567,
- "status": 1,
- "preparation_time": 30,
- "distance_meters": 1523.45
}
]
}| id required | number Example: 123445 Id of the picking point you want to retrieve |
| user-token required | string Token |
| address required | string Address of the picking point |
| city required | string City of the picking point |
| contact_name required | string Name of the contact in the picking point |
| contact_email required | object Email of the contact in the picking point |
| external_id required | number ID in your database, of the picking point registered in the Retailer Portal |
| lat required | number Latitude number of the picking point |
| lng required | number Longitude number of the picking point |
| name required | string Name of the picking point |
| other required | string Extra information of the picking point |
| phone required | string Phone number of the picking point |
| preparation_time required | number Preparation time of an order in minutes |
| retailer_id required | string Retailer id in Cargo's DB |
| rappi_city_code | number City id in Rappi's DB |
| rappi_store_id | number store id in Rappi's DB |
| rappi_zone_id | number Geolocation zone id in Rappi's DB |
| status | number Store status |
| zip_code | string Zip code of the picking point |
| checkin_enabled | boolean Checkin enabled feature |
| return_enabled | boolean Return enabled feature |
| product_return_instructions | string Return instructions for that picking point |
| default_tip | float default tip of the picking point |
| min_saturation_for_default_tips | float Minimum fleet saturation (orders per courier in the zone) from which default_tip applies. Null inherits the retailer value. |
{- "address": "Calle 123 #12 1",
- "city": "Bogotá",
- "contact_name": "Julian",
- "contact_email": "julian@email.com",
- "external_id": 1234567,
- "lat": 4.60971,
- "lng": -74.08175,
- "name": "Restaurant at laureles",
- "other": "Store with 3 yellow doors",
- "phone": "31212345567",
- "preparation_time": 30,
- "rappi_city_code": 1234567,
- "rappi_store_id": 1234567,
- "rappi_zone_id": 1234567,
- "retailer_id": 1234567,
- "status": 1,
- "zip_code": "123321",
- "checkin_enabled": true,
- "return_enabled": true,
- "product_return_instructions": "By the red door",
- "default_tip": 1234,
- "min_saturation_for_default_tips": 1.7
}| p required | string Example: p=123445 Id of the picking point you want the checkin code for |
| user-token required | string Token |
required | object Checkin code information |
| name required | string Picking point's name |
{- "checkin": {
- "code": "8202",
- "store_id": 123
}, - "name": "Restaurant laureles"
}| user-token required | string Token |
| id required | number Picking point ID |
| name required | string Picking point's name |
| checkin_code required | string Picking point's current checkin code |
| checkin_code_url required | string The url where at any point the checkin of that picking point can be found |
| external_id | string Picking point id in your database |
[- {
- "id": 1234,
- "external_id": "PP-1234",
- "name": "Picking point Boulevard AV.",
- "checkin_code": "5678",
}
]| user-token required | string Token |
required | object Checkin code information |
| name required | string Picking point's name |
{ }{- "checkin": {
- "code": "8202",
- "store_id": 123
}, - "name": "Restaurant laureles"
}