> ## 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 payin

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



## OpenAPI

````yaml POST /quote/payin
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/payin:
    post:
      tags:
        - Quote
      summary: Gera cotação de payin (BRL → crypto)
      description: >-
        Calcula quanto o receiver receberá em crypto ao pagar um valor em BRL. A
        cotação expira em ~30 segundos. Use o `quoteId` retornado ao criar a
        ordem de payin.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - receiverId
                - amountBrl
              properties:
                receiverId:
                  type: string
                  format: uuid
                amountBrl:
                  type: number
                  minimum: 1
                  example: 1000
                targetToken:
                  type: string
                  enum:
                    - USDC
                    - SOL
                  default: USDC
                  description: 'Token que o receiver receberá. Padrão: USDC.'
      responses:
        '201':
          description: Cotação criada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayinQuote'
        '400':
          description: Inputs inválidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Receiver inativo ou fora dos limites
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    PayinQuote:
      type: object
      required:
        - quoteId
        - merchantId
        - receiverId
        - amountBrl
        - commercialRate
        - ratePlatform
        - amountToken
        - targetToken
        - expiresAt
      properties:
        quoteId:
          type: string
          format: uuid
        merchantId:
          type: string
          format: uuid
        receiverId:
          type: string
          format: uuid
        amountBrl:
          type: number
          example: 1000
        commercialRate:
          type: string
          description: >-
            Taxa de câmbio comercial (BRL por 1 unidade do token), sem spread da
            plataforma. Valor informativo.
          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 `amountToken`.
          example: '5.11'
        amountToken:
          type: string
          description: Quantidade do token que o receiver recebe ao final do payin.
          example: '195.69'
        targetToken:
          type: string
          enum:
            - USDC
            - SOL
          example: USDC
        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

````