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

# Retrieve benefit letter

> The endpoint returns a benefit letter with the values read from it in `fields`. `document_type` says which shape `fields` has; for `VA_BENEFIT_LETTER`, the only type returned today, it carries the combined evaluation, the effective date of the award, and the gross and net monthly benefit amounts.

Every field is read from the letter and is never derived. The VA combines rated conditions with its own table and rounds to the nearest ten (38 CFR 4.25), so individual ratings do not add up to `combined_evaluation`, and the letter prints only the combined figure.

A field is `null` when the letter did not state that line. `0` and `"0.00"` are real values and are returned as such, so an absent line is always distinguishable from a zero one.

The rating and the amounts are independent: a benefit can be waived, offset against military retired pay, apportioned or withheld, so a veteran at 100 percent can be paid 0.00. The letter prints no deduction lines, so a difference between `gross_benefit_amount` and `net_amount_paid` is reported but never explained.

Both amounts are monthly and in US dollars. The letter states neither — VA disability compensation is paid monthly in US dollars for every letter — so the response carries no currency and no cadence field.



## OpenAPI

````yaml GET /v1/links/{link_id}/benefit_letters/{benefit_letter_id}/
openapi: 3.0.1
info:
  title: Truv API
  description: Truv API Documentation
  termsOfService: https://www.truv.com/legal/terms-of-use
  contact:
    email: support@truv.com
  version: v1
servers:
  - url: https://prod.truv.com
security:
  - ClientID: []
    AccessKey: []
tags:
  - name: Users
  - name: Bridge Token
  - name: Companies and Data Providers
  - name: Key Management
  - name: Account Links
  - name: Data Refresh
  - name: Customization Templates
  - name: Webhooks
  - name: Orders
  - name: Tasks
  - name: VOIE Reports
  - name: VOA Reports
  - name: Income Insights Reports
  - name: DDS Reports
  - name: Employment
  - name: Identity
  - name: Benefit Letters
  - name: Shifts
  - name: Pay Statements
  - name: Tax Documents
  - name: Parsed Documents
  - name: Reports
  - name: Uploaded Documents
  - name: Bank Accounts
  - name: Bank Statements
  - name: Deposit Switch Reports
  - name: Insurance Reports
  - name: Income Report
  - name: Scoring Attributes
  - name: Accounts
  - name: Transactions
  - name: Recurring Transactions
  - name: Document Collections
paths:
  /v1/links/{link_id}/benefit_letters/{benefit_letter_id}/:
    parameters:
      - name: link_id
        in: path
        description: Link ID
        required: true
        schema:
          type: string
        example: 24d7e80942ce4ad58a93f70ce4115f5c
      - name: benefit_letter_id
        in: path
        description: Benefit letter ID
        required: true
        schema:
          type: string
        example: 24d7e80942ce4ad58a93f70ce4115f5c
    get:
      tags:
        - Benefit Letters
      summary: Retrieve benefit letter
      description: >-
        The endpoint returns a benefit letter with the values read from it in
        `fields`. `document_type` says which shape `fields` has; for
        `VA_BENEFIT_LETTER`, the only type returned today, it carries the
        combined evaluation, the effective date of the award, and the gross and
        net monthly benefit amounts.


        Every field is read from the letter and is never derived. The VA
        combines rated conditions with its own table and rounds to the nearest
        ten (38 CFR 4.25), so individual ratings do not add up to
        `combined_evaluation`, and the letter prints only the combined figure.


        A field is `null` when the letter did not state that line. `0` and
        `"0.00"` are real values and are returned as such, so an absent line is
        always distinguishable from a zero one.


        The rating and the amounts are independent: a benefit can be waived,
        offset against military retired pay, apportioned or withheld, so a
        veteran at 100 percent can be paid 0.00. The letter prints no deduction
        lines, so a difference between `gross_benefit_amount` and
        `net_amount_paid` is reported but never explained.


        Both amounts are monthly and in US dollars. The letter states neither —
        VA disability compensation is paid monthly in US dollars for every
        letter — so the response carries no currency and no cadence field.
      operationId: benefit-letter
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BenefitLetterRetrieve'
        '401':
          description: HTTP 401 Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: HTTP 403 Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: >-
            HTTP 404 Not Found. The link does not exist, or it holds no benefit
            letter with this ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
components:
  schemas:
    BenefitLetterRetrieve:
      allOf:
        - $ref: '#/components/schemas/BenefitLetter'
        - type: object
          properties:
            fields:
              $ref: '#/components/schemas/VaBenefitLetterFields'
    Error401:
      description: ''
      type: object
      properties:
        error:
          description: ''
          type: object
          properties:
            code:
              description: ''
              type: string
              example: authentication_failed
            message:
              description: ''
              type: string
              example: No such token
    Error403:
      description: ''
      type: object
      properties:
        error:
          description: ''
          type: object
          properties:
            code:
              description: ''
              type: string
              example: not_authenticated
            message:
              description: ''
              type: string
              example: Authentication credentials were not provided.
    Error404:
      description: ''
      type: object
      properties:
        detail:
          description: ''
          type: string
          example: Not Found.
    BenefitLetter:
      description: >-
        A benefit letter of a link. `document_type` says which letter it is and
        which shape its `fields` take on retrieve.
      type: object
      properties:
        id:
          description: Benefit letter ID
          type: string
          readOnly: true
          example: 24d7e80942ce4ad58a93f70ce4115f5c
        document_type:
          description: >-
            Benefit letter type. It decides the shape of `fields` on retrieve.
            `VA_BENEFIT_LETTER` is the VA Benefit Verification letter, whose
            fields are described by `VaBenefitLetterFields`.
            `SSA_BENEFIT_LETTER` is reserved for the Social Security benefit
            letter; none are returned yet, and its `fields` will be documented
            when they are.
          type: string
          enum:
            - VA_BENEFIT_LETTER
            - SSA_BENEFIT_LETTER
          readOnly: true
          example: VA_BENEFIT_LETTER
        file:
          description: Link to the file the letter was read from
          type: string
          format: uri
          nullable: true
          readOnly: true
          example: https://cdn.truv.com/paystub_sample.pdf
        md5sum:
          description: MD5 checksum of the file
          type: string
          nullable: true
          readOnly: true
          example: 24d7e80942ce4ad58a93f70ce4115f5c
        created_at:
          description: Time the letter was first read
          type: string
          format: date-time
          readOnly: true
          example: '2026-09-02T10:15:30.123456Z'
        updated_at:
          description: Time the values read from the letter last changed
          type: string
          format: date-time
          readOnly: true
          example: '2026-09-02T10:15:30.123456Z'
    VaBenefitLetterFields:
      description: >-
        Disability benefit details read from the veteran's VA Benefit
        Verification letter. Each field carries one line of the letter; a line
        the letter did not state is `null`.
      type: object
      properties:
        combined_evaluation:
          description: >-
            Combined disability evaluation, as a whole-number percentage. `0` is
            a valid evaluation — a service-connected condition can be evaluated
            at 0 percent — so a missing line is returned as `null`, never as
            `0`. Read from the letter, never derived: the VA combines rated
            conditions with its own table (38 CFR 4.25) and prints only the
            combined figure. A percentage alone does not settle eligibility:
            under 38 CFR 4.16(a) a veteran below 100 percent can still be rated
            totally disabled, which turns on the individual ratings — a single
            disability at 60 percent or more, or one at 40 percent or more with
            a combined 70 percent or more — and on a rating-agency finding of
            unemployability. The letter prints none of that.
          type: integer
          minimum: 0
          maximum: 100
          nullable: true
          example: 70
        effective_date:
          description: >-
            Date the award took effect. This is not the date the letter was
            issued, and an evaluation does not expire, so this is the only field
            that says how current the evaluation is.
          type: string
          format: date
          nullable: true
          example: '2025-12-01'
        gross_benefit_amount:
          description: >-
            Gross benefit amount, as the letter prints it under Gross Benefit
            Amount. `"0.00"` is a real amount, so a missing line is returned as
            `null`.
          type: string
          format: decimal
          pattern: ^\d{1,10}\.\d{2}$
          nullable: true
          example: '1986.45'
        net_amount_paid:
          description: >-
            Net amount paid to the veteran, as the letter prints it under Net
            Amount Paid. Can be lower than `gross_benefit_amount`; the letter
            prints no deduction lines, so the difference is reported and not
            explained. `"0.00"` is a real amount — benefits get waived, offset
            against military retired pay, apportioned or withheld while the
            evaluation stands — so a missing line is returned as `null`.
          type: string
          format: decimal
          pattern: ^\d{1,10}\.\d{2}$
          nullable: true
          example: '1986.45'
  securitySchemes:
    ClientID:
      type: apiKey
      description: Client ID
      name: X-Access-Client-Id
      in: header
    AccessKey:
      type: apiKey
      description: Client Access Key
      name: X-Access-Secret
      in: header

````