[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"i-wl:chevron-down":3,"i-wl:logo-mark":8,"i-wl:logo-wordmark":12,"i-wl:social-x":16,"i-wl:social-telegram":20,"i-wl:social-vk":23,"i-wl:social-youtube":27,"i-wl:social-instagram":29,"i-wl:social-facebook":31,"blog-post:en:integrate-private-swaps-crypto-exchange":33},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,12,false,"\u003Cg fill=\"none\">\u003Cg id=\"chevron-down__svg\">\n\u003Cpath id=\"chevron-down__vector\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.5 4C3.36739 4 3.24021 4.05268 3.14645 4.14645C3.05268 4.24021 3 4.36739 3 4.5V5.086C3.00006 5.35119 3.10545 5.60551 3.293 5.793L5.293 7.793C5.48053 7.98047 5.73484 8.08579 6 8.08579C6.26516 8.08579 6.51947 7.98047 6.707 7.793L8.707 5.793C8.89455 5.60551 8.99994 5.35119 9 5.086V4.5C9 4.36739 8.94732 4.24021 8.85355 4.14645C8.75979 4.05268 8.63261 4 8.5 4H3.5Z\" fill=\"#8C8C8C\" fill-opacity=\"0.6\"\u002F>\n\u003C\u002Fg>\u003C\u002Fg>",{"left":4,"top":4,"width":9,"height":10,"rotate":4,"vFlip":6,"hFlip":6,"body":11},51.2295,29.7078,"\u003Cdefs>\u003ClinearGradient id=\"logo-mark__paint0_linear_0_4\" x1=\"25.6147\" y1=\"-0.000220441\" x2=\"25.6147\" y2=\"29.7075\" gradientUnits=\"userSpaceOnUse\">\n\u003Cstop stop-color=\"#EFEFEF\"\u002F>\n\u003Cstop offset=\"1\" stop-color=\"#C9CBCF\" stop-opacity=\"0.8\"\u002F>\n\u003C\u002FlinearGradient>\u003C\u002Fdefs>\u003Cg fill=\"none\">\u003Cpath id=\"logo-mark__union\" d=\"M46.5977 0.725365C48.3766 -0.891647 51.2295 0.371158 51.2295 2.77517V13.1726C51.2295 13.9529 50.9006 14.6976 50.3232 15.2224L35.1855 28.9822C33.4067 30.5992 30.5538 29.3373 30.5537 26.9334V16.5349C30.5538 15.7547 30.8827 15.0109 31.46 14.4861L46.5977 0.725365ZM26.2432 1.79275C28.0122 0.136507 30.9043 1.3908 30.9043 3.81423V14.1092C30.9043 14.8752 30.5875 15.6071 30.0283 16.1306L16.4697 28.8269C14.7007 30.4834 11.8076 29.229 11.8076 26.8054V16.5105C11.8076 15.7446 12.1246 15.0126 12.6836 14.489L26.2432 1.79275ZM7.32812 2.51052C9.06628 0.745002 12.0703 1.97537 12.0703 4.4529V14.4412C12.0703 15.1681 11.7843 15.8655 11.2744 16.3836L4.74219 23.0193C3.00399 24.7845 0 23.5534 0 21.076V11.0877C8.6565e-05 10.3608 0.285972 9.66324 0.795898 9.14529L7.32812 2.51052Z\" fill=\"url(#logo-mark__paint0_linear_0_4)\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":13,"height":14,"rotate":4,"vFlip":6,"hFlip":6,"body":15},76.1947,30.2954,"\u003Cg fill=\"none\">\u003Cg id=\"logo-wordmark__white-label-exchange\">\n\u003Cpath id=\"logo-wordmark__vector\" d=\"M53.8067 28.2185C53.1144 28.2185 52.5144 28.0615 52.0067 27.7477C51.5082 27.4338 51.1205 26.9908 50.8436 26.4185C50.5759 25.8369 50.4421 25.1585 50.4421 24.3831C50.4421 23.6077 50.5759 22.9338 50.8436 22.3615C51.1205 21.7892 51.5036 21.3462 51.9928 21.0323C52.4913 20.7092 53.0775 20.5477 53.7513 20.5477C54.3882 20.5477 54.9513 20.7 55.4405 21.0046C55.9298 21.3 56.3082 21.7338 56.5759 22.3062C56.8528 22.8785 56.9913 23.5754 56.9913 24.3969V24.7431H51.6605C51.7067 25.5277 51.9144 26.1185 52.2836 26.5154C52.6621 26.9123 53.1698 27.1108 53.8067 27.1108C54.2867 27.1108 54.679 27 54.9836 26.7785C55.2975 26.5477 55.5144 26.2477 55.6344 25.8785L56.8805 25.9754C56.6867 26.6308 56.3175 27.1708 55.7728 27.5954C55.2375 28.0108 54.5821 28.2185 53.8067 28.2185ZM51.6605 23.7185H55.7175C55.6621 23.0077 55.4544 22.4862 55.0944 22.1538C54.7436 21.8215 54.2959 21.6554 53.7513 21.6554C53.1882 21.6554 52.7221 21.8308 52.3528 22.1815C51.9928 22.5231 51.7621 23.0354 51.6605 23.7185Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_2\" d=\"M46.1915 30.2954C45.6654 30.2954 45.19 30.2077 44.7654 30.0323C44.3408 29.8569 43.9854 29.6077 43.6992 29.2846C43.4131 28.9615 43.2192 28.5877 43.1177 28.1631L44.3361 28.08C44.4469 28.4215 44.6408 28.6892 44.9177 28.8831C45.2038 29.0862 45.6285 29.1877 46.1915 29.1877C46.8561 29.1877 47.3638 29.0538 47.7146 28.7862C48.0746 28.5185 48.2546 28.1169 48.2546 27.5815V26.3908C48.0792 26.7785 47.7977 27.0877 47.41 27.3185C47.0223 27.5492 46.5885 27.6646 46.1085 27.6646C45.49 27.6646 44.9361 27.5123 44.4469 27.2077C43.9669 26.9031 43.5885 26.4831 43.3115 25.9477C43.0438 25.4123 42.91 24.7985 42.91 24.1062C42.91 23.4046 43.0438 22.7908 43.3115 22.2646C43.5792 21.7292 43.9485 21.3092 44.4192 21.0046C44.8992 20.7 45.4438 20.5477 46.0531 20.5477C46.57 20.5477 47.0315 20.6677 47.4377 20.9077C47.8531 21.1477 48.1438 21.4708 48.31 21.8769V20.7138H49.4177V27.5538C49.4177 28.1262 49.2885 28.6154 49.03 29.0215C48.7715 29.4369 48.4023 29.7508 47.9223 29.9631C47.4423 30.1846 46.8654 30.2954 46.1915 30.2954ZM46.1638 26.5569C46.7915 26.5569 47.2946 26.34 47.6731 25.9062C48.0515 25.4631 48.2454 24.8631 48.2546 24.1062C48.2638 23.5985 48.1808 23.1646 48.0054 22.8046C47.8392 22.4354 47.5946 22.1538 47.2715 21.96C46.9577 21.7569 46.5885 21.6554 46.1638 21.6554C45.5177 21.6554 45.0146 21.8769 44.6546 22.32C44.3038 22.7538 44.1285 23.3492 44.1285 24.1062C44.1285 24.8631 44.3084 25.4631 44.6684 25.9062C45.0377 26.34 45.5361 26.5569 46.1638 26.5569Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_3\" d=\"M36.0792 28.0523V20.7138H37.1453L37.1869 22.5831L37.0484 22.4585C37.1407 22.0246 37.3023 21.6692 37.533 21.3923C37.7638 21.1062 38.0407 20.8938 38.3638 20.7554C38.6961 20.6169 39.0515 20.5477 39.43 20.5477C39.993 20.5477 40.4546 20.6723 40.8146 20.9215C41.1838 21.1708 41.4561 21.5077 41.6315 21.9323C41.8161 22.3477 41.9084 22.8138 41.9084 23.3308V28.0523H40.7453V23.6631C40.7453 23.2108 40.69 22.8323 40.5792 22.5277C40.4776 22.2138 40.3115 21.9785 40.0807 21.8215C39.85 21.6554 39.55 21.5723 39.1807 21.5723C38.6176 21.5723 38.1515 21.7523 37.7823 22.1123C37.4223 22.4631 37.2423 22.98 37.2423 23.6631V28.0523H36.0792Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_4\" d=\"M31.0409 28.2185C30.284 28.2185 29.6794 28.0431 29.2271 27.6923C28.784 27.3415 28.5624 26.8523 28.5624 26.2246C28.5624 25.5969 28.7471 25.1031 29.1163 24.7431C29.4855 24.3831 30.0717 24.1292 30.8748 23.9815L33.4778 23.4969C33.4778 22.8785 33.3301 22.4169 33.0348 22.1123C32.7486 21.8077 32.3148 21.6554 31.7332 21.6554C31.2255 21.6554 30.824 21.7708 30.5286 22.0015C30.2332 22.2231 30.0301 22.5462 29.9194 22.9708L28.6871 22.8738C28.8255 22.1815 29.1578 21.6231 29.684 21.1985C30.2194 20.7646 30.9024 20.5477 31.7332 20.5477C32.6748 20.5477 33.3948 20.8154 33.8932 21.3508C34.3917 21.8769 34.6409 22.6062 34.6409 23.5385V26.5708C34.6409 26.7369 34.6686 26.8569 34.724 26.9308C34.7886 26.9954 34.8901 27.0277 35.0286 27.0277H35.3194V28.0523C35.2824 28.0615 35.2224 28.0662 35.1394 28.0662C35.0563 28.0754 34.9686 28.08 34.8763 28.08C34.544 28.08 34.2717 28.0292 34.0594 27.9277C33.8563 27.8169 33.7086 27.6508 33.6163 27.4292C33.524 27.1985 33.4778 26.8985 33.4778 26.5292L33.6163 26.5569C33.5517 26.8708 33.3948 27.1569 33.1455 27.4154C32.8963 27.6646 32.5871 27.8631 32.2178 28.0108C31.8486 28.1492 31.4563 28.2185 31.0409 28.2185ZM31.1517 27.1938C31.6409 27.1938 32.0563 27.1015 32.3978 26.9169C32.7486 26.7231 33.0163 26.4646 33.2009 26.1415C33.3855 25.8092 33.4778 25.44 33.4778 25.0338V24.5077L31.0963 24.9508C30.5978 25.0431 30.2517 25.1862 30.0578 25.38C29.8732 25.5646 29.7809 25.8092 29.7809 26.1138C29.7809 26.4554 29.9009 26.7231 30.1409 26.9169C30.3901 27.1015 30.7271 27.1938 31.1517 27.1938Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_5\" d=\"M21.7046 28.0523V18.2215H22.8677V22.3338L22.7292 22.3062C22.8215 21.9 22.9785 21.5677 23.2 21.3092C23.4215 21.0508 23.6938 20.8615 24.0169 20.7415C24.34 20.6123 24.6954 20.5477 25.0831 20.5477C25.6092 20.5477 26.0523 20.6677 26.4123 20.9077C26.7815 21.1385 27.0585 21.4662 27.2431 21.8908C27.4369 22.3062 27.5338 22.7862 27.5338 23.3308V28.0523H26.3708V23.6631C26.3708 22.9523 26.2415 22.4262 25.9831 22.0846C25.7338 21.7431 25.3508 21.5723 24.8338 21.5723C24.2431 21.5723 23.7677 21.7523 23.4077 22.1123C23.0477 22.4723 22.8677 22.9938 22.8677 23.6769V28.0523H21.7046Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_6\" d=\"M17.7012 28.2185C17.0181 28.2185 16.4228 28.0615 15.9151 27.7477C15.4166 27.4338 15.0289 26.9908 14.752 26.4185C14.4751 25.8369 14.3366 25.1585 14.3366 24.3831C14.3366 23.6077 14.4751 22.9338 14.752 22.3615C15.0289 21.7892 15.4166 21.3462 15.9151 21.0323C16.4228 20.7092 17.0181 20.5477 17.7012 20.5477C18.2643 20.5477 18.7628 20.6492 19.1966 20.8523C19.6397 21.0462 19.9997 21.3323 20.2766 21.7108C20.5535 22.0892 20.7335 22.5508 20.8166 23.0954L19.5981 23.1785C19.5151 22.6892 19.3028 22.3154 18.9612 22.0569C18.6197 21.7892 18.1997 21.6554 17.7012 21.6554C17.0274 21.6554 16.5012 21.9 16.1228 22.3892C15.7443 22.8692 15.5551 23.5338 15.5551 24.3831C15.5551 25.2323 15.7443 25.9015 16.1228 26.3908C16.5012 26.8708 17.0274 27.1108 17.7012 27.1108C18.1997 27.1108 18.6197 26.9723 18.9612 26.6954C19.3028 26.4185 19.5151 26.0031 19.5981 25.4492L20.8166 25.5323C20.7335 26.0769 20.5535 26.5523 20.2766 26.9585C19.9997 27.3554 19.6397 27.6646 19.1966 27.8862C18.7628 28.1077 18.2643 28.2185 17.7012 28.2185Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_7\" d=\"M7.52214 28.0523L10.2221 24.2862L7.6606 20.7138H9.01752L10.9421 23.4831L12.8114 20.7138H14.196L11.6621 24.3138L14.3206 28.0523H12.9637L10.9421 25.0892L8.90676 28.0523H7.52214Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_8\" d=\"M0.775383 28.0523V18.2215H6.95077V19.3846H1.96615V22.5554H6.78461V23.6908H1.96615V26.8892H7.06154V28.0523H0.775383Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_9\" d=\"M74.824 10.0523C74.1594 10.0523 73.6424 9.88615 73.2732 9.55385C72.904 9.22154 72.7194 8.68154 72.7194 7.93385V0.221538H75.1009V7.67077C75.1009 7.91077 75.1563 8.08154 75.2671 8.18308C75.3778 8.28462 75.5347 8.33539 75.7378 8.33539H76.1947V10.0523H74.824Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_10\" d=\"M68.2577 10.2185C67.4823 10.2185 66.8038 10.0569 66.2223 9.73385C65.6407 9.41077 65.1884 8.95846 64.8653 8.37692C64.5423 7.79539 64.3807 7.11231 64.3807 6.32769C64.3807 5.54308 64.5423 4.86462 64.8653 4.29231C65.1884 3.71077 65.6361 3.25846 66.2084 2.93538C66.79 2.60308 67.4684 2.43692 68.2438 2.43692C69.0192 2.43692 69.6884 2.60308 70.2515 2.93538C70.8238 3.25846 71.2623 3.72462 71.5669 4.33385C71.8715 4.94308 72.0238 5.66769 72.0238 6.50769V6.95077H66.8453C66.873 7.46769 67.0161 7.85539 67.2746 8.11385C67.5423 8.36308 67.8838 8.48769 68.2992 8.48769C68.613 8.48769 68.8761 8.42769 69.0884 8.30769C69.3007 8.17846 69.453 7.97077 69.5453 7.68462L71.9269 7.82308C71.7238 8.59846 71.2946 9.19385 70.6392 9.60923C69.9838 10.0154 69.19 10.2185 68.2577 10.2185ZM66.8453 5.59385H69.6146C69.5961 5.10462 69.4623 4.74 69.213 4.5C68.9638 4.25077 68.6407 4.12615 68.2438 4.12615C67.8653 4.12615 67.5469 4.25538 67.2884 4.51385C67.0392 4.77231 66.8915 5.13231 66.8453 5.59385Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_11\" d=\"M61.048 10.2185C60.5219 10.2185 60.0696 10.1123 59.6911 9.9C59.3219 9.67846 59.0311 9.36923 58.8188 8.97231L58.7772 10.0523H56.4788V0.221538H58.8603V3.66923C59.0634 3.30923 59.3496 3.01385 59.7188 2.78308C60.0972 2.55231 60.5403 2.43692 61.048 2.43692C61.6757 2.43692 62.2157 2.59846 62.668 2.92154C63.1296 3.24462 63.4849 3.69692 63.7342 4.27846C63.9926 4.86 64.1219 5.54308 64.1219 6.32769C64.1219 7.11231 63.9926 7.79539 63.7342 8.37692C63.4849 8.95846 63.1296 9.41077 62.668 9.73385C62.2157 10.0569 61.6757 10.2185 61.048 10.2185ZM60.3003 8.46C60.7065 8.46 61.0342 8.27539 61.2834 7.90615C61.5419 7.52769 61.6711 7.00154 61.6711 6.32769C61.6711 5.64462 61.5465 5.11846 61.2972 4.74923C61.0572 4.38 60.7296 4.19538 60.3142 4.19538C60.0096 4.19538 59.7465 4.27846 59.5249 4.44462C59.3034 4.61077 59.1372 4.85538 59.0265 5.17846C58.9157 5.49231 58.8603 5.87538 58.8603 6.32769C58.8603 6.77077 58.9157 7.15385 59.0265 7.47692C59.1372 7.79077 59.2988 8.03538 59.5111 8.21077C59.7326 8.37692 59.9957 8.46 60.3003 8.46Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_12\" d=\"M50.9879 10.2185C50.2125 10.2185 49.5756 10.0385 49.0772 9.67846C48.5787 9.31846 48.3295 8.82 48.3295 8.18308C48.3295 7.52769 48.5418 7.02 48.9664 6.66C49.391 6.3 50.0095 6.03692 50.8218 5.87077L53.1341 5.4C53.1341 4.96615 53.0372 4.63846 52.8433 4.41692C52.6587 4.18615 52.391 4.07077 52.0402 4.07077C51.6895 4.07077 51.4125 4.15846 51.2095 4.33385C51.0156 4.5 50.891 4.74 50.8356 5.05385L48.4541 4.97077C48.6018 4.11231 48.9848 3.47538 49.6033 3.06C50.2218 2.64462 51.0341 2.43692 52.0402 2.43692C53.2033 2.43692 54.071 2.7 54.6433 3.22615C55.2248 3.75231 55.5156 4.53692 55.5156 5.58V7.93385C55.5156 8.16462 55.5525 8.31692 55.6264 8.39077C55.7095 8.46462 55.8202 8.50154 55.9587 8.50154H56.1387V10.0523C56.0648 10.08 55.9448 10.1031 55.7787 10.1215C55.6125 10.14 55.451 10.1492 55.2941 10.1492C55.0079 10.1492 54.731 10.1031 54.4633 10.0108C54.1956 9.90923 53.9741 9.73385 53.7987 9.48462C53.6233 9.22615 53.5356 8.85692 53.5356 8.37692L53.7156 8.55692C53.6233 8.88923 53.4572 9.18462 53.2172 9.44308C52.9864 9.69231 52.6864 9.88615 52.3172 10.0246C51.9479 10.1538 51.5048 10.2185 50.9879 10.2185ZM51.611 8.66769C51.9064 8.66769 52.1695 8.60769 52.4002 8.48769C52.631 8.36769 52.811 8.19231 52.9402 7.96154C53.0695 7.73077 53.1341 7.44462 53.1341 7.10308V6.79846L51.6941 7.13077C51.4079 7.19539 51.1818 7.29692 51.0156 7.43538C50.8587 7.56462 50.7802 7.74 50.7802 7.96154C50.7802 8.18308 50.8495 8.35846 50.9879 8.48769C51.1264 8.60769 51.3341 8.66769 51.611 8.66769Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_13\" d=\"M41.16 10.0523V0.221538H43.5692V9.48461L42.2123 8.08615H47.9723V10.0523H41.16Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_14\" d=\"M34.0317 10.2185C33.2563 10.2185 32.5778 10.0569 31.9963 9.73385C31.4148 9.41077 30.9625 8.95846 30.6394 8.37692C30.3163 7.79539 30.1548 7.11231 30.1548 6.32769C30.1548 5.54308 30.3163 4.86462 30.6394 4.29231C30.9625 3.71077 31.4101 3.25846 31.9825 2.93538C32.564 2.60308 33.2425 2.43692 34.0178 2.43692C34.7932 2.43692 35.4625 2.60308 36.0255 2.93538C36.5978 3.25846 37.0363 3.72462 37.3409 4.33385C37.6455 4.94308 37.7978 5.66769 37.7978 6.50769V6.95077H32.6194C32.6471 7.46769 32.7901 7.85539 33.0486 8.11385C33.3163 8.36308 33.6578 8.48769 34.0732 8.48769C34.3871 8.48769 34.6501 8.42769 34.8625 8.30769C35.0748 8.17846 35.2271 7.97077 35.3194 7.68462L37.7009 7.82308C37.4978 8.59846 37.0686 9.19385 36.4132 9.60923C35.7578 10.0154 34.964 10.2185 34.0317 10.2185ZM32.6194 5.59385H35.3886C35.3701 5.10462 35.2363 4.74 34.9871 4.5C34.7378 4.25077 34.4148 4.12615 34.0178 4.12615C33.6394 4.12615 33.3209 4.25538 33.0625 4.51385C32.8132 4.77231 32.6655 5.13231 32.6194 5.59385Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_15\" d=\"M28.0748 10.0523C27.2717 10.0523 26.681 9.86769 26.3025 9.49846C25.9333 9.12 25.7487 8.52 25.7487 7.69846V0.858461H28.1302V7.39385C28.1302 7.75385 28.204 8.00308 28.3517 8.14154C28.5087 8.27077 28.744 8.33539 29.0579 8.33539H30.0825V10.0523H28.0748ZM24.5163 4.32V2.60308H30.0825V4.32H24.5163Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_16\" d=\"M21.6979 10.0523V2.60308H24.0794V10.0523H21.6979ZM21.6564 1.77231V0H24.121V1.77231H21.6564Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_17\" d=\"M13.7602 10.0523V0.221538H16.1417V4.36154L15.8232 4.38923C15.8878 3.94615 16.0263 3.58154 16.2386 3.29538C16.4602 3.00923 16.7325 2.79692 17.0555 2.65846C17.3878 2.51077 17.7478 2.43692 18.1355 2.43692C18.6986 2.43692 19.1648 2.55692 19.534 2.79692C19.9125 3.03692 20.194 3.36923 20.3786 3.79385C20.5725 4.21846 20.6694 4.70769 20.6694 5.26154V10.0523H18.2878V5.80154C18.2878 5.31231 18.214 4.93846 18.0663 4.68C17.9186 4.42154 17.6648 4.29231 17.3048 4.29231C16.9355 4.29231 16.6494 4.42615 16.4463 4.69385C16.2432 4.95231 16.1417 5.34462 16.1417 5.87077V10.0523H13.7602Z\" fill=\"#E5E5E7\"\u002F>\n\u003Cpath id=\"logo-wordmark__vector_18\" d=\"M2.68615 10.0523L0 0.221538H2.50615L4.08462 6.71538L5.69077 0.221538H7.68462L9.30462 6.71538L10.8692 0.221538H13.3615L10.7031 10.0523H8.18308L6.68769 4.20923L5.19231 10.0523H2.68615Z\" fill=\"#E5E5E7\"\u002F>\n\u003C\u002Fg>\u003C\u002Fg>",{"left":4,"top":4,"width":17,"height":18,"rotate":4,"vFlip":6,"hFlip":6,"body":19},17.425,15.875,"\u003Cdefs>\u003ClinearGradient id=\"social-x__paint0_linear_0_13\" x1=\"9.002\" y1=\"0.125\" x2=\"9.002\" y2=\"15.875\" gradientUnits=\"userSpaceOnUse\">\n\u003Cstop stop-color=\"#C9CBCF\"\u002F>\n\u003Cstop offset=\"1\" stop-color=\"#C9CBCF\" stop-opacity=\"0.8\"\u002F>\n\u003C\u002FlinearGradient>\u003C\u002Fdefs>\u003Cg fill=\"none\">\u003Cg id=\"social-x__group\">\n\u003Cpath id=\"social-x__vector\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.048 15.75H17.425L5.515 0H0L6.776 8.858L0.634 15.875H3.307L8.023 10.49L12.048 15.75ZM14.266 14.15H12.786L3.121 1.516H4.71L14.266 14.15ZM9.592 5.18L14.012 0.125H16.684L10.83 6.82L9.592 5.18Z\" fill=\"url(#social-x__paint0_linear_0_13)\"\u002F>\n\u003C\u002Fg>\u003C\u002Fg>",{"left":4,"top":4,"width":21,"height":21,"rotate":4,"vFlip":6,"hFlip":6,"body":22},18,"\u003Cdefs>\u003ClinearGradient id=\"social-telegram__paint0_linear_0_11\" x1=\"9\" y1=\"0\" x2=\"9\" y2=\"18\" gradientUnits=\"userSpaceOnUse\">\n\u003Cstop stop-color=\"#C9CBCF\"\u002F>\n\u003Cstop offset=\"1\" stop-color=\"#C9CBCF\" stop-opacity=\"0.8\"\u002F>\n\u003C\u002FlinearGradient>\n\u003CclipPath id=\"social-telegram__clip0_0_11\">\n\u003Crect width=\"18\" height=\"18\" fill=\"white\"\u002F>\n\u003C\u002FclipPath>\u003C\u002Fdefs>\u003Cg fill=\"none\">\u003Cg id=\"social-telegram__item-226-134-146-link---dev-blog-226-134-146-svg\" opacity=\"0.8\" clip-path=\"url(#social-telegram__clip0_0_11)\">\n\u003Cpath id=\"social-telegram__vector\" d=\"M9 18C11.3869 18 13.6761 17.0518 15.364 15.364C17.0518 13.6761 18 11.3869 18 9C18 6.61305 17.0518 4.32387 15.364 2.63604C13.6761 0.948212 11.3869 0 9 0C6.61305 0 4.32387 0.948212 2.63604 2.63604C0.948212 4.32387 0 6.61305 0 9C0 11.3869 0.948212 13.6761 2.63604 15.364C4.32387 17.0518 6.61305 18 9 18ZM4.078 8.878L12.703 5.494C13.078 5.344 13.409 5.556 13.284 6.056L13.287 6.053L11.747 13.353C11.647 13.772 11.372 13.891 10.997 13.678L8.859 12.094L7.831 13.078C7.719 13.191 7.625 13.284 7.406 13.284L7.556 11.109L11.503 7.525C11.678 7.375 11.466 7.285 11.241 7.435L6.42 10.53L4.329 9.87C3.923 9.745 3.917 9.432 4.423 9.251L4.078 8.878Z\" fill=\"url(#social-telegram__paint0_linear_0_11)\"\u002F>\n\u003C\u002Fg>\u003C\u002Fg>",{"left":4,"top":4,"width":24,"height":25,"rotate":4,"vFlip":6,"hFlip":6,"body":26},20.0379,11.5,"\u003Cdefs>\u003ClinearGradient id=\"social-vk__paint0_linear_0_10\" x1=\"10.3519\" y1=\"0.0905512\" x2=\"10.3519\" y2=\"11.5\" gradientUnits=\"userSpaceOnUse\">\n\u003Cstop stop-color=\"#C9CBCF\"\u002F>\n\u003Cstop offset=\"1\" stop-color=\"#C9CBCF\" stop-opacity=\"0.8\"\u002F>\n\u003C\u002FlinearGradient>\u003C\u002Fdefs>\u003Cg fill=\"none\">\u003Cpath id=\"social-vk__vector\" d=\"M20 0.9C20.2 1.3 19.6 2.4 18.4 4C18.2 4.2 18 4.5 17.7 4.9C17.2 5.6 16.8 6 16.8 6.3C16.7 6.6 16.7 6.9 16.9 7.1C17 7.2 17.3 7.5 17.7 8C18.7 8.9 19.3 9.7 19.7 10.3C19.7 10.3 19.7 10.4 19.8 10.4C19.8 10.5 19.8 10.5 19.9 10.7C19.9 10.8 19.9 10.9 19.9 11.1C19.9 11.2 19.8 11.3 19.6 11.4C19.5 11.5 19.2 11.5 19 11.5H16.3C16.1 11.5 15.9 11.5 15.7 11.4C15.5 11.3 15.3 11.3 15.2 11.2L15 11.1C14.8 11 14.5 10.7 14.3 10.4C14.1 10.1 13.8 9.8 13.6 9.6C13.4 9.4 13.2 9.2 13 9C12.8 8.8 12.6 8.8 12.4 8.8C12.4 8.8 12.4 8.8 12.3 8.8C12.3 8.8 12.2 8.9 12.1 9C12 9.1 11.9 9.2 11.9 9.3C11.8 9.4 11.8 9.6 11.7 9.8C11.6 10 11.6 10.3 11.6 10.6C11.6 10.7 11.6 10.8 11.6 10.9C11.6 11 11.5 11.1 11.5 11.1V11.2C11.4 11.3 11.2 11.4 10.9 11.4H9.7C9.2 11.4 8.7 11.4 8.2 11.2C7.7 11.1 7.2 10.9 6.8 10.6C6.4 10.3 6.1 10.1 5.7 9.9C5.3 9.7 5.1 9.5 5 9.3L4.7 9C4.6 8.9 4.5 8.8 4.4 8.7C4.3 8.6 4 8.2 3.7 7.8C3.4 7.4 3 6.8 2.6 6.2C2.2 5.6 1.8 4.9 1.3 4C0.9 3.2 0.5 2.3 0.0999999 1.3C-9.68575e-08 1.2 0 1.1 0 1C0 0.9 0 0.9 0 0.8V0.7C0.1 0.6 0.3 0.5 0.6 0.5H3.5C3.6 0.5 3.7 0.5 3.7 0.6C3.7 0.7 3.9 0.7 3.9 0.8H4C4.1 0.9 4.2 1 4.3 1.1C4.4 1.5 4.5 1.8 4.7 2.2C4.9 2.6 5 2.8 5.1 3L5.3 3.3C5.5 3.7 5.7 4.1 5.9 4.4C6.1 4.7 6.3 4.9 6.4 5.1C6.5 5.3 6.7 5.4 6.8 5.5C6.9 5.6 7.1 5.6 7.2 5.6C7.3 5.6 7.4 5.6 7.5 5.5C7.5 5.5 7.5 5.5 7.6 5.4C7.6 5.4 7.7 5.3 7.7 5.2C7.8 5.1 7.8 4.9 7.8 4.7C7.8 4.5 7.9 4.2 7.9 3.9C7.9 3.5 7.9 3.1 7.9 2.6C7.9 2.3 7.9 2.1 7.8 1.8C7.8 1.6 7.7 1.4 7.7 1.3L7.6 1.4C7.4 1.1 7.1 1 6.7 0.9C6.6 0.9 6.6 0.8 6.7 0.7C6.9 0.5 7 0.4 7.1 0.3C7.5 0.1 8.3 0 9.6 0C10.2 0 10.6 0.1 11 0.1C11.1 0.1 11.3 0.2 11.3 0.2C11.4 0.3 11.5 0.3 11.5 0.5C11.5 0.6 11.6 0.7 11.6 0.8C11.6 0.9 11.6 1.1 11.6 1.3C11.6 1.5 11.6 1.7 11.6 1.9C11.6 2.1 11.6 2.3 11.6 2.6C11.6 2.9 11.6 3.2 11.6 3.5C11.6 3.6 11.6 3.7 11.6 3.9C11.6 4.1 11.6 4.3 11.6 4.4C11.6 4.5 11.6 4.7 11.6 4.8C11.6 4.9 11.7 5.1 11.7 5.2C11.8 5.3 11.8 5.4 11.9 5.5C12 5.5 12 5.5 12.1 5.5C12.2 5.5 12.3 5.5 12.4 5.4C12.5 5.3 12.6 5.2 12.8 5C13 4.8 13.1 4.6 13.3 4.3C13.5 4 13.8 3.6 14 3.2C14.4 2.5 14.8 1.7 15.1 0.9C15.1 0.8 15.2 0.8 15.2 0.7C15.2 0.6 15.3 0.6 15.3 0.6H15.4C15.4 0.6 15.4 0.6 15.5 0.6C15.6 0.6 15.7 0.6 15.7 0.6H18.7C19 0.6 19.2 0.6 19.4 0.6C19.6 0.6 19.9 0.8 19.9 0.8L20 0.9Z\" fill=\"url(#social-vk__paint0_linear_0_10)\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":21,"height":21,"rotate":4,"vFlip":6,"hFlip":6,"body":28},"\u003Cdefs>\u003ClinearGradient id=\"social-youtube__paint0_linear_0_8\" x1=\"9\" y1=\"2.25\" x2=\"9\" y2=\"15.75\" gradientUnits=\"userSpaceOnUse\">\n\u003Cstop stop-color=\"#C9CBCF\"\u002F>\n\u003Cstop offset=\"1\" stop-color=\"#C9CBCF\" stop-opacity=\"0.8\"\u002F>\n\u003C\u002FlinearGradient>\u003C\u002Fdefs>\u003Cg fill=\"none\">\u003Cg id=\"social-youtube__item-226-134-146-link---youtube-226-134-146-svg\" opacity=\"0.8\">\n\u003Cpath id=\"social-youtube__vector\" d=\"M17.775 5.4C17.55 3.937 16.875 2.925 15.3 2.7C12.825 2.25 9 2.25 9 2.25C9 2.25 5.175 2.25 2.7 2.7C1.125 2.925 0.337 3.937 0.225 5.4C0 6.862 0 9 0 9C0 9 0 11.137 0.225 12.6C0.45 14.063 1.125 15.075 2.7 15.3C5.175 15.75 9 15.75 9 15.75C9 15.75 12.825 15.75 15.3 15.3C16.875 14.962 17.55 14.062 17.775 12.6C18 11.138 18 9 18 9C18 9 18 6.863 17.775 5.4ZM6.75 12.375V5.625L12.375 9L6.75 12.375Z\" fill=\"url(#social-youtube__paint0_linear_0_8)\"\u002F>\n\u003C\u002Fg>\u003C\u002Fg>",{"left":4,"top":4,"width":21,"height":21,"rotate":4,"vFlip":6,"hFlip":6,"body":30},"\u003Cdefs>\u003ClinearGradient id=\"social-instagram__paint0_linear_0_6\" x1=\"9\" y1=\"0\" x2=\"9\" y2=\"18\" gradientUnits=\"userSpaceOnUse\">\n\u003Cstop stop-color=\"#C9CBCF\"\u002F>\n\u003Cstop offset=\"1\" stop-color=\"#C9CBCF\" stop-opacity=\"0.8\"\u002F>\n\u003C\u002FlinearGradient>\n\u003CclipPath id=\"social-instagram__clip0_0_6\">\n\u003Crect width=\"18\" height=\"18\" fill=\"white\"\u002F>\n\u003C\u002FclipPath>\u003C\u002Fdefs>\u003Cg fill=\"none\">\u003Cg id=\"social-instagram__item-226-134-146-linkedin-226-134-146-svg\" opacity=\"0.8\" clip-path=\"url(#social-instagram__clip0_0_6)\">\n\u003Cpath id=\"social-instagram__vector\" d=\"M9 1.622C11.403 1.622 11.688 1.631 12.637 1.674C13.514 1.714 13.991 1.861 14.308 1.984C14.728 2.147 15.028 2.342 15.343 2.657C15.658 2.972 15.853 3.272 16.016 3.692C16.139 4.009 16.286 4.486 16.326 5.363C16.369 6.312 16.378 6.597 16.378 9C16.378 11.403 16.369 11.688 16.326 12.637C16.286 13.514 16.139 13.991 16.016 14.308C15.853 14.728 15.658 15.028 15.343 15.343C15.028 15.658 14.728 15.853 14.308 16.016C13.991 16.139 13.514 16.286 12.637 16.326C11.688 16.369 11.404 16.378 9 16.378C6.596 16.378 6.312 16.369 5.363 16.326C4.486 16.286 4.009 16.139 3.692 16.016C3.272 15.853 2.972 15.658 2.657 15.343C2.342 15.028 2.147 14.728 1.984 14.308C1.861 13.991 1.714 13.514 1.674 12.637C1.631 11.688 1.622 11.403 1.622 9C1.622 6.597 1.631 6.312 1.674 5.363C1.714 4.486 1.861 4.009 1.984 3.692C2.147 3.272 2.342 2.972 2.657 2.657C2.972 2.342 3.272 2.147 3.692 1.984C4.009 1.861 4.486 1.714 5.363 1.674C6.312 1.631 6.597 1.622 9 1.622ZM9 0C6.556 0 6.249 0.0099999 5.289 0.0539999C4.331 0.0979999 3.677 0.25 3.105 0.472C2.513 0.702 2.011 1.01 1.511 1.511C1.011 2.011 0.703 2.513 0.473 3.105C0.25 3.677 0.0979999 4.331 0.0539999 5.289C0.0099999 6.249 0 6.556 0 9C0 11.444 0.0099999 11.751 0.0539999 12.711C0.0979999 13.669 0.25 14.323 0.472 14.896C0.702 15.488 1.01 15.99 1.51 16.49C2.01 16.99 2.512 17.298 3.104 17.528C3.676 17.75 4.331 17.903 5.289 17.946C6.249 17.99 6.556 18 9 18C11.444 18 11.751 17.99 12.711 17.946C13.669 17.902 14.323 17.75 14.896 17.528C15.488 17.298 15.99 16.99 16.49 16.49C16.99 15.99 17.298 15.488 17.528 14.896C17.75 14.324 17.903 13.669 17.946 12.711C17.99 11.751 18 11.444 18 9C18 6.556 17.99 6.249 17.946 5.289C17.902 4.331 17.75 3.677 17.528 3.104C17.298 2.512 16.99 2.01 16.49 1.51C15.99 1.01 15.488 0.702 14.896 0.472C14.324 0.25 13.669 0.0969999 12.711 0.0539999C11.751 0.0099999 11.444 0 9 0ZM9 4.378C6.448 4.378 4.378 6.447 4.378 9C4.378 11.553 6.448 13.622 9 13.622C11.552 13.622 13.622 11.553 13.622 9C13.622 6.447 11.552 4.378 9 4.378ZM9 12C7.343 12 6 10.657 6 9C6 7.343 7.343 6 9 6C10.657 6 12 7.343 12 9C12 10.657 10.657 12 9 12ZM13.804 3.116C13.208 3.116 12.724 3.6 12.724 4.196C12.724 4.792 13.208 5.276 13.804 5.276C14.4 5.276 14.884 4.792 14.884 4.196C14.884 3.6 14.401 3.116 13.804 3.116Z\" fill=\"url(#social-instagram__paint0_linear_0_6)\"\u002F>\n\u003C\u002Fg>\u003C\u002Fg>",{"left":4,"top":4,"width":21,"height":21,"rotate":4,"vFlip":6,"hFlip":6,"body":32},"\u003Cdefs>\u003ClinearGradient id=\"social-facebook__paint0_linear_0_4\" x1=\"8.96191\" y1=\"0\" x2=\"8.96191\" y2=\"18\" gradientUnits=\"userSpaceOnUse\">\n\u003Cstop stop-color=\"#C9CBCF\"\u002F>\n\u003Cstop offset=\"1\" stop-color=\"#C9CBCF\" stop-opacity=\"0.8\"\u002F>\n\u003C\u002FlinearGradient>\n\u003CclipPath id=\"social-facebook__clip0_0_4\">\n\u003Crect width=\"18\" height=\"18\" fill=\"white\"\u002F>\n\u003C\u002FclipPath>\u003C\u002Fdefs>\u003Cg fill=\"none\">\u003Cg id=\"social-facebook__item-226-134-146-link---github-226-134-146-svg\" opacity=\"0.8\" clip-path=\"url(#social-facebook__clip0_0_4)\">\n\u003Cpath id=\"social-facebook__vector\" d=\"M8.96191 0C4.01191 0 -0.0380859 4.07035 -0.0380859 9.04523C-0.0380859 13.5678 3.29191 17.2764 7.52191 18V11.6683H5.27191V9.04523H7.52191V7.05528C7.52191 4.79397 8.87191 3.52764 10.9419 3.52764C11.9319 3.52764 12.9219 3.70854 12.9219 3.70854V5.96985H11.7519C10.6719 5.96985 10.3119 6.69347 10.3119 7.41709V9.04523H12.8319L12.4719 11.6683H10.4019V18C14.6319 17.2764 17.9619 13.5678 17.9619 9.04523C17.9619 4.07035 13.9119 0 8.96191 0Z\" fill=\"url(#social-facebook__paint0_linear_0_4)\"\u002F>\n\u003C\u002Fg>\u003C\u002Fg>",{"type":34,"post":35},"post",{"__typename":36,"id":37,"title":38,"slug":39,"uri":40,"date":41,"status":42,"excerpt":43,"content":44,"postId":45,"postRating":46,"language":47,"translations":52,"tableOfContents":53,"contentWithAnchors":98,"tableOfContentsHtml":99,"categories":100,"tags":108,"featuredImage":110,"author":115,"postCollapse":122,"seo":123},"Post","cG9zdDo4MzQ=","How to Integrate Private Swaps into a Crypto Exchange (Operator Playbook)","integrate-private-swaps-crypto-exchange","\u002Funcategorized\u002Fintegrate-private-swaps-crypto-exchange\u002F","2026-07-17T05:35:27","publish","\u003Cp>How to integrate private swaps into a crypto exchange: choose routing, wire quote to status, keep KYC\u002FAML gates, and launch with ETA and support checklists.\u003C\u002Fp>\n","\u003Cp>Users ask for a Private Mode, support tickets pile up, and your public swap still feels &#8220;too visible&#8221; on-chain. The fix is not a privacy manifesto. It is a product decision plus a clean private crypto swap API integration: pick a routing model, wire quote to create to status without leaking hops, keep KYC and AML gates, then launch with honest ETAs and a support playbook. Use this operator checklist to integrate private swaps into a crypto exchange without breaking compliance or trust.\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>\u003Cb>TL;DR \u002F Quick take:\u003C\u002Fb> Treat Private Mode as a discretionary coin-to-coin path beside Public Mode (and OTC for large deals). Choose multi-hop CEX, XMR shield, or privacy-pool APIs by ETA, coverage, and who owns stuck orders. Integrate server-side only, hide route internals, keep KYC gates, and soft-launch behind a feature flag with hold\u002Frefund runbooks.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>A private swap routes funds through multi-hop or shielded steps so source and destination wallets are harder to link on public ledgers. It remains your feature under your rules &#8211; partners may still screen or hold. See also \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fhow-to-add-liquidity-new-crypto-exchange\u002F\" target=\"_blank\">how to add liquidity to a new crypto exchange\u003C\u002Fa> and the \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fcrypto-exchanger-aggregator-how-to-choose\u002F\" target=\"_blank\">crypto exchanger aggregator how-to\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"decide-product-fit\">1. Decide when private swaps belong in your product\u003C\u002Fh2>\n\u003Cfigure class=\"inline-quad\" data-slot=\"inline_1\">\n  \u003Cimg decoding=\"async\" src=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002Fintegrate-private-swaps-crypto-exchange-inline-01.png\" alt=\"Grayscale comparison UI: when private swaps fit vs when to skip\" loading=\"lazy\">\u003Cbr \u002F>\n\u003C\u002Ffigure>\n\u003Cp>Write one product sentence before you touch an API: Private Mode is for discretion between wallets, not for time-critical trading. Keep Public \u002F standard swaps (and OTC when needed) as the default for speed and certainty.\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Need\u003C\u002Fth>\n\u003Cth>Prefer\u003C\u002Fth>\n\u003Cth>Why\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cb>Discretion \u002F unlinkability\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>Private Mode\u003C\u002Ftd>\n\u003Ctd>Multi-hop or shielded intermediate\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Speed \u002F locked output\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>Public \u002F standard (fixed-rate if available)\u003C\u002Ftd>\n\u003Ctd>Often minutes; fixed rates usually sit on the public path\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Large or bespoke size\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>OTC desk\u003C\u002Ftd>\n\u003Ctd>Human negotiation plus compliance paperwork\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Vendor docs commonly cite private multi-hop completion around 15-45 minutes (quote duration often near 60). Public single-hop CEX paths are often cited around 3-30 minutes. Fixed-rate locking is frequently unavailable on private multi-hop routes &#8211; send users who need a guaranteed receive amount to the public fixed-rate path.\u003C\u002Fp>\n\u003Cp>\u003Cb>Do this:\u003C\u002Fb> ship Public Mode first, then add Private Mode as an explicit toggle with longer ETA copy. \u003Cb>Do not\u003C\u002Fb> market Private Mode as &#8220;instant&#8221; or as a replacement for OTC on large tickets.\u003C\u002Fp>\n\u003Ch2 id=\"choose-routing-model\">2. Choose routing model: multi-hop CEX, XMR shield, or privacy-pool API\u003C\u002Fh2>\n\u003Cfigure class=\"inline-quad\" data-slot=\"inline_2\">\n  \u003Cimg decoding=\"async\" src=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002Fintegrate-private-swaps-crypto-exchange-inline-02.png\" alt=\"Grayscale workflow: multi-hop CEX vs XMR shield vs privacy-pool API routing\" loading=\"lazy\">\u003Cbr \u002F>\n\u003C\u002Ffigure>\n\u003Cp>Disambiguate early. &#8220;Private swap&#8221; is not one technology. Score partners on ETA, coverage, partner AML behavior, custody, and who owns stuck-order support.\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Criterion\u003C\u002Fth>\n\u003Cth>Multi-hop CEX\u003C\u002Fth>\n\u003Cth>XMR shield\u003C\u002Fth>\n\u003Cth>Privacy-pool \u002F ZK\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cb>Unlinkability\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>High (2+ hops)\u003C\u002Ftd>\n\u003Ctd>Very high (privacy-coin hop)\u003C\u002Ftd>\n\u003Ctd>High (pool \u002F ZK)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Typical ETA\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>~15-45+ min (vendor-typical)\u003C\u002Ftd>\n\u003Ctd>Often longer\u003C\u002Ftd>\n\u003Ctd>ZK-proof latency\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Liquidity\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>CEX books\u003C\u002Ftd>\n\u003Ctd>Corridor-limited\u003C\u002Ftd>\n\u003Ctd>Pool-dependent\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Compliance\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>Partner CEX AML\u003C\u002Ftd>\n\u003Ctd>Partner + XMR policy\u003C\u002Ftd>\n\u003Ctd>Protocol + your gates\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Integration\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>Partner API\u003C\u002Ftd>\n\u003Ctd>Partner API + honest UX\u003C\u002Ftd>\n\u003Ctd>Deeper protocol \u002F UX\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cblockquote>\u003Cp>\u003Cb>Verdict:\u003C\u002Fb> Most teams start with a multi-hop CEX private API for clearer coverage and ops. Add an XMR-shield corridor only if you can staff refund playbooks. Treat ZK \u002F privacy-pool mode as a later, user-initiated option.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>\u003Cb>Do this:\u003C\u002Fb> pick one primary model and document hold SLAs. \u003Cb>Do not\u003C\u002Fb> expose hop names in the UI or crown one vendor as the only &#8220;private&#8221; stack.\u003C\u002Fp>\n\u003Ch2 id=\"integrate-quote-create-status\">3. Integrate quote → create → status without leaking route internals\u003C\u002Fh2>\n\u003Cfigure class=\"inline-quad\" data-slot=\"inline_3\">\n  \u003Cimg decoding=\"async\" src=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002Fintegrate-private-swaps-crypto-exchange-inline-03.png\" alt=\"Grayscale dashboard: quote create status flow with route internals hidden\" loading=\"lazy\">\u003Cbr \u002F>\n\u003C\u002Ffigure>\n\u003Cp>Treat the partner API as a black box that returns a price and later a payout. Your job is a branded status experience. Keep API keys on the server only. An API (application programming interface) is a machine-to-machine contract: quote, create, then status.\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cb>Cache token lists server-side\u003C\u002Fb>; do not hit the partner token endpoint on every page view.\u003C\u002Fli>\n\u003Cli>\u003Cb>Request a quote\u003C\u002Fb> with a private \u002F public mode flag; show receive amount, rate, fees, min\u002Fmax before Confirm.\u003C\u002Fli>\n\u003Cli>\u003Cb>Validate addresses and amounts\u003C\u002Fb>; send required user-context headers (IP, user-agent, timezone) from the backend.\u003C\u002Fli>\n\u003Cli>\u003Cb>Create the exchange\u003C\u002Fb> with quote id, destination, and an Idempotency-Key so retries do not double-book.\u003C\u002Fli>\n\u003Cli>\u003Cb>Show a unique deposit address\u003C\u002Fb> and exact amount with expiry (partner flows often use ~30 minutes).\u003C\u002Fli>\n\u003Cli>\u003Cb>Monitor status\u003C\u002Fb> with webhooks plus polling (~10s UI open, ~30s backgrounded) until finished, failed, refunded, or hold.\u003C\u002Fli>\n\u003Cli>\u003Cb>Map statuses to plain language\u003C\u002Fb> (waiting, processing, anonymizing, under review, completed). Some flows use an \u003Cb>ANONYMIZING\u003C\u002Fb> stage.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cblockquote>\u003Cp>\u003Cb>Workflow:\u003C\u002Fb>\u003Cbr \u002F>Decide Private Mode fit &rarr; pick routing model &rarr; map KYC\u002FAML gates &rarr; quote (private) &rarr; create (idempotent) &rarr; deposit &rarr; poll\u002Fwebhook status &rarr; launch checklist.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Do\u003C\u002Fth>\n\u003Cth>Do not\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Server-side keys; Idempotency-Key\u003C\u002Ftd>\n\u003Ctd>Call the partner API from the browser with secrets\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Live quote panel before Confirm\u003C\u002Ftd>\n\u003Ctd>Let users submit blindly\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Mode, ETA band, fees, support id\u003C\u002Ftd>\n\u003Ctd>Show hop path or provider names\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Stop polling on terminal statuses\u003C\u002Ftd>\n\u003Ctd>Poll every second forever\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Treat hold as compliance escalation\u003C\u002Ftd>\n\u003Ctd>Tell users how to &#8220;bypass&#8221; AML review\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>A white-label stack (ready-made exchange software you brand as your own) can shorten wallets, UI, and status wiring. After you lock the routing model, review \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002F\" target=\"_blank\">White Label Exchange solutions\u003C\u002Fa>. \u003Cb>Do this:\u003C\u002Fb> hide route ranking and hop details. \u003Cb>Do not\u003C\u002Fb> promise best fill just because a route is private.\u003C\u002Fp>\n\u003Ch2 id=\"compliance-gates\">4. Keep compliance, KYC gates, and risk controls\u003C\u002Fh2>\n\u003Cp>KYC (know your customer) is identity checks. AML (anti-money laundering) is screening for risky patterns. Private Mode must hit the same gatekeeper pipeline as public swaps. Embed hooks in the lifecycle; bolt-on compliance fails under load and audit.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cb>KYC \u002F KYB tier gates\u003C\u002Fb> before Private Mode unlock or above amount thresholds.\u003C\u002Fli>\n\u003Cli>\u003Cb>Sanctions and address screening\u003C\u002Fb> on deposit and withdraw addresses.\u003C\u002Fli>\n\u003Cli>\u003Cb>Amount and velocity limits\u003C\u002Fb> at quote and create time.\u003C\u002Fli>\n\u003Cli>\u003Cb>Geo and license rules\u003C\u002Fb> via feature flags per market.\u003C\u002Fli>\n\u003Cli>\u003Cb>Travel Rule triggers\u003C\u002Fb> where your jurisdiction requires counterparty data.\u003C\u002Fli>\n\u003Cli>\u003Cb>Audit trail\u003C\u002Fb> of quote id, user id, decisions, overrides, and partner status.\u003C\u002Fli>\n\u003Cli>\u003Cb>Partner due diligence\u003C\u002Fb> on who screens, refund policy, and hold SLA.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Soft blocks and \u003Cb>hold\u003C\u002Fb> statuses often mean AML or KYC review. Slow the poll, escalate to support, and never invent hop details. Partner CEXs can still hold mid-flow. See the \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fcrypto-exchange-compliance-checklist-founders\u002F\" target=\"_blank\">crypto exchange compliance checklist for founders\u003C\u002Fa>. \u003Cb>Do this:\u003C\u002Fb> write macros for &#8220;under review&#8221; and refunds before go-live. \u003Cb>Do not\u003C\u002Fb> sell Private Mode as &#8220;no KYC \u002F no AML&#8221; or as a way around sanctions screening.\u003C\u002Fp>\n\u003Ch2 id=\"launch-checklist\">5. Launch checklist: UX copy, SLAs, support, go-live tests\u003C\u002Fh2>\n\u003Cp>Ops quality decides whether Private Mode becomes retention or a ticket factory.\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cb>Feature flag + market allowlist\u003C\u002Fb> per jurisdiction.\u003C\u002Fli>\n\u003Cli>\u003Cb>Compliance-reviewed copy\u003C\u002Fb> for the Public vs Private toggle: what it does, longer time, possible partner review.\u003C\u002Fli>\n\u003Cli>\u003Cb>ETA and fee disclosure\u003C\u002Fb> on quote (band such as 15-45+ minutes, not &#8220;instant&#8221;).\u003C\u002Fli>\n\u003Cli>\u003Cb>Order detail page\u003C\u002Fb> with support id and plain-language status.\u003C\u002Fli>\n\u003Cli>\u003Cb>Runbooks\u003C\u002Fb> for deposit expiry, under\u002Foverpayment, partner outage, AML hold, and refunds.\u003C\u002Fli>\n\u003Cli>\u003Cb>Monitoring\u003C\u002Fb> on completion rate, p95 time-to-complete, and hold rate.\u003C\u002Fli>\n\u003Cli>\u003Cb>Mystery-shop\u003C\u002Fb> 3-5 top pairs in sandbox, then small live swaps.\u003C\u002Fli>\n\u003Cli>\u003Cb>Support macros\u003C\u002Fb> for &#8220;still anonymizing&#8221; and &#8220;under review,&#8221; plus a hold escalation drill.\u003C\u002Fli>\n\u003Cli>\u003Cb>Soft-launch\u003C\u002Fb> behind the flag; expand only after fail\u002Frefund drills pass.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cb>Do this:\u003C\u002Fb> treat go-live as a checklist gate. \u003Cb>Do not\u003C\u002Fb> open Private Mode globally on day one without allowlists and hold playbooks.\u003C\u002Fp>\n\u003Ch2 id=\"next-steps\">What to do next\u003C\u002Fh2>\n\u003Cp>Lock the product sentence (Private Mode for discretion, Public for speed, OTC for size). Score one routing model, map KYC\u002FAML gates before code, wire quote → create → status on the server, and run the launch checklist. More guides: \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002F\" target=\"_blank\">White Label Exchange blog\u003C\u002Fa>. To evaluate a branded stack with swap modes and compliance hooks, start from \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002F\" target=\"_blank\">Explore Solutions\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>\u003Cb>Reviewed by:\u003C\u002Fb> White Label Exchange Editorial (practitioners in white-label exchanges, exchangers, P2P, and aggregators).\u003Cbr \u002F>\u003Cb>Data integrity:\u003C\u002Fb> ETA bands, status patterns, and multi-hop AML caveats attributed to public partner docs checked on 2026-07-17 (Houdini Swap docs, GhostSwap partner brief, Baltex API guide, Gizmolab, Errna). Operational guidance only &#8211; not legal or investment advice.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch2>Frequently asked questions\u003C\u002Fh2>\n\u003Ch3>What is a private swap on a crypto exchange?\u003C\u002Fh3>\n\u003Cp>A mode that routes funds through multi-hop or shielded steps so source and destination are harder to link on public ledgers. Ship it under your KYC, AML, and sanctions controls.\u003C\u002Fp>\n\u003Ch3>Private vs public swap routing &#8211; what should operators offer?\u003C\u002Fh3>\n\u003Cp>Offer both. Public favors speed (often minutes) and may support fixed rates. Private multi-hop favors discretion (often 15-45+ minutes per vendor docs) and usually cannot lock a fixed receive amount.\u003C\u002Fp>\n\u003Ch3>How long do private swaps take?\u003C\u002Fh3>\n\u003Cp>Vendor docs commonly cite about 15-45 minutes for multi-hop routes; quote duration fields often sit near 60 minutes. Show an ETA band and live status &#8211; never promise &#8220;instant.&#8221;\u003C\u002Fp>\n\u003Ch3>Do private swaps remove KYC or AML?\u003C\u002Fh3>\n\u003Cp>No. Your platform and partner CEXs may still screen, hold, or require verification. Design gates, audit trails, and hold macros &#8211; do not pretend screening disappears.\u003C\u002Fp>\n\u003Ch3>Should we expose the hop path to users?\u003C\u002Fh3>\n\u003Cp>No. Show mode, ETA, fees, deposit instructions, and status. Keep hop names and provider weighting off the client and the UI.\u003C\u002Fp>\n\u003Ch3>API integration or white-label widget first?\u003C\u002Fh3>\n\u003Cp>Widget for fastest UI; full API when you need branded status, custom gates, and support ownership. Keep credentials server-side; add webhooks plus polling fallback.\u003C\u002Fp>\n\u003Ch3>When is OTC better than Private Mode?\u003C\u002Fh3>\n\u003Cp>Choose OTC for large size, custom settlement, or heavy compliance paperwork. Keep Private Mode for discretionary retail or mid-size coin-to-coin swaps.\u003C\u002Fp>\n\u003Cp>\u003C!-- excalibur-schema-start -->\u003Cbr \u002F>\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"Organization\",\n      \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#organization\",\n      \"name\": \"White Label Exchange\",\n      \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F\",\n      \"logo\": {\n        \"@type\": \"ImageObject\",\n        \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#logo\",\n        \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F\",\n        \"caption\": \"White Label Exchange\"\n      }\n    },\n    {\n      \"@type\": \"Person\",\n      \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#author-wle-editorial\",\n      \"name\": \"White Label Exchange Editorial\",\n      \"jobTitle\": \"Editorial Team at White Label Exchange\",\n      \"description\": \"White Label Exchange team — practitioners in white-label crypto exchanges, exchangers, P2P, and aggregator platforms.\",\n      \"image\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F\",\n      \"worksFor\": {\n        \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#organization\"\n      },\n      \"sameAs\": [\n        \"https:\u002F\u002Fwhitelabelexchange.io\u002F\",\n        \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002F\"\n      ]\n    },\n    {\n      \"@type\": \"BlogPosting\",\n      \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#article\",\n      \"headline\": \"How to Integrate Private Swaps into a Crypto Exchange (Operator Playbook)\",\n      \"description\": \"How to integrate private swaps into a crypto exchange: choose routing, wire quote to status, keep KYC\u002FAML gates, and launch with ETA and support checklists.\",\n      \"datePublished\": \"2026-07-17\",\n      \"dateModified\": \"2026-07-17\",\n      \"inLanguage\": \"en\",\n      \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F\",\n      \"mainEntityOfPage\": {\n        \"@type\": \"WebPage\",\n        \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F\"\n      },\n      \"image\": {\n        \"@type\": \"ImageObject\",\n        \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fwp-content\u002Fuploads\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange-cover.png\",\n        \"width\": 1200,\n        \"height\": 675\n      },\n      \"author\": {\n        \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#author-wle-editorial\"\n      },\n      \"publisher\": {\n        \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#organization\"\n      },\n      \"keywords\": \"integrate private swaps crypto exchange, private swap mode for exchange operators, private crypto swap API integration, multi-hop private swap exchange feature, KYC AML private mode\",\n      \"wordCount\": 9480,\n      \"articleSection\": \"Private Swaps\",\n      \"isPartOf\": {\n        \"@type\": \"Blog\",\n        \"name\": \"White Label Exchange Blog\",\n        \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002F\"\n      }\n    },\n    {\n      \"@type\": \"FAQPage\",\n      \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#faq\",\n      \"mainEntity\": [\n        {\n          \"@type\": \"Question\",\n          \"name\": \"What is a private swap on a crypto exchange?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"A mode that routes funds through multi-hop or shielded steps so source and destination are harder to link on public ledgers. Ship it under your KYC, AML, and sanctions controls.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Private vs public swap routing - what should operators offer?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Offer both. Public favors speed (often minutes) and may support fixed rates. Private multi-hop favors discretion (often 15-45+ minutes per vendor docs) and usually cannot lock a fixed receive amount.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"How long do private swaps take?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Vendor docs commonly cite about 15-45 minutes for multi-hop routes; quote duration fields often sit near 60 minutes. Show an ETA band and live status - never promise \\\"instant.\\\"\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Do private swaps remove KYC or AML?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"No. Your platform and partner CEXs may still screen, hold, or require verification. Design gates, audit trails, and hold macros - do not pretend screening disappears.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Should we expose the hop path to users?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"No. Show mode, ETA, fees, deposit instructions, and status. Keep hop names and provider weighting off the client and the UI.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"API integration or white-label widget first?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Widget for fastest UI; full API when you need branded status, custom gates, and support ownership. Keep credentials server-side; add webhooks plus polling fallback.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"When is OTC better than Private Mode?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Choose OTC for large size, custom settlement, or heavy compliance paperwork. Keep Private Mode for discretionary retail or mid-size coin-to-coin swaps.\"\n          }\n        }\n      ]\n    },\n    {\n      \"@type\": \"HowTo\",\n      \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#howto\",\n      \"name\": \"How to Integrate Private Swaps into a Crypto Exchange (Operator Playbook)\",\n      \"description\": \"Operator playbook to embed Private Mode: decide product fit, choose routing model, wire quote-create-status without leaking hops, keep KYC\u002FAML gates, and soft-launch with UX\u002FSLA\u002Fsupport checklists.\",\n      \"inLanguage\": \"en\",\n      \"totalTime\": \"P2W\",\n      \"tool\": [\n        {\n          \"@type\": \"HowToTool\",\n          \"name\": \"Private swap partner API (multi-hop CEX, XMR shield, or privacy-pool) with quote, create, status, and webhooks\"\n        },\n        {\n          \"@type\": \"HowToTool\",\n          \"name\": \"KYC\u002FAML screening, sanctions\u002Faddress checks, and feature flags per market\"\n        },\n        {\n          \"@type\": \"HowToTool\",\n          \"name\": \"Server-side integration layer with Idempotency-Key, polling, and branded status UX\"\n        }\n      ],\n      \"supply\": [\n        {\n          \"@type\": \"HowToSupply\",\n          \"name\": \"Product sentence: Private Mode for discretion, Public for speed, OTC for large\u002Fbespoke size\"\n        },\n        {\n          \"@type\": \"HowToSupply\",\n          \"name\": \"Compliance-reviewed Public vs Private toggle copy, ETA bands, and hold\u002Frefund runbooks\"\n        },\n        {\n          \"@type\": \"HowToSupply\",\n          \"name\": \"Go-live checklist: market allowlist, mystery-shop pairs, support macros, soft-launch flag\"\n        }\n      ],\n      \"step\": [\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 1,\n          \"name\": \"Decide when private swaps belong in your product\",\n          \"text\": \"Write one product sentence before you touch an API: Private Mode is for discretion between wallets, not for time-critical trading. Keep Public \u002F standard swaps (and OTC when needed) as the default for speed and certainty. Ship Public Mode first, then add Private Mode as an explicit toggle with longer ETA copy.\",\n          \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#decide-product-fit\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 2,\n          \"name\": \"Choose routing model: multi-hop CEX, XMR shield, or privacy-pool API\",\n          \"text\": \"Score partners on ETA, coverage, partner AML behavior, custody, and who owns stuck-order support. Most teams start with a multi-hop CEX private API; add XMR-shield only with refund playbooks; treat ZK \u002F privacy-pool as a later option. Pick one primary model and document hold SLAs without exposing hop names.\",\n          \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#choose-routing-model\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 3,\n          \"name\": \"Integrate quote → create → status without leaking route internals\",\n          \"text\": \"Keep API keys server-side. Cache token lists, request a private\u002Fpublic quote, validate addresses, create with Idempotency-Key, show deposit address and expiry, monitor via webhooks plus polling, and map statuses to plain language. Hide route ranking and hop details from the UI.\",\n          \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#integrate-quote-create-status\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 4,\n          \"name\": \"Keep compliance, KYC gates, and risk controls\",\n          \"text\": \"Embed the same gatekeeper pipeline as public swaps: KYC\u002FKYB tiers, sanctions and address screening, amount\u002Fvelocity limits, geo\u002Flicense flags, Travel Rule triggers, audit trail, and partner due diligence. Treat hold as compliance escalation; never sell Private Mode as no-KYC \u002F no-AML.\",\n          \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#compliance-gates\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 5,\n          \"name\": \"Launch checklist: UX copy, SLAs, support, go-live tests\",\n          \"text\": \"Ship behind a feature flag and market allowlist with compliance-reviewed toggle copy, ETA\u002Ffee disclosure, order detail page, runbooks, monitoring, mystery-shop tests, support macros, and soft-launch expansion only after fail\u002Frefund drills pass.\",\n          \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#launch-checklist\"\n        }\n      ]\n    }\n  ]\n}\n\u003C\u002Fscript>\u003Cbr \u002F>\n\u003C!-- excalibur-schema-end -->\u003C\u002Fp>\n",834,{"average":4,"count":4},{"code":48,"locale":49,"name":50,"slug":51},"EN","en_US","English","en",[],[54,58,61,64,67,70,73,76,80,83,86,89,92,95],{"id":55,"text":56,"level":57},"1-decide-when-private-swaps-belong-in-your-product","1. Decide when private swaps belong in your product",2,{"id":59,"text":60,"level":57},"2-choose-routing-model-multi-hop-cex-xmr-shield-or-privacy-pool-api","2. Choose routing model: multi-hop CEX, XMR shield, or privacy-pool API",{"id":62,"text":63,"level":57},"3-integrate-quote-create-status-without-leaking-route-internals","3. Integrate quote → create → status without leaking route internals",{"id":65,"text":66,"level":57},"4-keep-compliance-kyc-gates-and-risk-controls","4. Keep compliance, KYC gates, and risk controls",{"id":68,"text":69,"level":57},"5-launch-checklist-ux-copy-slas-support-go-live-tests","5. Launch checklist: UX copy, SLAs, support, go-live tests",{"id":71,"text":72,"level":57},"what-to-do-next","What to do next",{"id":74,"text":75,"level":57},"frequently-asked-questions","Frequently asked questions",{"id":77,"text":78,"level":79},"what-is-a-private-swap-on-a-crypto-exchange","What is a private swap on a crypto exchange?",3,{"id":81,"text":82,"level":79},"private-vs-public-swap-routing-8211-what-should-operators-offer","Private vs public swap routing &#8211; what should operators offer?",{"id":84,"text":85,"level":79},"how-long-do-private-swaps-take","How long do private swaps take?",{"id":87,"text":88,"level":79},"do-private-swaps-remove-kyc-or-aml","Do private swaps remove KYC or AML?",{"id":90,"text":91,"level":79},"should-we-expose-the-hop-path-to-users","Should we expose the hop path to users?",{"id":93,"text":94,"level":79},"api-integration-or-white-label-widget-first","API integration or white-label widget first?",{"id":96,"text":97,"level":79},"when-is-otc-better-than-private-mode","When is OTC better than Private Mode?","\u003Cp>Users ask for a Private Mode, support tickets pile up, and your public swap still feels &#8220;too visible&#8221; on-chain. The fix is not a privacy manifesto. It is a product decision plus a clean private crypto swap API integration: pick a routing model, wire quote to create to status without leaking hops, keep KYC and AML gates, then launch with honest ETAs and a support playbook. Use this operator checklist to integrate private swaps into a crypto exchange without breaking compliance or trust.\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>\u003Cb>TL;DR \u002F Quick take:\u003C\u002Fb> Treat Private Mode as a discretionary coin-to-coin path beside Public Mode (and OTC for large deals). Choose multi-hop CEX, XMR shield, or privacy-pool APIs by ETA, coverage, and who owns stuck orders. Integrate server-side only, hide route internals, keep KYC gates, and soft-launch behind a feature flag with hold\u002Frefund runbooks.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>A private swap routes funds through multi-hop or shielded steps so source and destination wallets are harder to link on public ledgers. It remains your feature under your rules &#8211; partners may still screen or hold. See also \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fhow-to-add-liquidity-new-crypto-exchange\u002F\" target=\"_blank\">how to add liquidity to a new crypto exchange\u003C\u002Fa> and the \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fcrypto-exchanger-aggregator-how-to-choose\u002F\" target=\"_blank\">crypto exchanger aggregator how-to\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"decide-product-fit\">1. Decide when private swaps belong in your product\u003C\u002Fh2>\n\u003Cfigure class=\"inline-quad\" data-slot=\"inline_1\">\n  \u003Cimg decoding=\"async\" src=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002Fintegrate-private-swaps-crypto-exchange-inline-01.png\" alt=\"Grayscale comparison UI: when private swaps fit vs when to skip\" loading=\"lazy\">\u003Cbr \u002F>\n\u003C\u002Ffigure>\n\u003Cp>Write one product sentence before you touch an API: Private Mode is for discretion between wallets, not for time-critical trading. Keep Public \u002F standard swaps (and OTC when needed) as the default for speed and certainty.\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Need\u003C\u002Fth>\n\u003Cth>Prefer\u003C\u002Fth>\n\u003Cth>Why\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cb>Discretion \u002F unlinkability\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>Private Mode\u003C\u002Ftd>\n\u003Ctd>Multi-hop or shielded intermediate\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Speed \u002F locked output\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>Public \u002F standard (fixed-rate if available)\u003C\u002Ftd>\n\u003Ctd>Often minutes; fixed rates usually sit on the public path\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Large or bespoke size\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>OTC desk\u003C\u002Ftd>\n\u003Ctd>Human negotiation plus compliance paperwork\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Vendor docs commonly cite private multi-hop completion around 15-45 minutes (quote duration often near 60). Public single-hop CEX paths are often cited around 3-30 minutes. Fixed-rate locking is frequently unavailable on private multi-hop routes &#8211; send users who need a guaranteed receive amount to the public fixed-rate path.\u003C\u002Fp>\n\u003Cp>\u003Cb>Do this:\u003C\u002Fb> ship Public Mode first, then add Private Mode as an explicit toggle with longer ETA copy. \u003Cb>Do not\u003C\u002Fb> market Private Mode as &#8220;instant&#8221; or as a replacement for OTC on large tickets.\u003C\u002Fp>\n\u003Ch2 id=\"choose-routing-model\">2. Choose routing model: multi-hop CEX, XMR shield, or privacy-pool API\u003C\u002Fh2>\n\u003Cfigure class=\"inline-quad\" data-slot=\"inline_2\">\n  \u003Cimg decoding=\"async\" src=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002Fintegrate-private-swaps-crypto-exchange-inline-02.png\" alt=\"Grayscale workflow: multi-hop CEX vs XMR shield vs privacy-pool API routing\" loading=\"lazy\">\u003Cbr \u002F>\n\u003C\u002Ffigure>\n\u003Cp>Disambiguate early. &#8220;Private swap&#8221; is not one technology. Score partners on ETA, coverage, partner AML behavior, custody, and who owns stuck-order support.\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Criterion\u003C\u002Fth>\n\u003Cth>Multi-hop CEX\u003C\u002Fth>\n\u003Cth>XMR shield\u003C\u002Fth>\n\u003Cth>Privacy-pool \u002F ZK\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cb>Unlinkability\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>High (2+ hops)\u003C\u002Ftd>\n\u003Ctd>Very high (privacy-coin hop)\u003C\u002Ftd>\n\u003Ctd>High (pool \u002F ZK)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Typical ETA\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>~15-45+ min (vendor-typical)\u003C\u002Ftd>\n\u003Ctd>Often longer\u003C\u002Ftd>\n\u003Ctd>ZK-proof latency\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Liquidity\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>CEX books\u003C\u002Ftd>\n\u003Ctd>Corridor-limited\u003C\u002Ftd>\n\u003Ctd>Pool-dependent\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Compliance\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>Partner CEX AML\u003C\u002Ftd>\n\u003Ctd>Partner + XMR policy\u003C\u002Ftd>\n\u003Ctd>Protocol + your gates\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cb>Integration\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd>Partner API\u003C\u002Ftd>\n\u003Ctd>Partner API + honest UX\u003C\u002Ftd>\n\u003Ctd>Deeper protocol \u002F UX\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cblockquote>\u003Cp>\u003Cb>Verdict:\u003C\u002Fb> Most teams start with a multi-hop CEX private API for clearer coverage and ops. Add an XMR-shield corridor only if you can staff refund playbooks. Treat ZK \u002F privacy-pool mode as a later, user-initiated option.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>\u003Cb>Do this:\u003C\u002Fb> pick one primary model and document hold SLAs. \u003Cb>Do not\u003C\u002Fb> expose hop names in the UI or crown one vendor as the only &#8220;private&#8221; stack.\u003C\u002Fp>\n\u003Ch2 id=\"integrate-quote-create-status\">3. Integrate quote → create → status without leaking route internals\u003C\u002Fh2>\n\u003Cfigure class=\"inline-quad\" data-slot=\"inline_3\">\n  \u003Cimg decoding=\"async\" src=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002Fintegrate-private-swaps-crypto-exchange-inline-03.png\" alt=\"Grayscale dashboard: quote create status flow with route internals hidden\" loading=\"lazy\">\u003Cbr \u002F>\n\u003C\u002Ffigure>\n\u003Cp>Treat the partner API as a black box that returns a price and later a payout. Your job is a branded status experience. Keep API keys on the server only. An API (application programming interface) is a machine-to-machine contract: quote, create, then status.\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cb>Cache token lists server-side\u003C\u002Fb>; do not hit the partner token endpoint on every page view.\u003C\u002Fli>\n\u003Cli>\u003Cb>Request a quote\u003C\u002Fb> with a private \u002F public mode flag; show receive amount, rate, fees, min\u002Fmax before Confirm.\u003C\u002Fli>\n\u003Cli>\u003Cb>Validate addresses and amounts\u003C\u002Fb>; send required user-context headers (IP, user-agent, timezone) from the backend.\u003C\u002Fli>\n\u003Cli>\u003Cb>Create the exchange\u003C\u002Fb> with quote id, destination, and an Idempotency-Key so retries do not double-book.\u003C\u002Fli>\n\u003Cli>\u003Cb>Show a unique deposit address\u003C\u002Fb> and exact amount with expiry (partner flows often use ~30 minutes).\u003C\u002Fli>\n\u003Cli>\u003Cb>Monitor status\u003C\u002Fb> with webhooks plus polling (~10s UI open, ~30s backgrounded) until finished, failed, refunded, or hold.\u003C\u002Fli>\n\u003Cli>\u003Cb>Map statuses to plain language\u003C\u002Fb> (waiting, processing, anonymizing, under review, completed). Some flows use an \u003Cb>ANONYMIZING\u003C\u002Fb> stage.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cblockquote>\u003Cp>\u003Cb>Workflow:\u003C\u002Fb>\u003Cbr \u002F>Decide Private Mode fit &rarr; pick routing model &rarr; map KYC\u002FAML gates &rarr; quote (private) &rarr; create (idempotent) &rarr; deposit &rarr; poll\u002Fwebhook status &rarr; launch checklist.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Do\u003C\u002Fth>\n\u003Cth>Do not\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Server-side keys; Idempotency-Key\u003C\u002Ftd>\n\u003Ctd>Call the partner API from the browser with secrets\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Live quote panel before Confirm\u003C\u002Ftd>\n\u003Ctd>Let users submit blindly\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Mode, ETA band, fees, support id\u003C\u002Ftd>\n\u003Ctd>Show hop path or provider names\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Stop polling on terminal statuses\u003C\u002Ftd>\n\u003Ctd>Poll every second forever\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Treat hold as compliance escalation\u003C\u002Ftd>\n\u003Ctd>Tell users how to &#8220;bypass&#8221; AML review\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>A white-label stack (ready-made exchange software you brand as your own) can shorten wallets, UI, and status wiring. After you lock the routing model, review \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002F\" target=\"_blank\">White Label Exchange solutions\u003C\u002Fa>. \u003Cb>Do this:\u003C\u002Fb> hide route ranking and hop details. \u003Cb>Do not\u003C\u002Fb> promise best fill just because a route is private.\u003C\u002Fp>\n\u003Ch2 id=\"compliance-gates\">4. Keep compliance, KYC gates, and risk controls\u003C\u002Fh2>\n\u003Cp>KYC (know your customer) is identity checks. AML (anti-money laundering) is screening for risky patterns. Private Mode must hit the same gatekeeper pipeline as public swaps. Embed hooks in the lifecycle; bolt-on compliance fails under load and audit.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cb>KYC \u002F KYB tier gates\u003C\u002Fb> before Private Mode unlock or above amount thresholds.\u003C\u002Fli>\n\u003Cli>\u003Cb>Sanctions and address screening\u003C\u002Fb> on deposit and withdraw addresses.\u003C\u002Fli>\n\u003Cli>\u003Cb>Amount and velocity limits\u003C\u002Fb> at quote and create time.\u003C\u002Fli>\n\u003Cli>\u003Cb>Geo and license rules\u003C\u002Fb> via feature flags per market.\u003C\u002Fli>\n\u003Cli>\u003Cb>Travel Rule triggers\u003C\u002Fb> where your jurisdiction requires counterparty data.\u003C\u002Fli>\n\u003Cli>\u003Cb>Audit trail\u003C\u002Fb> of quote id, user id, decisions, overrides, and partner status.\u003C\u002Fli>\n\u003Cli>\u003Cb>Partner due diligence\u003C\u002Fb> on who screens, refund policy, and hold SLA.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Soft blocks and \u003Cb>hold\u003C\u002Fb> statuses often mean AML or KYC review. Slow the poll, escalate to support, and never invent hop details. Partner CEXs can still hold mid-flow. See the \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fcrypto-exchange-compliance-checklist-founders\u002F\" target=\"_blank\">crypto exchange compliance checklist for founders\u003C\u002Fa>. \u003Cb>Do this:\u003C\u002Fb> write macros for &#8220;under review&#8221; and refunds before go-live. \u003Cb>Do not\u003C\u002Fb> sell Private Mode as &#8220;no KYC \u002F no AML&#8221; or as a way around sanctions screening.\u003C\u002Fp>\n\u003Ch2 id=\"launch-checklist\">5. Launch checklist: UX copy, SLAs, support, go-live tests\u003C\u002Fh2>\n\u003Cp>Ops quality decides whether Private Mode becomes retention or a ticket factory.\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cb>Feature flag + market allowlist\u003C\u002Fb> per jurisdiction.\u003C\u002Fli>\n\u003Cli>\u003Cb>Compliance-reviewed copy\u003C\u002Fb> for the Public vs Private toggle: what it does, longer time, possible partner review.\u003C\u002Fli>\n\u003Cli>\u003Cb>ETA and fee disclosure\u003C\u002Fb> on quote (band such as 15-45+ minutes, not &#8220;instant&#8221;).\u003C\u002Fli>\n\u003Cli>\u003Cb>Order detail page\u003C\u002Fb> with support id and plain-language status.\u003C\u002Fli>\n\u003Cli>\u003Cb>Runbooks\u003C\u002Fb> for deposit expiry, under\u002Foverpayment, partner outage, AML hold, and refunds.\u003C\u002Fli>\n\u003Cli>\u003Cb>Monitoring\u003C\u002Fb> on completion rate, p95 time-to-complete, and hold rate.\u003C\u002Fli>\n\u003Cli>\u003Cb>Mystery-shop\u003C\u002Fb> 3-5 top pairs in sandbox, then small live swaps.\u003C\u002Fli>\n\u003Cli>\u003Cb>Support macros\u003C\u002Fb> for &#8220;still anonymizing&#8221; and &#8220;under review,&#8221; plus a hold escalation drill.\u003C\u002Fli>\n\u003Cli>\u003Cb>Soft-launch\u003C\u002Fb> behind the flag; expand only after fail\u002Frefund drills pass.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cb>Do this:\u003C\u002Fb> treat go-live as a checklist gate. \u003Cb>Do not\u003C\u002Fb> open Private Mode globally on day one without allowlists and hold playbooks.\u003C\u002Fp>\n\u003Ch2 id=\"next-steps\">What to do next\u003C\u002Fh2>\n\u003Cp>Lock the product sentence (Private Mode for discretion, Public for speed, OTC for size). Score one routing model, map KYC\u002FAML gates before code, wire quote → create → status on the server, and run the launch checklist. More guides: \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002F\" target=\"_blank\">White Label Exchange blog\u003C\u002Fa>. To evaluate a branded stack with swap modes and compliance hooks, start from \u003Ca href=\"https:\u002F\u002Fwhitelabelexchange.io\u002F\" target=\"_blank\">Explore Solutions\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>\u003Cb>Reviewed by:\u003C\u002Fb> White Label Exchange Editorial (practitioners in white-label exchanges, exchangers, P2P, and aggregators).\u003Cbr \u002F>\u003Cb>Data integrity:\u003C\u002Fb> ETA bands, status patterns, and multi-hop AML caveats attributed to public partner docs checked on 2026-07-17 (Houdini Swap docs, GhostSwap partner brief, Baltex API guide, Gizmolab, Errna). Operational guidance only &#8211; not legal or investment advice.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch2 id=\"frequently-asked-questions\">Frequently asked questions\u003C\u002Fh2>\n\u003Ch3 id=\"what-is-a-private-swap-on-a-crypto-exchange\">What is a private swap on a crypto exchange?\u003C\u002Fh3>\n\u003Cp>A mode that routes funds through multi-hop or shielded steps so source and destination are harder to link on public ledgers. Ship it under your KYC, AML, and sanctions controls.\u003C\u002Fp>\n\u003Ch3 id=\"private-vs-public-swap-routing-8211-what-should-operators-offer\">Private vs public swap routing &#8211; what should operators offer?\u003C\u002Fh3>\n\u003Cp>Offer both. Public favors speed (often minutes) and may support fixed rates. Private multi-hop favors discretion (often 15-45+ minutes per vendor docs) and usually cannot lock a fixed receive amount.\u003C\u002Fp>\n\u003Ch3 id=\"how-long-do-private-swaps-take\">How long do private swaps take?\u003C\u002Fh3>\n\u003Cp>Vendor docs commonly cite about 15-45 minutes for multi-hop routes; quote duration fields often sit near 60 minutes. Show an ETA band and live status &#8211; never promise &#8220;instant.&#8221;\u003C\u002Fp>\n\u003Ch3 id=\"do-private-swaps-remove-kyc-or-aml\">Do private swaps remove KYC or AML?\u003C\u002Fh3>\n\u003Cp>No. Your platform and partner CEXs may still screen, hold, or require verification. Design gates, audit trails, and hold macros &#8211; do not pretend screening disappears.\u003C\u002Fp>\n\u003Ch3 id=\"should-we-expose-the-hop-path-to-users\">Should we expose the hop path to users?\u003C\u002Fh3>\n\u003Cp>No. Show mode, ETA, fees, deposit instructions, and status. Keep hop names and provider weighting off the client and the UI.\u003C\u002Fp>\n\u003Ch3 id=\"api-integration-or-white-label-widget-first\">API integration or white-label widget first?\u003C\u002Fh3>\n\u003Cp>Widget for fastest UI; full API when you need branded status, custom gates, and support ownership. Keep credentials server-side; add webhooks plus polling fallback.\u003C\u002Fp>\n\u003Ch3 id=\"when-is-otc-better-than-private-mode\">When is OTC better than Private Mode?\u003C\u002Fh3>\n\u003Cp>Choose OTC for large size, custom settlement, or heavy compliance paperwork. Keep Private Mode for discretionary retail or mid-size coin-to-coin swaps.\u003C\u002Fp>\n\u003Cp>\u003C!-- excalibur-schema-start -->\u003Cbr \u002F>\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"Organization\",\n      \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#organization\",\n      \"name\": \"White Label Exchange\",\n      \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F\",\n      \"logo\": {\n        \"@type\": \"ImageObject\",\n        \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#logo\",\n        \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F\",\n        \"caption\": \"White Label Exchange\"\n      }\n    },\n    {\n      \"@type\": \"Person\",\n      \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#author-wle-editorial\",\n      \"name\": \"White Label Exchange Editorial\",\n      \"jobTitle\": \"Editorial Team at White Label Exchange\",\n      \"description\": \"White Label Exchange team — practitioners in white-label crypto exchanges, exchangers, P2P, and aggregator platforms.\",\n      \"image\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F\",\n      \"worksFor\": {\n        \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#organization\"\n      },\n      \"sameAs\": [\n        \"https:\u002F\u002Fwhitelabelexchange.io\u002F\",\n        \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002F\"\n      ]\n    },\n    {\n      \"@type\": \"BlogPosting\",\n      \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#article\",\n      \"headline\": \"How to Integrate Private Swaps into a Crypto Exchange (Operator Playbook)\",\n      \"description\": \"How to integrate private swaps into a crypto exchange: choose routing, wire quote to status, keep KYC\u002FAML gates, and launch with ETA and support checklists.\",\n      \"datePublished\": \"2026-07-17\",\n      \"dateModified\": \"2026-07-17\",\n      \"inLanguage\": \"en\",\n      \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F\",\n      \"mainEntityOfPage\": {\n        \"@type\": \"WebPage\",\n        \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F\"\n      },\n      \"image\": {\n        \"@type\": \"ImageObject\",\n        \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fwp-content\u002Fuploads\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange-cover.png\",\n        \"width\": 1200,\n        \"height\": 675\n      },\n      \"author\": {\n        \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#author-wle-editorial\"\n      },\n      \"publisher\": {\n        \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002F#organization\"\n      },\n      \"keywords\": \"integrate private swaps crypto exchange, private swap mode for exchange operators, private crypto swap API integration, multi-hop private swap exchange feature, KYC AML private mode\",\n      \"wordCount\": 9480,\n      \"articleSection\": \"Private Swaps\",\n      \"isPartOf\": {\n        \"@type\": \"Blog\",\n        \"name\": \"White Label Exchange Blog\",\n        \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002F\"\n      }\n    },\n    {\n      \"@type\": \"FAQPage\",\n      \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#faq\",\n      \"mainEntity\": [\n        {\n          \"@type\": \"Question\",\n          \"name\": \"What is a private swap on a crypto exchange?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"A mode that routes funds through multi-hop or shielded steps so source and destination are harder to link on public ledgers. Ship it under your KYC, AML, and sanctions controls.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Private vs public swap routing - what should operators offer?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Offer both. Public favors speed (often minutes) and may support fixed rates. Private multi-hop favors discretion (often 15-45+ minutes per vendor docs) and usually cannot lock a fixed receive amount.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"How long do private swaps take?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Vendor docs commonly cite about 15-45 minutes for multi-hop routes; quote duration fields often sit near 60 minutes. Show an ETA band and live status - never promise \\\"instant.\\\"\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Do private swaps remove KYC or AML?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"No. Your platform and partner CEXs may still screen, hold, or require verification. Design gates, audit trails, and hold macros - do not pretend screening disappears.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Should we expose the hop path to users?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"No. Show mode, ETA, fees, deposit instructions, and status. Keep hop names and provider weighting off the client and the UI.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"API integration or white-label widget first?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Widget for fastest UI; full API when you need branded status, custom gates, and support ownership. Keep credentials server-side; add webhooks plus polling fallback.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"When is OTC better than Private Mode?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Choose OTC for large size, custom settlement, or heavy compliance paperwork. Keep Private Mode for discretionary retail or mid-size coin-to-coin swaps.\"\n          }\n        }\n      ]\n    },\n    {\n      \"@type\": \"HowTo\",\n      \"@id\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#howto\",\n      \"name\": \"How to Integrate Private Swaps into a Crypto Exchange (Operator Playbook)\",\n      \"description\": \"Operator playbook to embed Private Mode: decide product fit, choose routing model, wire quote-create-status without leaking hops, keep KYC\u002FAML gates, and soft-launch with UX\u002FSLA\u002Fsupport checklists.\",\n      \"inLanguage\": \"en\",\n      \"totalTime\": \"P2W\",\n      \"tool\": [\n        {\n          \"@type\": \"HowToTool\",\n          \"name\": \"Private swap partner API (multi-hop CEX, XMR shield, or privacy-pool) with quote, create, status, and webhooks\"\n        },\n        {\n          \"@type\": \"HowToTool\",\n          \"name\": \"KYC\u002FAML screening, sanctions\u002Faddress checks, and feature flags per market\"\n        },\n        {\n          \"@type\": \"HowToTool\",\n          \"name\": \"Server-side integration layer with Idempotency-Key, polling, and branded status UX\"\n        }\n      ],\n      \"supply\": [\n        {\n          \"@type\": \"HowToSupply\",\n          \"name\": \"Product sentence: Private Mode for discretion, Public for speed, OTC for large\u002Fbespoke size\"\n        },\n        {\n          \"@type\": \"HowToSupply\",\n          \"name\": \"Compliance-reviewed Public vs Private toggle copy, ETA bands, and hold\u002Frefund runbooks\"\n        },\n        {\n          \"@type\": \"HowToSupply\",\n          \"name\": \"Go-live checklist: market allowlist, mystery-shop pairs, support macros, soft-launch flag\"\n        }\n      ],\n      \"step\": [\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 1,\n          \"name\": \"Decide when private swaps belong in your product\",\n          \"text\": \"Write one product sentence before you touch an API: Private Mode is for discretion between wallets, not for time-critical trading. Keep Public \u002F standard swaps (and OTC when needed) as the default for speed and certainty. Ship Public Mode first, then add Private Mode as an explicit toggle with longer ETA copy.\",\n          \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#decide-product-fit\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 2,\n          \"name\": \"Choose routing model: multi-hop CEX, XMR shield, or privacy-pool API\",\n          \"text\": \"Score partners on ETA, coverage, partner AML behavior, custody, and who owns stuck-order support. Most teams start with a multi-hop CEX private API; add XMR-shield only with refund playbooks; treat ZK \u002F privacy-pool as a later option. Pick one primary model and document hold SLAs without exposing hop names.\",\n          \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#choose-routing-model\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 3,\n          \"name\": \"Integrate quote → create → status without leaking route internals\",\n          \"text\": \"Keep API keys server-side. Cache token lists, request a private\u002Fpublic quote, validate addresses, create with Idempotency-Key, show deposit address and expiry, monitor via webhooks plus polling, and map statuses to plain language. Hide route ranking and hop details from the UI.\",\n          \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#integrate-quote-create-status\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 4,\n          \"name\": \"Keep compliance, KYC gates, and risk controls\",\n          \"text\": \"Embed the same gatekeeper pipeline as public swaps: KYC\u002FKYB tiers, sanctions and address screening, amount\u002Fvelocity limits, geo\u002Flicense flags, Travel Rule triggers, audit trail, and partner due diligence. Treat hold as compliance escalation; never sell Private Mode as no-KYC \u002F no-AML.\",\n          \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#compliance-gates\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 5,\n          \"name\": \"Launch checklist: UX copy, SLAs, support, go-live tests\",\n          \"text\": \"Ship behind a feature flag and market allowlist with compliance-reviewed toggle copy, ETA\u002Ffee disclosure, order detail page, runbooks, monitoring, mystery-shop tests, support macros, and soft-launch expansion only after fail\u002Frefund drills pass.\",\n          \"url\": \"https:\u002F\u002Fwhitelabelexchange.io\u002Fblog\u002Fintegrate-private-swaps-crypto-exchange\u002F#launch-checklist\"\n        }\n      ]\n    }\n  ]\n}\n\u003C\u002Fscript>\u003Cbr \u002F>\n\u003C!-- excalibur-schema-end -->\u003C\u002Fp>\n","\u003Cnav class=\"table-of-contents\">\u003Cul>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#1-decide-when-private-swaps-belong-in-your-product\">1. Decide when private swaps belong in your product\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#2-choose-routing-model-multi-hop-cex-xmr-shield-or-privacy-pool-api\">2. Choose routing model: multi-hop CEX, XMR shield, or privacy-pool API\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#3-integrate-quote-create-status-without-leaking-route-internals\">3. Integrate quote → create → status without leaking route internals\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#4-keep-compliance-kyc-gates-and-risk-controls\">4. Keep compliance, KYC gates, and risk controls\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#5-launch-checklist-ux-copy-slas-support-go-live-tests\">5. Launch checklist: UX copy, SLAs, support, go-live tests\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#what-to-do-next\">What to do next\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#frequently-asked-questions\">Frequently asked questions\u003C\u002Fa>\u003Cul>\u003Cli>\u003Ca href=\"#what-is-a-private-swap-on-a-crypto-exchange\">What is a private swap on a crypto exchange?\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#private-vs-public-swap-routing-8211-what-should-operators-offer\">Private vs public swap routing &#8211; what should operators offer?\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#how-long-do-private-swaps-take\">How long do private swaps take?\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#do-private-swaps-remove-kyc-or-aml\">Do private swaps remove KYC or AML?\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#should-we-expose-the-hop-path-to-users\">Should we expose the hop path to users?\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#api-integration-or-white-label-widget-first\">API integration or white-label widget first?\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"#when-is-otc-better-than-private-mode\">When is OTC better than Private Mode?\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fnav>",{"edges":101},[102],{"node":103,"isPrimary":6},{"id":104,"name":105,"slug":106,"parentId":107,"parent":107},"dGVybTox","Uncategorized","uncategorized",null,{"nodes":109},[],{"node":111},{"sourceUrl":112,"altText":113,"title":114},"https:\u002F\u002Fwhitelabelexchange.io\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002Fintegrate-private-swaps-crypto-exchange-cover.png","","integrate-private-swaps-crypto-exchange cover",{"node":116},{"name":117,"displayName":118,"authorNickname":113,"authorAvatar":119,"slug":117,"avatar":120},"whitelabelexchange","Author 1","https:\u002F\u002Fsecure.gravatar.com\u002Favatar\u002F0be85b49cfc183beb0356b848d8a9ef8c1a0bd234c07c852d45ed47c1f1ec48b?s=256&d=mm&r=g",{"url":121},"https:\u002F\u002Fsecure.gravatar.com\u002Favatar\u002F0be85b49cfc183beb0356b848d8a9ef8c1a0bd234c07c852d45ed47c1f1ec48b?s=96&d=mm&r=g",{"collapse":107},{"canonical":124,"metaDesc":125,"readingTime":126,"opengraphTitle":127,"opengraphUrl":124,"opengraphImage":128,"twitterImage":107,"opengraphDescription":125,"twitterDescription":113,"title":127,"twitterTitle":113,"opengraphType":130,"opengraphPublishedTime":131,"opengraphModifiedTime":132,"breadcrumbs":133},"https:\u002F\u002Fwhitelabelexchange.io\u002Funcategorized\u002Fintegrate-private-swaps-crypto-exchange\u002F","How to integrate private swaps into a crypto exchange: choose routing, wire quote to status, keep KYC\u002FAML gates, and launch with ETA and support checklists.",7,"Integrate Private Swaps Crypto Exchange: Playbook",{"sourceUrl":129,"altText":113},"https:\u002F\u002Fwhitelabelexchange.io\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002Fintegrate-private-swaps-crypto-exchange-cover-300x169.png","article","2026-07-17T05:35:27+00:00","2026-07-17T05:35:37+00:00",[134,136,138],{"text":135,"relativeUrl":113},"Home",{"text":105,"relativeUrl":137},"\u002Funcategorized",{"text":38,"relativeUrl":139},"\u002Funcategorized\u002Fintegrate-private-swaps-crypto-exchange"]