BengarTrust infrastructure

Use cases

Payments

Bounded spending authority with idempotency and an honest UNKNOWN.

The problem

Money moves once. Every layer between the decision and the merchant is a place where a retry becomes a second payment.

Without Bengar

With Bengar

The flow

  1. Authorize with an execution block and a nonce.
  2. SUCCEEDED, FAILED or UNKNOWN comes back.
  3. UNKNOWN is investigated and resolved; it is never retried automatically.

Components used

Permits · Policy · Execution · Audit

Example

// The same nonce, sent twice, calls the merchant once.
const first  = await bengar.authorize({ ...request, execution: { ...block, nonce } });
const second = await bengar.authorize({ ...request, execution: { ...block, nonce } });

second.decision;            // "REPLAY"
second.execution?.status;   // the stored outcome — nothing was called again

Security properties

  • Limits are checked before the money moves, not reported after.
  • UNKNOWN ≠ FAILED, and there is no blind retry.
  • There is no caller-supplied URL — the merchant is named, not addressed.

Try it →