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

# Create a cash-in deposit code

> Creates a cash-in: reserves a deposit code the customer presents at a
physical cash location to deposit fiat, which is then converted to crypto
and credited to the destination wallet. The 201 response includes the
cash-in and its deposit instructions (the code and its expiry). Pass an
Idempotency-Key header to safely retry without creating duplicates.



## OpenAPI

````yaml /api-reference/openapi.yaml post /cash-ins
openapi: 3.0.3
info:
  title: Polygon OMS Public API
  version: v26.05.28-0001
  description: >-
    Unified API for moving money between crypto and fiat. Three ways to move
    money: Transactions (instant, wallet or card funded, including Cash-In for
    in-person cash deposits), Deposit Addresses (reusable crypto deposit
    configurations), and Virtual Accounts (dedicated bank accounts that
    auto-convert fiat to crypto). Standard transactions follow a two-step flow:
    create a Quote (pricing), then create a Transaction (execution). Cash-in
    codes generate a one-time deposit code for in-person cash deposits at retail
    locations.
  contact:
    name: Polygon OMS
    url: https://oms.polygon.technology
servers:
  - url: https://sandbox-api.polygon.technology/v0.13
    description: Sandbox
  - url: https://api.polygon.technology/v0.13
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Auth
    description: Authentication via FrontEgg
  - name: Customers
    description: Customer management and KYC
  - name: Customer
  - name: Wallet
  - name: Quote
  - name: Transaction
  - name: CashIns
  - name: CashLocation
  - name: Sandbox
  - name: VirtualAccount
  - name: Counterparty
  - name: ExternalAccount
  - name: Reference
  - name: DepositAddress
paths:
  /cash-ins:
    post:
      tags:
        - CashIns
      summary: Create a cash-in deposit code
      description: >-
        Creates a cash-in: reserves a deposit code the customer presents at a

        physical cash location to deposit fiat, which is then converted to
        crypto

        and credited to the destination wallet. The 201 response includes the

        cash-in and its deposit instructions (the code and its expiry). Pass an

        Idempotency-Key header to safely retry without creating duplicates.
      operationId: createCashIn
      parameters:
        - $ref: '#/components/parameters/IdempotencyKeyHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCashInRequest'
      responses:
        '201':
          description: >-
            The request has succeeded and a new resource has been created as a
            result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CashIn'
components:
  parameters:
    IdempotencyKeyHeader:
      name: Idempotency-Key
      in: header
      required: true
      description: >-
        Required on POST and PUT requests. Use a unique value per logical
        mutation attempt, for example a UUID.
      schema:
        type: string
  schemas:
    CreateCashInRequest:
      type: object
      required:
        - customerId
        - source
        - destination
        - cash
      properties:
        customerId:
          type: string
          description: The customer depositing cash (`cst_` prefix).
        source:
          allOf:
            - $ref: '#/components/schemas/CashInSource'
          description: Where the customer will deposit cash.
        destination:
          allOf:
            - $ref: '#/components/schemas/CashInDestination'
          description: Crypto instrument to deliver to (walletCrypto or walletExternal).
        cash:
          allOf:
            - $ref: '#/components/schemas/CashInfo'
          description: The cash amount to deposit.
        sponsorGas:
          type: boolean
          description: >-
            When `true`, OMS absorbs the on-chain gas cost for the destination
            delivery. Only `true` is currently supported.
        metadata:
          type: object
          additionalProperties:
            type: string
          description: >-
            Free-form key-value pairs stored on the resource and echoed back on
            reads.
      description: >-
        Request body for creating a cash-in. Names the customer, the cash source
        location, and the crypto destination.
      example:
        customerId: cst_vfa0nxw6zvyws9g237jrxn4y7k
        source:
          asset: usd
          indicatedAmount: '200.00'
        destination:
          asset: usdc
          network: polygon
          wallet:
            id: wlt_5h4jzzpr9xre3bamd9ca7qyghn
        cash:
          locationId: loc_01H9Xd
          locationReference: R1JFRU5ET1QtMjQzNA==
        sponsorGas: true
        metadata:
          orderId: order_12345
    CashIn:
      type: object
      required:
        - id
        - type
        - status
        - customerId
        - source
        - destination
        - cash
        - location
        - createdAt
        - updatedAt
      properties:
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: Cash-in ID (`ci_` prefix).
        object:
          type: string
          enum:
            - cashIn
          description: Resource type discriminator. Always "cashIn".
        type:
          allOf:
            - $ref: '#/components/schemas/TransferType'
          description: Cash-in flavor.
        status:
          allOf:
            - $ref: '#/components/schemas/CashInStatus'
          description: Current lifecycle status of the cash-in.
        subStatus:
          allOf:
            - $ref: '#/components/schemas/CashInSubStatus'
          description: Granular sub-status adding detail behind `status`.
        customerId:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: The OMS customer that owns this record (`cst_` prefix).
        fixedAmountSide:
          type: string
          enum:
            - source
            - destination
          description: >-
            The side the amount was fixed on when creating the cash-in. OMS
            calculated the other side.
        source:
          allOf:
            - $ref: '#/components/schemas/CashInSource'
          description: 'Where the customer deposits cash: the provider and location.'
        destination:
          allOf:
            - $ref: '#/components/schemas/CashInDestination'
          description: Crypto instrument the converted funds are delivered to.
        cash:
          allOf:
            - $ref: '#/components/schemas/CashInfo'
          description: The cash amount to be deposited.
        location:
          allOf:
            - $ref: '#/components/schemas/CashInLocation'
          description: Resolved detail of the chosen cash location.
        depositInstructions:
          allOf:
            - $ref: '#/components/schemas/CashInDepositInstructions'
          description: >-
            The deposit code and instructions the customer presents at the
            retail location.
        rates:
          allOf:
            - $ref: '#/components/schemas/Rates'
          description: Exchange and effective rates applied to this cash-in.
        sponsorGasCost:
          type: string
          description: |-
            USD cost of gas absorbed by the developer when sponsoring gas.
            Always "0" in alpha - gas is sponsored. Spec § 4.1.
        omsFeeSchedule:
          allOf:
            - $ref: '#/components/schemas/OmsFeeSchedule'
          description: OMS fee schedule applied to this cash-in.
        transactionId:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: >-
            The Transaction produced once the cash-in completes. Null while
            pending.
        sponsorGas:
          type: boolean
          description: >-
            When `true`, OMS absorbs the on-chain gas cost for the destination
            delivery. Only `true` is currently supported.
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Free-form key-value pairs supplied at creation or update.
        developerFees:
          type: array
          items:
            $ref: '#/components/schemas/FeeEntry'
          description: >-
            Developer fee entries echoed back from the request.

            Omitted in alpha - request side is stripped per spec § 2. The field

            stays on the schema so it can be reintroduced without a breaking
            change

            when developer fees ship.
        createdAt:
          type: string
          format: date-time
          description: When the cash-in was created.
        updatedAt:
          type: string
          format: date-time
          description: When the cash-in was last updated.
        completedAt:
          type: string
          format: date-time
          description: When the cash-in reached a terminal state. Null while in progress.
        expiresAt:
          type: string
          format: date-time
          description: >-
            When the issued deposit code expires. Single source of truth for
            cash-in

            expiry (#2144); the per-instruction expiresAt was removed in favor
            of this.
      description: >-
        A code-based cash deposit. The customer takes the issued code to a
        retail location and deposits cash, which OMS converts to crypto and
        delivers to the destination. Amounts start as estimates and are
        finalized once the cash is deposited.
      example:
        id: ci_44vxe2xk8gfsjehfcw3npt5bg8
        object: cashIn
        type: fiatToCrypto
        status: pending
        subStatus: order_reserved
        customerId: cst_vfa0nxw6zvyws9g237jrxn4y7k
        source:
          asset: usd
          indicatedAmount: '200.00'
          amountGross: '200.00'
          amountNet: '200.00'
          feesDeducted:
            total: '0.00'
            developer: '0.00'
            oms: '0.00'
            gas: '0.00'
        destination:
          asset: usdc
          network: polygon
          amountGross: '200.00'
          amountNet: '200.00'
          feesDeducted:
            total: '0.00'
            developer: '0.00'
            oms: '0.00'
            gas: '0.00'
          wallet:
            id: wlt_5h4jzzpr9xre3bamd9ca7qyghn
            blockchainAddress: '0x7B3A9F2C4D1eA8bf6390cE5D2b7fA104c8e3D9B1'
        cash:
          locationId: loc_01H9Xd
          locationReference: R1JFRU5ET1QtMjQzNA==
        location:
          name: 'CVS Pharmacy #4521'
          address: 123 Main St, San Francisco, CA 94105
        rates:
          pair: usd/usdc
          exchangeRate: '1.0000'
          effectiveRate: '1.0000'
        depositInstructions:
          cashInCode: 483 291
          locationName: 'CVS Pharmacy #4521'
          locationAddress: 123 Main St, San Francisco, CA 94105
        fixedAmountSide: source
        sponsorGas: true
        sponsorGasCost: '0'
        expiresAt: '2026-05-15T18:32:48Z'
        createdAt: '2026-05-15T17:32:48Z'
        updatedAt: '2026-05-15T17:32:48Z'
    CashInSource:
      type: object
      required:
        - asset
      properties:
        asset:
          type: string
          description: Canonical asset identifier.
        network:
          type: string
          description: Network identifier.
        email:
          type: string
          description: Email address.
        indicatedAmount:
          type: string
          description: The cash amount the customer indicated they will deposit.
        amount:
          type: string
          description: Amount as a decimal string.
        amountGross:
          type: string
          description: Amount on this side before fees are applied.
        amountNet:
          type: string
          description: >-
            Amount after fees - what is actually pulled from a source, or
            delivered to a destination.
        feesDeducted:
          $ref: '#/components/schemas/FeesDeducted'
      description: 'Cash side of a cash-in: the fiat asset and amounts.'
    CashInDestination:
      type: object
      properties:
        wallet:
          $ref: '#/components/schemas/CashInDestinationWallet'
        asset:
          type: string
          description: Canonical asset identifier.
        network:
          type: string
          description: Network identifier.
        amountGross:
          type: string
          description: Amount on this side before fees are applied.
        amountNet:
          type: string
          description: >-
            Amount after fees - what is actually pulled from a source, or
            delivered to a destination.
        feesDeducted:
          $ref: '#/components/schemas/FeesDeducted'
      description: The crypto destination a cash-in is converted to and delivered to.
    CashInfo:
      type: object
      required:
        - locationId
        - locationReference
      properties:
        locationId:
          type: string
          description: Cash location ID from `GET /cash-locations`.
        locationReference:
          type: string
          description: Provider reference for the location, from `GET /cash-locations`.
      description: >-
        The retail location chosen for the deposit, by ID and provider
        reference.
    typeId:
      type: string
      pattern: >-
        ^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$
      description: >-
        Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID
        suffixes are accepted until non-v7 rows are retired.
      x-go-type: string
    TransferType:
      type: string
      enum:
        - cryptoToCrypto
        - fiatToCrypto
        - cryptoToFiat
      description: >-
        Direction of value across rails: cryptoToCrypto, fiatToCrypto, or
        cryptoToFiat.

        Retained for resources not yet on the `SourceToDestination` shape

        (onramp/cash-in, customer filters).
    CashInStatus:
      type: string
      enum:
        - pending
        - processing
        - completed
        - failed
        - expired
      description: >-
        Lifecycle of a cash-in. pending: code issued, awaiting deposit.
        processing: cash deposited, conversion underway. completed: converted
        and delivered. failed: the deposit or conversion did not succeed.
        expired: the code expired before any deposit.
    CashInSubStatus:
      type: string
      enum:
        - order_reserved
        - settled
        - cash_deposit_expired
        - cash_deposit_failed
        - provider_order_failed
        - provider_order_template_error
      description: >-
        Granular sub-status for a cash-in. Adds detail behind the coarse status
        field.
    CashInLocation:
      type: object
      properties:
        name:
          type: string
          description: Display name.
        address:
          type: string
          description: Postal address.
      description: Resolved retail location detail.
    CashInDepositInstructions:
      type: object
      required:
        - cashInCode
      properties:
        cashInCode:
          type: string
          description: Machine-readable code the customer presents at the register.
        locationName:
          type: string
          description: Display name of the retail location.
        locationAddress:
          type: string
          description: Street address of the retail location.
      description: >-
        The deposit code and retail location a customer uses to complete a
        cash-in.
    Rates:
      type: object
      required:
        - pair
        - exchangeRate
        - effectiveRate
      properties:
        pair:
          type: string
          description: Asset pair string, e.g. "usdc/usd".
        exchangeRate:
          type: string
          description: Units of destination asset per 1 unit of source asset.
        effectiveRate:
          type: string
          description: All-in rate inclusive of all fees on both sides.
      description: Exchange and effective rates.
    OmsFeeSchedule:
      type: object
      required:
        - feeCurrency
        - entries
      properties:
        feeCurrency:
          type: string
          description: Currency the fee lines are denominated in.
        entries:
          type: array
          items:
            $ref: '#/components/schemas/OmsFeeEntry'
          description: Individual fee lines.
      description: The OMS fee lines applied, denominated in `feeCurrency`.
    FeeEntry:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier assigned by OMS. Present on responses only.
        percentage:
          type: string
          description: Percentage fee as a decimal rate. "0.02" = 2%.
        flatFee:
          type: string
          description: Fixed fee in USD. Converted to fee-side asset at the exchange rate.
        amount:
          type: string
          description: Computed fee amount for this entry. Present on responses only.
        payoutAsset:
          type: string
          enum:
            - usdc
            - usdt
          description: Crypto asset for fee payout. Defaults to "usdc".
        wallet:
          type: string
          description: OMS wallet to receive this fee.
      description: >-
        A single developer fee entry. At least one of percentage or flatFee is
        required.
    FeesDeducted:
      type: object
      required:
        - total
        - developer
        - oms
        - gas
      properties:
        total:
          type: string
        developer:
          type: string
          description: |-
            Per-side aggregated developer fee total in this side's asset.
            Always "0" in alpha - alpha invariant, mirrors the gas line.
        oms:
          type: string
        gas:
          type: string
      description: |-
        Per-side breakdown of fees deducted in-line from the transaction.
        End-of-month billable fees will be reported separately in the future
        (planned `feesInvoice` sibling). Denominated in that side's asset.
    CashInDestinationWallet:
      type: object
      properties:
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: Unique identifier.
        externalAccount:
          type: string
          description: Registered External Account receiving the funds, when applicable.
        blockchainAddress:
          type: string
          description: >-
            On-chain address. For an EVM network the address must be
            all-lowercase,

            all-uppercase, or a valid EIP-55 checksummed form; an inconsistent
            mixed-case

            address is rejected as a likely casing typo, and the zero address is
            rejected.

            Solana/SUI are validated per their own network rules.
      description: The wallet receiving the converted funds.
    OmsFeeEntry:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          description: Type discriminator.
        rate:
          type: string
          description: Fee rate as a decimal.
        amount:
          type: string
          description: Amount as a decimal string.
      description: A single OMS fee line.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token from POST /auth/token

````