Promoções Aplicáveis no Carrinho Interno
Visão Geral
O módulo de Promoções permite que o operador administrativo aplique benefícios e incentivos financeiros diretamente ao carrinho do cliente.
Esta funcionalidade garante paridade total com o checkout público, permitindo que negociações assistidas se beneficiem de campanhas de marketing, saldos de fidelidade e cupons de desconto.
Todas as operações desta família são concentradas sob o prefixo /carts/{cartId}/promotionals e atuam de forma síncrona, atualizando imediatamente o discountMap do carrinho.
---
Tipos de Benefícios
O sistema suporta três pilares promocionais principais:
1. Cupons de Desconto (coupon): Aplicação de códigos promocionais de campanhas específicas.
2. Carteira do Cliente (wallet): Uso de saldos de créditos, trocas ou estornos acumulados no perfil do comprador.
3. Programa de Pontos (point-system): Resgate de pontuação de fidelidade para abatimento no valor total da compra.
---
Regras de Acumulatividade
A aplicação de promoções segue as regras de concorrência definidas no motor de promoções da plataforma.
Algumas promoções podem ser mutuamente exclusivas (ex: um cupom que não permite uso conjunto com pontos).
O sistema validará estas condições em tempo real, retornando mensagens informativas caso um benefício bloqueie outro.
Entidades Envolvidas
- Discount Map: Estrutura de dados que detalha a origem de cada desconto aplicado ao carrinho, facilitando a transparência para o operador e para o cliente final.
- Coupon Hash: O identificador alfanumérico do cupom gerado pelo marketing.
- Saldos Disponíveis: Valores em carteira ou pontos que são consultados diretamente no perfil do cliente vinculado antes da aplicação.
Notas e Considerações
Pré-requisito de Identificação
Para o uso de Carteira e Pontos, o carrinho deve obrigatoriamente possuir um cliente vinculado.
Tentativas de aplicar estes benefícios em carrinhos anônimos resultarão em erro, pois o sistema não terá contexto para debitar os saldos.
---
Invalidação em Mudanças de Carrinho
Promoções vinculadas a itens específicos (ex: "10% de desconto no produto X") serão automaticamente removidas ou recalculadas caso o item em questão seja excluído ou tenha sua quantidade alterada.
O operador deve estar atento aos totais do carrinho após realizar modificações na lista de produtos.
Aplicar Cupom no Carrinho (Admin)
/carts/{cartId}/promotionals/coupon
Insere um código promocional (hash) no carrinho administrativo para abatimento de valores conforme as regras da campanha.
Descrição
Este endpoint permite a inserção de cupons de desconto no carrinho administrativo.
Ele funciona como um validador em tempo real: ao receber o hash (código do cupom), o sistema verifica a vigência da campanha, o limite de usos, as condições de valor mínimo e a compatibilidade com os itens já presentes no carrinho.
Se o cupom for válido, o desconto será aplicado imediatamente e detalhado no objeto discountMap.coupon da resposta.
Esta ação é fundamental para que o operador administrativo replique benefícios prometidos em campanhas de marketing ou ofereça descontos de contingência autorizados.
---
Comportamento de Substituição
A aplicação de cupom via PUT é idempotente no sentido de substituição:
se o carrinho já possuir um cupom aplicado, o novo hash substituirá o anterior (respeitando as regras de acumulatividade do motor de promoções).
Caso o operador deseje apenas remover o benefício sem inserir um novo, deve utilizar o método DELETE.
---
Impacto no Recálculo
A inclusão de um cupom dispara um recálculo total do carrinho. Valores de frete e parcelamentos podem ser alterados caso o desconto reduza o valor final abaixo de determinadas faixas de benefícios ou condições de pagamento.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token do usuário autenticado na API privada com escopo CART_WRITE. |
Content-Type | application/json | Tipo de conteúdo da requisição. |
Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cartId | string | Sim | Token identificador único do carrinho administrativo. |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
hash | string | Sim | Código alfanumérico do cupom (ex: VERAO2026). |
Exemplo de Requisição
1curl --request PUT \2 --url '{{MAIN_URL}}/carts/CART123/promotionals/coupon' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI' \4 --header 'Content-Type: application/json' \5 --data '{6 "hash": "MEU-CUPOM"7 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "id": "CART-8f42dce0-20f0-4c4c-bb4f-9f8a16f6f471",3 "currencyId": "BRL",4 "countryCode": "BRA",5 "quoteZipcode": "12123-123",6 "subtotalValue": 259.9,7 "shippingValue": 18.4,8 "discountValue": 15,9 "additionValue": 0,10 "totalValue": 263.3,11 "discountPreview": {12 "cashDiscount": {13 "discountPercentage": 5,14 "discountValue": 13.17,15 "valueWithDiscount": 250.1316 },17 "pointSystem": {18 "name": "Programa Fidelidade Uappi",19 "pointValue": 0.01,20 "originalAmount": 2633,21 "finalAmount": 2501,22 "finalValue": 25.0123 }24 },25 "installments": [],26 "requestedProductMap": [27 {28 "productId": 1,29 "quantity": 2,30 "code": "PROMO-ADMIN",31 "upsellId": null,32 "productPairOfferId": null33 },34 {35 "productId": 25,36 "quantity": 1,37 "code": null,38 "upsellId": 7,39 "productPairOfferId": 1840 }41 ],42 "discountMap": {43 "promotion": [],44 "coupon": {45 "discountId": 9002,46 "discountType": "coupon",47 "discountValue": 5,48 "discountMainCode": "BEMVINDO5",49 "discountTitle": "Cupom de boas-vindas"50 },51 "customer-wallet": null,52 "point-system": null53 },54 "customer": {55 "customerId": 345,56 "nameCorporateName": "Mariana Souza",57 "tradeName": "",58 "email": "mariana.souza@cliente.com",59 "document": "12345678909",60 "gender": "female",61 "isCorporate": false,62 "nationality": "BRA",63 "birthdate": "1992-08-14",64 "phone": "+5511998765432"65 },66 "addresses": [67 {68 "addressId": 31,69 "type": "delivery",70 "zipCode": "12123-123",71 "identification": "Casa",72 "street": "Rua das Flores",73 "number": "120",74 "city": "São José dos Campos",75 "complement": "Apto 22",76 "district": "Jardim Primavera",77 "state": "São Paulo",78 "stateCode": "SP",79 "countryCode": "BRA",80 "recipient": "Mariana Souza",81 "createdAt": "2026-05-05 10:10:00",82 "updatedAt": "2026-05-05 10:12:00"83 }84 ],85 "orders": [86 {87 "orderId": 1,88 "quoteId": "quote-01",89 "distance": 12,90 "subtotalValue": 259.9,91 "shippingValue": 18.4,92 "discountValue": 15,93 "additionValue": 0,94 "totalValue": 263.3,95 "service": false,96 "storage": {97 "id": 11,98 "code": "CD-SP-01",99 "corporateName": "Centro de Distribuição SP LTDA",100 "email": "logistica.sp@uappi.com.br",101 "phone": "+551133334444",102 "tradeName": "CD São Paulo",103 "stateCode": "SP",104 "countryCode": "BRA",105 "document": "12345678000199",106 "zipCode": "01000-000",107 "city": "São Paulo",108 "address": "Avenida Logística",109 "district": "Centro",110 "number": "1000",111 "complement": "Galpão B",112 "latitude": "-23.55052",113 "longitude": "-46.63331",114 "active": true,115 "observation": "Janela de coleta até 16h",116 "tradePolicyExceptions": [117 5,118 7119 ]120 },121 "items": [122 {123 "itemId": 1,124 "productCategoryIds": [125 15,126 18127 ],128 "upsellId": null,129 "productPairOfferId": null,130 "productPriceRuleId": 3,131 "productPriceRuleName": "Preço Atacado",132 "quantity": 2,133 "code": "PROMO-ADMIN",134 "unitValue": 129.95,135 "unitAdditionValue": 0,136 "unitDiscountValue": 7.5,137 "subtotalValue": 259.9,138 "subtotalAdditionValue": 0,139 "subtotalDiscountValue": 15,140 "totalValue": 244.9,141 "product": {142 "productId": 1,143 "brandId": 9,144 "brandName": "Marca Exemplo",145 "mainCategoryId": 15,146 "mainCategoryName": "Tênis",147 "type": "simple",148 "sku": "SKU-001",149 "name": "Tênis Running Pro",150 "active": true,151 "url": "tenis-running-pro",152 "comparisonPrice": 149.9,153 "stock": 25,154 "medias": [155 {156 "id": 88,157 "type": "image",158 "title": "Foto frontal",159 "alternativeText": "Tênis Running Pro azul",160 "file": "products/tenis-running-pro-frontal.webp",161 "originalFile": "products/original/tenis-running-pro-frontal.jpg",162 "size": 148230,163 "originalSize": 423991,164 "width": 1200,165 "height": 1200,166 "url": "https://cdn.uappi.com.br/products/tenis-running-pro-frontal.webp"167 }168 ],169 "combination": [170 301,171 455172 ],173 "currentAttributes": [174 {175 "id": 12,176 "name": "Cor",177 "value": {178 "id": 455,179 "label": "Azul",180 "image": "attributes/color-blue.webp",181 "originalImage": "attributes/original/color-blue.png",182 "color": "#0033CC",183 "order": 2184 }185 },186 {187 "id": 13,188 "name": "Tamanho",189 "value": {190 "id": 301,191 "label": "42",192 "image": null,193 "originalImage": null,194 "color": null,195 "order": 4196 }197 }198 ],199 "restriction": {200 "tradePolicyId": 1,201 "requiredAge": 0202 }203 },204 "discounts": [205 {206 "cartOrderDiscountId": 9001,207 "cartOrderAdditionId": 0,208 "value": 10,209 "detail": {210 "rule": "PROMO-10-CATEGORIA",211 "scope": "item"212 }213 }214 ],215 "additions": [216 {217 "cartOrderDiscountId": 0,218 "cartOrderAdditionId": 7001,219 "value": 0,220 "detail": {221 "reason": "sem acrescimo aplicado"222 }223 }224 ]225 }226 ],227 "additions": [228 {229 "additionType": "custom-value-rule",230 "additionValue": 0,231 "additionTitle": "Ajuste manual interno"232 }233 ],234 "discounts": [235 {236 "discountId": 9002,237 "discountType": "coupon",238 "discountValue": 5,239 "discountMainCode": "BEMVINDO5",240 "discountTitle": "Cupom de boas-vindas"241 }242 ],243 "shippingOptions": [244 {245 "shippingTableId": 55,246 "shippingPickupPointId": 0,247 "label": "Entrega padrão",248 "shippingValue": 18.4,249 "beginShippingTime": 2,250 "endShippingTime": 5,251 "shippingTimeType": "days",252 "selected": true,253 "details": {254 "shippingTableId": 55,255 "integrationCode": "uappi",256 "externalShippingCode": "STD-55",257 "carrierId": 17,258 "carrierName": "Transportadora XPTO",259 "label": "Entrega padrão",260 "value": 18.4,261 "beginShippingTime": 2,262 "endShippingTime": 5,263 "trackingUrl": "https://tracking.transportadora.com/{code}",264 "row": {265 "id": 901,266 "initialZipcode": "12000-000",267 "finalZipcode": "12999-999",268 "initialWeight": 0,269 "finalWeight": 30,270 "initialPrice": 0,271 "finalPrice": 99999,272 "beginShippingTime": 2,273 "endShippingTime": 5,274 "shippingValue": 18.4,275 "variables": {276 "kg_factor": 1.2,277 "distance_factor": 0.8278 }279 },280 "pickups": [281 {282 "id": 100,283 "type": "internal",284 "selected": false,285 "name": "Loja Centro",286 "address": "Rua Quinze de Novembro",287 "number": "45",288 "district": "Centro",289 "city": "São José dos Campos",290 "countryCode": "BRA",291 "stateCode": "SP",292 "zipCode": "12210-000",293 "complement": "Retirar no balcão 2",294 "latitude": "-23.1895",295 "longitude": "-45.8841",296 "openingHours": "Seg-Sex 09:00-18:00"297 }298 ],299 "error": null300 }301 }302 ]303 }304 ],305 "errors": [306 {307 "identifier": 1,308 "entity": "Payment",309 "type": "warning",310 "description": "Condição de pagamento indisponível para uma das parcelas.",311 "error": "UAPPI_STORE_PAYMENT_CONDITION_UNAVAILABLE"312 }313 ],314 "isMerged": false,315 "createdAt": "2026-05-05 10:00:00",316 "updatedAt": "2026-05-05 10:43:21"317}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
| Código Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_APPLY_PROMOTIONAL_NOT_FOUND | 404 | O código de cupom informado não existe no sistema. |
| UAPPI_STORE_APPLY_PROMOTIONAL_BLOCKED | 400 | O cupom é válido, mas não pode ser usado em conjunto com as promoções já aplicadas. |
| UAPPI_STORE_APPLY_PROMOTIONAL_OUT_OF_SCHEDULE | 400 | A campanha vinculada ao cupom já expirou ou ainda não começou. |
| UAPPI_STORE_APPLY_PROMOTIONAL_MAX_USE | 400 | O limite global ou por cliente de usos deste cupom foi atingido. |
| UAPPI_STORE_CART_NOT_FOUND | 404 | O carrinho administrativo informado não foi encontrado. |
Remover Cupom do Carrinho (Admin)
/carts/{cartId}/promotionals/coupon
Retira o cupom promocional atualmente aplicado ao carrinho administrativo.
Descrição
Este endpoint remove qualquer cupom de desconto que tenha sido aplicado anteriormente ao carrinho.
Ao realizar esta ação, o sistema anula o abatimento financeiro vinculado ao hash e retorna os totais do carrinho ao seu estado original (ou apenas com descontos automáticos de catálogo).
É a operação recomendada para limpar o estado promocional do carrinho caso o cliente decida trocar de cupom ou se as condições da negociação mudarem e o benefício não for mais aplicável.
---
Sincronização de Totais
A remoção do cupom dispara um novo ciclo de cálculo no domínio de Store. O operador deve observar o objeto totalValue na resposta para confirmar o novo saldo devedor do carrinho após a retirada do incentivo.
---
Autenticação
A remoção exige permissão de escrita (CART_WRITE). O sistema valida se o operador tem autoridade sobre o carrinho antes de processar a limpeza das regras promocionais.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token do usuário autenticado na API privada com escopo CART_WRITE. |
Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cartId | string | Sim | Token identificador único do carrinho administrativo. |
Exemplo de Requisição
1curl --request DELETE \2 --url '{{MAIN_URL}}/carts/CART123/promotionals/coupon' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "id": "CART-8f42dce0-20f0-4c4c-bb4f-9f8a16f6f471",3 "currencyId": "BRL",4 "countryCode": "BRA",5 "quoteZipcode": "12123-123",6 "subtotalValue": 259.9,7 "shippingValue": 18.4,8 "discountValue": 15,9 "additionValue": 0,10 "totalValue": 263.3,11 "discountPreview": {12 "cashDiscount": {13 "discountPercentage": 5,14 "discountValue": 13.17,15 "valueWithDiscount": 250.1316 },17 "pointSystem": {18 "name": "Programa Fidelidade Uappi",19 "pointValue": 0.01,20 "originalAmount": 2633,21 "finalAmount": 2501,22 "finalValue": 25.0123 }24 },25 "installments": [],26 "requestedProductMap": [27 {28 "productId": 1,29 "quantity": 2,30 "code": "PROMO-ADMIN",31 "upsellId": null,32 "productPairOfferId": null33 },34 {35 "productId": 25,36 "quantity": 1,37 "code": null,38 "upsellId": 7,39 "productPairOfferId": 1840 }41 ],42 "discountMap": {43 "promotion": [],44 "coupon": null,45 "customer-wallet": null,46 "point-system": null47 },48 "customer": {49 "customerId": 345,50 "nameCorporateName": "Mariana Souza",51 "tradeName": "",52 "email": "mariana.souza@cliente.com",53 "document": "12345678909",54 "gender": "female",55 "isCorporate": false,56 "nationality": "BRA",57 "birthdate": "1992-08-14",58 "phone": "+5511998765432"59 },60 "addresses": [61 {62 "addressId": 31,63 "type": "delivery",64 "zipCode": "12123-123",65 "identification": "Casa",66 "street": "Rua das Flores",67 "number": "120",68 "city": "São José dos Campos",69 "complement": "Apto 22",70 "district": "Jardim Primavera",71 "state": "São Paulo",72 "stateCode": "SP",73 "countryCode": "BRA",74 "recipient": "Mariana Souza",75 "createdAt": "2026-05-05 10:10:00",76 "updatedAt": "2026-05-05 10:12:00"77 }78 ],79 "orders": [80 {81 "orderId": 1,82 "quoteId": "quote-01",83 "distance": 12,84 "subtotalValue": 259.9,85 "shippingValue": 18.4,86 "discountValue": 15,87 "additionValue": 0,88 "totalValue": 263.3,89 "service": false,90 "storage": {91 "id": 11,92 "code": "CD-SP-01",93 "corporateName": "Centro de Distribuição SP LTDA",94 "email": "logistica.sp@uappi.com.br",95 "phone": "+551133334444",96 "tradeName": "CD São Paulo",97 "stateCode": "SP",98 "countryCode": "BRA",99 "document": "12345678000199",100 "zipCode": "01000-000",101 "city": "São Paulo",102 "address": "Avenida Logística",103 "district": "Centro",104 "number": "1000",105 "complement": "Galpão B",106 "latitude": "-23.55052",107 "longitude": "-46.63331",108 "active": true,109 "observation": "Janela de coleta até 16h",110 "tradePolicyExceptions": [111 5,112 7113 ]114 },115 "items": [116 {117 "itemId": 1,118 "productCategoryIds": [119 15,120 18121 ],122 "upsellId": null,123 "productPairOfferId": null,124 "productPriceRuleId": 3,125 "productPriceRuleName": "Preço Atacado",126 "quantity": 2,127 "code": "PROMO-ADMIN",128 "unitValue": 129.95,129 "unitAdditionValue": 0,130 "unitDiscountValue": 7.5,131 "subtotalValue": 259.9,132 "subtotalAdditionValue": 0,133 "subtotalDiscountValue": 15,134 "totalValue": 244.9,135 "product": {136 "productId": 1,137 "brandId": 9,138 "brandName": "Marca Exemplo",139 "mainCategoryId": 15,140 "mainCategoryName": "Tênis",141 "type": "simple",142 "sku": "SKU-001",143 "name": "Tênis Running Pro",144 "active": true,145 "url": "tenis-running-pro",146 "comparisonPrice": 149.9,147 "stock": 25,148 "medias": [149 {150 "id": 88,151 "type": "image",152 "title": "Foto frontal",153 "alternativeText": "Tênis Running Pro azul",154 "file": "products/tenis-running-pro-frontal.webp",155 "originalFile": "products/original/tenis-running-pro-frontal.jpg",156 "size": 148230,157 "originalSize": 423991,158 "width": 1200,159 "height": 1200,160 "url": "https://cdn.uappi.com.br/products/tenis-running-pro-frontal.webp"161 }162 ],163 "combination": [164 301,165 455166 ],167 "currentAttributes": [168 {169 "id": 12,170 "name": "Cor",171 "value": {172 "id": 455,173 "label": "Azul",174 "image": "attributes/color-blue.webp",175 "originalImage": "attributes/original/color-blue.png",176 "color": "#0033CC",177 "order": 2178 }179 },180 {181 "id": 13,182 "name": "Tamanho",183 "value": {184 "id": 301,185 "label": "42",186 "image": null,187 "originalImage": null,188 "color": null,189 "order": 4190 }191 }192 ],193 "restriction": {194 "tradePolicyId": 1,195 "requiredAge": 0196 }197 },198 "discounts": [199 {200 "cartOrderDiscountId": 9001,201 "cartOrderAdditionId": 0,202 "value": 10,203 "detail": {204 "rule": "PROMO-10-CATEGORIA",205 "scope": "item"206 }207 }208 ],209 "additions": [210 {211 "cartOrderDiscountId": 0,212 "cartOrderAdditionId": 7001,213 "value": 0,214 "detail": {215 "reason": "sem acrescimo aplicado"216 }217 }218 ]219 }220 ],221 "additions": [222 {223 "additionType": "custom-value-rule",224 "additionValue": 0,225 "additionTitle": "Ajuste manual interno"226 }227 ],228 "discounts": [],229 "shippingOptions": [230 {231 "shippingTableId": 55,232 "shippingPickupPointId": 0,233 "label": "Entrega padrão",234 "shippingValue": 18.4,235 "beginShippingTime": 2,236 "endShippingTime": 5,237 "shippingTimeType": "days",238 "selected": true,239 "details": {240 "shippingTableId": 55,241 "integrationCode": "uappi",242 "externalShippingCode": "STD-55",243 "carrierId": 17,244 "carrierName": "Transportadora XPTO",245 "label": "Entrega padrão",246 "value": 18.4,247 "beginShippingTime": 2,248 "endShippingTime": 5,249 "trackingUrl": "https://tracking.transportadora.com/{code}",250 "row": {251 "id": 901,252 "initialZipcode": "12000-000",253 "finalZipcode": "12999-999",254 "initialWeight": 0,255 "finalWeight": 30,256 "initialPrice": 0,257 "finalPrice": 99999,258 "beginShippingTime": 2,259 "endShippingTime": 5,260 "shippingValue": 18.4,261 "variables": {262 "kg_factor": 1.2,263 "distance_factor": 0.8264 }265 },266 "pickups": [267 {268 "id": 100,269 "type": "internal",270 "selected": false,271 "name": "Loja Centro",272 "address": "Rua Quinze de Novembro",273 "number": "45",274 "district": "Centro",275 "city": "São José dos Campos",276 "countryCode": "BRA",277 "stateCode": "SP",278 "zipCode": "12210-000",279 "complement": "Retirar no balcão 2",280 "latitude": "-23.1895",281 "longitude": "-45.8841",282 "openingHours": "Seg-Sex 09:00-18:00"283 }284 ],285 "error": null286 }287 }288 ]289 }290 ],291 "errors": [292 {293 "identifier": 1,294 "entity": "Payment",295 "type": "warning",296 "description": "Condição de pagamento indisponível para uma das parcelas.",297 "error": "UAPPI_STORE_PAYMENT_CONDITION_UNAVAILABLE"298 }299 ],300 "isMerged": false,301 "createdAt": "2026-05-05 10:00:00",302 "updatedAt": "2026-05-05 10:43:21"303}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
| Código Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_CART_NOT_FOUND | 404 | O carrinho administrativo informado não foi encontrado. |
| UAPPI_STORE_CART_USER_MISMATCH | 403 | O operador não tem permissão para remover promoções deste carrinho. |
| UAPPI_STORE_CART_ORDER_EXISTS | 403 | O carrinho já gerou um pedido; o cupom utilizado no fechamento não pode ser removido. |
Aplicar Carteira no Carrinho (Admin)
/carts/{cartId}/promotionals/customer-wallet
Utiliza o saldo de créditos ou cashback do perfil do cliente para abater o valor total do carrinho administrativo.
Descrição
Este endpoint permite o resgate de saldos acumulados na carteira virtual do cliente (Gift Cards, estornos em conta ou cashback) como forma de pagamento parcial ou total do carrinho administrativo.
Ao ser acionada, a API consulta o saldo disponível no perfil do titular vinculado e aplica o abatimento máximo permitido pelas regras da loja.
O benefício é refletido imediatamente no objeto discountMap.customer-wallet, permitindo que o operador administrativo informe ao cliente o novo saldo devedor.
Esta ação é fundamental para fidelização, permitindo que o atendimento assistido utilize créditos que o cliente já possui em sua conta.
---
Pré-requisito de Vínculo
O uso da carteira é estritamente vinculado à identidade do comprador.
Por isso, esta chamada exige que o carrinho já possua um cliente vinculado (customerId).
Caso o vínculo não exista, o sistema retornará um erro de pré-condição, uma vez que não haverá origem de saldo para o débito.
---
Cálculo e Prioridade
O valor debitado da carteira segue a lógica de "uso total disponível" até o limite do valor do carrinho.
Se o saldo em carteira for superior ao total da compra, o carrinho será zerado e o saldo remanescente permanecerá na conta do cliente para usos futuros.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token do usuário autenticado na API privada com escopo CART_WRITE. |
Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cartId | string | Sim | Token identificador único do carrinho administrativo. |
Exemplo de Requisição
1curl --request POST \2 --url '{{MAIN_URL}}/carts/CART123/promotionals/customer-wallet' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": {4 "id": "abc12345678907865432",5 "countryCode": "",6 "quoteZipcode": "",7 "subtotalValue": 300,8 "shippingValue": 0,9 "discountValue": 300,10 "additionValue": 0,11 "totalValue": 0,12 "discountPreview": {13 "cashDiscount": {14 "discountPercentage": 0,15 "discountValue": 0,16 "valueWithDiscount": 017 },18 "pointSystem": {19 "name": "System Point",20 "pointValue": 0.01,21 "originalAmount": 3.79,22 "finalAmount": 3.79,23 "finalValue": 0.030024 }25 },26 "installments": [],27 "requestedProductMap": [28 {29 "productId": 1,30 "quantity": 1,31 "code": null,32 "upsellId": null,33 "productPairOfferId": null34 }35 ],36 "discountMap": {37 "promotion": [],38 "coupon": null,39 "customer-wallet": {40 "discountId": 1,41 "discountType": "customer-wallet",42 "discountValue": 300,43 "discountMainCode": "customer-wallet",44 "discountTitle": "Customer Wallet"45 },46 "point-system": null47 },48 "customer": {49 "customerId": 1,50 "nameCorporateName": "Eric",51 "tradeName": "",52 "email": "customer.test@uappi.com.br",53 "document": "",54 "gender": "male",55 "isCorporate": false,56 "nationality": "BRA",57 "birthdate": "2000-01-01",58 "phone": "+12345678912"59 },60 "addresses": [61 {62 "addressId": 1,63 "type": "both",64 "zipCode": "12345678",65 "identification": "casa",66 "street": "Rua das flores",67 "number": "1000",68 "city": "Birigui",69 "complement": "Casa",70 "district": "Bairro floral",71 "state": "São Paulo",72 "stateCode": "BR-SP",73 "countryCode": "BRA",74 "recipient": "Eric"75 }76 ],77 "orders": [78 {79 "orderId": 0,80 "quoteId": "",81 "distance": 0,82 "subtotalValue": 300,83 "shippingValue": 0,84 "discountValue": 300,85 "additionValue": 0,86 "totalValue": 0,87 "service": false,88 "storage": null,89 "items": [90 {91 "itemId": 0,92 "productCategoryId": 0,93 "upsellId": null,94 "productPairOfferId": null,95 "productPriceRuleId": 0,96 "productPriceRuleName": "Original",97 "quantity": 1,98 "code": null,99 "unitValue": 300,100 "unitAdditionValue": 0,101 "unitDiscountValue": 300,102 "subtotalValue": 300,103 "subtotalAdditionValue": 0,104 "subtotalDiscountValue": 300,105 "totalValue": 0,106 "product": {107 "productId": 1,108 "brandId": 0,109 "brandName": "",110 "mainCategoryId": 0,111 "mainCategoryName": "",112 "type": "product",113 "sku": "SKU123321",114 "name": "Produto tecnológico",115 "active": true,116 "url": "tech-brand-product.html",117 "comparisonPrice": 499,118 "stock": 20,119 "medias": [],120 "combination": [],121 "currentAttributes": []122 },123 "discounts": [124 {125 "cartOrderDiscountId": 1,126 "cartOrderAdditionId": 0,127 "value": 300,128 "detail": {129 "entity": {130 "entity": "customer-wallet",131 "identifier": "customer-wallet",132 "description": "Customer Wallet",133 "type": "value",134 "target": "subtotal-shipping",135 "error": null136 },137 "target": "subtotal",138 "value": 300139 }140 }141 ],142 "additions": []143 }144 ],145 "additions": [],146 "discounts": [147 {148 "discountId": 1,149 "discountType": "customer-wallet",150 "discountValue": 300,151 "discountMainCode": "customer-wallet",152 "discountTitle": "Customer Wallet"153 }154 ],155 "shippingOptions": []156 }157 ],158 "errors": [],159 "isMerged": false,160 "createdAt": "2026-01-29 20:14:59",161 "updatedAt": "2026-01-30 11:30:53"162 }163}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
| Código Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_APPLY_PROMOTIONAL_INSUFFICIENT_BALANCE | 400 | O cliente não possui saldo em carteira ou o saldo é insuficiente para as regras mínimas da loja. |
| UAPPI_STORE_CART_CUSTOMER_IS_REQUIRED | 401 | Você deve vincular um cliente ao carrinho antes de tentar usar o saldo de carteira. |
| UAPPI_STORE_APPLY_PROMOTIONAL_NO_ITEMS | 400 | Não existem itens no carrinho elegíveis para o uso de créditos de carteira. |
| UAPPI_STORE_CART_NOT_FOUND | 404 | O carrinho administrativo informado não foi encontrado. |
Remover Carteira do Carrinho (Admin)
/carts/{cartId}/promotionals/customer-wallet
Retira o saldo de carteira aplicado como abatimento no carrinho administrativo.
Descrição
Este endpoint anula o uso de créditos da carteira virtual que foram aplicados anteriormente ao carrinho.
Ao realizar a remoção, o sistema "estorna" o saldo virtual para o perfil do cliente e atualiza os totais do carrinho para refletir o valor bruto original (recalculando frete e outros benefícios se necessário).
É o procedimento correto quando o cliente decide que não quer mais utilizar seus créditos nesta compra específica ou quando o operador precisa ajustar o carrinho para um método de pagamento incompatível com o uso de saldos de fidelidade.
---
Autenticação e Segurança
A operação exige o escopo de escrita CART_WRITE. O sistema garante que a remoção do saldo seja feita de forma atômica, assegurando que o cliente não perca seus créditos e que o carrinho permaneça consistente para o fechamento por outros meios.
---
Impacto no Fechamento
Após a remoção bem-sucedida, o objeto discountMap.customer-wallet retornará como null. O operador administrativo deve revalidar o valor total final com o cliente antes de prosseguir para a geração do pedido.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token do usuário autenticado na API privada com escopo CART_WRITE. |
Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cartId | string | Sim | Token identificador único do carrinho administrativo. |
Exemplo de Requisição
1curl --request DELETE \2 --url '{{MAIN_URL}}/carts/CART123/promotionals/customer-wallet' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "id": "abc1234235708967543",3 "countryCode": "",4 "quoteZipcode": "",5 "subtotalValue": 300,6 "shippingValue": 0,7 "discountValue": 0,8 "additionValue": 0,9 "totalValue": 300,10 "discountPreview": {11 "cashDiscount": {12 "discountPercentage": 0,13 "discountValue": 0,14 "valueWithDiscount": 30015 },16 "pointSystem": {17 "name": "System Point",18 "pointValue": 0.01,19 "originalAmount": 3.79,20 "finalAmount": 3.79,21 "finalValue": 0.030022 }23 },24 "installments": [],25 "requestedProductMap": [26 {27 "productId": 1,28 "quantity": 1,29 "code": null,30 "upsellId": null,31 "productPairOfferId": null32 }33 ],34 "discountMap": {35 "promotion": [],36 "coupon": null,37 "customer-wallet": null,38 "point-system": null39 },40 "customer": {41 "customerId": 1,42 "nameCorporateName": "Eric",43 "tradeName": "",44 "email": "customer.test@uappi.com.br",45 "document": "",46 "gender": "male",47 "isCorporate": false,48 "nationality": "BRA",49 "birthdate": "2000-01-01",50 "phone": "+12345678912"51 },52 "addresses": [53 {54 "addressId": 1,55 "type": "both",56 "zipCode": "12345678",57 "identification": "casa",58 "street": "Rua das flores",59 "number": "1000",60 "city": "Birigui",61 "complement": "Casa",62 "district": "Bairro floral",63 "state": "São Paulo",64 "stateCode": "BR-SP",65 "countryCode": "BRA",66 "recipient": "Eric"67 }68 ],69 "orders": [70 {71 "orderId": 0,72 "quoteId": "",73 "distance": 0,74 "subtotalValue": 300,75 "shippingValue": 0,76 "discountValue": 0,77 "additionValue": 0,78 "totalValue": 300,79 "service": false,80 "storage": null,81 "items": [82 {83 "itemId": 0,84 "productCategoryId": 0,85 "upsellId": null,86 "productPairOfferId": null,87 "productPriceRuleId": 0,88 "productPriceRuleName": "Original",89 "quantity": 1,90 "code": null,91 "unitValue": 300,92 "unitAdditionValue": 0,93 "unitDiscountValue": 0,94 "subtotalValue": 300,95 "subtotalAdditionValue": 0,96 "subtotalDiscountValue": 0,97 "totalValue": 300,98 "product": {99 "productId": 1,100 "brandId": 0,101 "brandName": "",102 "mainCategoryId": 0,103 "mainCategoryName": "",104 "type": "product",105 "sku": "SKU123321",106 "name": "Produto Tecnológico",107 "active": true,108 "url": "tech-brand-product.html",109 "comparisonPrice": 499,110 "stock": 20,111 "medias": [],112 "combination": [],113 "currentAttributes": []114 },115 "discounts": [],116 "additions": []117 }118 ],119 "additions": [],120 "discounts": [],121 "shippingOptions": []122 }123 ],124 "errors": [],125 "isMerged": false,126 "createdAt": "2026-01-29 20:14:59",127 "updatedAt": "2026-01-30 11:30:31"128}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
| Código Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_CART_NOT_FOUND | 404 | O carrinho administrativo informado não foi encontrado. |
| UAPPI_STORE_CART_USER_MISMATCH | 403 | O operador não possui permissão para gerenciar este carrinho. |
| UAPPI_STORE_CART_ORDER_EXISTS | 403 | O carrinho já gerou um pedido e seu snapshot financeiro não pode mais ser alterado. |
Aplicar Pontos no Carrinho (Admin)
/carts/{cartId}/promotionals/point-system
Endpoint responsável por aplicar saldo de pontos no carrinho administrativo
Descrição
Este endpoint permite resgatar pontos acumulados de um programa de fidelidade e convertê-los em desconto no carrinho, quando essa funcionalidade estiver habilitada na loja.
Na prática, ele utiliza o saldo disponível do cliente para aplicar um abatimento no valor total, respeitando as regras de conversão definidas — como proporção de pontos, limites e elegibilidade 🎯
Para que a operação seja válida, é necessário que o carrinho esteja vinculado a um cliente com saldo suficiente e elegível no programa de fidelidade.
Após uma chamada bem-sucedida, o sistema atualiza os valores do carrinho, refletindo o desconto aplicado e considerando esse benefício nas etapas seguintes do checkout.
Esse recurso exige a permissão CART_WRITE.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token do usuário autenticado na API privada. |
Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| cartId | string | Sim | Identificador do carrinho |
Exemplo de Requisição
1curl --request POST \2 --url '{{MAIN_URL}}/carts/CART123/promotionals/point-system' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "id": "CART123",3 "countryCode": "BRA",4 "quoteZipcode": "01310100",5 "subtotalValue": 100,6 "shippingValue": 15,7 "discountValue": 20,8 "additionValue": 0,9 "discountPreview": {10 "cashDiscount": null,11 "pointSystem": {12 "name": "Pontos Uappi",13 "pointValue": 0.01,14 "originalAmount": 1000,15 "finalAmount": 800,16 "finalValue": 817 }18 },19 "installments": [],20 "requestedProductMap": [],21 "discountMap": {22 "promotion": [],23 "coupon": null,24 "customer-wallet": null,25 "point-system": {26 "discountId": 31,27 "discountType": "point-system",28 "discountValue": 20,29 "discountMainCode": "point-system",30 "discountTitle": "Sistema de pontos"31 }32 },33 "totalValue": 95,34 "customer": null,35 "addresses": [],36 "orders": [],37 "errors": []38}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_CART_NOT_FOUND | 404 | O carrinho informado não foi encontrado. |
| UAPPI_STORE_CART_CUSTOMER_IS_DISABLED | 401 | O cliente vinculado ao carrinho está inativo. |
| UAPPI_STORE_CART_CUSTOMER_IS_REQUIRED | 401 | A ação exige cliente vinculado ao carrinho. |
| UAPPI_STORE_CART_EMPTY | 400 | O carrinho está vazio e não permite aplicar pontos. |
| UAPPI_STORE_CART_INVALID_ERROR_TO_PUSH | 500 | Falha ao registrar erro interno no carrinho. |
| UAPPI_STORE_CART_QUOTE_ATTEMPT_FAILED | 502 | A tentativa de cotação para o carrinho falhou. |
| UAPPI_STORE_APPLY_PROMOTIONAL_NO_ITEMS | 400 | Não há itens elegíveis para aplicação do promocional. |
| UAPPI_STORE_APPLY_PROMOTIONAL_NOT_FOUND | 404 | O promocional de pontos não foi encontrado. |
Remover Pontos do Carrinho (Admin)
/carts/{cartId}/promotionals/point-system
Endpoint responsável por remover saldo de pontos do carrinho administrativo
Descrição
Este endpoint permite remover os pontos de fidelidade aplicados ao carrinho, desfazendo a conversão em desconto sem alterar os itens selecionados.
Na prática, ele elimina o abatimento gerado pelo uso de pontos, fazendo com que o total do carrinho volte a considerar apenas os valores monetários e demais promoções ativas 💰
Essa operação não impacta produtos, quantidades ou regras promocionais já aplicadas — apenas retira o benefício vinculado ao programa de fidelidade.
Após uma chamada bem-sucedida, o sistema recalcula o total do carrinho, refletindo a remoção do desconto por pontos.
Esse recurso exige a permissão CART_WRITE.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token do usuário autenticado na API privada. |
Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| cartId | string | Sim | Identificador do carrinho |
Exemplo de Requisição
1curl --request DELETE \2 --url '{{MAIN_URL}}/carts/CART123/promotionals/point-system' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "id": "CART123",3 "countryCode": "BRA",4 "quoteZipcode": "01310100",5 "subtotalValue": 100,6 "shippingValue": 15,7 "discountValue": 0,8 "additionValue": 0,9 "discountPreview": {10 "cashDiscount": null,11 "pointSystem": null12 },13 "installments": [],14 "requestedProductMap": [],15 "discountMap": {16 "promotion": [],17 "coupon": null,18 "customer-wallet": null,19 "point-system": null20 },21 "totalValue": 115,22 "customer": null,23 "addresses": [],24 "orders": [],25 "errors": []26}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_CART_NOT_FOUND | 404 | O carrinho informado não foi encontrado. |
| UAPPI_STORE_CART_CUSTOMER_IS_DISABLED | 401 | O cliente vinculado ao carrinho está inativo. |
| UAPPI_STORE_CART_CUSTOMER_IS_REQUIRED | 401 | A ação exige cliente vinculado ao carrinho. |
| UAPPI_STORE_CART_EMPTY | 400 | O carrinho está vazio e não permite ação promocional. |
| UAPPI_STORE_CART_INVALID_ERROR_TO_PUSH | 500 | Falha ao registrar erro interno no carrinho. |
| UAPPI_STORE_CART_QUOTE_ATTEMPT_FAILED | 502 | A tentativa de cotação para o carrinho falhou. |