Added

Seller-led marketplace: list connections and create payment links for sellers

A marketplace can now create payment links for sellers who have their own Mamo accounts, and earn a commission on each payment. This needs the seller-led marketplace model enabled on your account; see Seller-led marketplace.

  • GET /marketplace_connections lists your seller connections, with an optional status filter (pending or accepted). An accepted connection returns the seller's identifier and business_name.
  • POST /marketplace/links creates a payment link on a connected seller's account. It takes seller_identifier, the Create payment link fields, and your commission in payouts_share (percentage_to_recipient or amount_to_recipient, recipient_pays_fees, release_date).
  • POST /marketplace_connections is now documented. It emails the seller's admins a request to connect. It now returns 403 FORBIDDEN_ACCESS until the seller-led marketplace model is enabled on your account, and new connection identifiers start with CONN-.
  • PATCH /links/{id} returns 422 VALIDATION_ERROR when it sends payouts_share or payout_shares for a link a marketplace created.
// (the JavaScript box only runs on Enterprise; we are on Pro). Re-paste it after editing. (function () { var WORD = /\b(recipe)(s?)\b/gi; var SKIP = { CODE: 1, PRE: 1, SCRIPT: 1, STYLE: 1, TEXTAREA: 1, INPUT: 1 }; function relabel(match, word, plural) { var out = 'use case' + (plural ? 's' : ''); if (word === word.toUpperCase()) return out.toUpperCase(); return word[0] === 'R' ? 'U' + out.slice(1) : out; } function fix(root) { var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, { acceptNode: function (node) { for (var el = node.parentElement; el; el = el.parentElement) { if (SKIP[el.tagName] || el.isContentEditable) return NodeFilter.FILTER_REJECT; } WORD.lastIndex = 0; return WORD.test(node.nodeValue) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT; }, }); var nodes = []; while (walker.nextNode()) nodes.push(walker.currentNode); nodes.forEach(function (node) { node.nodeValue = node.nodeValue.replace(WORD, relabel); }); WORD.lastIndex = 0; if (WORD.test(document.title)) document.title = document.title.replace(WORD, relabel); } function start() { fix(document.body); // ReadMe renders client-side; relabel whatever it adds or changes later. new MutationObserver(function (mutations) { mutations.forEach(function (m) { if (m.type === 'characterData') fix(m.target.parentNode || document.body); m.addedNodes.forEach(function (n) { if (n.nodeType === 1 || n.nodeType === 3) fix(n.nodeType === 1 ? n : n.parentNode || document.body); }); }); }).observe(document.body, { childList: true, subtree: true, characterData: true }); } if (document.body) start(); else document.addEventListener('DOMContentLoaded', start); })();