add_filter('wc_stripe_payment_intent_args', 'eduardweb_stripe_connect_split', 10, 3);
function eduardweb_stripe_connect_split($args, $order, $prepared_source) {
// Extragem vendorul asociat produselor din comandă
$vendor_id = get_post_meta($order->get_id(), '_vendor_id', true);
$stripe_account_id = get_user_meta($vendor_id, '_stripe_connect_id', true);
if ($stripe_account_id) {
$total_cents = round($order->get_total() * 100);
// Comision platformă: 10%
$application_fee_cents = round($total_cents * 0.10);
$args['application_fee_amount'] = $application_fee_cents;
$args['transfer_data'] = [
'destination' => $stripe_account_id,
];
}
return $args;
}Salutare. Am lucrat recent la un marketplace destul de nișat pe WooCommerce. Clientul avea vreo 150 de vendori activi și voia ca banii să se împartă automat la checkout: X% la vendor, restul (comisionul de platformă) la el.
Dacă ai făcut asta vreodată, știi că e un câmp minat. Nu neapărat din punct de vedere tehnic, ci legislativ și contabil. În România, dacă încasezi tu toți banii în contul tău și apoi îi trimiți manual către vendori la sfârșit de lună, devii legal intermediar financiar. Ai nevoie de licență de la BNR și intri în vizorul KYC foarte dur. Așa că Stripe Connect e cam singura scăpare curată: cumpărătorul plătește, Stripe împarte banii direct în backend, iar platforma își ia doar comisionul fără să atingă fondurile vendorului.
Express vs Custom: Capcana pe care am evitat-o la limită
La început, am zis că mergem pe Stripe Express. E super rapid de implementat, Stripe se ocupă complet de onboarding (KYC, buletine, conturi bancare). Dar când am făcut matematica pentru cei 150 de vendori, ne-am blocat. Stripe cere 2 dolari pe lună pentru fiecare cont Express activ, plus 0.25% din volumul transferat. La un volum de tranzacții mic spre mediu, taxa asta îți mănâncă toată marja de profit a platformei.
Așa că am strâns din dinți și am mers pe Stripe Custom. Asta înseamnă că noi am construit UI-ul pentru onboarding în dashboard-ul de WooCommerce și am colectat datele prin API. Am economisit cam 300 de euro pe lună doar din taxele de administrare a conturilor, dar am băgat vreo 3 săptămâni de development în plus pentru formularele de KYC, încărcarea documentelor și tratarea erorilor de validare Stripe.
Merge excelent pentru că ai control total pe UX, dar e de evitat dacă nu ai un om de legal care să-ți valideze workflow-ul de onboarding.
Cum arată codul de split în WooCommerce
Folosind hook-urile din pluginul oficial de Stripe, trebuie să interceptezi crearea Payment Intent-ului înainte ca tranzacția să fie trimisă la procesare. Ideea e simplă: calculezi comisionul tău (application fee) în cenți și trimiți restul către contul conectat al vendorului (destination).
În codul atașat am mapat ID-ul vendorului din WooCommerce cu ID-ul lui de Stripe Connect (acct_123...). Comisionul de platformă e setat fix la 10%, iar restul de 90% pleacă direct în portofelul vendorului.
Coșmarul fiscal: TVA-ul și Facturarea
Aici se rupe filmul pentru mulți developperi români. În momentul în care faci split payment, tu (platforma) emiți factură doar pe comisionul tău (cei 10%). Vendorul trebuie să emită factură către clientul final pe întreaga sumă a produsului vândut.
Am pățit ca unii vendori să nu înțeleagă asta și să ne ceară nouă factură pe toată valoarea comenzii. Soluția? Am scris un flux custom care generează automat două PDF-uri la finalizarea comenzii: o factură de la vendor la client (folosind datele fiscale ale vendorului din profilul său) și o factură de la platformă la vendor pentru comisionul de 10%.
Voi cum ați rezolvat reconcilierea asta contabilă la proiectele de tip marketplace din România? Ați mers pe Stripe Connect sau ați riscat cu procesatori locali și plăți manuale la sfârșit de lună?