aeat.domain.iva._refund_eligibility module

Modelo 303 refund (devolución) disposition eligibility.

A negative Modelo 303 result may be elected as a refund — fichero “Tipo de declaración” code D (solicitud de devolución) — only when the taxpayer is inscribed in the Registro de devolución mensual (REDEME, art. 30 RD 1624/1992), which makes a monthly refund available every period, OR when the period is the last filing period of the year (the annual liquidación). Outside those two cases the only lawful negative disposition is compensación — code C, a credit carried forward. The operator may always carry forward; the refund is the gated election.

This module is the law-determined eligibility gate of the REDEME company refund schema. It is a pure predicate over the typed redeme_enrolled axis and the Period — it raises no error and resolves no locale, so it has no dependency on the result-disposition serialization framework or on operator message catalogues; a consumer layers the operator-facing election + refusal on top. The reason it returns is a machine code, not operator-facing prose.

Legal basis: RD 1624/1992 (RIVA) art. 30 (Registro de devolución mensual); Ley 37/1992 (LIVA) art. 116 (the monthly-refund right of an inscribed taxpayer).

LAST_FILING_PERIOD_TOKENS: Final

The last Modelo 303 filing-period tokens of a year, after which a negative result may be requested as a refund: 4T (quarterly cadence), 12 (monthly cadence), 0A (annual). Membership is the “annual liquidación” condition.

class RefundEligibilityReason(*values)[source]

Bases: StrEnum

Why a Modelo 303 refund (devolución) is or is not available for a period.

A machine code (not operator-facing prose) that a consumer maps to a grounded message. REDEME_INSCRIBED and LAST_PERIOD_OF_YEAR permit the D election; NOT_ELIGIBLE permits only compensación (C).

REDEME_INSCRIBED
LAST_PERIOD_OF_YEAR
NOT_ELIGIBLE
is_last_filing_period_of_year(period)[source]

Return whether period is the last Modelo 303 filing period of its year.

Return type:

bool

Parameters:

period (Period)

refund_disposition_available(*, redeme_enrolled, period)[source]

Return whether a refund (devolución, D) may be elected for a negative result.

True iff the taxpayer is REDEME-inscribed (art. 30 RD 1624/1992 — monthly refund, available every period) OR period is the last filing period of the year (the annual refund, Ley 37/1992 art. 116). Otherwise only compensación (C) is lawful and this returns False.

Return type:

bool

Parameters:
refund_eligibility_reason(*, redeme_enrolled, period)[source]

Classify the refund eligibility of a Modelo 303 period as a machine reason code.

REDEME enrolment takes precedence (it makes the refund available every period); otherwise the last-period condition; otherwise NOT_ELIGIBLE (carry forward). The consumer maps the code to a grounded operator message.

Return type:

RefundEligibilityReason

Returns:

The RefundEligibilityReason for the supplied period.

Parameters: