Create marketplace payment link

Creates a payment link on a connected seller's account, with your marketplace commission attached. The buyer pays the seller and sees the seller's name. Mamo moves your commission from the seller's balance to yours; see Seller-led marketplace for how the commission is calculated and when it moves.

The seller must have accepted your connection request. Send their seller.identifier from List marketplace connections as seller_identifier.

The body takes the same fields as Create payment link (title, amount, return_url, external_id and so on), plus seller_identifier. payouts_share works differently from a recipient split: it sets your commission, you are always its recipient, and recipient_id and reason are ignored. Send at most one of payouts_share.percentage_to_recipient and payouts_share.amount_to_recipient. Omit payouts_share for a link with no commission.

The link belongs to the seller, so it is listed on the seller's account, not yours. The seller can't change its payouts_share: an Update payment link call that sends payouts_share or payout_shares returns 422 with The payouts share of a marketplace link can't be changed.

Errors

  • 403 FORBIDDEN_ACCESS: Mamo hasn't enabled the seller-led marketplace model on your account.
  • 404 RECORD_NOT_FOUND: you have no accepted connection with this seller_identifier.
  • 422 VALIDATION_ERROR: seller_identifier missing, both commission fields sent, a percentage outside 0 to 100, or an amount of 0 or less. The error texts are in errors, and messages is ["See errors"].
  • 422 VALIDATION_ERROR for an invalid payment link field, such as a missing title or an unsupported currency. These are checked against the seller's account after the commission, and the error texts are in messages, with no errors key.
Body Params
Responses

Language
Credentials
Header
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
// (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); })();