Skip to content

feat(backend): centralize amount and currency validation across API and service layers #130

Description

@arisu6804

Problem

Different layers can accept different decimal precision, unsupported currencies, or amounts that later fail settlement.

Objective

Deliver a production-quality improvement to money amounts, currencies, and transfer validation that creates measurable value for correctness, security, reliability, performance, or maintainability.

Implementation scope

  • Define canonical currency metadata, minor units, rounding, minimum/maximum values, and validation errors in one policy.

Acceptance criteria

  • API validation and settlement use the same canonical amount; unsupported currency and overflow fail before mutation; preview matches execution.

Required validation

  • Currency matrix, precision, overflow, boundary, and preview/settlement contract tests.
  • Existing tests and CI remain passing.
  • Add regression coverage for the original failure mode.
  • Do not weaken, delete, or skip unrelated tests to obtain a green build.

PR quality bar

  • Keep the PR focused and explain design tradeoffs, compatibility impact, and test evidence.
  • Avoid typo-only, documentation-only, cosmetic-only, or unrelated refactor submissions.

Out of scope

  • Broad rewrites not required by the acceptance criteria.
  • Changes to unrelated services, contracts, or user flows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    GRANTFOX OSSOpen-source issue tracked by GrantFoxMAYBE REWARDEDThis issue may carry a rewardThird CampaignThird Campaign contributionenhancementNew feature or requestpriority:highHigh implementation priority

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions