Bowmark AIdocs

PayPal

PayPal's public, signed-out surfaces: the published consumer and merchant fee schedules, the fee on one concrete personal (friends-and-family)…

PayPal's public, signed-out surfaces: the published consumer and merchant fee schedules, the fee on one concrete personal (friends-and-family) transaction, the spread PayPal adds on a currency conversion, Pay Later instalment plans, PayPal.Me handle lookup, Help Center search and articles, the binding policy documents, PayPal Shopping cashback offers, crypto prices, and invoice payer-view reads. Three functions callable today — estimateFee, getFees, getCurrencyConversionQuote.

Domain: paypal.com

Also known as: PayPal, PayPal US, paypal.com, PayPal.Me, PayPal Holdings

Call it directly

bowmark.providers.paypal.estimateFee(args: PaypalEstimateFeeArgs): Promise<PaypalFeeEstimate>
bowmark.providers.paypal.getFees(args: PaypalGetFeesArgs): Promise<PaypalFeeSchedule>
bowmark.providers.paypal.getCurrencyConversionQuote(args: PaypalGetCurrencyConversionQuoteArgs): Promise<PaypalCurrencyConversionQuote>

Functions

FunctionWhat it does
estimateFeeComputes what PayPal charges to send a PERSONAL (friends-and-family) payment — domestic or cross-border, by funding source — off PayPal's own published fee schedule, e.g. estimateFee({…
getFeesReads PayPal's published fee schedule for one audience / country pair and returns every fee table on the page — every row, every published feeDataKey, with documentId-level citations — so a…
getCurrencyConversionQuoteReads PayPal's published currency-conversion spread — the half of its fee it DOES disclose — off the same fees page (FEETB26, 4.00% for goodsOrServices/personal/payouts, 3.00% for "other"),…

Types

interface PaypalEstimateFeeArgs {
  amount: number;               // > 0, in `currency`
  currency: string;             // ISO 4217, e.g. "USD"
  crossBorder: boolean;         // sender and recipient in different countries
  fundingSource: "balance" | "bank" | "card" | "amexSend";
}
interface PaypalFeeCitation {
  documentId: string;           // the CMS fee-table id this figure came from, e.g. "FEETB20"
  feeDataKey: string;           // the exact published value used, e.g. "2.90%"
  internalName: string;
}
interface PaypalFeeEstimate {
  amount: number;
  currency: string;
  crossBorder: boolean;
  fundingSource: "balance" | "bank" | "card" | "amexSend";
  fee: number;
  net: number;                  // amount - fee
  citations: PaypalFeeCitation[];
}
interface PaypalGetFeesArgs {
  audience?: "consumer";        // defaults to "consumer"; merchant is a separate, unverified page
  country?: string;             // ISO 3166-1 alpha-2, defaults to "us"; only "us" is verified end-to-end
}
interface PaypalFeeToken {
  feeDataKey: string;           // the exact published value, e.g. "2.90%" or "0.30 USD"
  internalName: string;
  percent: number | null;       // 0.029 when "2.90%", else null
  amount: { amount: number; currency: string } | null;  // when "0.30 USD", else null
}
interface PaypalFeeRow {
  labels: string[];             // plain-text label cells, in cell order
  tokens: PaypalFeeToken[];     // every published fee token on the row, across all columns
  cells: string[];              // plain-text rendering of each cell, in cell order
  noFee: boolean;               // true iff the row carries no fee token (PayPal's "No fee" rows)
  citations: PaypalFeeCitation[];
}
interface PaypalFeeTable {
  documentId: string;           // the CMS fee-table id, e.g. "FEETB20"
  caption: string;              // PayPal's own caption, e.g. "Sending domestic personal transactions"
  rows: PaypalFeeRow[];
}
interface PaypalFeeSchedule {
  audience: "consumer";
  country: string;              // lowercased to match PayPal's URL path, e.g. "us"
  sourceUrl: string;
  tables: PaypalFeeTable[];
}
type PaypalConversionKind = "goodsOrServices" | "personal" | "payouts" | "other";
interface PaypalCurrencyConversionCitation {
  documentId: string;           // the CMS table id this figure came from, e.g. "FEETB26"
  feeDataKey: string;           // the exact published value used, e.g. "4.00%"
  internalName: string;
}
interface PaypalGetCurrencyConversionQuoteArgs {
  kind?: PaypalConversionKind;  // "goodsOrServices" | "personal" | "payouts" | "other"
  audience?: "consumer";        // defaults to "consumer"; merchant is a separate, unverified page
  country?: string;             // ISO 3166-1 alpha-2, defaults to "us"; only "us" is verified end-to-end
}
interface PaypalCurrencyConversionQuote {
  kind: PaypalConversionKind;   // which PayPal-conversion context the spread applies to
  paypalSpread: number;         // 0.04 for goodsOrServices/personal/payouts; 0.03 for "other"
  citations: { paypal: PaypalCurrencyConversionCitation };
}