> ## Documentation Index
> Fetch the complete documentation index at: https://docs.astronpay.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Cotação payout

> Calcula quanto o receiver receberá em BRL ao depositar um valor em crypto. A cotação expira em ~30 segundos. Use o `quoteId` retornado ao criar a ordem de payout.



## OpenAPI

````yaml POST /quote/payout
openapi: 3.1.0
info:
  title: Astron Pay API
  version: 1.0.0
  description: >-
    API B2B para integração de câmbio crypto ↔ BRL via PIX. Autentique com
    `x-api-key` + `x-api-secret`.
  contact:
    name: Astron Pay
    url: https://astronpay.co
    email: dev@astronpay.co
servers:
  - url: https://api.astronpay.co/api/v1
    description: Production
security:
  - apiKey: []
    apiSecret: []
  - bearerAuth: []
tags:
  - name: Fee Tiers
    description: Consulta e atualização das taxas do merchant.
  - name: Receivers
    description: CRUD, KYC, limites e wallet signing dos receivers.
  - name: Quote
    description: Cotações de payin e payout.
  - name: Payin
    description: Ordens de entrada (BRL → crypto).
  - name: Payout
    description: Ordens de saída (crypto → BRL).
  - name: Orders
    description: Consulta genérica de ordens.
  - name: Merchant Wallet
    description: Assinatura de transações com a wallet gerenciada do merchant.
  - name: Ledger
    description: Saldos, entries e liquidações.
  - name: Webhook Config
    description: Configuração de webhook e listagem de eventos.
paths:
  /quote/payout:
    post:
      tags:
        - Quote
      summary: Gera cotação de payout (crypto → BRL)
      description: >-
        Calcula quanto o receiver receberá em BRL ao depositar um valor em
        crypto. A cotação expira em ~30 segundos. Use o `quoteId` retornado ao
        criar a ordem de payout.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - receiverId
                - amountCrypto
              properties:
                receiverId:
                  type: string
                  format: uuid
                amountCrypto:
                  type: number
                  minimum: 0
                  example: 200
                sourceToken:
                  type: string
                  default: USDC
                  description: 'Token que o receiver enviará. Padrão: USDC.'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutQuote'
        '400':
          description: Inputs inválidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    PayoutQuote:
      type: object
      required:
        - quoteId
        - merchantId
        - receiverId
        - amountCrypto
        - sourceToken
        - commercialRate
        - ratePlatform
        - netAmountBrl
        - expiresAt
      properties:
        quoteId:
          type: string
          format: uuid
        merchantId:
          type: string
          format: uuid
        receiverId:
          type: string
          format: uuid
        amountCrypto:
          type: string
          description: Quantidade do token que o receiver depositará.
          example: '200.00'
        sourceToken:
          type: string
          description: 'Token depositado pelo receiver (ex.: USDC, SOL).'
          example: USDC
        commercialRate:
          type: string
          description: Taxa de câmbio comercial (BRL por 1 unidade do token), sem spread.
          example: '5.01'
        ratePlatform:
          type: string
          description: >-
            Taxa all-in efetiva (BRL por 1 unidade do token), já incluindo o
            spread da plataforma. É o que determina `netAmountBrl`.
          example: '4.92'
        netAmountBrl:
          type: string
          description: Valor líquido em BRL que o receiver recebe via PIX.
          example: '984.00'
        expiresAt:
          type: string
          format: date-time
          description: A cotação expira ~30 segundos após a criação.
    Error:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
          example: VALIDATION_ERROR
        message:
          type: string
          example: Campo 'amountBrl' é obrigatório
        details:
          type: object
          additionalProperties: true
        requestId:
          type: string
          example: req_abc123
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
    apiSecret:
      type: apiKey
      in: header
      name: x-api-secret
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````