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

# Refresh DICT refund from BACEN

> Fetches the refund's current record from BACEN (getRefund) and projects the counterparty-determined outcome onto the local row verbatim: no computation, no interpretation. No scheduler runs this — the operator triggers it explicitly.



## OpenAPI

````yaml /en/openapi/v3-current/spi-dict.yaml post /api/v1/dict/refunds/{id}/refresh
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    OpenAPI 3.1 surface for the DICT (Diretório de Identificadores de Contas
    Transacionais) capability of Lerian SPI, the direct integration between the
    institution and the Brazilian Instant Payment System (SPI/Pix). It covers
    the PIX key lifecycle, portability and ownership claims, the MED 2.0 dispute
    surface (infraction reports, refunds, fraud markers, and funds recoveries),
    antifraud statistics, synchronous DICT reports, and the internal operations
    that keep the key directory consistent.
  license:
    name: Lerian Studio General License
  title: Lerian SPI — DICT API
  version: 1.0.0
servers:
  - url: https://spi.sandbox.lerian.net
security: []
tags:
  - description: 'PIX key lifecycle: register, list, search, lookup, delete, and statistics.'
    name: Keys
  - description: >-
      PIX key portability and ownership claims through their full lifecycle
      (initiate, confirm, reject, cancel, acknowledge, complete).
    name: Claims
  - description: 'DICT infraction reports: list and retrieve.'
    name: Infractions
  - description: 'DICT refund requests: create, list, and retrieve.'
    name: Refunds
  - description: 'PIX fraud markers: create, list, and statistics.'
    name: Fraud Markers
  - description: >-
      Durable MED operation-intent status: the operationId every
      create/lifecycle-transition backlog route returns or references on every
      outcome, queryable independently of the business resource.
    name: Operations
  - description: >-
      Synchronous reports over Lerian SPI's own DICT record: COUNT(*) summaries
      of keys (by type/status) and claims (by type/status + open-past-deadline).
      COUNT-only — DICT holds no money.
    name: Reports
  - description: >-
      Internal DICT operations: reconciliation runs, claim deadline processing,
      and orphaned-key cleanup.
    name: Internal
paths:
  /api/v1/dict/refunds/{id}/refresh:
    post:
      tags:
        - Refunds
      summary: Refresh DICT refund from BACEN
      description: >-
        Fetches the refund's current record from BACEN (getRefund) and projects
        the counterparty-determined outcome onto the local row verbatim: no
        computation, no interpretation. No scheduler runs this — the operator
        triggers it explicitly.
      operationId: refreshRefund
      parameters:
        - description: >-
            BACEN-assigned refund resource UUID; a local record UUID never
            resolves here
          in: path
          name: id
          required: true
          schema:
            description: >-
              BACEN-assigned refund resource UUID; a local record UUID never
              resolves here
            format: uuid
            type: string
        - description: Required key used to prevent replaying the mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Required key used to prevent replaying the mutation.
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundResponse'
                description: Persisted local DICT refund request record
          description: OK
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Forbidden
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Not Found
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Conflict
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unprocessable Entity
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Too Many Requests
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
        '503':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    RefundResponse:
      additionalProperties: false
      properties:
        amount:
          description: Refund amount as an exact decimal number
          examples:
            - 1500
          type: number
        analysisDetails:
          description: >-
            Free-text analysis details accompanying analysisResult; omitted
            until close (ours or the counterparty's, via refresh)
          type: string
        analysisResult:
          description: >-
            closeRefund analysis outcome: TOTALLY_ACCEPTED, PARTIALLY_ACCEPTED,
            or REJECTED; omitted until close
          enum:
            - TOTALLY_ACCEPTED
            - PARTIALLY_ACCEPTED
            - REJECTED
          examples:
            - TOTALLY_ACCEPTED
          type: string
        bacen:
          $ref: '#/components/schemas/BACENEnvelopeResponse'
          description: >-
            BACEN's own operational envelope for its most recent interaction on
            this refund, including its LastModified version; omitted when no
            BACEN interaction has ever landed on it.
        bacenCreationTime:
          description: >-
            When BACEN created this refund request (RFC 3339, UTC); distinct
            from createdAt
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        contestedISPB:
          description: >-
            BACEN-assigned contested participant ISPB
            (ExtendedRefund.ContestedParticipant)
          examples:
            - '87654321'
          type: string
        createdAt:
          description: Record creation timestamp (RFC 3339, UTC)
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        effectiveRefundedAmount:
          description: >-
            MED 2.0: effective refunded amount recorded on an accepting close
            (exact decimal, verbatim); omitted until close
          examples:
            - 750
          type: number
        endToEndId:
          description: BACEN end-to-end identifier (E2E ID) of the refunded PIX transaction
          examples:
            - E12345678202607101200D3E4F5A6B7C
          type: string
        fundsRecoveryId:
          description: >-
            BACEN-assigned funds-recovery id this refund is bound to
            (refund-under-recovery); omitted for a standalone refund
          examples:
            - 550e8400-e29b-41d4-a716-446655440003
          type: string
        id:
          description: >-
            BACEN-assigned refund resource UUID — the public, canonical identity
            of this record
          examples:
            - 550e8400-e29b-41d4-a716-446655440001
          type: string
        infractionReportId:
          description: >-
            BACEN-assigned infraction this refund was opened for
            (ExtendedRefund.InfractionReportId); omitted otherwise
          examples:
            - 550e8400-e29b-41d4-a716-446655440004
          type: string
        monitorAccount:
          description: >-
            MED 2.0: whether the destination account is monitored
            (ExtendedRefund.MonitorAccount); omitted when BACEN has never echoed
            a value, explicit true/false once it has
          examples:
            - true
          type: boolean
        originOperationId:
          description: >-
            Durable operation-intent id that produced this snapshot's current
            state, when known
          examples:
            - 01930000-0000-7000-8000-000000000000
          type: string
        reason:
          description: 'BACEN refund reason: FRAUD, OPERATIONAL_FLAW or PIX_AUTOMATICO'
          examples:
            - FRAUD
          type: string
        refundAccount:
          $ref: '#/components/schemas/RefundAccountResponse'
          description: >-
            MED 2.0: destination account of a refund-under-recovery; omitted for
            a standalone refund
        refundDetails:
          description: >-
            Short description of why the refund was requested; present when the
            reason carries one
          type: string
        refundTransactionId:
          description: >-
            BACEN-executed refund transaction id
            (ExtendedRefund.RefundTransactionId), distinct from endToEndId;
            empty until a refund transaction exists
          examples:
            - E99999010202606141430ZYXWVUTSRQP
          type: string
        rejectionReason:
          description: >-
            BACEN rejection reason accompanying a REJECTED analysisResult;
            omitted otherwise
          examples:
            - NO_BALANCE
          type: string
        reportStatus:
          description: >-
            BACEN report delivery state. Always SENT at rest (a resource row is
            persisted only once BACEN has confirmed it; a rejected or ambiguous
            attempt creates no row).
          examples:
            - SENT
          type: string
        requestedByISPB:
          description: ISPB (8 numeric digits) of the participant that requested the refund
          examples:
            - '12345678'
          type: string
        requestingISPB:
          description: >-
            BACEN-assigned requesting participant ISPB
            (ExtendedRefund.RequestingParticipant)
          examples:
            - '12345678'
          type: string
        status:
          description: >-
            DICT spec refund lifecycle state: OPEN, CLOSED, or CANCELLED. CLOSED
            alone does not say accept vs reject; see analysisResult.
          enum:
            - OPEN
            - CLOSED
            - CANCELLED
          examples:
            - OPEN
          type: string
        updatedAt:
          description: Last update timestamp (RFC 3339, UTC)
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
      required:
        - id
        - endToEndId
        - requestedByISPB
        - amount
        - reason
        - status
        - reportStatus
        - createdAt
        - updatedAt
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      required:
        - correlationId
      type: object
    BACENEnvelopeResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: >-
            BACEN's own correlation identifier for its most recent interaction
            on this record — the wire value, distinct from any request-scoped
            echo.
          examples:
            - a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
          type: string
        lastModified:
          description: >-
            BACEN's own LastModified for this resource (RFC 3339, UTC) — the
            version this response reflects; present only on the MED resources
            (infraction, refund, fraud marker, funds recovery).
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        responseTime:
          description: >-
            Instant BACEN answered its most recent interaction on this record,
            RFC 3339 (UTC); omitted when BACEN's response carried no parseable
            instant.
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
      required:
        - correlationId
      type: object
    RefundAccountResponse:
      additionalProperties: false
      properties:
        accountNumber:
          description: Destination account number
          examples:
            - '987654'
          type: string
        accountType:
          description: 'ISO 20022 account type: CACC, SVGS, TRAN, SLRY, or OTHR'
          examples:
            - CACC
          type: string
        branch:
          description: Destination account branch (optional)
          examples:
            - '0001'
          type: string
        participant:
          description: Destination account-holding participant ISPB
          examples:
            - '12345678'
          type: string
        taxIdNumber:
          description: Destination account holder tax id (CPF/CNPJ)
          examples:
            - '12345678909'
          type: string
      required:
        - taxIdNumber
        - participant
        - accountNumber
        - accountType
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````