Quickstart
Introduction
CryptoChill offers several ways for integration:
- API - Best for full-featured integrations.
- SDK - Ideal for quick client-side integrations.
- WordPress WooCommerce Plugin - Easy integration for WordPress sites.
- Through Payment Orchestration Platforms (Cashiers).
Postman Collection
Use our Postman collection to test the API endpoints. You can use our Demo Account environment to test the API endpoints for existing Demo account. Or you can copy our environment and create your own environment with your own API keys.
Invoice / Address
Use the SDK or API to generate invoice and retrieve address from it.
An invoice consists of an address and metadata like amount, description, fiat and cryptocurrencies, passthrough data, etc.
Configuration Profiles
When creating an Invoice you need to specify configuration Profile ID which defines essential information such as: where to send callbacks related to transaction to this address, what fee policies to apply, which coins are enabled on this profile and many more.
On a newly created account, you will find a default configuration profile already created. You can modify this profile to suit your requirements in Dashboard under Profiles navigation item.
Invoice Creation
Use the Create Invoice endpoint to create an invoice.
When creating an invoice, you can specify the fiat currency and cryptocurrency and optionally the amount. Leave the amount blank if the intention is to allow address reuse. Additional fields like passthrough data can be used as needed.
Address Retrieval
The response in Create Invoice endpoint will include the address and other useful fields, such as the amount in cryptocurrency (if any amount specified). You can assign this address to your user on your platform or generate a new address for each deposit to keep privacy at highest level.
Callbacks Handling
Whenever there is a transaction, CryptoChill will send a callback to the URL defined in the configuration profile used to create the invoice.
There are two types of callbacks:
- Transaction Callbacks - Sent for every transaction to the address. Providing most flexibility and control. Allows unlimited address reuse.
- Invoice Callbacks - Intended for tracking the completion of the specified amount. Once invoice is fully paid, there will be no more callbacks about the invoice/address.
User Deposits
To display pending transactions (ones found in the chain mempool, but are not yet confirmed) listen to the transaction_pending callbacks. When you receive transaction_confirmed or transaction_complete callbacks, you will get a fiat equivalent quote of the crypto amount the user has sent. This is the amount you can credit to the user on your platform.
You can control amount of confirmations required for transaction_confirmed callback in configuration profile.
Important
- On certain chains or in certain scenarios, the first two callbacks may be skipped, and you might only receive transaction_complete callback.
- Ensure your callback listener supports repeated callbacks and you don't credit multiple times for same event.
- Do not rely on exact callback order. In rare scenarios due to network anomalies or retry policies callbacks can reach destination in mixed order.
- Properly verify that callback really was sent from Uniwire.
Testing Callbacks
The best way to test callbacks is to send a test transaction with the Callback URL defined in the configuration profile. This allows you to view the full callback format in the dashboard and resend callbacks as many times as needed during development.
For more details on callbacks and their format, visit the API Reference.
Payouts Note
Important
Never assume that a payout might have been processed successfully if the response error is nonspecific or if the request fails due to network issues like a Gateway Timeout. In such cases, it is risky to assume that the entire payout failed. Only return the deducted funds to the user when the error message explicitly indicates a failure.
Pre-Launch Checklist
Before going live, ensure you have completed the following checklist:
Deposits
- For reusable addresses, generate an invoice/address only when the user clearly indicates the deposit blockchain. Do not create addresses for all blockchains upon user signup.
- Reuse the same address for deposits of tokens on the same blockchain.
- Do not use
TXIDas a unique identifier for deposits, as multiple deposits can share the sameTXID.
Callbacks
- Verify that callbacks are genuinely sent from Uniwire.
- Ensure your implementation handles duplicate callbacks to prevent users from being credited multiple times for the same event. Read more
- Confirm your implementation supports callbacks received in any order. Read more
- Account for callbacks sent for the same address but on different blockchains due to automatic recovery of mis-sent transactions.
Payouts
- Implement proper refund logic for failed payouts. Do not release funds back to the user if the payout failure reason is unclear (e.g., network issues like a Gateway Timeout).
- Use unique field
reference_idto protect from accidental double payouts.
Security
- Protect API keys with whitelisted IPs and set a maximum amount per API key for safety.
Legacy Documentation
Access the deprecated API documentation here. It is no longer updated. Use the latest documentation for current information.