Marketplace'ler İçin Kripto Ödemeleri: Tek Hesap, Her Satıcının Cüzdanı
Bir marketplace işletiyorsanız (veya birden fazla satıcının ödeme aldığı herhangi bir platform yönetiyorsanız), kripto belirli bir operasyonel sorun yaratır: her satıcının kendi ödeme varış adresine ihtiyacı vardır. Çoğu ödeme işlemcisi, satıcı başına ayrı bir merchant hesabı açmanızı, ayrı API key’ler yönetmenizi ve hepsinin mutabakatını ayrı ayrı yapmanızı ister.
MutoPay farklı bir model kullanır. Tek merchant hesabı, tek API key ve satıcı başına bir channel. Her channel, ödemeleri ilgili satıcının cüzdanına, tercih ettiği chain üzerinde, tercih ettiği token ile yönlendirir. Her şeyi tek bir API üzerinden yönetirsiniz.
Marketplace işletmiyor musunuz? Yalnızca kendi uygulamanız veya siteniz için ödeme kabul ediyorsanız master key gerekmez. Dashboard’da bir channel oluşturun (Settings → Channels),
ep_…API key’ini ve webhook secret’ını kopyalayın, kurulum tamamdır. En sade kurulum için How to accept crypto payments yazısına bakın. Aşağıdaki master key yalnızca backend’iniz üçüncü taraflar için programatik olarak channel oluşturduğunda gerekir.
Model
Channel, hesabınız altında izole bir ödeme hattıdır. Kendine ait şu alanları vardır:
- API key (o satıcıya ait ödemeleri oluşturmak için)
- Settlement destination (chain, token, wallet address)
- Webhook URL (her satıcının backend’inin bağımsız olarak bilgilendirilebilmesi için)
Master API key, channel’ları programatik olarak oluşturmanızı ve yapılandırmanızı sağlar. Browser login gerekmez. Backend’iniz satıcıları otomatik olarak hazırlar.
Sonuç: alıcı Vendor A’nın storefront’unda ödeme yaptığında fonlar doğrudan Vendor A’nın cüzdanına gider. Vendor B’nin ödemeleri Vendor B’nin cüzdanına gider. Siz fonlara hiç dokunmazsınız.
Kurulum: satıcı başına üç API çağrısı
Platformunuza yeni bir satıcı kaydolup cüzdan adresini verdiğinde backend’iniz üç çağrı yapar:
1. Channel oluşturun
curl -X POST https://mutopay.com/api/merchant/channels \
-H "Authorization: Bearer msk_<your_master_key>" \
-H "Content-Type: application/json" \
-d '{
"name": "Vendor: Acme Widgets",
"webhook_url": "https://acme-widgets.com/webhooks/mutopay"
}'
Yanıt channel ID’yi ve bir channel API key’i (ep_...) içerir. İkisini de saklayın: key yalnızca bir kez gösterilir.
2. Satıcının settlement destination’ını ayarlayın
curl -X PUT https://mutopay.com/api/merchant/channels/ch_abc123/settlement \
-H "Authorization: Bearer msk_<your_master_key>" \
-H "Content-Type: application/json" \
-d '{
"preferred_token": "USDC",
"preferred_chain_id": "137",
"wallet_address": "0xVendorWalletAddress..."
}'
Artık bu channel üzerinden oluşturulan tüm ödemeler, Polygon üzerinde USDC olarak o satıcının cüzdanına settle edilir.
3. Channel’ın API key’i ile ödeme oluşturun
curl -X POST https://mutopay.com/api/payments \
-H "X-API-Key: ep_<channel_api_key>" \
-H "Content-Type: application/json" \
-d '{
"amount": 49.99,
"currency": "USD",
"external_id": "order_5821",
"description": "Acme Widgets: Order #5821"
}'
Ödeme otomatik olarak channel’a bağlanır. Alıcı ödeme sayfasını görür, elindeki herhangi bir token ile ödeme yapar ve fonlar satıcının cüzdanına USDC olarak ulaşır.
Bu size ne sağlar
Satıcı başına hesap yok. Her satıcıyı ayrı bir merchant olarak kaydetmezsiniz. Tek hesap, N channel.
Custody yok. Fonlar doğrudan satıcının cüzdanına gider. Kriptoyu tutmaz, escrow’a almaz veya ileri aktarmazsınız. Bu, para transferi etrafındaki regülasyon karmaşıklığının önemli bir kısmını devre dışı bırakır.
Bağımsız key’ler. Bir satıcının entegrasyonu ele geçirilirse yalnızca o channel key’ini iptal edersiniz. Başka hiçbir şey etkilenmez.
Satıcı başına webhook’lar. Her channel kendi webhook URL’sine sahip olabilir. Vendor A’nın backend’i Vendor A’nın ödemeleri hakkında bilgilendirilir. Alternatif olarak tüm webhook’ları platformunuzun tek endpoint’ine yönlendirip payload içindeki channel_id ile route edebilirsiniz.
Farklı chain ve token kombinasyonları. Vendor A, Polygon üzerinde USDC ile settle eder. Vendor B, Arbitrum üzerinde USDT ister. Vendor C, TON cüzdanını tercih eder. Her channel bağımsızdır.
Satıcı onboarding’ini otomatikleştirme
Tipik akış şöyledir:
- Satıcı platformunuza kaydolur, cüzdan adresini ve tercih ettiği chain’i girer
- Backend’iniz bir channel oluşturmak için
POST /api/merchant/channelsçağırır - Backend’iniz satıcının cüzdan bilgileriyle
PUT /api/merchant/channels/:id/settlementçağırır - Channel ID’yi ve API key’i veritabanınızda o satıcıyla ilişkilendirerek saklarsınız
- Bu satıcı için sipariş oluştururken
X-API-Keyiçinde satıcının channel API key’ini kullanırsınız
Bir satıcıyı platformdan çıkarmak için:
curl -X POST https://mutopay.com/api/merchant/channels/ch_abc123/revoke \
-H "Authorization: Bearer msk_<your_master_key>"
Satıcının API key’i anında çalışmayı durdurur. Mevcut tamamlanmış ödemeler etkilenmez.
MutoPay neleri yapmaz
Beklentiyi netleştirelim: MutoPay ödemeleri bir hedef cüzdana yönlendirir. Tek bir ödemeyi birden fazla cüzdana bölmez, fonları escrow’da tutmaz veya bir komisyon yapısını zorunlu kılmaz. Marketplace’iniz komisyon alıyorsa bunu uygulama mantığınızda yönetirsiniz: ödeme oluşturmadan önce tutarı ayarlayarak veya kendi cüzdanınıza settle edip dağıtımı ayrıca yaparak.
Kimler için uygun
- Çok satıcılı marketplace’ler (el yapımı ürünler, dijital ürünler, hizmetler)
- Alt merchant kabul eden SaaS platformları (Shopify tarzı, white-label storefront’lar)
- Birden fazla müşteri adına ödeme yöneten ajanslar
- Her satıcının ayrı cüzdanı olduğu WooCommerce multi-vendor kurulumları (Dokan, WCFM)
- Her freelancer’ın ödemeleri doğrudan aldığı freelance platformları
Başlarken
- MutoPay dashboard hesabınıza giriş yapın
- Settings bölümüne gidip bir master API key oluşturun
- Programatik olarak channel oluşturmaya başlamak için API docs sayfasını kullanın
Tam channel management API (create, update settlement, rotate keys, revoke, test webhooks) mutopay.com/api/docs adresinde belgelenmiştir.