Onboarding
Go-live checklist
Everything that must be true before you take a live payment.
Work through this before the first live payment. Each item links to the page that fixes the details.
Going live is a partner onboarding step. Coordinate the cut-over with your onboarding contact before accepting the first live payment.
Identity and configuration
- An organization and a merchant exist, and you have stored the
merchant_id. See Organization and merchant. - An active receiving profile records your primary settlement wallet for each chain you accept. See Receiving profile and whitelist.
Authorisation and whitelist
- A factory authorisation is signed for every chain you accept, bound to that chain's factory by the domain separator. See Factory authorisation.
- The signed
allowed_destination_whitelistis final and contains every address you may ever return assweep_toorrefund_to. A target outside it is rejected on-chain. Adding an address later requires signing a new authorisation that supersedes the current one. -
allowed_action_typesincludes bothdeploy_sweepanddeploy_refundif you intend to both settle and refund.
KYT endpoint
- Your KYT endpoint is registered and active, and answers within
sla_seconds(default 60). See KYT endpoint setup. - Your endpoint verifies
X-Tekmerion-KYT-Signature(v1=<hex>) andX-Tekmerion-KYT-Timestampbefore acting, using constant-time comparison. See Verifying requests. - On
approveyou return asweep_tothat is in the whitelist; onrejectyou return arefund_tothat is in the whitelist. See Response contract. - You have chosen
default_on_timeoutdeliberately and understand its consequence —auto_approve_to_mainandauto_refundfinalize a payment without your review;holdfinalizes nothing. See SLA and timeouts.
Notifications and credentials
- At least one notification endpoint is enabled, with an active signing secret. See Notification endpoints and API keys.
- Your receiver verifies
X-Tekmerion-Signature(v1=<hex>) andX-Tekmerion-Timestampbefore processing the payload, using constant-time comparison. See Signature verification. - You deduplicate notifications by
delivery_record_idand acknowledge quickly. Delivery is at-least-once and unordered. See Delivery semantics. - One merchant API key is active and stored securely. See Authentication.
Reconciliation and edge cases
- You treat a notification as a prompt to reconcile, never as the source of truth. The authoritative outcome is the signed Proof of Payment, cross-checked against the on-chain transaction. See Proof of Payment and Verifying a PoP.
- You handle every
finality_outcomeon apayment_finalizednotification:paid,refunded, andfailed. See Event catalog. - You handle the duplicate-payment case correctly. A duplicate deposit on a
payment_intent_idthat is alreadyPAIDproduces a separateduplicate_payment_incidentnotification — reconcile it, do not treat it as a new settlement. Independently, the API status projection can show an attempt asFAILEDcarryingfinality_outcomeduplicate_payment: this is not a failed payment — it means a losing attempt was deduplicated while the intent is alreadyPAID. Resolve the intent's true state from the Proof of Payment. See Statuses and projections.
The single most common integration error is trusting webhook receipt. A notification is a side effect; the Proof of Payment and the API are the record. Build reconciliation against them before you go live, not after the first discrepancy.