---
name: payments
description: >
  Domain rules for payment and money-movement code. Use whenever working on
  authorization, capture, settlement, refunds, or anything touching money amounts
  or transaction state. <REPLACE WITH YOUR REAL TRIGGER CONDITIONS>
---

# Payments Domain  <DOMAIN STUB — fill in for your org>

> This is a domain skill stub. Replace the examples with your real rules. Keep the
> body lean; push long tables / state machines into references/ (tier-3).

## Money
- All amounts are int64 minor units (cents). Never floats. <CONFIRM/REPLACE>
- Currency is explicit on every amount; never assume a default.

## Transaction state
- Valid transitions only: <e.g. authorized → captured → settled; → refunded>.
- State changes emit an audit event (see the `regulatory-logging` skill).

## Idempotency
- Money-moving operations require an idempotency key; replays return the prior result.

## External providers
- Calls to PSPs/networks go through `internal/clients/`; never inline.
- Timeouts and retries are bounded; partial failures reconcile, never double-charge.

<Add your real invariants, the state machine, and provider quirks. Move anything
longer than a few lines into references/.>
