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

# Create a Pay-in

> Create a pay-in instruction for a customer. Make payment before expiry with mandatory reference code and receive crypto in the destination wallet address.

<Note>
  Pay-in instructions require separate configuration. Contact support to enable this feature for your account.
</Note>


## OpenAPI

````yaml POST /v2/transactions/pay-ins
openapi: 3.1.0
info:
  title: Fin.com API
  version: 1.0.0
  description: A simple API specification
servers:
  - url: https://sandbox.api.fin.com
    description: Sandbox server
  - url: https://api.fin.com
    description: Production server
security: []
tags:
  - name: Authentication
    description: A modified OAuth 2.0 Client Credential Flow
  - name: Customers
    description: Customer management and document upload operations
  - name: Balances
    description: Retrieve wallet balance information
  - name: Catalogue
    description: |
      A set of endpoints to retrieve contextual data to assemble requests
      to fin.com's API
  - name: Beneficiaries
    description: Manage beneficiary accounts for payments and transfers
  - name: Transactions
    description: Transaction history and management for beneficiaries
  - name: Virtual Accounts
    description: Create and manage virtual accounts for USD to USDC conversions
  - name: Fees & FX Rates
    description: Retrieve fees and foreign exchange rates
paths:
  /v2/transactions/pay-ins:
    post:
      tags:
        - Transactions
      summary: Create a Pay-in
      description: >-
        Create a pay-in instruction for a customer. Make payment before expiry
        with mandatory reference code and receive crypto in the destination
        wallet address.
      operationId: createPayInV2
      parameters:
        - name: X-Idempotency-Key
          in: header
          required: true
          description: >-
            Unique key to safely retry the request without creating duplicate
            pay-ins.
          schema:
            type: string
          example: 0f0dcb34-4779-4468-858d-37086080769a
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - customer_id
                - amount
                - currency
                - destination
              properties:
                customer_id:
                  type: string
                  format: uuid
                  description: ID of the customer the pay-in is created for.
                  example: 34c62166-3e7a-436b-a2e3-338c4148a859
                amount:
                  type: integer
                  description: >-
                    Amount to collect in minor units (cents) of the source
                    currency.
                  example: 100101
                currency:
                  type: string
                  enum:
                    - MXN
                  description: Source currency. Only MXN is supported.
                  example: MXN
                destination:
                  type: object
                  required:
                    - address
                    - rail
                    - currency
                  properties:
                    address:
                      type: string
                      description: Destination crypto wallet address.
                      example: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
                    rail:
                      type: string
                      enum:
                        - POLYGON
                        - SOLANA
                      description: Blockchain rail for the destination wallet.
                      example: POLYGON
                    currency:
                      type: string
                      enum:
                        - USDC
                      description: Destination currency. Only USDC is supported.
                      example: USDC
                developer_fee:
                  type: object
                  description: Optional developer fee applied to the pay-in.
                  properties:
                    fixed:
                      type: number
                      description: Fixed developer fee in the source currency.
                      example: 0
                    percentage:
                      type: number
                      description: Percentage developer fee applied to the amount.
                      example: 0
            example:
              customer_id: 34c62166-3e7a-436b-a2e3-338c4148a859
              amount: 100101
              currency: MXN
              destination:
                address: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
                rail: POLYGON
                currency: USDC
              developer_fee:
                fixed: 0
                percentage: 0
      responses:
        '201':
          description: Pay-in instruction created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Unique identifier for the pay-in.
                        example: 728c95d3-8b1e-4497-b3da-f36bcc066d7d
                      customer_id:
                        type: string
                        format: uuid
                        description: ID of the customer the pay-in belongs to.
                        example: 34c62166-3e7a-436b-a2e3-338c4148a859
                      status:
                        type: string
                        enum:
                          - PENDING
                          - PROCESSING
                          - COMPLETED
                          - EXPIRED
                          - FAILED
                        description: Current status of the pay-in.
                        example: PENDING
                      transaction_id:
                        type: string
                        format: uuid
                        nullable: true
                        description: >-
                          ID of the resulting transaction once the pay-in is
                          processed. Null until a transaction is created.
                        example: null
                      created_at:
                        type: string
                        format: date-time
                        description: Timestamp at which the pay-in was created.
                        example: '2026-06-09T18:27:35.468309Z'
                      expire_at:
                        type: string
                        format: date-time
                        description: >-
                          Timestamp after which the pay-in can no longer be
                          paid.
                        example: '2026-06-10T18:27:35.437874Z'
                      source_amount:
                        type: integer
                        description: Source amount in minor units (cents).
                        example: 100101
                      source_amount_in_major:
                        type: number
                        description: Source amount in major units.
                        example: 1001.01
                      currency:
                        type: string
                        description: Source currency.
                        example: MXN
                      destination:
                        type: object
                        properties:
                          address:
                            type: string
                            example: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
                          currency:
                            type: string
                            example: USDC
                          rail:
                            type: string
                            example: POLYGON
                      fees:
                        type: object
                        properties:
                          developer_fee:
                            type: object
                            properties:
                              fixed:
                                type: number
                                example: 0
                              percentage:
                                type: number
                                example: 0
                          total_developer_fee:
                            type: number
                            example: 0
                          network_fee:
                            type: number
                            example: 0
                          conversion_fee:
                            type: number
                            example: 0
                          total_fee:
                            type: number
                            example: 0
                      destination_amount_in_major:
                        type: number
                        description: >-
                          Amount the customer receives in the destination
                          currency, in major units. USDC maintains 6 decimal
                          precision.
                        example: 1.153622
                      exchange_rate:
                        type: number
                        description: >-
                          Exchange rate applied from source to destination
                          currency.
                        example: 17.462264
                      deposit_instruction:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - BANK_DEPOSIT
                              - CHECKOUT
                            description: Type of deposit instruction returned.
                            example: BANK_DEPOSIT
                          bank_details:
                            type: object
                            nullable: true
                            description: >-
                              Bank deposit details. Populated when type is
                              BANK_DEPOSIT.
                            properties:
                              account_holder_name:
                                type: string
                                example: FIN BU1
                              bank_name:
                                type: string
                                example: FINCO PAY
                              bank_address:
                                type: string
                                nullable: true
                                description: >-
                                  Single-string bank address. Served only when a
                                  value is present.
                                example: null
                              bank_address_details:
                                type: object
                                nullable: true
                                description: >-
                                  Structured bank address. Served only when a
                                  value is present.
                                properties:
                                  street:
                                    type: string
                                    example: 123 Main Street
                                  street_2:
                                    type: string
                                    nullable: true
                                    example: null
                                  city:
                                    type: string
                                    example: New York
                                  state:
                                    type: string
                                    nullable: true
                                    example: null
                                  postal_code:
                                    type: string
                                    example: '10001'
                                  country:
                                    type: string
                                    example: USA
                              bank_routing_number:
                                type: string
                                nullable: true
                                description: >-
                                  Bank routing number. Served only when a value
                                  is present.
                                example: null
                              bank_account_number:
                                type: string
                                description: Full CLABE account number.
                                example: '734180000129991804'
                              payment_rails:
                                type: array
                                items:
                                  type: string
                                description: Payment rails available for the bank deposit.
                                example:
                                  - SPEI
                              bank_country:
                                type: string
                                example: MEX
                              account_type:
                                type: string
                                nullable: true
                                description: >-
                                  Account type. Served only when a value is
                                  present.
                                example: centralizing
                              bank_code:
                                type: object
                                description: Bank code identifying the account.
                                properties:
                                  code:
                                    type: string
                                    description: Full CLABE account number.
                                    example: '734180000129991804'
                                  type:
                                    type: string
                                    enum:
                                      - CLABE
                                      - IBAN
                                      - SWIFT
                                    example: CLABE
                              reference:
                                type: string
                                description: >-
                                  Mandatory reference code to include with the
                                  payment.
                                example: 88ff4abb99e39499db661e1c97f0770fb1fb05c3
                          checkout_details:
                            type: object
                            nullable: true
                            description: Checkout details. Populated when type is CHECKOUT.
                            example: null
              example:
                data:
                  id: 728c95d3-8b1e-4497-b3da-f36bcc066d7d
                  customer_id: 34c62166-3e7a-436b-a2e3-338c4148a859
                  status: PENDING
                  transaction_id: null
                  created_at: '2026-06-09T18:27:35.468309Z'
                  expire_at: '2026-06-10T18:27:35.437874Z'
                  source_amount: 100101
                  source_amount_in_major: 1001.01
                  currency: MXN
                  destination:
                    address: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
                    rail: POLYGON
                    currency: USDC
                  fees:
                    developer_fee:
                      fixed: 0
                      percentage: 0
                    total_developer_fee: 0
                    network_fee: 0
                    conversion_fee: 0
                    total_fee: 0
                  destination_amount_in_major: 57.324182
                  exchange_rate: 17.462264
                  deposit_instruction:
                    type: BANK_DEPOSIT
                    bank_details:
                      bank_name: FINCO PAY
                      bank_address: null
                      bank_address_details: null
                      bank_routing_number: null
                      bank_account_number: '734180000129991804'
                      payment_rails:
                        - SPEI
                      bank_country: MEX
                      account_type: centralizing
                      bank_code:
                        code: '734180000129991804'
                        type: CLABE
                      reference: 88ff4abb99e39499db661e1c97f0770fb1fb05c3
                      account_holder_name: FIN BU1
                    checkout_details: null
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '422':
          $ref: '#/components/responses/ValidationError'
      security:
        - bearerAuth: []
components:
  responses:
    AuthenticationError:
      description: Authentication failed due to invalid credentials
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Authentication failed
    ValidationError:
      description: Failed due to a formatting error.
      content:
        application/json:
          schema:
            type: object
            required:
              - message
            properties:
              message:
                type: string
              errors:
                type: array
                items:
                  type: object
                  additionalProperties:
                    type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Bearer token authentication. Obtain token from [Issue a
        Token](https://developer.fin.com/api-reference/authentication/issue-a-token)
        endpoint

````