# Criar um pedido

Cria um pedido enviando um payload JSON.

### Formato dos erros
Erros de validação são serializados pelo filtro global da CrediPay em duas formas:
- **`CredixErrorResponse`** (uma única validação): `{ message, code, context, timestamp, path, request_id }`
- **`CredixAggregateErrorResponse`** (várias validações falhando juntas): `{ message, code: "ORDER_VALIDATION_AGGREGATE_ERROR", errors: [{ message, code, context }], timestamp, path, request_id }`

O campo `code` é estável e deve ser usado pelo seu sistema como chave de identificação do erro. A mensagem em `message` permanece em inglês para evitar quebras quando a tradução evoluir.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "paths": {
    "/v2/orders": {
      "post": {
        "description": "Cria um pedido enviando um payload JSON.\n\n### Formato dos erros\nErros de validação são serializados pelo filtro global da CrediPay em duas formas:\n- **`CredixErrorResponse`** (uma única validação): `{ message, code, context, timestamp, path, request_id }`\n- **`CredixAggregateErrorResponse`** (várias validações falhando juntas): `{ message, code: \"ORDER_VALIDATION_AGGREGATE_ERROR\", errors: [{ message, code, context }], timestamp, path, request_id }`\n\nO campo `code` é estável e deve ser usado pelo seu sistema como chave de identificação do erro. A mensagem em `message` permanece em inglês para evitar quebras quando a tradução evoluir.",
        "operationId": "OrdersController_postOrder",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Dados do pedido.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrderDtoOpenApiSpec"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Operação bem-sucedida, pedido criado.",
            "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": {
                  "NO_INSTALLMENTS_PROVIDED_ERROR": {
                    "summary": "Nenhuma parcela informada",
                    "description": "O array `installments` está vazio.\n\n**Como resolver:** Inclua pelo menos uma entrada em `installments` com `faceValueCents` e (`termDays` ou `maturityDate`).",
                    "value": {
                      "message": "No installments provided for the order.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {},
                      "code": "NO_INSTALLMENTS_PROVIDED_ERROR",
                      "path": "/v2/orders",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "PAYMENT_TERMS_LOWER_THAN_MINIMUM_DAYS_ERROR": {
                    "summary": "Prazo de parcela abaixo do mínimo permitido",
                    "description": "Pelo menos uma parcela tem prazo menor que o mínimo permitido na plataforma (15 dias).\n\n**Como resolver:** Reajuste as parcelas para que `termDays` (ou a diferença até `maturityDate`) seja maior ou igual a `context.minimumPaymentTermDays`.",
                    "value": {
                      "message": "The payment term days is lower than the minimum allowed on platform.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "paymentTermDays": 7,
                        "minimumPaymentTermDays": 15,
                        "buyerTaxId": "65413430000008",
                        "buyerCompanyName": "Mercearia da Esquina LTDA"
                      },
                      "code": "PAYMENT_TERMS_LOWER_THAN_MINIMUM_DAYS_ERROR",
                      "path": "/v2/orders",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "PAYMENT_TERMS_DAYS_LIMIT_EXCEEDED_ERROR": {
                    "summary": "Prazo de parcela acima do máximo permitido",
                    "description": "Pelo menos uma parcela tem prazo maior que o limite configurado para essa combinação comprador/vendedor.\n\n**Como resolver:** Reajuste as parcelas para que `termDays` (ou a diferença até `maturityDate`) respeite `context.maxPaymentTermDays`, ou negocie um aumento de prazo com a CrediPay.",
                    "value": {
                      "message": "The payment term days is higher than the maximum allowed for this buyer seller combination.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "orderPaymentTermDays": 120,
                        "maxPaymentTermDays": 90,
                        "installmentNumber": 2,
                        "buyerTaxId": "65413430000008",
                        "buyerCompanyName": "Mercearia da Esquina LTDA"
                      },
                      "code": "PAYMENT_TERMS_DAYS_LIMIT_EXCEEDED_ERROR",
                      "path": "/v2/orders",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "AVAILABLE_CREDIT_LIMIT_EXCEEDED_ERROR": {
                    "summary": "Limite de crédito do comprador insuficiente",
                    "description": "O valor líquido do pedido excede o limite de crédito disponível do comprador.\n\n**Como resolver:** Reduza o valor do pedido para até `context.availableCreditLimitCents` ou solicite aumento de limite junto ao comprador antes de tentar de novo.",
                    "value": {
                      "message": "The order net amount exceeds available credit limit of buyer.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "availableCreditLimitCents": 1500000,
                        "amountCents": 2040000,
                        "buyerTaxId": "65413430000008",
                        "buyerCompanyName": "Mercearia da Esquina LTDA"
                      },
                      "code": "AVAILABLE_CREDIT_LIMIT_EXCEEDED_ERROR",
                      "path": "/v2/orders",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "MIN_ORDER_AMOUNT_ERROR": {
                    "summary": "Valor total do pedido abaixo do mínimo",
                    "description": "A soma de `faceValueCents` das parcelas resulta em um valor menor ou igual a zero.\n\n**Como resolver:** Garanta que o pedido tenha pelo menos uma parcela com `faceValueCents` positivo.",
                    "value": {
                      "message": "Order amount is less than the minimum allowed amount.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "orderAmountCents": 0,
                        "minOrderAmountCents": 1
                      },
                      "code": "MIN_ORDER_AMOUNT_ERROR",
                      "path": "/v2/orders",
                      "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",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  },
                  "ORDER_VALIDATION_AGGREGATE_ERROR": {
                    "summary": "Várias validações falharam simultaneamente",
                    "description": "Quando mais de uma validação falha no mesmo pedido, a CrediPay agrega as falhas em `errors[]` e usa o código `ORDER_VALIDATION_AGGREGATE_ERROR` no topo. Cada item de `errors[]` é um dos códigos documentados individualmente acima e mantém o mesmo `context`.",
                    "value": {
                      "message": "Multiple errors occurred",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "code": "ORDER_VALIDATION_AGGREGATE_ERROR",
                      "path": "/v2/orders",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d",
                      "errors": [
                        {
                          "message": "The order net amount exceeds available credit limit of buyer.",
                          "code": "AVAILABLE_CREDIT_LIMIT_EXCEEDED_ERROR",
                          "context": {
                            "availableCreditLimitCents": 1500000,
                            "amountCents": 2040000,
                            "buyerTaxId": "65413430000008",
                            "buyerCompanyName": "Mercearia da Esquina LTDA"
                          }
                        },
                        {
                          "message": "The payment term days is higher than the maximum allowed for this buyer seller combination.",
                          "code": "PAYMENT_TERMS_DAYS_LIMIT_EXCEEDED_ERROR",
                          "context": {
                            "orderPaymentTermDays": 120,
                            "maxPaymentTermDays": 90,
                            "installmentNumber": 2,
                            "buyerTaxId": "65413430000008",
                            "buyerCompanyName": "Mercearia da Esquina LTDA"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "A autenticação foi aceita, mas a organização da API key não tem permissão para a operação solicitada.",
            "content": {
              "application/json": {
                "examples": {
                  "SELLER_DOES_NOT_BELONG_TO_ORGANIZATION_ERROR": {
                    "summary": "Vendedor não pertence à organização autenticada",
                    "description": "O CNPJ informado em `sellerTaxId` (ou identificado na NF-e) não pertence à organização à qual a API key está vinculada.\n\n**Como resolver:** Use uma API key da organização correta ou corrija o `sellerTaxId` enviado.",
                    "value": {
                      "message": "Seller does not belong to the organization.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "taxId": "44876674000049"
                      },
                      "code": "SELLER_DOES_NOT_BELONG_TO_ORGANIZATION_ERROR",
                      "path": "/v2/orders",
                      "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",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso referenciado pelo pedido não foi encontrado.",
            "content": {
              "application/json": {
                "examples": {
                  "SELLER_NOT_FOUND_ERROR": {
                    "summary": "Vendedor não cadastrado",
                    "description": "O CNPJ informado em `sellerTaxId` (ou na NF-e) não está cadastrado na CrediPay.\n\n**Como resolver:** Conclua o onboarding do vendedor antes de criar pedidos para ele.",
                    "value": {
                      "message": "Seller not found.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "taxId": "44876674000049"
                      },
                      "code": "SELLER_NOT_FOUND_ERROR",
                      "path": "/v2/orders",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  }
                }
              }
            }
          },
          "412": {
            "description": "Pré-condição do comprador ainda não atendida.",
            "content": {
              "application/json": {
                "examples": {
                  "BUYER_NOT_ONBOARDED_ERROR": {
                    "summary": "Comprador ainda não concluiu o onboarding",
                    "description": "O comprador não finalizou o onboarding (chave PIX ou KYC ainda pendente). Pedidos só podem ser criados após a conclusão do cadastro.\n\n**Como resolver:** Aguarde a conclusão do onboarding. Se `context.onboardingStartedAt` estiver vazio, oriente o comprador a iniciar o cadastro pelo link enviado pela CrediPay.",
                    "value": {
                      "message": "Buyer is not onboarded.",
                      "timestamp": "2026-05-18T12:34:56.000Z",
                      "context": {
                        "buyerTaxId": "65413430000008",
                        "buyerId": "5b9f3a4b-1c2d-4e5f-8a7b-6c1e2d3a4b5c",
                        "onboardingStartedAt": "2026-05-10T09:15:00.000Z",
                        "onboardingCompletedAt": null
                      },
                      "code": "BUYER_NOT_ONBOARDED_ERROR",
                      "path": "/v2/orders",
                      "request_id": "9f3a4b1c-2d5e-4f7a-8b6c-1e2d3a4b5c6d"
                    }
                  }
                }
              }
            }
          }
        },
        "summary": "Criar um 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"
        ]
      },
      "InstallmentsDto": {
        "type": "object",
        "properties": {
          "maturityDate": {
            "type": "string",
            "description": "A data de vencimento. Deve ser fornecida essa ou termDays, mas não ambos.",
            "example": "2024-02-10T00:00:00Z",
            "deprecated": true
          },
          "termDays": {
            "type": "number",
            "description": "Número de dias até o vencimento. Deve ser fornecida essa ou maturityDate, mas não ambos.",
            "example": 30
          },
          "faceValueCents": {
            "type": "number",
            "description": "Valor nominal da parcela em centavos.",
            "example": 1020000
          }
        },
        "required": [
          "faceValueCents"
        ]
      },
      "OrderItemsDto": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "description": "Identificador único do produto.",
            "default": "7891910000197"
          },
          "productName": {
            "type": "string",
            "description": "Nome do produto.",
            "default": "Cerveja Skol 350ml"
          },
          "quantity": {
            "type": "number",
            "description": "Quantidade.",
            "default": 15
          },
          "unitPriceCents": {
            "type": "number",
            "description": "Preço unitário em centavos.",
            "default": 1020
          }
        },
        "required": [
          "productId",
          "productName",
          "quantity",
          "unitPriceCents"
        ]
      },
      "ContactInformationDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "E-mail do contato do comprador.",
            "example": "joaodasilva@example.com"
          },
          "phone": {
            "type": "string",
            "description": "Número de telefone do contato do comprador.",
            "example": "+551243974164"
          },
          "name": {
            "type": "string",
            "description": "Nome do contato do comprador.",
            "example": "Joao"
          },
          "lastName": {
            "type": "string",
            "description": "Sobrenome do contato do comprador.",
            "default": "Da Silva"
          }
        },
        "required": [
          "email",
          "phone",
          "name",
          "lastName"
        ]
      },
      "ShippingLocationDto": {
        "type": "object",
        "properties": {
          "address1": {
            "type": "string",
            "description": "Endereço linha 1.",
            "example": "Rua da Consolação, 930"
          },
          "address2": {
            "type": "string",
            "description": "Endereço linha 2.",
            "example": "Apto 101"
          },
          "city": {
            "type": "string",
            "description": "Cidade.",
            "example": "São Paulo"
          },
          "region": {
            "type": "string",
            "description": "Estado.",
            "example": "São Paulo"
          },
          "postalCode": {
            "type": "string",
            "description": "CEP.",
            "example": "01302000"
          },
          "country": {
            "type": "string",
            "description": "País.",
            "example": "Brazil"
          }
        },
        "required": [
          "address1",
          "city",
          "region",
          "postalCode",
          "country"
        ]
      },
      "CreateOrderDtoOpenApiSpec": {
        "type": "object",
        "properties": {
          "buyerTaxId": {
            "type": "string",
            "description": "CNPJ do comprador.",
            "example": "65.413.430/0000-08"
          },
          "sellerTaxId": {
            "type": "string",
            "description": "CNPJ do vendedor.",
            "example": "44.876.674/0000-49"
          },
          "metadata": {
            "type": "object",
            "description": "Qualquer metadado que você queira anexar ao pedido. Tamanho serializado máximo: 102400 caracteres.",
            "additionalProperties": true,
            "example": {
              "yourCustomFieldName": "yourCustomFieldValue"
            }
          },
          "externalId": {
            "type": "string",
            "description": "ID interno do pedido do vendedor.",
            "default": "REF-10230456"
          },
          "installments": {
            "description": "Parcelas",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstallmentsDto"
            }
          },
          "items": {
            "description": "Itens do pedido.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItemsDto"
            }
          },
          "contactInformation": {
            "description": "Informações de Contato do comprador.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactInformationDto"
              }
            ]
          },
          "shippingLocation": {
            "description": "Endereço de Entrega.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ShippingLocationDto"
              }
            ]
          },
          "processingMode": {
            "type": "string",
            "description": "O modo de processamento da nota fiscal. 'DDF' significa que o vendedor faz o upload da nota fiscal para a plataforma antes da entrega das mercadorias. 'DDE' significa que o vendedor faz o upload da nota fiscal para a plataforma após a entrega das mercadorias.",
            "enum": [
              "DDF",
              "DDE"
            ],
            "default": "DDF",
            "example": "DDF"
          }
        },
        "required": [
          "buyerTaxId",
          "sellerTaxId",
          "metadata",
          "installments",
          "items",
          "contactInformation",
          "shippingLocation",
          "processingMode"
        ]
      }
    }
  },
  "security": [
    {
      "api_key": []
    }
  ]
}
```