# Capturar pedido

Endpoint que permite enviar um arquivo XML de Nota Fiscal para um pedido existente. Assim que o arquivo XML é aceito, um job é disparado para realizar validações e capturar o pedido — parte das validações roda de forma assíncrona. Falhas síncronas (estado do pedido, lock em andamento, parsing do XML, validações internas de elegibilidade/política) retornam imediatamente nesta resposta.

### Formato dos erros
Erros seguem o mesmo formato de `POST /v2/orders`: `CredixErrorResponse` (uma falha) ou `CredixAggregateErrorResponse` (várias falhas, em `errors[]`). O `code` é estável e deve ser usado para o tratamento programático.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "paths": {
    "/v2/orders/{id}/capture": {
      "post": {
        "description": "Endpoint que permite enviar um arquivo XML de Nota Fiscal para um pedido existente. Assim que o arquivo XML é aceito, um job é disparado para realizar validações e capturar o pedido — parte das validações roda de forma assíncrona. Falhas síncronas (estado do pedido, lock em andamento, parsing do XML, validações internas de elegibilidade/política) retornam imediatamente nesta resposta.\n\n### Formato dos erros\nErros seguem o mesmo formato de `POST /v2/orders`: `CredixErrorResponse` (uma falha) ou `CredixAggregateErrorResponse` (várias falhas, em `errors[]`). O `code` é estável e deve ser usado para o tratamento programático.",
        "operationId": "OrdersController_captureOrder",
        "parameters": [
          {
            "name": "isPartialCapture",
            "required": false,
            "in": "query",
            "description": "Indica se esta captura deve ser tratada como captura parcial.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "ID interno de pedido da CrediPay. Formato UUID v4.",
            "schema": {
              "example": "46dd63dd-1be4-4658-8deb-fa5dc578ad0b",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Arquivo XML de Nota Fiscal. Precisa ter sido processado e aprovado pela SEFAZ (XMLs de rascunho não são permitidos).",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "invoice": {
                    "type": "string",
                    "format": "binary"
                  }
                },
                "required": [
                  "invoice"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Solicitação de captura aceita. As validações finais rodam de forma assíncrona — consulte `GET /v2/orders/:id` para acompanhar a transição de estado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOrderResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Falha de validação do pedido. O corpo da resposta segue o formato `CredixErrorResponse` (erro único) ou `CredixAggregateErrorResponse` (várias validações falhando ao mesmo tempo, em `errors[]`).",
            "content": {
              "application/json": {
                "examples": {
                  "NFE_PARSE_ERROR": {
                    "summary": "XML da NF-e inválido",
                    "description": "O arquivo enviado não passou na validação de schema da NF-e. Esse erro cobre toda falha de parsing — XML mal formado, campos obrigatórios ausentes ou tipos inválidos. Veja `context.error` para o detalhamento dos campos que falharam.\n\n**Como resolver:** Verifique se o XML é uma NF-e autorizada pela SEFAZ (não envie rascunhos). Os campos obrigatórios incluem:\n- `nfeProc.NFe.infNFe._Id` (chave de acesso, 44 dígitos)\n- `ide.dhEmi` (data de emissão)\n- `ide.nNF` (número curto da nota)\n- `ide.tpNF` (tipo, deve ser 1)\n- `emit.CNPJ` e `emit.xNome` (emitente)\n- `emit.enderEmit.*` (endereço completo do emitente)\n- `dest.CNPJ` e `dest.xNome` (destinatário)\n- `dest.enderDest.*` (endereço completo do destinatário)\n- `det[]` (itens)\n- `total.ICMSTot.vNF` (valor total)\n- `cobr.dup[]` (duplicatas com `nDup`, `dVenc`, `vDup`)",
                    "value": {
                      "message": "Could not parse NFE, please check if the xml is formed correctly.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "error": {
                          "issues": [
                            {
                              "path": [
                                "nfeProc",
                                "NFe",
                                "infNFe",
                                "dest",
                                "CNPJ"
                              ],
                              "code": "invalid_type",
                              "message": "Required"
                            }
                          ]
                        }
                      },
                      "code": "NFE_PARSE_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "CREDIT_NOTE_NOT_SUPPORTED_ERROR": {
                    "summary": "Nota de crédito não suportada",
                    "description": "O XML enviado é uma NF-e do tipo nota de crédito (`tpNF=0`). Apenas NF-e normal de saída (`tpNF=1`) é aceita.\n\n**Como resolver:** Reemita uma NF-e normal de saída antes de tentar o upload novamente.",
                    "value": {
                      "message": "Credit note is not supported.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "invoiceNumber": "NFe35240614200166000187550010000123451123456789"
                      },
                      "code": "CREDIT_NOTE_NOT_SUPPORTED_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "NFE_MISSING_BUYER_CONTACT_FIELDS_ERROR": {
                    "summary": "Faltam e-mail/telefone do comprador na NF-e",
                    "description": "O XML da NF-e não traz e-mail ou telefone do destinatário e a CrediPay ainda não possui esses dados em cache para o CNPJ informado.\n\n**Como resolver:** Reemita a NF-e com o e-mail e o telefone do destinatário preenchidos, ou cadastre as informações de contato do comprador previamente.",
                    "value": {
                      "message": "NFe XML is missing required buyer contact fields. Both email and phone must be present in the XML.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "missingFields": [
                          "email",
                          "phone"
                        ],
                        "buyerTaxId": "65413430000008"
                      },
                      "code": "NFE_MISSING_BUYER_CONTACT_FIELDS_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "INSTALLMENT_COUNT_DOES_NOT_MATCH_ASSET_COUNT_ERROR": {
                    "summary": "Número de parcelas não bate com o pedido",
                    "description": "A quantidade de duplicatas (`cobr/dup`) declarada na NF-e é diferente do número de parcelas registrado no pedido original.\n\n**Como resolver:** Garanta que a NF-e enviada contenha exatamente o mesmo número de parcelas declarado na criação do pedido.",
                    "value": {
                      "message": "Installment count does not match asset count.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "invoiceNumber": "NFe35240614200166000187550010000123451123456789",
                        "numberOfInstallments": 2,
                        "numberOfAssets": 3
                      },
                      "code": "INSTALLMENT_COUNT_DOES_NOT_MATCH_ASSET_COUNT_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "ORDER_ADDRESS_CHECK_ERROR": {
                    "summary": "Endereço de entrega não confere com o endereço do comprador",
                    "description": "A conferência de endereço falhou: o endereço de entrega informado na Nota Fiscal está distante do endereço cadastrado do comprador. Aplica-se apenas a compradores com conferência estrita de endereço habilitada.\n\n**Como resolver:** Corrija o endereço de entrega na Nota Fiscal para o endereço cadastrado do comprador e envie novamente.",
                    "value": {
                      "message": "Order address check failed. The provided shipping address does not match the address of the buyer.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {},
                      "code": "ORDER_ADDRESS_CHECK_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "ORDER_SEGMENT_MISMATCH_ERROR": {
                    "summary": "Pedido desatualizado: configuração comercial foi alterada",
                    "description": "A configuração comercial do pedido (taxas, prazos e demais parâmetros) foi alterada entre a criação e a captura. O pedido original não pode mais ser capturado nessas condições.\n\n**Como resolver:** Crie um novo pedido com a configuração vigente e capture-o com a NF-e correspondente.",
                    "value": {
                      "message": "The order is no longer valid for capture because its configuration has changed.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "orderId": "46dd63dd-1be4-4658-8deb-fa5dc578ad0b"
                      },
                      "code": "ORDER_SEGMENT_MISMATCH_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "ORDER_BUYER_MISMATCH_ERROR": {
                    "summary": "CNPJ do destinatário difere do comprador do pedido",
                    "description": "O CNPJ do destinatário (`dest.CNPJ`) na NF-e enviada não coincide com o CNPJ do comprador do pedido original.\n\n**Como resolver:** Reemita a NF-e usando o mesmo CNPJ informado em `buyerTaxId` na criação do pedido.",
                    "value": {
                      "message": "The buyer tax id linked to the order doesn't match the buyer tax id provided in the invoice.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "orderId": "46dd63dd-1be4-4658-8deb-fa5dc578ad0b",
                        "orderBuyerId": "5b9f3a4b-1c2d-4e5f-8a7b-6c1e2d3a4b5c",
                        "invoiceBuyerId": "7c8a9b0c-1d2e-3f4a-5b6c-7d8e9f0a1b2c"
                      },
                      "code": "ORDER_BUYER_MISMATCH_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A operação não é permitida pela política da CrediPay ou pelo estado/perfil atual do recurso.",
            "content": {
              "application/json": {
                "examples": {
                  "ORDER_REJECTED_BY_CREDIX_POLICY_ERROR": {
                    "summary": "Pedido recusado pela política da CrediPay",
                    "description": "O pedido foi recusado por uma política interna da CrediPay (risco, antifraude, elegibilidade, conferência de cadastro ou outros critérios). Por segurança, o motivo específico da recusa não é detalhado nesta resposta.\n\n**Como resolver:** Não há nova tentativa automática. Entre em contato com a equipe da CrediPay para análise se acreditar que a recusa é indevida.",
                    "value": {
                      "message": "Order rejected by Credix policy.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {},
                      "code": "ORDER_REJECTED_BY_CREDIX_POLICY_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "INVALID_ORDER_STATUS_ERROR": {
                    "summary": "Operação não permitida no estado atual do pedido",
                    "description": "A operação solicitada não é compatível com o estado atual do pedido. Consulte `context.actual` (estado em que o pedido se encontra) e `context.expected` (estados aceitos pela operação).\n\n**Como resolver:** Verifique o estado do pedido via `GET /v2/orders/:id` e reenvie quando o pedido estiver em um dos estados esperados.",
                    "value": {
                      "message": "Invalid order status.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "actual": "Captured",
                        "expected": "Validating"
                      },
                      "code": "INVALID_ORDER_STATUS_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflito com o estado atual do recurso.",
            "content": {
              "application/json": {
                "examples": {
                  "INVOICE_ALREADY_EXISTS_ERROR": {
                    "summary": "Nota fiscal já registrada",
                    "description": "A chave de acesso (`nNF`) da NF-e enviada já está registrada na CrediPay, possivelmente vinculada a outro pedido.\n\n**Como resolver:** Confirme que você não está reenviando o mesmo XML. Para corrigir uma nota inválida, cancele-a e emita uma nova com chave de acesso distinta.",
                    "value": {
                      "message": "Invoice with the given invoice number already exists.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "invoiceNumber": "NFe35240614200166000187550010000123451123456789",
                        "orderId": "46dd63dd-1be4-4658-8deb-fa5dc578ad0b"
                      },
                      "code": "INVOICE_ALREADY_EXISTS_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "CAPTURE_IN_PROGRESS_ERROR": {
                    "summary": "Captura já em andamento",
                    "description": "Já existe uma captura em processamento para este pedido. A operação não pode ser iniciada em paralelo.\n\n**Como resolver:** Aguarde a captura anterior concluir antes de reenviar. Consulte o estado do pedido via `GET /v2/orders/:id` para confirmar a finalização.",
                    "value": {
                      "message": "A capture request for this order is already being processed.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "orderId": "46dd63dd-1be4-4658-8deb-fa5dc578ad0b"
                      },
                      "code": "CAPTURE_IN_PROGRESS_ERROR",
                      "path": "/v2/orders/46dd63dd-1be4-4658-8deb-fa5dc578ad0b/capture",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  }
                }
              }
            }
          }
        },
        "summary": "Capturar pedido",
        "tags": [
          "Orders"
        ]
      }
    }
  },
  "info": {
    "title": "Credipay API",
    "description": "",
    "version": "2.0",
    "contact": {}
  },
  "servers": [
    {
      "url": "https://api.pre.credix.finance",
      "description": "Sandbox"
    },
    {
      "url": "https://api.credix.finance",
      "description": "Production"
    }
  ],
  "components": {
    "securitySchemes": {
      "api_key": {
        "type": "apiKey",
        "in": "header",
        "name": "X-CREDIPAY-API-KEY"
      }
    },
    "schemas": {
      "InvoiceFeesResponseDto": {
        "type": "object",
        "properties": {
          "transactionFeePercentage": {
            "type": "number",
            "description": "Taxa de transação como percentual do valor da nota fiscal (decimal, 0-1).",
            "example": 0.025
          },
          "transactionFeeCents": {
            "type": "number",
            "description": "Taxa de transação total da nota fiscal em centavos.",
            "example": 3750
          },
          "monthlyDiscountRate": {
            "type": "number",
            "description": "Taxa mensal de desconto (decimal) snapshot do pedido.",
            "example": 0.018
          },
          "discountFeeCents": {
            "type": "number",
            "description": "Soma dos descontos por antecipação na nota fiscal em centavos.",
            "example": 1200
          },
          "totalFee": {
            "type": "number",
            "description": "Taxa total (transação + desconto) como fração do valor da nota fiscal.",
            "example": 0.033
          },
          "totalFeeCents": {
            "type": "number",
            "description": "Soma das taxas (transação + desconto) em centavos.",
            "example": 4950
          }
        },
        "required": [
          "transactionFeePercentage",
          "transactionFeeCents",
          "monthlyDiscountRate",
          "discountFeeCents",
          "totalFee",
          "totalFeeCents"
        ]
      },
      "InvoiceAssetSellerDisbursementResponseDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Estado do desembolso ao vendedor desta duplicata. `None` = nenhuma SellerDisbursement criada (anticipação pré-desembolso, no-anticip pré-borderô, ineligible). `Open` é colapsado em `Pending` no wire (não exposto). `Pending` = agendada. `Settled` = realizada. `Failed` = retried-out.",
            "example": "Pending",
            "enum": [
              "None",
              "Pending",
              "Settled",
              "Failed"
            ]
          },
          "settledAt": {
            "type": "string",
            "description": "Data efetiva do desembolso ao vendedor. Null até atingir `Settled`.",
            "example": "2026-05-12T10:30:00Z",
            "format": "date-time",
            "nullable": true
          }
        },
        "required": [
          "status",
          "settledAt"
        ]
      },
      "InvoiceAssetCashStateResponseDto": {
        "type": "object",
        "properties": {
          "buyerPaid": {
            "type": "boolean",
            "description": "Comprador pagou esta duplicata: true quando qualquer repayment órfã (parent_id IS NULL) está paga. O filtro órfão honra o §5.1 canônico (sem proxy de filha-paga).",
            "example": true
          },
          "sellerDisbursed": {
            "type": "boolean",
            "description": "Vendedor já foi desembolsado por esta duplicata (sellerDisbursement.status === 'Settled').",
            "example": false
          }
        },
        "required": [
          "buyerPaid",
          "sellerDisbursed"
        ]
      },
      "InvoiceAssetResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID único da duplicata.",
            "example": "f1c8ec9f-d2c9-4a02-9cbd-2b1a3f8f5e1b",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "description": "Status da duplicata.",
            "example": "AcquisitionSuccess"
          },
          "collectionStatus": {
            "type": "string",
            "description": "Status de cobrança da duplicata.",
            "example": "Open"
          },
          "insured": {
            "type": "boolean",
            "description": "Indica se a duplicata está segurada.",
            "example": false
          },
          "faceValueCents": {
            "type": "number",
            "description": "Valor de face atual da duplicata (pós-reembolsos) em centavos.",
            "example": 50000
          },
          "refundAmountCents": {
            "type": "number",
            "description": "Valor reembolsado da duplicata em centavos.",
            "example": 0
          },
          "refundStatus": {
            "type": "string",
            "description": "Status de reembolso da duplicata.",
            "example": "NoRefund"
          },
          "originalFaceValueCents": {
            "type": "number",
            "description": "Valor de face original da duplicata (antes de quaisquer reembolsos) em centavos.",
            "example": 50000
          },
          "disburseOnDate": {
            "type": "string",
            "description": "Data agendada de desembolso para o vendedor (no-anticipation). Null em pedidos com antecipação ou enquanto OnBuyerPayment aguarda pagamento.",
            "example": "2026-06-30T00:00:00Z",
            "format": "date-time",
            "nullable": true
          },
          "sellerDisbursement": {
            "description": "Estado do desembolso ao vendedor desta duplicata (APO-96 / BE-1c). Wire enum {None, Pending, Settled, Failed} (entidade `Open` aliasada para `Pending`). Ausente em endpoints que não computam (ex.: listagem de pedidos).",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoiceAssetSellerDisbursementResponseDto"
              }
            ]
          },
          "cashState": {
            "description": "Estado de caixa por-duplicata para o fluxo de reembolso (APO-98 / FE-5 §5.1). Ausente em endpoints que não computam (ex.: listagem de pedidos).",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoiceAssetCashStateResponseDto"
              }
            ]
          }
        },
        "required": [
          "id",
          "status",
          "collectionStatus",
          "insured",
          "faceValueCents",
          "refundAmountCents",
          "refundStatus",
          "originalFaceValueCents",
          "disburseOnDate"
        ]
      },
      "InvoiceResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID único da nota fiscal no sistema do CrediPay.",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "invoiceNumber": {
            "type": "string",
            "description": "Número da nota fiscal.",
            "example": "NFe00000000000000000000000001642012886703226971"
          },
          "shortInvoiceNumber": {
            "type": "string",
            "description": "Número curto da nota fiscal.",
            "example": "0992346",
            "nullable": true
          },
          "issuanceDate": {
            "type": "string",
            "description": "Data e hora de emissão da nota fiscal (ISO).",
            "example": "2023-10-02T15:30:00Z",
            "format": "date-time"
          },
          "totalAmountCents": {
            "type": "number",
            "description": "Valor total da nota fiscal em centavos.",
            "example": 150000
          },
          "fees": {
            "description": "Detalhamento das taxas aplicadas à nota fiscal. Ausente em endpoints que não computam (ex.: listagem de pedidos).",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoiceFeesResponseDto"
              }
            ]
          },
          "disbursedAmountCents": {
            "type": "number",
            "description": "Valor já desembolsado ao vendedor referente a esta nota fiscal, em centavos.",
            "example": 145050
          },
          "expectedPayoutCents": {
            "type": "number",
            "description": "Valor líquido esperado a receber pelo vendedor referente a esta nota fiscal (totalAmountCents - totalFeeCents), em centavos.",
            "example": 145050
          },
          "refundableAmountCents": {
            "type": "number",
            "description": "Valor ainda reembolsável referente a esta nota fiscal (original - já reembolsado), em centavos.",
            "example": 50000
          },
          "totalRefundedAmountCents": {
            "type": "number",
            "description": "Soma dos reembolsos efetuados referentes a esta nota fiscal, em centavos.",
            "example": 0
          },
          "refundStatus": {
            "type": "string",
            "description": "Status agregado de reembolso da nota fiscal (NoRefund | PartialRefund | FullRefund).",
            "example": "NoRefund"
          },
          "assets": {
            "description": "Lista de duplicatas que compõem esta nota fiscal.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceAssetResponseDto"
            }
          }
        },
        "required": [
          "id",
          "invoiceNumber",
          "issuanceDate",
          "totalAmountCents"
        ]
      },
      "OrderBuyerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID do comprador.",
            "example": "a0eebc4b-1f3d-4b2a-8c5f-7e6d5f8e9b2f",
            "format": "uuid"
          },
          "taxId": {
            "type": "string",
            "description": "CNPJ do comprador.",
            "example": "56596567000127"
          },
          "name": {
            "type": "string",
            "description": "Nome do comprador.",
            "example": "Comprador Inexistente LTDA"
          }
        },
        "required": [
          "id",
          "taxId",
          "name"
        ]
      },
      "OrderSellerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID do vendedor.",
            "example": "a0eebc4b-1f3d-4b2a-8c5f-7e6d5f8e9b2f",
            "format": "uuid"
          },
          "taxId": {
            "type": "string",
            "description": "CNPJ do vendedor.",
            "example": "56596567000127"
          },
          "name": {
            "type": "string",
            "description": "Nome do vendedor.",
            "example": "Nome Fictício Distribuidora LTDA"
          }
        },
        "required": [
          "id",
          "taxId",
          "name"
        ]
      },
      "RepaymentIssuerDto": {
        "type": "object",
        "properties": {
          "taxId": {
            "type": "string",
            "description": "CNPJ da facility (emissor).",
            "example": "12345678000190"
          },
          "razaoSocial": {
            "type": "string",
            "description": "Razão social da facility (emissor).",
            "example": "Credix Securitizadora III S.A."
          }
        },
        "required": [
          "taxId",
          "razaoSocial"
        ]
      },
      "RepaymentPayeeDto": {
        "type": "object",
        "properties": {
          "branchNumber": {
            "type": "string",
            "description": "Número da agência bancária.",
            "example": "0001"
          },
          "branchDigit": {
            "type": "string",
            "description": "Dígito da agência bancária.",
            "example": "1"
          },
          "accountNumber": {
            "type": "string",
            "description": "Número da conta bancária.",
            "example": "12345678"
          },
          "accountDigit": {
            "type": "string",
            "description": "Dígito da conta bancária.",
            "example": "9"
          },
          "bankIdentificationCode": {
            "type": "string",
            "description": "Código de identificação bancária (ISPB).",
            "example": "001"
          }
        },
        "required": [
          "branchNumber",
          "branchDigit",
          "accountNumber",
          "accountDigit",
          "bankIdentificationCode"
        ]
      },
      "RepaymentResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID único do pagamento.",
            "example": "e912ba21-d530-4982-aa92-a06d7518afa0",
            "format": "uuid"
          },
          "pdfUrl": {
            "type": "string",
            "description": "URL para o arquivo PDF do pagamento (boleto).",
            "example": "https://api.starkbank.com/v2/invoice/fb1553149ff34c8db238f36dc64a8232.pdf"
          },
          "status": {
            "type": "string",
            "description": "Status do pagamento.",
            "example": "Open",
            "enum": [
              "Open",
              "ProcessingPayment",
              "Paid",
              "Canceled",
              "Expired",
              "Unknown",
              "Failed",
              "CancellationFailed",
              "Reversed"
            ]
          },
          "totalAmountCents": {
            "type": "number",
            "description": "Valor total a ser pago em centavos.",
            "example": 100000
          },
          "createdAt": {
            "type": "string",
            "description": "Data e hora em que o pagamento foi criado.",
            "example": "2023-10-01T12:00:00Z",
            "format": "date-time"
          },
          "dueDate": {
            "type": "string",
            "description": "Data de vencimento do pagamento.",
            "example": "2023-10-15T12:00:00Z",
            "format": "date-time"
          },
          "paymentDate": {
            "type": "string",
            "description": "Data real em que o pagamento foi efetuado.",
            "example": "2023-10-10T12:00:00Z",
            "format": "date-time",
            "nullable": true
          },
          "paidAmountCents": {
            "type": "number",
            "description": "Valor efetivamente pago em centavos.",
            "example": 50000
          },
          "parentId": {
            "type": "string",
            "description": "ID do pagamento pai, se aplicável (ex.: vinculado a outro pagamento). \t\t\tQuando um pedido é reembolsado, ou um pagamento é renegociado/estendido, o pagamento pai \t\t\tserá cancelado e um novo será criado.",
            "example": "3b27b131-7ab7-4a67-b88e-424c1d30b247",
            "format": "uuid",
            "nullable": true
          },
          "documentNumber": {
            "type": "string",
            "description": "Número do documento: número curto da nota fiscal + '-' + número único do ativo.",
            "example": "0992346-001",
            "nullable": true
          },
          "duplicata": {
            "type": "string",
            "description": "Número único da duplicata (parcela).",
            "example": "123456789",
            "nullable": true
          },
          "paymentCode": {
            "type": "string",
            "description": "Código de pagamento do boleto.",
            "example": "34191.79001 01043.510047 91020.150008 6 91570000002000",
            "nullable": true
          },
          "pixEmv": {
            "type": "string",
            "description": "Código EMV para pagamento via PIX.",
            "example": "00020101021126580014BR.GOV.BCB.PIX0136b69bc...",
            "nullable": true
          },
          "issuer": {
            "description": "Informações do emissor (facility).",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/RepaymentIssuerDto"
              }
            ]
          },
          "payee": {
            "description": "Informações do beneficiário (conta bancária da empresa vendedora).",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/RepaymentPayeeDto"
              }
            ]
          },
          "monthlyLateFeeRate": {
            "type": "number",
            "description": "Taxa de juros mensal por atraso.",
            "example": 0.02
          },
          "fixedLateFeePercentage": {
            "type": "number",
            "description": "Percentual fixo de multa por atraso.",
            "example": 0.1
          }
        },
        "required": [
          "id",
          "pdfUrl",
          "status",
          "totalAmountCents",
          "createdAt",
          "dueDate",
          "paymentDate",
          "paidAmountCents",
          "parentId",
          "documentNumber",
          "issuer",
          "payee",
          "monthlyLateFeeRate",
          "fixedLateFeePercentage"
        ]
      },
      "OrderErrorDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Código do erro.",
            "example": "INVALID_TAX_ID"
          },
          "message": {
            "type": "string",
            "description": "Mensagem de erro.",
            "example": "O CNPJ fornecido é inválido."
          }
        },
        "required": [
          "code",
          "message"
        ]
      },
      "OrderRefundDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID único do reembolso.",
            "example": "e912ba21-d530-4982-aa92-a06d7518afa0",
            "format": "uuid"
          },
          "amountCents": {
            "type": "number",
            "description": "Valor do reembolso em centavos.",
            "example": 50000
          },
          "status": {
            "type": "string",
            "description": "Status do reembolso.",
            "example": "Pending",
            "enum": [
              "Pending",
              "Completed",
              "Failed"
            ]
          },
          "createdAt": {
            "type": "string",
            "description": "Data e hora em que o reembolso foi criado.",
            "example": "2023-10-01T12:00:00Z",
            "format": "date-time"
          },
          "error": {
            "type": "string",
            "description": "O erro que ocorreu durante o reembolso.",
            "example": "Invalid tax ID format.",
            "nullable": true
          },
          "invoiceNumber": {
            "type": "string",
            "description": "Número da invoice alvo do reembolso.",
            "example": "NFe52260201008713004909550450025301111856486341",
            "nullable": true
          }
        },
        "required": [
          "id",
          "amountCents",
          "status",
          "createdAt",
          "error"
        ]
      },
      "RefundBlockDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Código do bloqueio de reembolso ativo no momento da carga do pedido.",
            "example": "REFUND_BLOCKED_DISBURSEMENT_PENDING",
            "enum": [
              "REFUND_BLOCKED_RENEGOTIATED_ASSET",
              "REFUND_BLOCKED_REPAYMENT_PROCESSING",
              "REFUND_BLOCKED_DISBURSEMENT_PENDING",
              "REFUND_BLOCKED_CERC_OPERATION_ACTIVE"
            ]
          }
        },
        "required": [
          "code"
        ]
      },
      "GetOrderResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID interno do pedido no CrediPay. Formato UUID v4.",
            "example": "46dd63dd-1be4-4658-8deb-fa5dc578ad0b",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "description": "Data de criação do pedido.",
            "example": "2023-10-01T12:00:00Z",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "description": "Data de atualização do pedido.",
            "example": "2023-10-01T12:00:00Z",
            "format": "date-time"
          },
          "acceptedAt": {
            "type": "string",
            "description": "Data em que o pedido foi aceito pelo comprador.",
            "example": "2023-10-01T12:00:00Z",
            "format": "date-time"
          },
          "disbursedAt": {
            "type": "string",
            "description": "Data em que o pedido foi desembolsado para o vendedor.",
            "example": "2023-10-01T12:00:00Z",
            "format": "date-time"
          },
          "disbursementRollupState": {
            "type": "string",
            "description": "Estado consolidado do desembolso por order, para a coluna Status da lista. Preenchido pela busca; null em respostas de detalhe.",
            "example": null,
            "enum": [
              "AwaitingBuyerPayment",
              "Scheduled",
              "Processing",
              "InProgress",
              "Completed"
            ],
            "nullable": true
          },
          "displayStatus": {
            "type": "string",
            "description": "Status efetivo do pedido — mesma derivação server-side da coluna Status da lista. Preenchido no detalhe do seller; nulo no detalhe do buyer (a chave está presente com valor null — não confiar em presença de chave).",
            "example": "Completed",
            "enum": [
              "New",
              "Created",
              "Accepted",
              "Cancelled",
              "WaitingForInvoice",
              "Captured",
              "Expired",
              "Validating",
              "ValidationFailed",
              "NfValidationFailed",
              "PartiallyRefunded",
              "FullyRefunded",
              "WaitingForOtp",
              "PartiallyCaptured",
              "AwaitingBuyerPayment",
              "Scheduled",
              "Processing",
              "InProgress",
              "Completed"
            ],
            "nullable": true
          },
          "capturedAt": {
            "type": "string",
            "description": "Data em que o pedido foi capturado (criação da nota fiscal).",
            "example": "2023-10-01T12:00:00Z",
            "format": "date-time"
          },
          "externalId": {
            "type": "string",
            "description": "ID externo do pedido, se houver.",
            "example": "123456789"
          },
          "status": {
            "type": "string",
            "description": "Status do pedido.",
            "example": "Accepted",
            "enum": [
              "New",
              "Created",
              "Accepted",
              "Cancelled",
              "WaitingForInvoice",
              "Captured",
              "Expired",
              "Validating",
              "ValidationFailed",
              "NfValidationFailed",
              "PartiallyRefunded",
              "FullyRefunded",
              "WaitingForOtp",
              "PartiallyCaptured"
            ]
          },
          "invoice": {
            "description": "Nota fiscal do pedido.",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoiceResponseDto"
              }
            ]
          },
          "invoices": {
            "description": "Notas fiscais do pedido.",
            "nullable": false,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceResponseDto"
            }
          },
          "buyer": {
            "description": "Comprador do pedido.",
            "allOf": [
              {
                "$ref": "#/components/schemas/OrderBuyerDto"
              }
            ]
          },
          "seller": {
            "description": "Vendedor do pedido.",
            "allOf": [
              {
                "$ref": "#/components/schemas/OrderSellerDto"
              }
            ]
          },
          "repayments": {
            "description": "Informações de pagamento do pedido.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RepaymentResponseDto"
            }
          },
          "errors": {
            "description": "Qualquer tipo de erro que pode ocorrer durante a vida útil de um pedido. \t\t\tTanto erros de reembolso quanto de validação de nota fiscal estão incluídos aqui. \t\t\tErros de validação anteriores não são incluídos após uma nova tentativa bem-sucedida de upload de nota fiscal.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderErrorDto"
            }
          },
          "refunds": {
            "description": "Reembolsos do pedido.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderRefundDto"
            }
          },
          "metadata": {
            "type": "object",
            "description": "Metadados passados pelo vendedor na criação do pedido.",
            "additionalProperties": true,
            "example": {
              "yourCustomFieldName": "yourCustomFieldValue"
            }
          },
          "totalAmountCents": {
            "type": "number",
            "description": "Valor total do pedido em centavos. \t\t \tSe o pedido tiver uma nota fiscal, este valor é retirado da nota fiscal;\n\t\t\tcaso contrário, é retirado do próprio pedido.",
            "example": 12345
          },
          "transactionFeeCents": {
            "type": "number",
            "description": "Taxa de transação total do pedido em centavos (Order-level, não recalculada por invoice).",
            "example": 5000
          },
          "disbursementSchedulingStrategy": {
            "type": "string",
            "description": "Estratégia de agendamento do desembolso. OnAssetCreation = antecipação; OnAssetDueDate / OnBuyerPayment = no-anticipation.",
            "example": "OnAssetCreation",
            "enum": [
              "OnAssetCreation",
              "OnBuyerPayment",
              "OnAssetDueDate"
            ]
          },
          "disbursementDelayDays": {
            "type": "number",
            "description": "Dias adicionados à data base (vencimento do asset ou pagamento do comprador) para definir disburseOnDate. 0 para antecipação.",
            "example": 0
          },
          "refundBlocks": {
            "description": "Bloqueios de reembolso ativos, calculados na carga do detalhe do pedido. O frontend mostra um card de bloqueio em vez dos cards de reembolso quando não vazio. Ausente em respostas de busca.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RefundBlockDto"
            }
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "externalId",
          "status",
          "invoice",
          "invoices",
          "buyer",
          "seller",
          "repayments",
          "errors",
          "refunds",
          "metadata",
          "totalAmountCents",
          "transactionFeeCents",
          "disbursementSchedulingStrategy",
          "disbursementDelayDays"
        ]
      }
    }
  },
  "security": [
    {
      "api_key": []
    }
  ]
}
```