FAQ

How do idempotency keys prevent double charges and double payouts?

Send an idempotency_key field in the body of a state-changing request — usually derived from your own order or batch identifier. halfin records the result against that key, so a retried request with the same body returns the original outcome instead of creating a second invoice or payout; a replay with a different body is rejected rather than processed. That makes the API safe to call from queues and retry-prone clients.

related

Keep reading across the cluster.

Crypto payment API integrationSpec-first REST API and typed SDK for crypto paymentsProducts questionsFrequently asked questions drawn from the halfin products pages. Each one links to a standalone answer.Are conversions auditable?Yes. Every conversion is recorded against your balance history as an explicit event with provenance, and your held balances are readable through the same…Are the balances I see in the dashboard final?Crediting is reorg-aware and respects per-chain confirmation thresholds, so a balance the dashboard shows as settled is one you can act on — it is not…Can a customer reuse the same deposit address for multiple payments?Yes — that is the point. The address is issued once per customer and network and stays valid indefinitely. Each deposit is credited independently with its…Can a finance or support team use the dashboard without engineering?Yes — that is the point of it. Once engineering wires the integration, finance and operations run invoicing, payout approval, reconciliation, and…Can a payout be sent without operator approval?No. Every single payout is created in pending_approval and waits for an operator with payout permissions to authorize it. Funds are reserved at creation…Can I auto-convert every payment to a stablecoin like USDT or USDC?Yes. Set your target settlement asset to a supported stablecoin and payments are converted toward it on credit, as long as a conversion route exists…Can I bill in fiat but let the customer choose the crypto?Yes. You set the fiat amount and currency (for example 49.00 USD); the customer settles in any supported asset and network — USDT on Tron, USDC on Base…Can I cancel a payout after creating it?Yes, while it is still pending_approval or approved but not yet executed. Once the transaction is signed and broadcast it is on-chain and final, so…Can I convert only part of a held balance?Yes. A manual conversion is bounded to the source amount you name, so converting part of an asset now and the rest later is simply two recorded…Can I fully restyle the page or use my own domain?Customization covers presentation and routing — branding, the offered networks, order context, and the return URL — not a full layout rebuild or a custom…