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

# Create Quotation

> Creates a remittance payout quotation keyed on receiving_amount — the fiat amount the beneficiary should receive.

<Prompt description="Remittance Quotation" actions={["cursor"]}>
  Integrate the DollarPe Remittance Quotation endpoint into my application.

  Endpoint: POST /remittance-payout/quotation
  Base URL: [https://api.dollarpe.in](https://api.dollarpe.in) (production) | [https://sandbox.dollarpe.in](https://sandbox.dollarpe.in) (sandbox)

  Auth headers required on every request:

  * X-API-KEY: your API key
  * X-TIMESTAMP: current Unix time in seconds
  * X-SIGNATURE: Base64(HMAC-SHA256(X-API-KEY + X-TIMESTAMP + sortedJSONBody, apiSecret))

  Remittance payout flow:

  1. POST /customer/create (alpha\_3\_country\_code: "IND") → get customer\_id
  2. POST /kyc/remittance-beneficiary-kyc → complete the beneficiary's PAN-only KYC
  3. POST /bank/create → add the beneficiary's bank account → get bank\_id
  4. POST /kyc/remitter/create → register the sending party → get remitter\_id
  5. POST /remittance-payout/quotation with receiving\_amount → get quotation\_id
  6. POST /remittance-payout/initiate → create the order (link to quotation\_id, include remitter\_id)
  7. Poll GET /payout/{payout_id} or listen to webhooks for status updates

  Task: Write a typed function that:

  1. Accepts asset, fiat, receiving\_amount, customer\_id, bank\_id, and remitter\_id
  2. Builds the signed auth headers
  3. Calls POST /remittance-payout/quotation
  4. Returns quotation id, sending\_amount (crypto to fund), locked rate, fee breakdown, and expiry time
  5. Handles 400 (missing remitter\_id, customer unverified, unsupported pair) and 500 errors

  Language: TypeScript
</Prompt>

<Note>
  Unlike a standard [payout quotation](/api-reference-exchange/endpoint/payout/quotation/quotation) (keyed on `sending_amount`, the crypto amount sent), a remittance quotation is keyed on `receiving_amount` — the exact fiat amount the beneficiary should receive. The response's `sending_amount` tells you how much crypto is needed to fund it.
</Note>

<Note>
  `remitter_id` is required — create the remitter first via [Create Remitter](/api-reference-exchange/endpoint/kyc/remitter/create).
</Note>

## Error Codes and Messages

| API Status Code | Response                   | Reason                                                        |
| --------------- | -------------------------- | ------------------------------------------------------------- |
| 400             | Bad Request                | A required field (e.g. `remitter_id`) is missing              |
| 400             | Customer is unverified     | Customer KYC is unverified or does not belong to Organization |
| 400             | Bank account is unverified | Bank account is not added or still under processing           |
| 500             | Internal Server Error      | Internal Server Error                                         |


## OpenAPI

````yaml POST /remittance-payout/quotation
openapi: 3.1.0
info:
  title: DollarPe API
  description: API for DollarPe - Customer, Payout, and Webhook services
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://sandbox.dollarpe.xyz/pos/api/v1
    description: Payout API Base URL
    variables:
      base_url:
        default: https://sandbox.dollarpe.xyz
  - url: https://sandbox.dollarpe.xyz/cms/api/v1
    description: Customer API Base URL
    variables:
      base_url:
        default: https://sandbox.dollarpe.xyz
security:
  - ApiKeyAuth: []
    TimestampAuth: []
    SignatureAuth: []
tags:
  - name: Customer
    description: Customer related operations
    x-displayName: Customer
    x-traitTag: true
  - name: Payout
    description: Payout related operations
  - name: Webhooks
    description: Webhook related operations
  - name: Widget
    description: Hosted buy/sell widget session initialization
paths:
  /remittance-payout/quotation:
    post:
      tags:
        - Remittance Payout
      description: >-
        Creates a quotation for a remittance payout, keyed on receiving_amount —
        the fiat amount the beneficiary should receive. Requires a remitter_id
        created via POST /kyc/remitter/create.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - asset
                - fiat
                - receiving_amount
                - customer_id
                - bank_id
                - remitter_id
                - risk_parameters
              properties:
                asset:
                  type: string
                  description: The cryptocurrency asset code
                  example: USDT
                fiat:
                  type: string
                  description: The fiat currency code
                  example: INR
                receiving_amount:
                  type: string
                  description: The fixed fiat amount the beneficiary should receive
                  example: '5100'
                customer_id:
                  type: string
                  format: uuid
                  description: The unique identifier of the receiving customer
                  example: 84737c7d-7b62-4204-80d6-80f6ecb3ceb4
                bank_id:
                  type: string
                  format: uuid
                  description: >-
                    The unique identifier of the customer's bank account in
                    which the payout will be made
                  example: cab47575-bbcb-4294-81a3-30774104f3b6
                remitter_id:
                  type: string
                  format: uuid
                  description: >-
                    The unique identifier of the remitter (sending party),
                    obtained from POST /kyc/remitter/create
                  example: e14fa86f-2a5e-437a-a031-949c68ade933
                risk_parameters:
                  type: object
                  description: Pass an empty JSON object
                  example: {}
      responses:
        '201':
          description: Remittance quotation created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Success
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: >-
                          Quotation ID — pass as quotation_id to POST
                          /remittance-payout/initiate
                        example: 59bf60c3-e9af-40a7-9d5c-2a1aa191e769
                      customer_id:
                        type: string
                        format: uuid
                        example: 84737c7d-7b62-4204-80d6-80f6ecb3ceb4
                      bank_id:
                        type: string
                        format: uuid
                        example: cab47575-bbcb-4294-81a3-30774104f3b6
                      remitter_id:
                        type: string
                        format: uuid
                        example: e14fa86f-2a5e-437a-a031-949c68ade933
                      asset:
                        type: string
                        example: USDT
                      fiat:
                        type: string
                        example: INR
                      sending_amount:
                        type: number
                        format: float
                        description: >-
                          The crypto amount the sender must send to fund the
                          payout
                        example: 55.89
                      rate:
                        type: number
                        format: float
                        example: 92.34
                      receiving_amount:
                        type: number
                        format: float
                        example: 5100
                      fees:
                        type: object
                        properties:
                          client_fee_fiat:
                            type: number
                            format: float
                            example: 25.8
                          client_fee_crypto:
                            type: number
                            format: float
                            example: 0.27
                          client_gst_fiat:
                            type: number
                            format: float
                            example: 4.64
                          client_gst_crypto:
                            type: number
                            format: float
                            example: 0.05
                          dollarpe_fee:
                            type: number
                            format: float
                            example: 25.8
                          dollarpe_gst:
                            type: number
                            format: float
                            example: 4.64
                          pg_fee:
                            type: number
                            format: float
                            example: 0
                          pg_gst:
                            type: number
                            format: float
                            example: 0
                          gross_effective_exchange_rate:
                            type: number
                            format: float
                            example: 91.25
                          tds:
                            type: number
                            format: float
                            example: 0
                      created_at:
                        type: string
                        format: date-time
                        example: '2026-07-02T11:41:26.836955Z'
                      expiry_time:
                        type: string
                        format: date-time
                        example: '2026-07-02T12:11:26.000Z'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Bad Request
                  error:
                    type: object
                    example:
                      remitter_id:
                        - This field is required.
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Internal Server Error
      servers:
        - url: https://sandbox.dollarpe.xyz/pos/api/v1
          description: Remittance Payout API Base URL
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
      description: API Key for authentication
    TimestampAuth:
      type: apiKey
      in: header
      name: X-TIMESTAMP
      description: Current timestamp in seconds since epoch
    SignatureAuth:
      type: apiKey
      in: header
      name: X-SIGNATURE
      description: HMAC SHA256 signature of the request encoded in Base64

````