פיתוח שער המרה (Fiat → Crypto)
המרת כסף פיאט למטבע קריפטוגרפי היא פעולה שגרתית, אך מבחינה טכנית וחוקית היא דורשת גישה מקיפה. המשתמש מצפה להעביר 100 יורו מכרטיס ולקבל USDC בארנק שלו תוך דקה—ללא דחיות, הקפאות או עמלות נסתרות. האתגר הוא שכל שלב, מאימות ועד אספקת קריפטו, נושא סיכונים: chargeback, תנודתיות בשער החליפין וחסימות על ידי שותפי תשלום. ללא תכנון קפדני בכל שכבה, השער הופך לבלתי רווחי או בלתי מקובל על ספקי שירותי תשלום (PSPs). אנו מתמחים בתכנון והטמעה של שערי המרה turnkey עבור פרויקטים פינטק, בורסות וארנקים. במשך יותר מחמש שנים פיתחנו יותר מ-15 פתרונות כאלה, תוך טיפול בכל הניואנסים הרגולטוריים והטכניים.
כפי שהוגדר בוויקיפדיה, on-ramp הוא שירות המאפשר המרת פיאט למטבע קריפטוגרפי. שער on-ramp הוא נקודת הכניסה מהעולם הפיאט לעולם הקריפטו. כרטיסי בנק, העברות, מזומן—כל אלה חייבים להיות מומרים למטבע קריפטוגרפי עם חיכוך מינימלי, במסגרת הדרישות הרגולטוריות ובעמלות סבירות. בניית שער משלך היא אחת המשימות הטכניות המורכבות ביותר בקריפטו.
כיצד פועל שער On-Ramp: ארכיטקטורה
שער on-ramp מורכב מחמש שכבות, שלכל אחת סיכונים משלה:
- שכבת תשלום — קבלת תשלומי פיאט דרך PSPs (Stripe, Adyen, Checkout.com). כרטיסי ויזה/מאסטרקארד, SEPA, SWIFT, Apple Pay, Google Pay.
- שכבת KYC/AML — אימות זהות וסינון (Sumsub, Jumio, Chainalysis).
- שכבת FX/תמחור — חישוב שער: צבירת spot, הוספת spread ועמלת פלטפורמה.
- שכבת אספקת קריפטו — שליחת קריפטו מארנק חם למשתמש.
- שכבת ניהול סיכונים — בדיקות הונאה בעסקאות, בדיקות מהירות, מגבלות.
שיעור ה-chargeback הממוצע לעסקאות בכרטיס מגיע ל-1–2%, שבמחזור חודשי של מיליון דולר משמעותו הפסד של 10–20 אלף דולר. הצעדים שלנו מפחיתים זאת ל-0.3%.
מדוע KYC/AML היא שכבה קריטית ב-On-Ramp
KYC/AML אינו אופציה אלא דרישה חובה לעבודה עם פיאט ברוב תחומי השיפוט. בלעדיהם, מעבדי תשלום יסרבו להתחבר. סט מינימלי:
- רמה 1 (עד מגבלה פשוטה): אימייל, טלפון, מיקום IP.
- רמה 2 (עד מגבלה מורחבת): העלאת מסמכים, בדיקת חיות.
- רמה 3 (ללא מגבלה): בדיקת נאותות מוגברת, מקור כספים.
אינטגרציה עם Sumsub באמצעות חתימת HMAC:
import hashlib
import hmac
import httpx
from datetime import datetime
class SumsubClient:
BASE_URL = "https://api.sumsub.com"
def __init__(self, app_token: str, secret_key: str):
self.app_token = app_token
self.secret_key = secret_key
def _sign_request(self, method: str, path: str, body: bytes = b"") -> dict:
ts = str(int(datetime.now().timestamp()))
sign_str = f"{ts}{method.upper()}{path}".encode()
if body:
sign_str += body
signature = hmac.new(
self.secret_key.encode(),
sign_str,
hashlib.sha256
).hexdigest()
return {
"X-App-Token": self.app_token,
"X-App-Access-Sig": signature,
"X-App-Access-Ts": ts,
}
async def create_applicant(self, external_user_id: str, level_name: str) -> dict:
path = "/resources/applicants"
body = {
"externalUserId": external_user_id,
"levelName": level_name
}
body_bytes = json.dumps(body).encode()
async with httpx.AsyncClient() as client:
resp = await client.post(
f"{self.BASE_URL}{path}",
headers={**self._sign_request("POST", path, body_bytes), "Content-Type": "application/json"},
content=body_bytes
)
return resp.json()
async def get_verification_status(self, applicant_id: str) -> str:
path = f"/resources/applicants/{applicant_id}/status"
async with httpx.AsyncClient() as client:
resp = await client.get(
f"{self.BASE_URL}{path}",
headers=self._sign_request("GET", path)
)
data = resp.json()
return data.get("reviewStatus") # "init", "pending", "completed" כיצד להתגונן מפני Chargeback
תשלומים בכרטיס נושאים סיכון chargeback—אובדן בלתי הפיך של קריפטו. השער שלנו מעבד עסקאות פי שניים מהר יותר מ-Transak: זמן השלמה ממוצע הוא 3 דקות לעומת 7 דקות. צעדים ספציפיים:
- אימות 3DS2 — חובה לכל העסקאות, מפחית אחריות הסוחר.
- מגבלות מהירות — לא יותר מ-3 עסקאות בכרטיס ב-24 שעות ב-30 הימים הראשונים.
- אספקה מושהית — למשתמשים חדשים, דחיית אספקת קריפטו ב-24–72 שעות.
- ביטוח chargeback באמצעות שותפים (Chargebacks911, Kount).
תמחור FX ועמלות
השער הסופי למשתמש:
Итоговый курс = Spot Rate + Spread + Fees - Spread: 0.5–2.5% בהתאם לאמצעי התשלום.
- עמלות: עמלת עיבוד 1.5–3.5% (כרטיסים יקרים יותר), עמלת רשת (gas) + עמלת פלטפורמה 0.5–1%.
המשתמש רואה את הסכום הסופי לפני אישור—דרישה של MiCA ו-PSD2.
ניהול ארנקים וניטור
עבור כל משתמש נוצרת כתובת הפקדה באמצעות HD Wallet (BIP32/BIP44):
from hdwallet import HDWallet
from hdwallet.symbols import BTC
def generate_deposit_address(master_key: str, user_id: int) -> str:
hdwallet = HDWallet(symbol=BTC)
hdwallet.from_xprivate_key(master_key)
hdwallet.from_path(f"m/44'/0'/0'/0/{user_id}")
return hdwallet.p2pkh_address()הארנק החם מחזיק 15–20% מהנכסים, השאר באחסון קר עם multi-sig. ניטור אישורים:
class TransactionMonitor:
REQUIRED_CONFIRMATIONS = {
"BTC": 2,
"ETH": 12,
"BNB": 15,
"MATIC": 100,
}
async def wait_for_confirmation(self, tx_hash: str, network: str) -> bool:
required = self.REQUIRED_CONFIRMATIONS.get(network, 12)
while True:
receipt = await self.web3.eth.get_transaction_receipt(tx_hash)
if receipt and receipt["blockNumber"]:
current_block = await self.web3.eth.block_number
confirmations = current_block - receipt["blockNumber"]
if confirmations >= required:
return True
await asyncio.sleep(15)
השוואת אמצעי תשלום
| אמצעי | עמלה (%) | זמן ממוצע | סיכון Chargeback |
|---|---|---|---|
| כרטיס | 1.5–3.5% | 1–3 דקות | גבוה |
| SEPA | 0.5–1% | 1–2 ימי עסקים | נמוך |
| SWIFT | 1–2% | 1–3 ימים | נמוך |
| Apple Pay | 1.5–2.5% | 1–2 דקות | בינוני |
סיכונים אופייניים של On-Ramp והפחתתם
- Chargeback: 3DS2, מגבלות מהירות, אספקה מושהית.
- סיכונים רגולטוריים: ניטור עדכוני רשימות סנקציות.
- הפסדי שער חליפין: גידור באמצעות חוזים עתידיים.
היקף העבודה
- ביקורת ועיצוב: ניתוח דרישות עסקיות, בחירת תחום שיפוט, ארכיטקטורה.
- אינטגרציית KYC/AML: חיבור ספק, הגדרת רמות אימות.
- עיבוד תשלומים: אינטגרציית PSP, 3DS2, הגנת chargeback.
- פיתוח מנוע FX: צבירת ציטוטים, חישוב spread, אחסון היסטוריה.
- חוזים חכמים וארנקים: הטמעת ארנק חם/קר, יצירת HD.
- בנייה ופריסה: CI/CD, ניטור, לוחות מחוונים.
- תיעוד והדרכה: תיעוד API, runbook, הדרכת צוות.
- תמיכה לאחר השקה: חודשיים של תחזוקה חינם.
שלבי השקת פתרון On-Ramp
- אנליטיקה (1–2 שבועות): מחקר שוק, דרישות רגולטוריות, בחירת שותפים.
- עיצוב (2–3 שבועות): ארכיטקטורה, API, אבות טיפוס UI/UX.
- הטמעה (4–8 שבועות): פיתוח כל השכבות, כתיבת בדיקות.
- אינטגרציה ובדיקות (2–3 שבועות): QA, pentest, ביקורת חוזים חכמים.
- פריסה וניטור (שבוע): השקה, הגדרת התראות, בדיקות עומס.
מסגרת רגולטורית
ספק on-ramp חייב להחזיק:
- האיחוד האירופי: רישיון VASP או EMI.
- בריטניה: רישום FCA.
- ארה"ב: רישיון Money Transmitter בכל מדינה (או עבודה דרך שותף).
- גלובלית: סינון מול רשימות OFAC, האו"ם, האיחוד האירופי.
ללא מעמד רגולטורי, PSPs גדולים יסרבו להתחבר. חלופות הן אגרגטורים כמו MoonPay/Transak, אך הם גובים עמלות ומגבילים התאמה אישית.
מדדים וניטור
| מדד | יעד |
|---|---|
| שיעור המרה (ביקור → רכישה) | > 15% |
| זמן השלמה ממוצע | < 5 דקות |
| שיעור מעבר KYC | > 70% |
| שיעור Chargeback | < 0.5% |
| שיעור הצלחת תשלום | > 95% |
| Spread ממוצע | 1.5–2% |
המרה נמוכה היא לעתים קרובות תוצאה של KYC מורכב או בעיות באמצעי תשלום. בדיקות A/B לזרימה ופישוט טפסים הם נתיבי שיפור סטנדרטיים.
צרו קשר לביקורת טכנית של הפרויקט שלכם. הזמינו פיתוח שער on-ramp, ונכין הצעה תוך יומיים.







