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

# Fulfill a user data request

> Responds to a `user.data_request` webhook by providing the requested user data. When M2M needs additional user information for CIP verification, it sends a webhook with a data request ID. Use this endpoint to supply the missing data (name, ID, date of birth, payment method, etc.). The data is merged with existing user data on the link.



## OpenAPI

````yaml /raas-widgets/openapi.json put /partner/data-requests/{dataRequestId}
openapi: 3.0.0
info:
  title: RaaS Widgets Partner API
  description: >
    REST API for RaaS Widgets partner integrations. Create magic links for
    embeddable flows, manage end users, track transfer operations, handle CIP
    verification, and configure webhooks for real-time event notifications.


    This specification covers the **Partner-accessible API** only (`X-API-Key`
    against `/partner/*`). Widget and Superadmin APIs are out of scope.


    ## Authentication


    All endpoints require an API key passed in the `X-API-Key` header. Use
    `raas_sandbox_*` keys for the sandbox environment and `raas_live_*` keys for
    production.


    ## Environments


    | Environment | Base URL |

    |---|---|

    | Sandbox | `https://raas-widgets-backend-sandbox.up.railway.app` |
  version: 1.18.0
  contact: {}
servers:
  - url: https://raas-widgets-backend-sandbox.up.railway.app
    description: Sandbox
security: []
tags:
  - name: Partner - Magic Links
    description: Create, list, and manage magic links for flows
  - name: Partner - Flows
    description: List enabled flows and the full flow catalog
  - name: Partner - Users
    description: View and manage end users associated with your partner account
  - name: Partner - Operations
    description: Track money transfer operations and their statuses
  - name: Partner - Requests
    description: List and inspect money-request records
  - name: Partner - Deferred Payouts
    description: List, inspect, and cancel deferred payout remittances
  - name: Partner - CIP
    description: Customer Identification Program (CIP) verification management
  - name: Partner - Data Requests
    description: Fulfill data requests for additional user information
  - name: Partner - Settings
    description: Configure partner-level settings (redirect URLs, logo, etc.)
  - name: Partner - Webhooks
    description: Configure webhook endpoints and inspect delivery history
  - name: Partner - Pricing
    description: >-
      Indicative pre-quote summaries (best / worst / averages) for partner
      integrations
paths:
  /partner/data-requests/{dataRequestId}:
    put:
      tags:
        - Partner - Data Requests
      summary: Fulfill a user data request
      description: >-
        Responds to a `user.data_request` webhook by providing the requested
        user data. When M2M needs additional user information for CIP
        verification, it sends a webhook with a data request ID. Use this
        endpoint to supply the missing data (name, ID, date of birth, payment
        method, etc.). The data is merged with existing user data on the link.
      operationId: DataRequestsController_fulfillDataRequest
      parameters:
        - name: dataRequestId
          required: true
          in: path
          description: >-
            The data request ID received in the `user.data_request` webhook
            payload
          schema:
            example: dr_acme_a1b2c3d4e5f6
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FulfillDataRequestDto'
      responses:
        '200':
          description: Data request fulfilled — user data received and merged successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillDataRequestResponseDto'
        '400':
          description: Bad request — referenceId in body does not match the data request
        '401':
          description: Unauthorized — invalid or missing API key / bearer token
        '404':
          description: Data request not found
        '409':
          description: Data request has expired and can no longer be fulfilled
      security:
        - api-key: []
components:
  schemas:
    FulfillDataRequestDto:
      type: object
      properties:
        referenceId:
          type: string
          description: >-
            Reference ID of the user in your system. Must match the referenceId
            associated with the data request for validation.
          example: user-12345
        userData:
          description: >-
            User data to fulfill the request. Provide only the fields that were
            requested in the `user.data_request` webhook payload. The data will
            be merged with existing user data on the associated magic link.
          allOf:
            - $ref: '#/components/schemas/PartialUserDataDto'
      required:
        - referenceId
        - userData
    FulfillDataRequestResponseDto:
      type: object
      properties:
        success:
          type: boolean
          example: true
        data:
          $ref: '#/components/schemas/FulfillDataRequestDataDto'
      required:
        - success
        - data
    PartialUserDataDto:
      type: object
      properties:
        name:
          description: User name — provide only the requested name fields
          allOf:
            - $ref: '#/components/schemas/PartialNameDto'
        idNumber:
          type: string
          description: Government-issued ID number (e.g., CURP, INE, SSN)
          example: GAPA900515HDFRRL09
        idType:
          type: string
          description: Type of ID document
          example: CURP
          enum:
            - CURP
            - INE
            - PASSPORT
            - SSN
            - OTHER
        dob:
          type: string
          description: Date of birth in ISO 8601 format (YYYY-MM-DD)
          example: '1990-05-15'
        paymentMethod:
          description: Payment method where the recipient will receive funds
          allOf:
            - $ref: '#/components/schemas/PartialPaymentMethodDto'
        idImage:
          type: string
          description: >-
            ID document image encoded in base64. Supported: JPEG, PNG, GIF,
            WebP.
          example: data:image/jpeg;base64,/9j/4AAQSkZJRg...
    FulfillDataRequestDataDto:
      type: object
      properties:
        dataRequestId:
          type: string
          description: Data request identifier
          example: dr_acme_a1b2c3d4e5f6
        status:
          type: string
          description: New status of the data request
          example: fulfilled
          enum:
            - fulfilled
        linkId:
          type: string
          description: Associated link ID
          example: link_acme_a1b2c3d4e5f6
        fulfilledAt:
          type: string
          description: When the data request was fulfilled (ISO 8601)
          example: '2026-02-10T15:00:00.000Z'
        message:
          type: string
          description: Confirmation message
          example: User data received and merged successfully
      required:
        - dataRequestId
        - status
        - linkId
        - message
    PartialNameDto:
      type: object
      properties:
        firstName:
          type: string
          description: First name
          example: Juan
        secondName:
          type: string
          description: Second / middle name
          example: Carlos
        lastName:
          type: string
          description: Last name / paternal surname
          example: Pérez
        secondLastName:
          type: string
          description: Second last name / maternal surname
          example: García
    PartialPaymentMethodDto:
      type: object
      properties:
        type:
          type: string
          enum:
            - bank_account
            - card
            - cash
          description: Shape of the payment instrument payload
        payoutMethod:
          type: string
          enum:
            - CASH_PICKUP
            - BANK_ACCOUNT
            - PUSH_TO_CARD
            - MOBILE_WALLET
            - HOME_DELIVERY
          description: >-
            Canonical catalog payout method this instrument fulfils. Must stay
            consistent with `type` (shape) via methodToShape().
        fundingMethod:
          type: string
          enum:
            - DEBIT_CARD
            - CREDIT_CARD
            - ACH
            - RTP
            - WALLET
            - CASH_DEPOSIT
            - BANK_BALANCE
          description: >-
            Canonical catalog funding method. Must stay consistent with `type`
            (shape).
        bankAccount:
          $ref: '#/components/schemas/BankAccountDto'
        card:
          $ref: '#/components/schemas/CardDto'
        cash:
          $ref: '#/components/schemas/CashDto'
    BankAccountDto:
      type: object
      properties:
        country:
          type: string
          description: Country code (ISO 3166-1 alpha-2)
          example: MX
        accountNumber:
          type: string
          description: Bank account number or identifier (CLABE, CBU, IBAN, etc.)
          example: '012345678901234567'
        accountType:
          type: string
          description: Account type (e.g., savings, checking)
        bankCode:
          type: string
          description: Bank code or routing number
        bankName:
          type: string
          description: Bank name
      required:
        - country
        - accountNumber
    CardDto:
      type: object
      properties:
        number:
          type: string
          description: >-
            Card number - Partners send raw PAN through VGS proxy, backend
            receives tokenized value (tok_xxx)
          example: tok_sandbox_4fKq8H2xLmNpRtYw
        expiryMonth:
          type: string
          description: Card expiry month (01-12)
          example: '12'
        expiryYear:
          type: string
          description: Card expiry year (YYYY)
          example: '2028'
        cardholderName:
          type: string
          description: Cardholder name as it appears on the card
          example: Juan Pérez
        last4:
          type: string
          description: >-
            Last 4 digits of the card (can be extracted by VGS or sent by
            partner)
          example: '4242'
        brand:
          type: string
          description: Card brand (can be detected by VGS from BIN or sent by partner)
          example: visa
          enum:
            - visa
            - mastercard
            - amex
            - discover
            - diners
            - jcb
            - unionpay
            - other
      required:
        - number
        - expiryMonth
        - expiryYear
    CashDto:
      type: object
      properties:
        payer:
          type: string
          description: >-
            Canonical catalog payer code that fulfils the cash payout (e.g.,
            ELEKTRA, OXXO).
          example: ELEKTRA
        reference:
          type: string
          description: Payment reference number
        country:
          type: string
          description: Country code — ISO 3166-1 alpha-2 (e.g., MX, GT).
          example: MX
        state:
          type: string
          description: Canonical catalog state code for the pickup location.
          example: CMX
        city:
          type: string
          description: Canonical catalog city code for the pickup location.
          example: MEX
      required:
        - payer
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Your partner API key. Use `raas_sandbox_*` keys for the sandbox
        environment and `raas_live_*` keys for production.

````