Document Purpose: Specification of the interface between AURA’s clearinghouse (market layer) and external settlement providers (payment rail layer). Defines the settlement instruction contract, proof of settlement model, per-rail finality definitions, failure handling, and reconciliation procedures. Owner: Marc Massar, AURA Labs Version: 1.1 Last Updated: April 14, 2026 Protocol: v2.2 Status: Architecture Designed (DEC-045) Authority: DEC-045 (Settlement Rail Architecture), DEC-043 (Clearinghouse Architecture) References: CLEARINGHOUSE.md (Section 3.4 Settlement Orchestrator, Section 3.8 Custody Adapter Layer), PROTOCOL_SPECIFICATION.md v2.2 (Section 10.7, Section 13.6), MARKET_PROFILES.md (Section 3.4 Risk Configuration)
AURA is the market. It determines:
AURA does NOT move money. It produces a settlement instruction — a signed, structured, idempotent directive that tells a payment rail what to do.
The settlement rail is the plumbing. It determines:
The rail produces a proof of settlement — a verifiable, non-repudiable confirmation that funds moved as instructed.
┌──────────────────────┐ ┌──────────────────────┐
│ AURA Clearinghouse │ │ Settlement Rail │
│ │ │ (RTP, Stripe, │
│ Risk Engine │ Settlement │ Stablecoin, etc.) │
│ Business Rules Gate │ Instruction │ │
│ Margin Calculator │ ─────────────────────> │ Fund Movement │
│ Clearing Lifecycle │ │ Compliance │
│ Reserve Manager │ Proof of │ Finality │
│ Adjudicator │ Settlement │ Reporting │
│ │ <───────────────────── │ │
└──────────────────────┘ └──────────────────────┘
│ │
│ Reconciliation Report │
│ <───────────────────────────────────────────── │
│ │
│ Exception Notification │
│ <───────────────────────────────────────────── │
This boundary is absolute. AURA never interacts with the rail’s internal mechanics. The rail never evaluates AURA’s risk decisions. Each system trusts the other’s domain authority and verifies through the interface contract.
A settlement instruction is the atomic unit of communication from AURA to a rail. It is a signed, idempotent directive.
{
"instruction_id": "stl_01HXYZ...",
"idempotency_key": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"instruction_type": "collect",
"clearing_transaction_id": "clr_01HXYZ...",
"transaction_id": "txn_01HXYZ...",
"amount": {
"value": "349.99",
"currency": "USD"
},
"source": {
"principal_id": "prn_01HXYZ...",
"settlement_wallet": "sw_01HXYZ...",
"rail_account_reference": "acct_buyer_ref_abc123"
},
"destination": {
"principal_id": "prn_01HABC...",
"settlement_wallet": "sw_01HABC...",
"rail_account_reference": "acct_seller_ref_def456"
},
"terms": {
"payment_method": "rtp",
"timing": "on_commit",
"dispute_window_days": 30,
"risk_margin_amount": "8.75",
"risk_margin_currency": "USD"
},
"authorization": {
"clearing_status": "authorized",
"risk_score": 0.12,
"business_rules_passed": true,
"consent_tier": "explicit",
"authorized_at": "2026-04-13T14:30:00.000Z"
},
"cryptographic_proof": {
"instruction_hash": "sha256:a1b2c3d4...",
"signed_by": "core_ed25519_public_key",
"signature": "sig_01HXYZ...",
"chain_reference": "L6_commitment_hash"
},
"metadata": {
"created_at": "2026-04-13T14:30:01.000Z",
"expires_at": "2026-04-13T15:30:01.000Z",
"aura_version": "2.0.0",
"profile_id": "prf_retail_consumer_v1"
}
}
| Type | Direction | When | Description |
|---|---|---|---|
collect |
Buyer → Escrow | At commitment (or at fulfillment for physical goods) | Collect funds from buyer into clearing escrow |
authorize |
Buyer → Hold | At commitment | Place a hold on buyer’s funds (card auth, wallet lock) without moving money |
capture |
Hold → Escrow | At fulfillment | Convert a hold into a settlement (two-phase) |
disburse |
Escrow → Seller | At clearing (after dispute window) | Release net proceeds to seller |
margin_hold |
Settlement → Reserve | At clearing | Segregate risk margin from settlement amount into reserve account |
margin_release |
Reserve → Seller | At clearing completion | Release margin to seller (minus fees) after dispute window |
refund |
Escrow → Buyer | On dispute upheld | Return funds to buyer from escrow or reserve |
fee |
Settlement → Operator | At clearing | Deduct clearing fee |
void |
Cancel Hold | On cancellation before capture | Release authorization hold without settlement |
Idempotency. Every instruction carries a unique idempotency_key. A rail that receives the same key twice MUST return the result of the first execution, not execute again. This is the primary mechanism for safe retry.
Immutability. Once created, a settlement instruction is never modified. If terms change (e.g., partial refund), a new instruction is created referencing the original.
Cryptographic binding. The instruction_hash is a SHA-256 of the canonical JSON (sorted keys, no whitespace) of the instruction body excluding the cryptographic_proof field. The hash is signed by Core’s Ed25519 key. The chain_reference links to the L6 commitment hash from the intent chain (Protocol Specification Section 11.10), creating a cryptographic chain from human intent through to settlement instruction.
Expiry. Every instruction has an expires_at timestamp. A rail MUST reject instructions received after expiry. AURA creates a new instruction (with new idempotency key) if retry is needed after expiry.
The settlement instruction signature uses the same newline-delimited canonical format as offer signatures (Protocol Specification Section 8.2):
AURA-SETTLEMENT-INSTRUCTION-v1
stl_01HXYZ...
collect
349.99
USD
prn_01HXYZ...
prn_01HABC...
rtp
2026-04-13T14:30:01.000Z
L6_commitment_hash
Core signs with its Ed25519 private key. Rails verify with Core’s published public key.
A proof of settlement is the rail’s attestation that funds moved as instructed. It must be:
{
"proof_id": "prf_stl_01HXYZ...",
"instruction_id": "stl_01HXYZ...",
"idempotency_key": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "confirmed",
"rail": "rtp",
"settlement_details": {
"amount_settled": "349.99",
"currency": "USD",
"settled_at": "2026-04-13T14:30:05.000Z",
"finality_type": "irrevocable",
"finality_achieved_at": "2026-04-13T14:30:05.000Z"
},
"external_references": {
"rail_transaction_id": "RTP20260413143005ABC",
"rail_confirmation_code": "CONF-789012",
"network_message_id": "MSG-2026041314300500001"
},
"verification": {
"method": "rail_signature",
"signature": "rail_sig_01HXYZ...",
"public_key_reference": "https://rail.example.com/.well-known/settlement-keys",
"certificate_chain": ["rail_cert_01...", "root_ca_cert_01..."]
},
"metadata": {
"rail_version": "1.0",
"region": "us-east",
"received_at": "2026-04-13T14:30:06.000Z"
}
}
AURA verifies every proof of settlement before advancing the clearing lifecycle from settling → settled:
public_key_reference URL.amount_settled must match the instruction’s amount.value exactly. Partial settlements are rejected unless the instruction type explicitly permits them (e.g., partial_capture).instruction_id and idempotency_key in the proof must match the original instruction.finality_type must be irrevocable for the clearing lifecycle to advance. Rails that provide provisional finality (e.g., ACH before the return window closes) hold the clearing state at settling until finality is achieved.Every proof is stored in the settlement_instructions table:
status → confirmedexternal_reference → rail_transaction_idconfirmed_at → finality_achieved_atproof_payload (JSONB, append-only)The proof becomes part of the forensic record (CLEARINGHOUSE.md Section 8). An auditor can trace from human intent (L1) through commitment (L6) through settlement instruction through proof of settlement — a complete, cryptographically linked chain from desire to fund movement.
Every rail adapter implements a common interface. The clearinghouse interacts with all rails through this contract — it never touches rail-specific mechanics directly.
interface SettlementRailAdapter {
// Submit a settlement instruction to the rail
submit(instruction: SettlementInstruction): SubmitResult
// Query the status of a previously submitted instruction
status(instruction_id: string, idempotency_key: string): StatusResult
// Cancel a pending instruction (if the rail supports cancellation)
cancel(instruction_id: string): CancelResult
// Verify a proof of settlement returned by the rail
verify(proof: SettlementProof): VerificationResult
// Get the rail's capabilities and constraints
capabilities(): RailCapabilities
}
Each adapter declares its capabilities so the clearinghouse can route instructions appropriately:
{
"rail_id": "rtp_us",
"display_name": "Real-Time Payments (RTP)",
"provider": "RTP Network Operator",
"capabilities": {
"instruction_types": ["collect", "disburse", "refund"],
"currencies": ["USD"],
"settlement_speed": "real_time",
"finality_type": "irrevocable",
"finality_latency_ms": 5000,
"max_amount": 1000000.00,
"min_amount": 0.01,
"supports_authorization_hold": false,
"supports_partial_settlement": false,
"supports_cancellation": false,
"supports_batch": false,
"operating_hours": "24x7x365",
"proof_method": "rail_signature",
"idempotency_guaranteed": true
},
"constraints": {
"requires_account_verification": true,
"requires_kyc_level": "entity_verified",
"jurisdictions": ["US"],
"excluded_categories": [],
"regulatory_framework": "Federal Reserve Regulation J, UCC Article 4A"
},
"integration": {
"api_version": "1.0",
"authentication": "mutual_tls",
"webhook_supported": true,
"polling_supported": true,
"sandbox_available": true
}
}
| Attribute | Value |
|---|---|
| Settlement speed | Real-time (seconds) |
| Finality | Irrevocable on confirmation. Credit transfer is final per Federal Reserve Regulation J. |
| Max amount | $1,000,000 per transaction (RTP network limit) |
| Operating hours | 24×7×365 |
| Currency | USD only |
| Authorization holds | Not supported. RTP is credit-push only — funds move immediately. |
| Batch netting | Not supported natively. AURA can batch at the instruction level before submission. |
| Account requirements | Both parties need accounts at RTP participant banks. Settlement wallets map to bank account references. |
| Proof method | Rail-signed confirmation message with network message ID |
| AURA clearing integration | Ideal for on_commit timing (immediate collection). For on_fulfillment, AURA holds authorization at the market layer until fulfillment triggers the RTP instruction. |
Instruction mapping:
collect → RTP Credit Transfer (buyer’s bank → escrow account at AURA’s participant bank)disburse → RTP Credit Transfer (escrow account → seller’s bank)refund → RTP Credit Transfer (escrow account → buyer’s bank)authorize → Not applicable. AURA manages holds at the market layer (balance lock on settlement wallet).margin_hold / margin_release → Internal ledger operations within AURA’s escrow account. No RTP message.Finality definition: An RTP payment is final when the receiving participant bank sends the confirmation message. This typically occurs within seconds. AURA treats the confirmation as irrevocable — no return codes, no chargebacks, no reversal window. Disputes are handled at the AURA market layer (reserve-funded), not at the rail layer.
Key advantage for AURA: RTP’s irrevocable finality eliminates the settlement risk that exists with ACH (return window) and cards (chargeback window). When AURA’s clearinghouse authorizes a settlement via RTP, the settling → settled transition is seconds, not days. The risk reserve still holds for the negotiated dispute window, but the underlying funds are confirmed.
| Attribute | Value |
|---|---|
| Settlement speed | Real-time (seconds) |
| Finality | Irrevocable on acknowledgment. Federal Reserve settles in central bank money. |
| Max amount | $500,000 per transaction (default limit, adjustable per participant) |
| Operating hours | 24×7×365 |
| Currency | USD only |
| Proof method | Federal Reserve acknowledgment message |
| AURA clearing integration | Same as RTP. Preference between RTP and FedNow based on participant bank availability and amount limits. |
Instruction mapping: Identical to RTP. Both are credit-push, real-time, irrevocable.
Key difference from RTP: FedNow settles in central bank money (Federal Reserve balances). RTP settles in commercial bank money with prefunded positions at the Federal Reserve. For AURA’s purposes, the finality guarantee is equivalent. Routing between RTP and FedNow is a deployment decision based on participant bank connectivity.
| Attribute | Value |
|---|---|
| Settlement speed | Near-real-time (block confirmation dependent) |
| Finality | Probabilistic → practical (12 confirmations on Ethereum mainnet; 1 confirmation on L2) |
| Max amount | No protocol limit (gas cost scales, not amount) |
| Operating hours | 24×7×365 (blockchain native) |
| Currency | USDC (USD-pegged) |
| Authorization holds | Supported via smart contract escrow (allowance + escrow contract) |
| Batch netting | Supported (batch contract execution) |
| Account requirements | Ethereum address. Settlement wallet maps to wallet address. |
| Proof method | On-chain transaction hash + block confirmation count. Independently verifiable by anyone. |
| AURA clearing integration | Primary rail for agent-to-agent settlement. Smart contract holds escrow for dispute term. |
Instruction mapping:
collect → USDC transfer from buyer wallet to AURA escrow contractauthorize → USDC allowance (ERC-20 approve) to AURA escrow contractcapture → USDC transferFrom (buyer → escrow) using approved allowancedisburse → USDC transfer from escrow contract to seller walletmargin_hold → Escrow contract segregates margin amount (internal accounting)margin_release → Escrow contract releases margin to seller addressrefund → USDC transfer from escrow contract to buyer walletFinality definition: AURA treats a transaction as final after:
The clearing lifecycle transitions settling → settled after the confirmation threshold is met. The finality_achieved_at timestamp reflects the block timestamp of the confirming block.
Smart contract escrow: The escrow contract is the on-chain implementation of AURA’s reserve manager for stablecoin transactions. It holds funds, enforces time-locked releases (dispute window), and executes payouts on adjudication decisions. The contract’s logic mirrors the clearinghouse’s reserve operations (hold, release, draw, fee) but executes them on-chain with cryptographic enforcement rather than database-level controls.
| Attribute | Value |
|---|---|
| Settlement speed | T+1 to T+2 (batch settlement from Stripe to AURA’s bank account) |
| Finality | Provisional. Subject to chargeback for 120 days (Visa/MC rules). |
| Max amount | Per merchant account limits (typically $50K–$250K per transaction) |
| Operating hours | 24×7 for authorization; batch settlement on banking days |
| Currency | Multi-currency (per Stripe account configuration) |
| Authorization holds | Supported (card authorization hold, 7-day default) |
| Proof method | Stripe charge ID + balance transaction ID |
| AURA clearing integration | Transitional. Card chargeback window overlaps with AURA dispute window. AURA’s reserve absorbs this risk. |
Instruction mapping:
authorize → Stripe PaymentIntent (manual capture)capture → Stripe PaymentIntent capturecollect → Stripe PaymentIntent (automatic capture)refund → Stripe Refundvoid → Stripe PaymentIntent canceldisburse → Stripe Transfer to connected account (or external bank transfer via Stripe Treasury)Finality definition: Card settlement is never truly final from AURA’s perspective. Chargebacks can occur up to 120 days after the original transaction. AURA’s clearinghouse treats card settlement as provisional finality and manages the gap through:
Why transitional: Cards add 1.5–3% in network fees, introduce chargeback risk that AURA must absorb, and create finality ambiguity. As participants adopt wallet-based settlement (RTP, stablecoin), card volume migrates. The adapter remains for backward compatibility with principals who have not onboarded to direct settlement methods.
| Attribute | Value |
|---|---|
| Settlement speed | Same-day ACH (by 4:45 PM ET cutoff) or Next-day |
| Finality | Provisional. ACH returns possible for 2 banking days (unauthorized: 60 days). |
| Max amount | $1,000,000 per transaction (same-day ACH limit) |
| Operating hours | Banking days, with 3 same-day processing windows |
| Currency | USD only |
| Authorization holds | Not natively supported. AURA manages holds at market layer. |
| Proof method | ACH trace number + NACHA return/acknowledgment |
| AURA clearing integration | Suitable for B2B with negotiated terms (Net 30/60). Not recommended for real-time consumer transactions. |
Instruction mapping:
collect → ACH debit (requires Nacha authorization from buyer)disburse → ACH credit to seller’s bank accountrefund → ACH credit to buyer’s bank accountFinality definition: ACH settlement is provisional until the return window closes (2 banking days for most returns; 60 days for unauthorized transactions). AURA’s clearing lifecycle remains at settling until the return window passes, then transitions to settled. For B2B profiles with Net 30/60 terms, this delay is acceptable. For retail profiles, ACH is not recommended as a primary rail.
| Attribute | Value |
|---|---|
| Settlement speed | Operator-confirmed |
| Finality | Operator-attested |
| Proof method | Operator signature on settlement confirmation |
For development, testing, and edge cases where no automated rail is available. The clearing lifecycle pauses at settling until an operator manually confirms settlement and provides a signed proof. Used in MVP for bootstrapping before production rail integrations are live.
The Settlement Orchestrator routes instructions to rails based on:
payment_terms.accepted_methods and the Scout’s selected method determine the primary rail.| Payment Method (agreed terms) | Primary Rail | Fallback Rail | Fallback Condition |
|---|---|---|---|
rtp |
RTP | FedNow | Participant bank not on RTP network |
stablecoin_usdc |
Stablecoin (USDC) | None | N/A — wallet-to-wallet |
programmatic_wallet |
Stablecoin (USDC) | RTP | Wallet provider supports bank settlement |
bank_transfer |
ACH (US) / SEPA (EU) | RTP / FedNow | Amount below real-time limit and urgency warrants |
card |
Stripe | None | N/A — card-specific |
trade_credit |
Internal ledger | Bank transfer at term expiry | N/A |
If a rail submission fails:
failed. Exception notification to both parties.settling state and alert operator.Design principle: Never silently switch rails. If a fallback is used, both parties are notified and the clearing record reflects the actual rail used, not the originally intended rail.
| Exception | Trigger | Clearing Impact | Resolution |
|---|---|---|---|
| Settlement timeout | No proof within clearing window | settling → failed |
Retry or cancel. Buyer funds returned if held. |
| Amount mismatch | Proof amount ≠ instruction amount | Proof rejected | New instruction with correct amount, or exception escalation |
| Partial settlement | Rail settles less than instructed (if permitted) | Clearing remains at settling |
Supplementary instruction for remainder |
| Rail rejection | Rail rejects instruction (compliance, account issue) | settling → failed |
Structured rejection reason returned to clearinghouse |
| Duplicate proof | Same idempotency key, different proof details | Second proof rejected | Alert — potential fraud or rail error |
| Orphaned instruction | Instruction submitted, rail confirms, but AURA didn’t receive proof | Clearing stuck at settling |
Reconciliation process (Section 7) detects and resolves |
| Chargeback (card only) | Card network reverses settlement | Dispute auto-created | AURA dispute process; reserve covers payout |
| ACH return (ACH only) | Originator bank returns ACH debit | settled → settling (regression) |
Re-collect via alternative method or cancel transaction |
Level 0: Automatic retry (transient failures, idempotent)
Level 1: Automatic fallback (rail outage, if configured)
Level 2: Operator alert (permanent failure, amount mismatch)
Level 3: Manual intervention (orphaned instruction, suspected fraud)
Level 4: Regulatory escalation (compliance hold, sanctions flag)
When settlement fails and cannot be retried:
settling → failed → authorized (rollback)
The clearing lifecycle returns to authorized state. From there:
The reserve manager does NOT hold margin on a failed settlement. Margin is held only after settled is achieved.
AURA reconciles with each rail at three frequencies:
| Frequency | Purpose | Mechanic |
|---|---|---|
| Real-time | Confirm each settlement as proof arrives | Proof verification (Section 3.3) |
| Intraday | Detect orphaned instructions, missing proofs, amount discrepancies | Automated comparison: AURA instructions vs. rail confirmations |
| End-of-day | Comprehensive balance reconciliation | AURA escrow balance vs. rail-reported balance |
Every 15 minutes (configurable per rail), the reconciliation engine:
submitted status older than the rail’s expected confirmation latencyadapter.status())idempotency_keyAt the configured settlement day boundary (default: 00:00 UTC):
Every reconciliation run produces a signed record:
{
"reconciliation_id": "rec_01HXYZ...",
"rail": "rtp_us",
"period": {
"start": "2026-04-13T00:00:00.000Z",
"end": "2026-04-13T23:59:59.999Z"
},
"summary": {
"instructions_submitted": 1247,
"instructions_confirmed": 1245,
"instructions_failed": 2,
"instructions_pending": 0,
"total_collected": "487329.50",
"total_disbursed": "412185.25",
"total_refunded": "3150.00",
"total_fees": "12187.50",
"net_position": "59806.75",
"rail_reported_position": "59806.75",
"discrepancy": "0.00",
"status": "balanced"
},
"breaks": [],
"signed_by": "core_ed25519_key",
"signature": "sig_rec_01HXYZ..."
}
When a reconciliation discrepancy is detected:
All communication between AURA and settlement rails uses mutual TLS (mTLS). Both parties authenticate with X.509 certificates. Certificate rotation follows the rail’s published schedule.
For stablecoin rails, the “transport” is the blockchain itself. Security is cryptographic (private key custody, transaction signing) rather than channel-based.
Settlement instructions are signed by Core’s Ed25519 key (Section 2.4). Rails verify the signature before executing. A tampered instruction fails verification and is rejected.
The signing key is distinct from Core’s session/offer signing key. Key separation ensures that compromise of one function does not compromise settlement authority.
Proofs of settlement are verified per Section 3.3. AURA maintains a registry of each rail’s public keys and certificate chains. Key rotation is handled via the public_key_reference URL with a trust-on-first-use (TOFU) model, upgraded to certificate pinning for production rails.
| Key | Purpose | Storage | Rotation |
|---|---|---|---|
| Core settlement signing key | Sign settlement instructions | HSM (FIPS 140-2 Level 3) | Annual, with 30-day overlap |
| Rail verification keys | Verify proofs of settlement | Key registry (pinned) | Per rail’s schedule |
| mTLS client certificate | Authenticate to rail API | HSM | Per rail’s requirements |
| Smart contract deployer key | Deploy/upgrade escrow contracts | HSM, multi-sig (2-of-3) | On contract upgrade only |
| Smart contract operator key | Execute escrow operations | HSM | Quarterly |
The Settlement Orchestrator emits signals to the risk engine when anomalous patterns are detected:
| Signal | Trigger | Risk Impact |
|---|---|---|
rapid_settlement_velocity |
Multiple settlements for same principal in short window | Elevated scout_risk_score |
rail_mismatch_pattern |
Repeated fallback routing for same participant | Investigate account setup |
proof_latency_anomaly |
Settlement confirmation significantly slower than rail’s SLA | Monitor rail health |
amount_boundary_clustering |
Transactions clustering just below rail or reporting thresholds | Potential structuring — regulatory flag |
cross_rail_arbitrage |
Same principal settling via different rails for similar transactions | Monitor for regulatory avoidance |
When onboarding a new settlement rail:
SettlementRailAdapter interface (Section 4.1) — submit, status, cancel, verify, capabilities.settling → settled transition condition.A rail adapter is certified for production when:
This document specifies the external interface that CLEARINGHOUSE.md Section 3.4 (Settlement Orchestrator) uses. The orchestrator calls the rail adapter; this document defines what the adapter does.
| Clearinghouse component | Settlement Rail interaction |
|---|---|
| Settlement Orchestrator | Submits instructions, receives proofs |
| Reserve Manager | Margin hold/release instructions are internal (no rail interaction unless on-chain) |
| Clearing Lifecycle Manager | Transitions settling → settled on proof verification |
| Custody Adapter Layer | Maps to rail adapter for fund-holding operations |
| Protocol section | Settlement Rail relevance |
|---|---|
| Section 10.7 (Clearinghouse Settlement) | Settlement flow triggers instruction submission |
| Section 13.6 (Settlement Security) | HSM and key management requirements from this document |
| Section 3.2.8 (Settlement Wallet) | Wallet registration maps to rail_account_reference |
| Section 14 (API Reference) | Clearing status endpoint reflects rail proof status |
Market Profiles determine which rails are available and preferred:
| Date | Change |
|---|---|
| 2026-04-13 | v1.0 Initial architecture. Settlement instruction contract, proof of settlement model, 6 rail adapters (RTP, FedNow, stablecoin USDC, card/Stripe, ACH, manual), rail routing, exception handling, reconciliation procedures, security model, rail onboarding checklist. Driven by DEC-045. |
| Version | Date | Changes |
|---|---|---|
| 1.1 | 2026-04-14 | Added version header, protocol reference updated to v2.2. |
| 1.0 | 2026-04-13 | Initial settlement rail architecture — instruction contract, proof model, 6 adapters, routing, reconciliation. DEC-045. |