אתם משיקים פלטפורמת קריפטו ורוצים להנפיק כרטיס חיוב שממיר BTC ל-USD שניות לפני התשלום. הבעיה: אינטגרציה עם ויזה/מאסטרקארד דורשת שלוש רמות—חבר ראשי (בנק עם חברות ברשת), מנהל תוכנית (Marqeta/Stripe Issuing), והפלטפורמה שלכם. חברות ישירה אורכת 12–24 חודשים ודורשת הון החל מ-2 מיליון דולר. נתיב ריאלי לסטארטאפ הוא עבודה דרך מנהל תוכנית שכבר יש לו חברות. אנו מתמחים בצד הטכני של אינטגרציית מפתח כזו: מבחירת שותף עיבוד ועד השקת מוצר הכרטיס.
הניסיון שלנו מראה שרוב פלטפורמות הקריפטו בוחרות ב-Marqeta כ-API להנפקת כרטיסים—זה הפתרון הגמיש ביותר עם תמיכה ב-JIT Funding. חלופה היא Stripe Issuing, אך היא דורשת רזרבה פיאט ממומנת מראש. אנו נעזור להעריך את הפרויקט שלכם ולבחור את הספק האופטימלי.
כדי להבין את הארכיטקטורה, בואו נפרק את המבנה:
Visa/Mastercard Network ↓
Principal Member Bank (BIN owner) ↓
Card Program Manager (Marqeta, Stripe Issuing, Galileo) ↓
Your Crypto Platform ↓
End Userחבר ראשי הוא בנק עם חברות ישירה בוויזה/מאסטרקארד, המנפיק טווחי BIN. מנהל תוכנית הוא המתווך הטכנולוגי, המספק APIs להנפקת כרטיסים ועיבוד אישורים, ומקבל על עצמו התחייבויות טכניות וחלקיות רגולטוריות. הפלטפורמה שלכם מטפלת בצד הקריפטו: אחסון נכסים, המרה, ממשק משתמש.
איך JIT Funding עובד עבור כרטיסי קריפטו
Marqeta היא מובילה ב-API להנפקת כרטיסים, בשימוש על ידי Cash App, DoorDash, Coinbase Card. היא פועלת כמנהלת תוכנית: אתם מנפיקים כרטיסים דרך ה-API שלהם, הם מעבדים אישורים ובאמצעות מנגנון Just-In-Time (JIT) funding מבקשים כספים מכם ברגע כל עסקה. זה הופך את Marqeta לבחירה הטובה ביותר עבור כרטיסי קריפטו לצרכנים בהשוואה ל-Stripe Issuing, הדורשת מימון מוקדם.
JIT (Just-In-Time) Funding הוא מנגנון שבו Marqeta לא מחזיקה את יתרת המשתמש אצלה. במקום זאת, בכל אישור כרטיס, Marqeta שולחת בקשת webhook ל-API שלכם, ואתם מגיבים באישור/דחייה ובסכום. זה מאפשר ליישם את הלוגיקה העסקית שלכם (בדיקת יתרת קריפטו, המרה) בזמן אמת.
// Ваш JIT Funding endpoint
app.post("/marqeta/jit-funding", async (req, res) => {
const { token, type, amount, currency_code, card_token } = req.body;
const userId = await getUserByCardToken(card_token);
const user = await getUser(userId);
const cryptoAmount = await convertUSDToCrypto(amount, user.preferredAsset);
const hasBalance = await reserveBalance(userId, cryptoAmount);
if (!hasBalance) {
return res.json({
jit_funding: {
token: token,
method: "pgfs.authorization",
user_token: userId,
amount: 0,
},
});
}
return res.json({
jit_funding: {
token: token,
method: "pgfs.authorization",
user_token: userId,
amount: amount,
currency_code: "USD",
},
});
});
Marqeta API — הנפקת כרטיסים
import Marqeta from "@marqeta/core-api";
const marqeta = new Marqeta({
applicationToken: process.env.MARQETA_APP_TOKEN,
accessToken: process.env.MARQETA_ACCESS_TOKEN,
baseUrl: "https://sandbox.marqeta.com/v3",
});
async function createMarqetaUser(userId: string, userData: UserData) {
const marqetaUser = await marqeta.users.create({
token: userId,
first_name: userData.firstName,
last_name: userData.lastName,
email: userData.email,
birth_date: userData.birthDate,
address1: userData.address,
city: userData.city,
state: userData.state,
country: userData.country,
postal_code: userData.postalCode,
});
return marqetaUser;
}
async function issueVirtualCard(userId: string) {
const card = await marqeta.cards.create({
user_token: userId,
card_product_token: process.env.CARD_PRODUCT_TOKEN,
});
const cardDetails = await marqeta.cards.getShowPAN(card.token);
return {
cardToken: card.token,
last4: card.last_four,
expiration: card.expiration,
pan: cardDetails.pan,
cvv2: cardDetails.cvv_number,
};
} מתי לבחור Stripe Issuing לעומת Marqeta
Stripe Issuing פשוטה יותר לאינטגרציה, זמינה ביותר מ-30 מדינות. היא לא תומכת במלואה ב-JIT Funding—היתרה חייבת להיות ממומנת מראש בחשבון Stripe, מה שדורש החזקת רזרבה פיאט אצל Stripe. זה מסבך אינטגרציית קריפטו. מתאימה לכרטיסי ניהול הוצאות B2B, כרטיסי חברה עם יתרת קריפטו. לא אופטימלית לכרטיסי חיוב קריפטו לצרכנים.
Marqeta מתאימה פי שניים לכרטיסים לצרכנים מאשר Stripe Issuing בזכות JIT Funding. אם המוצר שלכם הוא כרטיס חיוב קריפטו למשתמשים, בחרו ב-Marqeta. עבור ניהול הוצאות B2B, Stripe Issuing.
import Stripe from "stripe";
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);
const card = await stripe.issuing.cards.create({
cardholder: cardholderId,
currency: "usd",
type: "virtual",
status: "active",
spending_controls: {
spending_limits: [
{
amount: 50000,
interval: "daily",
},
],
},
}); | פרמטר | Marqeta | Stripe Issuing |
|---|---|---|
| JIT Funding | כן | לא (ממומן מראש) |
| כרטיסי קריפטו | מצוין | מוגבל (B2B) |
| API | עוצמתי, גמיש | פשוט יותר, פחות אפשרויות |
| גיאוגרפיה | גלובלי | 30+ מדינות |
| עלות הנפקת כרטיס | ~$2 | ~$3 |
Marqeta גובה כ-$2 לכל הנפקת כרטיס וירטואלי ו-$0.10 לכל אישור. בנפח של 10,000 כרטיסים בחודש, החיסכון ברזרבה פיאט יכול להגיע ל-$50,000 בשנה.
אישורים, סילוק וסיכון מטבע
חשוב להבין את ההבדל: אישור—בדיקה והחזקת כספים, מתרחש מיידית, נקודת הקצה JIT שלכם חייבת להגיב תוך 2-3 שניות. סילוק/התחשבנות—חיוב בפועל, מתרחש 1-3 ימי עסקים לאחר מכן. החזר/ביטול—ביטול עסקה, עשוי להגיע ימים לאחר האישור.
app.post("/marqeta/webhook", async (req, res) => {
const event = req.body;
switch (event.type) {
case "authorization":
await holdCrypto(event.card_token, event.amount);
break;
case "authorization.clearing":
await settleTransaction(event.transaction.token, event.amount);
break;
case "authorization.reversal":
await releaseHold(event.transaction.token);
break;
case "refund":
await refundCrypto(event.card_token, event.amount);
break;
}
res.status(200).send("OK");
}); איך לנהל סיכון מטבע עם JIT Funding?
כאשר מחזיקים סכום USD בשווה ערך קריפטו, קיים סיכון לשינוי שער בין האישור (T+0) לסילוק (T+1..3). שלוש גישות:
- Stablecoin כברירת מחדל (USDC/USDT). אין סיכון מטבע. משתמשים מחזיקים stablecoins, התשלום פשוט. חיסרון: אין פוטנציאל עליית ערך קריפטו.
- הזמנת יתר. באישור, הזמינו סכום עם מרווח (+2-3%). בסילוק, העודף מוחזר. פתרון פשוט לנפחים קטנים.
- גידור FX. באישור, קבעו שער דרך נגזרים או מסחר מהיר ב-CEX. מורכב יותר, יקר, אבל מדויק. נחוץ לנפחים גדולים או נכסים תנודתיים.
PCI DSS ונתיב רגולטורי
טיפול במספרי כרטיסים (PAN) דורש הסמכת PCI DSS. רמות: SAQ A—אם אתם לא מעבדים PAN ישירות (Marqeta מאחסנת אותם, אתם משתמשים בטוקנים), דרישות מינימליות; SAQ D—אם אתם מאחסנים/מעבדים PAN, ביקורת מלאה, יקרה. אנו ממליצים להשתמש בטוקניזציה של כרטיסים (Marqeta Token Vault)—המערכת שלכם עובדת רק עם card_token, PAN אף פעם לא עובר דרך השרתים שלכם.
| תחום שיפוט | דרישה | ציר זמן | הערות |
|---|---|---|---|
| EU | רישיון EMI (ליטא) | 6-12 חודשים | דורש פספורטציה, שותפות עם מנפיק |
| בריטניה | FCA EMI | 9-18 חודשים | דרישות רגולטוריות גבוהות |
| ארה"ב | MTL בכל מדינה | 12-24 חודשים | יקר, חלופה: שותפות עם בנק |
| סינגפור | MAS Major Payment Institution | 12-18 חודשים | דורש נוכחות מקומית |
הנתיב המינימלי ל-EU: רישום בליטא + פספורטציה. לשאר העולם—שותפות עם מנפיק מורשה כבר.
תהליך אינטגרציה שלב אחר שלב
- אנליטיקה ובחירת ספק: הערכת נפח, בחירת Marqeta או Stripe Issuing.
- עיצוב ארכיטקטורה: JIT Funding, תוכנית המרה, אחסון מפתחות.
- אינטגרציית API: הנפקת כרטיסים, webhooks, 3DS.
- אינטגרציית אחסון קריפטו: ארנק, המרה, הזמנה.
- KYC/AML: אינטגרציה עם שירותי אימות.
- בדיקות: תרחישי אישור, סילוק, החזר.
- ציות: PCI DSS, רישוי.
מה כלול באינטגרציית מפתח
- ייעוץ לבחירת ספק הנפקת כרטיסים (Marqeta/Stripe Issuing)
- הקמת נקודת קצה JIT Funding עם בדיקת יתרת קריפטו
- אינטגרציית API להנפקת כרטיסים וירטואליים ופיזיים
- הטמעת 3D Secure (3DS) להגנת עסקאות
- אינטגרציית העלאת מסמכי KYC/AML
- סיוע PCI DSS: המלצות טוקניזציה, השלמת SAQ
- בדיקות עומס וניטור
- תיעוד והדרכת צוות
צירי זמן ועלות משוערת
- אינטגרציית Marqeta (JIT + הנפקת כרטיסים + webhooks): 4-6 שבועות
- אינטגרציית 3DS: +2-3 שבועות
- אחסון קריפטו + המרה: במקביל, 4-8 שבועות
- KYC/AML: 2-4 שבועות
- אפליקציה ניידת: 8-12 שבועות
- ציות + בדיקות: 4-6 שבועות
- סה"כ (טכני): 5-7 חודשים
השקעה באינטגרציה: מ-$50,000 עד $200,000 תלוי במורכבות המחסנית והנפח. חיסכון בתשתית בזכות JIT Funding: עד 40% בהשוואה להחזקת רזרבה פיאט משלכם.
קבלו ייעוץ לפרויקט שלכם—נעריך את הארכיטקטורה וצירי הזמן תוך 1-2 ימים.







