Filter the catalog APM method filters Reset filters 0/28 RegionAsia Pacific (APAC)EuropeLatin AmericaUSA CategoryAccount-to-account (A2A)Digital walletsCash-basedBuy now, pay laterCrypto-basedCarrier billing Payment flowDirectRedirect Integration typeAPIPayment FormPayment PagePayment Link Billing logics
One-timeYesNo
1-clickYesNo
RecurringYesNo
UnscheduledYesNo
Operations
RefundYesNo
Partial refundsYesNo
Multiple partial refundsYesNo
ChargebackYesNo
AlipayAlipay BizumBizum Blik One-timeBlik One-time Blik Pay LaterBlik Pay Later Blik RecurringBlik Recurring BoletoBoleto Cash App PayCash App Pay EfectyEfecty GCashGCash iDEALiDEAL KlarnaKlarna MB WAYMB WAY Mercado PagoMercado Pago MobilePayMobilePay MultibancoMultibanco OXXOOXXO Pay by BankPay by Bank PayPalPayPal PixPix Przelewy24Przelewy24 PSEPSE SencillitoSencillito ServipagServipag SmartPixSmartPix UPI CollectUPI Collect UPI IntentUPI Intent WebpayWebpay WeChat PayWeChat Pay No methods match the selected filters. Adjust badges and Yes/No switches above.

(function () { function cleanText(value) { return (value || '').replace(/\s+/g, ' ').trim().toLowerCase(); } var legend = document.getElementById('apm-catalog-legend-filter'); var grid = document.getElementById('apm-catalog-grid'); if (!legend || !grid) return; var tiles = Array.from(grid.querySelectorAll('.apm-catalog-tile')); tiles.forEach(function (tile) { tile.setAttribute('target', '_blank'); tile.setAttribute('rel', 'noopener noreferrer'); }); var counter = document.getElementById('apm-catalog-counter'); var resetBtn = document.getElementById('apm-catalog-reset-filters'); var emptyState = document.getElementById('apm-catalog-empty'); var chips = Array.from(legend.querySelectorAll('[data-filter-group][data-filter-value]')); var boolToggles = Array.from(legend.querySelectorAll('.apm-bool-toggle')); if ((!chips.length && !boolToggles.length) || !tiles.length) return; var chipGroups = [ 'region', 'category', 'payment-flow', 'integration-type' ]; var boolGroups = [ 'one-time', 'one-click', 'recurring', 'unscheduled-mit', 'refund', 'partial-refunds', 'multiple-partial-refunds', 'chargeback' ]; var selected = {}; var allChipValues = {}; chipGroups.forEach(function (g) { selected[g] = new Set(); allChipValues[g] = new Set(); }); var boolSelection = {}; var defaultBoolSelection = {}; var boolFilterStrict = {}; boolToggles.forEach(function (toggle) { var group = cleanText(toggle.dataset.filterGroup); if (!group) return; var active = toggle.querySelector('.apm-bool-toggle__btn.is-active'); var value = active ? cleanText(active.dataset.value) : 'yes'; boolSelection[group] = value; defaultBoolSelection[group] = value; boolFilterStrict[group] = false; }); var chipMeta = chips.map(function (chip) { var group = cleanText(chip.dataset.filterGroup); var value = cleanText(chip.dataset.filterValue); if (group && value && allChipValues[group]) { allChipValues[group].add(value); } return { chip: chip, group: group, value: value }; }).filter(function (meta) { return meta.group && meta.value && selected[meta.group]; }); function datasetKey(group) { var map = { 'payment-flow': 'paymentFlow', 'integration-type': 'integrationType', 'one-time': 'oneTime', 'one-click': 'oneClick', 'unscheduled-mit': 'unscheduledMit', 'partial-refunds': 'partialRefunds', 'multiple-partial-refunds': 'multiplePartialRefunds' }; return map[group] || group; } function activeChipValues(group) { if (!selected[group] || !selected[group].size) { return allChipValues[group] || new Set(); } return selected[group]; } function setChipState(meta, isActive, isDisabled) { var chip = meta.chip; chip.dataset.active = isActive ? '1' : '0'; chip.dataset.disabled = isDisabled ? '1' : '0'; chip.classList.toggle('is-filter-on', isActive && !isDisabled); chip.classList.toggle('is-filter-off', !isActive && !isDisabled); chip.classList.remove('is-filter-hover', 'is-filter-focus'); chip.style.transform = ''; chip.style.outline = ''; chip.setAttribute('aria-pressed', isActive ? 'true' : 'false'); chip.setAttribute('aria-disabled', isDisabled ? 'true' : 'false'); } function applyHoverState(meta, isHovered, isFocus) { var chip = meta.chip; if (chip.dataset.disabled === '1') return; chip.classList.toggle('is-filter-hover', isHovered); chip.classList.toggle('is-filter-focus', isFocus && isHovered); if (!isHovered) { chip.classList.remove('is-filter-focus'); chip.style.transform = ''; chip.style.outline = ''; } } function tileMatches(tile) { var i; for (i = 0; i < chipGroups.length; i++) { var group = chipGroups[i]; var active = activeChipValues(group); if (!active.size) continue; if (active.size === allChipValues[group].size) continue; var raw = cleanText(tile.dataset[datasetKey(group)] || ''); var parts = raw.split(/\s+/).filter(Boolean); var hit = false; active.forEach(function (value) { if (parts.indexOf(value) !== -1) hit = true; }); if (!hit) return false; } for (i = 0; i < boolGroups.length; i++) { var boolGroup = boolGroups[i]; if (!boolFilterStrict[boolGroup]) continue; var expected = boolSelection[boolGroup]; if (!expected) continue; var actual = cleanText(tile.dataset[datasetKey(boolGroup)] || ''); if (actual !== expected) return false; } return true; } function updateCounter(matchedTotal, totalMethods) { if (counter) { counter.textContent = matchedTotal + '/' + totalMethods; counter.title = matchedTotal + ' of ' + totalMethods + ' methods match filters'; } if (emptyState) emptyState.style.display = matchedTotal === 0 ? 'block' : 'none'; scheduleChipWidthSync(); } function refreshChipStates() { chipMeta.forEach(function (meta) { var active = activeChipValues(meta.group); var isActive = !active.size || active.has(meta.value); setChipState(meta, isActive, false); }); } function toggleChipFilter(group, value) { if (!selected[group]) return; if (selected[group].has(value)) { if (selected[group].size <= 1) return; selected[group].delete(value); } else { selected[group].add(value); } applyFilter(); } function setTileMatchState(tile, matches) { tile.classList.toggle('is-match', matches); tile.classList.toggle('is-inactive', !matches); tile.setAttribute('aria-disabled', matches ? 'false' : 'true'); if (matches) { tile.removeAttribute('tabindex'); } else { tile.setAttribute('tabindex', '-1'); } } var chipMeasureProbe = null; function measureChipTextWidth(chip) { if (!chipMeasureProbe) { chipMeasureProbe = document.createElement('span'); chipMeasureProbe.className = 'apm-filter-chip apm-overview-pill'; chipMeasureProbe.setAttribute('aria-hidden', 'true'); chipMeasureProbe.style.position = 'absolute'; chipMeasureProbe.style.left = '-9999px'; chipMeasureProbe.style.top = '0'; chipMeasureProbe.style.visibility = 'hidden'; chipMeasureProbe.style.pointerEvents = 'none'; chipMeasureProbe.style.whiteSpace = 'nowrap'; chipMeasureProbe.style.width = 'auto'; chipMeasureProbe.style.maxWidth = 'none'; chipMeasureProbe.style.overflow = 'visible'; legend.appendChild(chipMeasureProbe); } var cs = window.getComputedStyle(chip); chipMeasureProbe.className = chip.className; chipMeasureProbe.style.cssText = [ 'position:absolute', 'left:-9999px', 'top:0', 'visibility:hidden', 'pointer-events:none', 'white-space:nowrap', 'width:auto', 'max-width:none', 'min-width:0', 'overflow:visible', 'box-sizing:border-box', 'font:' + cs.font, 'padding:' + cs.padding, 'border:' + cs.border, 'border-radius:' + cs.borderRadius, 'letter-spacing:' + cs.letterSpacing ].join(';'); chipMeasureProbe.textContent = (chip.textContent || '').replace(/\s+/g, ' ').trim(); return Math.ceil(chipMeasureProbe.getBoundingClientRect().width); } function highlightChipAreaWidth(highlight, row) { if (!highlight) return 0; var rowStyle = row ? getComputedStyle(row) : null; var rowChrome = 0; if (rowStyle) { rowChrome += (parseFloat(rowStyle.paddingLeft) || 0) + (parseFloat(rowStyle.paddingRight) || 0); rowChrome += (parseFloat(rowStyle.borderLeftWidth) || 0) + (parseFloat(rowStyle.borderRightWidth) || 0); } return Math.max(0, highlight.clientWidth - rowChrome); } function measureAllChipTextWidths(chips) { var globalMax = 0; chips.forEach(function (chip) { globalMax = Math.max(globalMax, measureChipTextWidth(chip)); }); return globalMax; } function applyChipWidth(chips, widthPx) { var px = widthPx + 'px'; chips.forEach(function (chip) { chip.style.width = px; chip.style.minWidth = px; chip.style.maxWidth = px; chip.classList.add('apm-catalog-chip-sized'); }); } function clearChipSizing(chips) { chips.forEach(function (chip) { chip.classList.remove('apm-catalog-chip-sized'); chip.style.width = ''; chip.style.minWidth = ''; chip.style.maxWidth = ''; }); } function setChipDensityMode(mode) { legend.classList.remove('apm-catalog-chips-compact', 'apm-catalog-chips-tight', 'apm-catalog-chips-micro'); if (mode === 'compact') legend.classList.add('apm-catalog-chips-compact'); if (mode === 'tight') { legend.classList.add('apm-catalog-chips-compact', 'apm-catalog-chips-tight'); } if (mode === 'micro') { legend.classList.add('apm-catalog-chips-compact', 'apm-catalog-chips-tight', 'apm-catalog-chips-micro'); } } function rowFitsChipWidth(row, chipWidth) { var rowChips = row.querySelectorAll('.apm-filter-chip'); if (!rowChips.length) return true; var highlight = row.closest('.apm-catalog-filter-highlight'); var innerW = highlight ? highlightChipAreaWidth(highlight, row) : 0; if (!innerW) return true; return rowChipsTotalWidth(row, chipWidth, rowChips.length) <= innerW; } function resolveGlobalChipWidth(allChips, rows) { var modes = ['', 'compact', 'tight', 'micro']; var chosenMode = 'micro'; var globalWidth = 0; var i; var j; for (i = 0; i < modes.length; i++) { setChipDensityMode(modes[i]); globalWidth = Math.max(52, measureAllChipTextWidths(allChips)); if (!globalWidth) return { width: 0, mode: '' }; chosenMode = modes[i]; var allFit = true; for (j = 0; j < rows.length; j++) { if (!rowFitsChipWidth(rows[j], globalWidth)) { allFit = false; break; } } if (allFit || i === modes.length - 1) break; } return { width: globalWidth, mode: chosenMode }; } function rowChipsTotalWidth(row, chipWidth, chipCount) { if (!chipCount) return 0; var gap = parseFloat(getComputedStyle(row).columnGap || getComputedStyle(row).gap) || 0; return chipWidth * chipCount + gap * Math.max(0, chipCount - 1); } function syncChipRowWidths() { var rows = Array.from(legend.querySelectorAll( '.apm-catalog-filter-highlight .legend-chip-row, .apm-catalog-filter-highlight .apm-overview-highlight__pills' )); if (!rows.length) return; var allChips = Array.from(legend.querySelectorAll('.apm-catalog-filter-highlight .apm-filter-chip')); legend.classList.remove('apm-catalog-chips-sized'); legend.style.removeProperty('--apm-catalog-chip-w'); clearChipSizing(allChips); rows.forEach(function (row) { row.classList.remove('apm-catalog-chip-row--wrap'); }); var resolved = resolveGlobalChipWidth(allChips, rows); if (!resolved.width) return; setChipDensityMode(resolved.mode); var globalWidth = Math.max(52, measureAllChipTextWidths(allChips)); legend.style.setProperty('--apm-catalog-chip-w', globalWidth + 'px'); legend.classList.add('apm-catalog-chips-sized'); applyChipWidth(allChips, globalWidth); rows.forEach(function (row) { if (!rowFitsChipWidth(row, globalWidth)) { row.classList.add('apm-catalog-chip-row--wrap'); } }); } var syncChipWidthsRaf = 0; function scheduleChipWidthSync() { if (syncChipWidthsRaf) cancelAnimationFrame(syncChipWidthsRaf); syncChipWidthsRaf = requestAnimationFrame(function () { syncChipRowWidths(); requestAnimationFrame(function () { syncChipWidthsRaf = 0; syncChipRowWidths(); }); }); } var resizeTimer = 0; window.addEventListener('resize', function () { clearTimeout(resizeTimer); resizeTimer = setTimeout(scheduleChipWidthSync, 120); }); if (document.fonts && document.fonts.ready) { document.fonts.ready.then(scheduleChipWidthSync); } function applyFilter() { refreshChipStates(); var matched = 0; tiles.forEach(function (tile) { var matches = tileMatches(tile); setTileMatchState(tile, matches); if (matches) matched += 1; }); updateCounter(matched, tiles.length); } function setBoolFilter(group, value) { if (!group) return; boolSelection[group] = value; var toggle = legend.querySelector('.apm-bool-toggle[data-filter-group="' + group + '"]'); if (!toggle) return; Array.from(toggle.querySelectorAll('.apm-bool-toggle__btn')).forEach(function (btn) { var on = cleanText(btn.dataset.value) === value; btn.classList.toggle('is-active', on); btn.setAttribute('aria-pressed', on ? 'true' : 'false'); }); } chipMeta.forEach(function (meta) { selected[meta.group].add(meta.value); meta.chip.setAttribute('role', 'button'); meta.chip.setAttribute('tabindex', '0'); meta.chip.setAttribute('title', 'Click to toggle filter'); function toggleChip() { toggleChipFilter(meta.group, meta.value); } meta.chip.addEventListener('click', toggleChip); meta.chip.addEventListener('keydown', function (event) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); toggleChip(); } }); meta.chip.addEventListener('mouseenter', function () { applyHoverState(meta, true, false); }); meta.chip.addEventListener('mouseleave', function () { applyHoverState(meta, false, false); }); meta.chip.addEventListener('focus', function () { applyHoverState(meta, true, true); }); meta.chip.addEventListener('blur', function () { applyHoverState(meta, false, false); }); }); boolToggles.forEach(function (toggle) { var group = cleanText(toggle.dataset.filterGroup); if (!group) return; var buttons = Array.from(toggle.querySelectorAll('.apm-bool-toggle__btn')); function setActive(btn) { boolFilterStrict[group] = true; setBoolFilter(group, cleanText(btn.dataset.value)); applyFilter(); } buttons.forEach(function (btn) { btn.addEventListener('click', function () { setActive(btn); }); }); }); tiles.forEach(function (tile) { tile.addEventListener('click', function (event) { if (tile.classList.contains('is-inactive')) { event.preventDefault(); } }); }); if (resetBtn) { resetBtn.addEventListener('click', function () { chipMeta.forEach(function (meta) { selected[meta.group].add(meta.value); }); boolGroups.forEach(function (group) { boolFilterStrict[group] = false; setBoolFilter(group, defaultBoolSelection[group] || 'yes'); }); applyFilter(); }); } applyFilter(); scheduleChipWidthSync(); })();