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

# Create a risk analysis

> Perform an ACH risk analysis and create associated records



## OpenAPI

````yaml /openapi/payments-20260203.json post /payments/risk-analysis
openapi: 3.1.0
info:
  title: PAYMENTS
  termsOfService: urn:tos
  license:
    name: Apache 2.0
    url: https://springdoc.org
  version: '2026-02-03'
  description: ''
servers:
  - url: https://api-sb.meld.io
    description: Meld API sandbox
  - url: https://api.meld.io
    description: Meld API production
security: []
tags:
  - name: Payment
    description: ''
paths:
  /payments/risk-analysis:
    post:
      tags:
        - Risk
      summary: Create a risk analysis
      description: Perform an ACH risk analysis and create associated records
      operationId: /payments-transactions-risk-analysis
      parameters:
        - name: X-Idempotency-Key
          in: header
          required: false
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RiskAnalysisRequest'
            example:
              achClass: CCD
              amount: '10.50'
              currencyCode: USD
        required: true
      responses:
        '201':
          description: Risk analysis created successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RiskAnalysisResponse'
        '400':
          description: 'Bad Request : check request values and format'
        '401':
          description: Invalid credentials
        '403':
          description: Unauthenticated or authenticated with insufficient access
        '425':
          description: It is too early for a retry
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    RiskAnalysisRequest:
      type: object
      properties:
        achClass:
          type: string
          description: The ACH class of the transaction (CCD, PPD, TEL, WEB)
          enum:
            - CCD
            - PPD
            - TEL
            - WEB
        amount:
          type: number
          description: Amount intended to be sent by this transaction
          example: '10.50'
        currencyCode:
          type: string
          description: >-
            Three-letter ISO currency code, in lowercase. Must be a supported
            currency
          example: USD
          minLength: 1
        name:
          description: Customer name
          allOf:
            - $ref: '#/components/schemas/CustomerName'
        plaidTransferAccountFields:
          description: The id and token for a Plaid account used in a transfer
          allOf:
            - $ref: '#/components/schemas/PlaidTransferAccountFields'
        serviceProvider:
          type: string
          description: The service provider used for this transaction.
          enum:
            - ACROSS
            - AEROPAY
            - AKOYA
            - ALCHEMYPAY
            - APPLEPAY
            - AUTHORIZENET
            - BANXA
            - BILIRA
            - BINANCECONNECT
            - BINANCEPAY
            - BLOCKCHAINDOTCOM
            - BOOMFI
            - BRAINTREE
            - BRALE
            - BTCDIRECT
            - CASHAPP
            - CHECKOUT
            - CIRCLE
            - COINBASEPAY
            - COINFLOW
            - DUENETWORK
            - ELDORADO
            - FINICITY
            - FLASHNET
            - FONBNK
            - GUARDARIAN
            - HARBOUR
            - KOYWE
            - KRYPTONIM
            - MERCURYO
            - MESH
            - MESO
            - MOONPAY
            - MOOV
            - MX
            - NMI
            - NOAH
            - ONMETA
            - ONRAMPMONEY
            - PAYBIS
            - PAYPAL
            - PLAID
            - RAMP
            - REVOLUT
            - ROBINHOOD
            - ROUTERPROTOCOL
            - SALTEDGE
            - SALTEDGEPARTNERS
            - SARDINE
            - SHIFT4
            - SHOPIFY
            - SIMPLEX
            - SKRILLCRYPTO
            - SQUARE
            - STRIPE
            - SUMSUB
            - SWAPPED
            - TANGOCARD
            - TELLER
            - TOPPER
            - TRANSAK
            - TREMENDOUS
            - TRANSFI
            - UNLIMIT
            - WYRE
            - XANPOOL
            - YELLOWCARD
            - YODLEE
        type:
          type: string
          description: The type of the transaction, either CHARGE or PAYOUT
          enum:
            - CHARGE
            - REFUND
            - CRYPTO_PURCHASE
            - CRYPTO_PURCHASE_SWAP
            - CRYPTO_SELL
            - CRYPTO_SELL_SWAP
            - CRYPTO_TRANSFER
            - PAYOUT
      required:
        - achClass
        - amount
        - currencyCode
    RiskAnalysisResponse:
      type: object
      properties:
        decision:
          type: string
        decisionRationale:
          $ref: '#/components/schemas/DecisionRationale'
        risk:
          $ref: '#/components/schemas/Risk'
        serviceProvider:
          type: string
          enum:
            - ACROSS
            - AEROPAY
            - AKOYA
            - ALCHEMYPAY
            - APPLEPAY
            - AUTHORIZENET
            - BANXA
            - BILIRA
            - BINANCECONNECT
            - BINANCEPAY
            - BLOCKCHAINDOTCOM
            - BOOMFI
            - BRAINTREE
            - BRALE
            - BTCDIRECT
            - CASHAPP
            - CHECKOUT
            - CIRCLE
            - COINBASEPAY
            - COINFLOW
            - DUENETWORK
            - ELDORADO
            - FINICITY
            - FLASHNET
            - FONBNK
            - GUARDARIAN
            - HARBOUR
            - KOYWE
            - KRYPTONIM
            - MERCURYO
            - MESH
            - MESO
            - MOONPAY
            - MOOV
            - MX
            - NMI
            - NOAH
            - ONMETA
            - ONRAMPMONEY
            - PAYBIS
            - PAYPAL
            - PLAID
            - RAMP
            - REVOLUT
            - ROBINHOOD
            - ROUTERPROTOCOL
            - SALTEDGE
            - SALTEDGEPARTNERS
            - SARDINE
            - SHIFT4
            - SHOPIFY
            - SIMPLEX
            - SKRILLCRYPTO
            - SQUARE
            - STRIPE
            - SUMSUB
            - SWAPPED
            - TANGOCARD
            - TELLER
            - TOPPER
            - TRANSAK
            - TREMENDOUS
            - TRANSFI
            - UNLIMIT
            - WYRE
            - XANPOOL
            - YELLOWCARD
            - YODLEE
        serviceProviderTransferAuthorizationId:
          type: string
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
        displayMessage:
          type: string
        errors:
          type: array
          items:
            type: string
        message:
          type: string
        requestId:
          type: string
        serviceProviderDetails:
          type: object
          additionalProperties: {}
        timestamp:
          type: string
          format: date-time
    CustomerName:
      type: object
      properties:
        firstName:
          type: string
          description: Your customer's first name
        lastName:
          type: string
          description: Your customer's last name
    PlaidTransferAccountFields:
      type: object
      description: The id and token for a Plaid account used in a transfer
      properties:
        accessToken:
          type: string
          description: >-
            The Plaid access_token for the account that will be debited or
            credited.
          minLength: 1
        accountId:
          type: string
          description: >-
            The Plaid account_id corresponding to the end-user account that will
            be debited or credited.
          minLength: 1
      required:
        - accessToken
        - accountId
    DecisionRationale:
      type: object
      properties:
        code:
          type: string
        description:
          type: string
    Risk:
      type: object
      properties:
        bankInitiatedReturnScore:
          type: integer
          format: int32
        customerInitiatedReturnScore:
          type: integer
          format: int32
        riskLevel:
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      x-default: BASIC <Meld API Key>

````