Sandbox & Testing

Coinify provides a full sandbox environment where you can build and test your entire integration before going live. The sandbox mirrors production — same API, same flows, same Trade Widget — but no real money moves and no real identity verification has to be performed.

📘

Always complete your full integration in sandbox before switching to production.

Skipping KYC in sandbox

Real KYC identity verification is not available in sandbox. Instead, you can approve an identification attempt instantly using one of the methods below.

📘

This is only available for individual account types. There is no equivalent skip for corporate KYC (KYB). In case of corporate account testing in sandbox, reach out to your Coinify integration contact and ask to approve the sandbox account once you get to the step of receiving "Upload Documentation for KYB".

Via the Trade Widget

  1. Open the Trade Widget and sign up as a new individual user
  2. Once on the Buy/Sell screen, open the burger menu and select My Account
  3. Click Verify Your Identity
  4. Click the Fake Identification button in the pop-up

Via the API

After signing up and authenticating a test trader, send the following request:

POST https://app-api.sandbox.coinify.com/kyc/identification-attempts
Authorization: Bearer <access_token>
{
  "returnUrl": null,
  "state": "approved"
}

A 200 response confirms the identification attempt is now approved.


Testing a Card Buy trade end-to-end

To test a full Credit Card Buy flow in the sandbox, use USDC on the Ethereum blockchain as the receiving cryptocurrency. You'll need to set up a custom USDC token in your wallet on Ethereum's Sepolia testnet — see Coinify's guide on setting this up.

Test credit cards

Use the following cards on the Sandbox Credit Card Payment Page to simulate different card payment outcomes:

Card numberName on cardResult
4000000000001000Any namePayment successful
5200000000002151Any nameChallenge
4000007818415900Any nameDo not honor
4000005357086322Any nameInsufficient funds
4000004452879855Any nameStolen card
4001888587298851Any nameExpired card

For expiry date and CVV, any valid-format values are accepted in sandbox.

Fallback Credit Cards for testing if the above do not work:

Card numberName on cardResult
4761344136141390FL-BRW1Payment successful (fallback if above doesn't work)
4761344136141390CL-BRW1Challenge flow (3DS)
4000164166749263FL-BRW1Do not honour
5001638548736201FL-BRW1Declined
4000128449498204ERR-BRW1Error

Testing a Sell trade end-to-end

For a Sell trade, you'll need a bank account registered under the test trader's account. In sandbox you can use fake bank account details, as long as they follow real-world formatting rules for the country:

  • The currency must be one supported by Coinify - check via the Payment Methods endpoint or directly on the Trade Widget UI, depending on your integration type.
  • The SWIFT/BIC code must contain a valid 2-letter country code at positions 5–6 (e.g. XXXXDKXX) and be 8 or 11 characters long.
  • The IBAN must start with a valid 2-letter country code that matches the BIC's country, be from a Coinify-supported country, and have the correct length for that country.
👍

Tip: You can look up valid IBAN structures for any country at wise.com/gb/iban — scroll to the IBAN examples by country section.


Manually completing any trade

To test your webhook handling and trade completion flow for any type of trade (e.g. bank buy, card buy, crypto sell, etc.) without waiting for a real payment, you can force any trade in awaiting_transfer_in state to complete:

POST https://app-api.sandbox.coinify.com/trades/<trade_id>/test/complete-trade
Authorization: Bearer <access_token>
//Optional body payload
{
  "amount": 200.00,
  "currency": "EUR",
  "details": {
    "account": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
  }
}

A 204 No Content response means the trade was completed successfully. The amount, currency, and details parameters are optional — if provided, they are validated against the trade.

📘

If the trade is not in awaiting_transfer_in state, or the amount doesn't match, the endpoint returns a 500 error.


Next steps

  • Integration Options → — choose your integration path and start building
  • KYC / Identity Verification → — understand the full KYC flow for production