Skip to main content
support@hypermid.io — onboarding, production access, fiat configuration, and anything that is going wrong.

Reporting a failing request

Include the traceId from the error response:
That id is how we find your exact call in our logs. With it, a diagnosis is usually one lookup; without it, we are guessing from timestamps. If you have no traceId — a timeout, or nothing came back at all — send the endpoint, the approximate time with timezone, and your partner name.

Reporting a stuck payment

Send the session id (co_…). If the payer already submitted a transaction, the transaction hash and its chain help too. Please do not send API keys, webhook signing secrets, or private keys; we never need them, and a support thread is a bad place for a secret. If you have already pasted one somewhere, tell us and we will reissue it.

Common things that are not bugs

Fiat needs Hypermid’s provider account configured for the session’s environment. Ask us to configure it — see Environments.
A sk_test_ key reaches testnets only and a sk_live_ key mainnets only. The error names which direction you hit.
Cross-chain routes are two transactions with a bridge between them. The destination leg appears when it lands; estimate.executionDuration is the expectation to set.
Almost always the body was re-serialized before hashing. Sign the raw bytes — see Webhooks.
Terminal sessions do emit events. An unpaid Checkout, Deposit, or Withdrawal emits {mode}.expired when its TTL ends; a session that ends without settling emits {mode}.failed (for example, after a reverted or unverifiable payer transaction). Before the session is terminal, absence of a webhook is not a failure signal — read the session from your server.