Skip to main content

Custody adapter mapping

Luvion keeps policy, approvals, authorization, and evidence independent from a specific wallet or custody provider. A named integration translates one provider API into the tested adapter contract while preserving the same authorization core.

A named provider integration becomes ready when this mapping is completed, implemented, tested against its sandbox, and jointly accepted.

Required logical operation

create_or_reconcile(exact_request) -> completed | rejected | retryable

The lowercase hexadecimal Luvion request_id is the provider idempotency key. Every retry first checks whether the provider already created an operation for that key. If it did, the adapter returns that operation instead of creating a second transfer.

Partner mapping worksheet

DecisionPartner answer required
Sandbox and production endpointsBase URLs, region, network restrictions
AuthenticationAPI key, request signature, OAuth, mTLS, or other mechanism
Treasury accountLuvion tenant/account ID to provider vault or wallet ID
NetworksCanonical network IDs to provider network codes
AssetsContract address or asset ID, decimals, and provider symbol
DestinationsAllowlist source, update process, and enforcement location
IdempotencyNative key support or exact reconciliation query
Status lifecyclePending, accepted, broadcast, confirmed, failed, cancelled
Completion meaningprovider_accepted, broadcast, or confirmed
Error classesDurable rejection versus retryable provider or transport error
Webhooks and pollingSignature verification, fallback polling, and timeout
EvidenceOperation ID, transaction hash, timestamps, and retention period

Request and response binding

The adapter receives the exact tenant, request, network, account, asset, amount, destination, payload hash, policy context, approval context, and authorization-certificate metadata. Its response repeats the contract version, adapter ID, idempotency key, and canonical request digest.

Luvion rejects a response before persistence if any binding differs. API keys, provider signing secrets, and raw credentials never belong in this payload or in the evidence export.

Outcome classification

OutcomeUse whenLuvion behavior
completedThe agreed completion condition was reachedPersist one receipt and mark executed
rejectedThe provider made a durable policy or business rejectionDo not create a receipt; do not retry as a transport failure
retryableTimeout, rate limit, pending reconciliation, or temporary provider failureRetry later with the same idempotency key

Release gates

Before a named adapter enters a design-partner validation:

  1. the partner signs off the completed mapping worksheet;
  2. the adapter proves duplicate prevention across a crash and retry;
  3. altered request or response bindings fail closed;
  4. provider errors are covered by deterministic classification tests;
  5. secrets are redacted from logs and evidence;
  6. timeout, retry, and reconciliation behavior is reproduced in sandbox; and
  7. the selected completion meaning is visible in the final evidence package.

Production additionally requires reviewed transport authentication, TLS, credential rotation, monitoring, rate limits, incident ownership, and a provider-specific operational runbook.