Xoom: Send Money & Transfer is PayPal's remittance Android client for people who send cash pickup, bank deposit, mobile-wallet payouts and prepaid airtime reloads from the United States to family abroad. Senders pick a corridor and disbursement type, fund with a debit card, bank account or a linked PayPal wallet (with 3-D Secure step-up verification on the checkout path when the bank requires it), then follow the transfer on an activity list with optional SMS status updates. The same logged-in shell holds saved recipients, a Quick Send / send-again flow, bill-pay and reload, and a PayPal unified-login / passkey path. It competes with Remitly, Wise, Western Union and MoneyGram for US-origin family remittances into Mexico, India, Brazil, Vietnam, Indonesia and other receive markets.
Locked corridor quotes carry sendAmount, receiveAmount and fxRate before checkout, and the activity list pages invoiceId, totalAmount and statusBadge for each send. Stored funding instruments expose paymentSourceId, accountType and walletType so bookkeeping can match the card or bank debit that paid the order.
Recipient records join payout contact with latestTransfer; confirmation payloads add transactionNumber and channelReturn for cash-pickup partners. Corridor monitors, support directories and ops boards consume those objects; openData Studio turns them into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Read signed-in Xoom user
GET
/v1/senders/selfosintReturns the signed-in sender after unified login — contract id, email, KYC profile and whether prior transfers exist — used to paint the home shell and terms gate.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- id
- contractId
- primaryEmailAddress
- status
- termsOfServiceAccepted
- transactionsFound
- firstName
- lastName
- dateOfBirth
- mobileNumber
- address1
- city
- subdivision
- postalCode
- nationality
GET /v1/senders/self HTTP/1.1 Authorization: Bearer <access_token> X-Request-Timestamp: 1760947200 X-Client-Timezone: America/Los_Angeles X-Device-Metadata-Id: <device_id> Accept: application/json{ "id": "usr_4c91e2", "contractId": "ct_9a10", "primaryEmailAddress": "[email protected]", "status": "ACTIVE", "termsOfServiceAccepted": true, "transactionsFound": true, "profile": { "firstName": "Maria", "lastName": "Santos", "dateOfBirth": "1991-04-18", "mobileNumber": "+14155550123", "address1": "2211 N 1st St", "city": "San Jose", "subdivision": "CA", "postalCode": "95131", "nationality": "US" } }Page transfer activity list
GET
/v1/sends/historyopenbankingPages the sender's transfer activity feed — invoice id, amount, status badge and recipient contact — behind the activity / track-my-transaction screen.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- totalItems
- totalPages
- invoiceId
- formattedCreatedDate
- summaryLine1
- summaryLine2
- totalAmount
- statusBadge
- name
- initials
GET /v1/sends/history?page=0&size=20 HTTP/1.1 Authorization: Bearer <access_token> X-Request-Timestamp: 1760947200 X-Client-Timezone: America/Los_Angeles Accept: application/json{ "totalItems": 42, "totalPages": 3, "items": [ { "invoiceId": "INV-884120", "formattedCreatedDate": "Oct 12, 2026", "summaryLine1": "Sent to Ana Lopez", "summaryLine2": "Bank deposit · Mexico", "totalAmount": "250.00 USD", "statusBadge": { "text": "Delivered", "type": "SUCCESS" }, "contact": { "name": "Ana Lopez", "initials": "AL", "profileColorGroup": 2 } } ] }Read saved recipient
GET
/v1/payees/{payeeId}opendataLoads one saved recipient with profile, latest transfer and disbursement options — the My Recipients card used by send-again.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- id
- modified
- firstName
- lastName
- latestTransfer
- transactionNumber
- amountTarget
- recipientId
- disbursementInfos
GET /v1/payees/rcp_77ab HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "id": "rcp_77ab", "modified": 1760900000000, "profile": { "firstName": "Ana", "lastName": "Lopez" }, "latestTransfer": { "id": "tr_12091", "transactionNumber": "884120", "amountTarget": "RECEIVE", "recipientId": "rcp_77ab" }, "disbursementInfos": [ { "type": "BANK_DEPOSIT", "countryCode": "MX" } ] }Read transfer by id
GET
/v1/transfers/{transferId}openbankingResolves a single transfer for the status / track screen — transaction number, recipient and amount-target side.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- id
- transactionNumber
- recipientId
- amountTarget
- status
GET /v1/transfers/tr_12091 HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "id": "tr_12091", "transactionNumber": "884120", "recipientId": "rcp_77ab", "amountTarget": "RECEIVE", "status": "DELIVERED" }Create remittance quote
POST
/v1/corridor-quotesopenfinanceCreates a corridor remittance and returns the selected quote — send/receive amounts, fee, FX rate and disbursement type — that the send-money calculator locks before checkout.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- id
- orderItemId
- sendAmount
- receiveAmount
- fee
- fxRate
- discountAmount
- total
- target
- paymentType
- disbursementType
- rawSendAmount
- rawReceiveAmount
- countryCode
- selectedCurrency
POST /v1/corridor-quotes HTTP/1.1 Authorization: Bearer <access_token> X-Transfer-Intent-Id: ti_55c Content-Type: application/json { "sourceCountry": { "countryCode": "US", "selectedCurrency": "USD" }, "destinationCountry": { "countryCode": "MX", "selectedCurrency": "MXN" }, "quote": { "sourceAmount": 250.00, "targetAmount": null }, "disbursementType": "BANK_DEPOSIT", "paymentType": "DEBIT_CARD", "recipientId": "rcp_77ab" }{ "id": "rm_3012", "orderItemId": "oi_88c1", "quotes": { "selected": { "sendAmount": "250.00", "receiveAmount": "4301.25", "fee": "2.99", "fxRate": "17.205", "discountAmount": "0.00", "total": "252.99", "target": "MXN", "paymentType": "DEBIT_CARD", "disbursementType": "BANK_DEPOSIT", "rawSendAmount": 250.0, "rawReceiveAmount": 4301.25 } }, "sourceCountry": { "countryCode": "US", "selectedCurrency": "USD" } }Create checkout order
POST
/v1/checkoutsopenfinanceOpens a checkout order from a remittance item and payment source, returning locked quote money values, FX pair, destination contact and delivery estimate for the review screen.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- id
- sendAmount
- receiveAmount
- feeAmount
- totalCost
- currencyCode
- rawAmount
- exchangeRate
- base
- target
- rate
- paymentType
- amountTarget
- durationInMinutes
- fullName
POST /v1/checkouts HTTP/1.1 Authorization: Bearer <access_token> X-Device-Metadata-Id: <device_id> Content-Type: application/json { "itemRequest": { "id": "oi_88c1" }, "paymentSource": { "paymentSourceId": "ps_debit_19" }, "fingerprintMetadata": { "fingerprintId": "fp_aa12" } }{ "id": "ck_6f20", "item": { "id": "oi_88c1", "quotes": { "selected": { "sendAmount": { "amount": "250.00", "currencyCode": "USD", "rawAmount": "250.00" }, "receiveAmount": { "amount": "4301.25", "currencyCode": "MXN", "rawAmount": "4301.25" }, "feeAmount": { "amount": "2.99", "currencyCode": "USD", "rawAmount": "2.99" }, "totalCost": { "amount": "252.99", "currencyCode": "USD", "rawAmount": "252.99" }, "exchangeRate": { "base": "USD", "target": "MXN", "rate": "17.205" }, "paymentType": "DEBIT_CARD", "amountTarget": "SEND" } }, "destination": { "id": "dst_11", "type": "BANK_DEPOSIT", "country": { "code": "MX", "name": "Mexico" }, "contact": { "profile": { "fullName": "Ana Lopez", "country": { "code": "MX", "name": "Mexico" } } } } }, "deliveryEstimate": { "durationInMinutes": 30, "timeExpression": { "label": "ETA", "text": "Minutes" } }, "fundingPlan": { "selectedFundingOption": { "fundingOptionPortions": [] } }, "user": { "profile": { "fullName": "Maria Santos" } } }Fetch checkout order
GET
/v1/checkouts/{checkoutId}openfinanceReloads an in-flight checkout order — authorization type, delivery estimate and selected quote — when the review screen resumes.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- id
- authorizationDetails
- authorizationType
- durationInMinutes
- sendAmount
- receiveAmount
- exchangeRate
- rate
GET /v1/checkouts/ck_6f20 HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "id": "ck_6f20", "authorizationDetails": { "authorizationType": "THREE_DS" }, "deliveryEstimate": { "durationInMinutes": 30 }, "item": { "id": "oi_88c1", "quotes": { "selected": { "sendAmount": { "amount": "250.00", "currencyCode": "USD" }, "receiveAmount": { "amount": "4301.25", "currencyCode": "MXN" }, "exchangeRate": { "base": "USD", "target": "MXN", "rate": "17.205" } } } } }Authorize checkout order
POST
/v1/checkouts/{checkoutId}/confirmopenbankingSubmits the review-screen confirm with a device fingerprint; the response links include a PayPal step-up URL when extra authentication is required.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers; the confirm call also carries a device fingerprint header. The session rotates with a refresh token.
- links
- rel
- href
POST /v1/checkouts/ck_6f20/confirm HTTP/1.1 Authorization: Bearer <access_token> X-Device-Fingerprint: <fingerprint> Content-Type: application/json { "authorizationEvent": { "type": "CONFIRM" }, "fingerprint": { "fingerprintId": "fp_aa12" } }{ "links": [ { "rel": "stepUp", "href": "/v1/checkouts/ck_6f20/step-up" } ] }List funding payment methods
GET
/v1/funding-sourcesopenbankingLists the sender's stored funding instruments — cards, bank accounts and wallet type — used to pick how a transfer is paid.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- paymentSourceId
- type
- accountType
- walletType
- nameOnAccount
- currencyCode
- issuingCountryCode
- expirationMonth
- expirationYear
- expired
- onHold
- verificationNeeded
- nickname
- paymentOptions
GET /v1/funding-sources HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "items": [ { "paymentSourceId": "ps_debit_19", "type": "CARD", "accountType": "DEBIT", "walletType": "STANDARD_WALLET", "nameOnAccount": "MARIA SANTOS", "currencyCode": "USD", "issuingCountryCode": "US", "expirationMonth": 8, "expirationYear": 2028, "expired": false, "onHold": false, "verificationNeeded": false, "nickname": "Visa 4242" } ], "paymentOptions": [ { "type": "BANK" }, { "type": "CARD" } ] }List corridor countries
GET
/v1/receive-countriesopendataReturns the paginated receive-country catalog that seeds the send-money destination picker.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- items
- code
- name
GET /v1/receive-countries HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "items": [ { "code": "MX", "name": "Mexico" }, { "code": "IN", "name": "India" }, { "code": "BR", "name": "Brazil" }, { "code": "VN", "name": "Vietnam" } ] }Fetch transfer confirmation
GET
/v1/transfers/{transferId}/receiptopenbankingLoads the post-send confirmation card — transaction number, channel-return pickup reference and SMS-opt-in eligibility — shown after authorize succeeds.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- transactionNumber
- state
- mainMessage
- subHeader
- secondaryMessage
- channelReturn
- smsOptIn
- transferEligibleForSms
- shareText
- contactUsEmail
GET /v1/transfers/tr_12091/receipt HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "transactionNumber": "884120", "state": "COMPLETED", "mainMessage": "Your money is on the way", "subHeader": "Bank deposit to Ana Lopez", "secondaryMessage": "Usually arrives in minutes", "channelReturn": { "name": "Banorte", "reference": "XO884120" }, "smsOptIn": { "transferEligibleForSms": true }, "shareText": "I sent money with Xoom. Tracking number 884120", "contactUsEmail": "[email protected]" }Create send-again remittance
POST
/v1/sends/repeatopenfinanceRebuilds a remittance from a prior transfer id for Quick Send — destination, last payment source and a fresh remittance id — skipping the empty calculator.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- transferId
- id
- name
- namePrefix
- type
- nameWithTypeDetails
- paymentType
- orderItemId
POST /v1/sends/repeat HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "transferId": "tr_12091", "content": "SEND_AGAIN" }{ "destination": { "id": "rcp_77ab", "name": "Ana Lopez", "namePrefix": "AL", "type": "BANK_DEPOSIT" }, "paymentSource": { "id": "ps_debit_19", "name": "Visa 4242", "nameWithTypeDetails": "Visa debit · 4242", "paymentType": "DEBIT_CARD", "type": "CARD" }, "remittance": { "id": "rm_3013", "orderItemId": "oi_88c2" } }Create prepaid reload order
POST
/v1/airtime-topupsopenfinanceStarts an airtime / prepaid reload against a destination MSISDN and source currency, returning FX and rounding disclaimers for the reload review screen.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- id
- countryCode
- phone
- selectedSourceCurrencyCode
- fxDisclaimerAvailable
- fxDisclaimer
- roundingDisclaimer
POST /v1/airtime-topups HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "phone": "+525512345678", "selectedSourceCurrencyCode": "USD" }{ "id": "rl_4410", "countryCode": "MX", "phone": "+525512345678", "selectedSourceCurrencyCode": "USD", "fxDisclaimerAvailable": true, "fxDisclaimer": "Rate includes a currency conversion", "roundingDisclaimer": "Amount rounded to the nearest peso" }Fetch order validation form
GET
/v1/checkouts/{checkoutId}/identity-formosintReturns the extra identity / address form the review flow shows when the order needs sender KYC fields before authorize.
Auth: Bearer access token from the PayPal unified sign-in (Authorization header), plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token.
- form
- name
- fields
- agreements
GET /v1/checkouts/ck_6f20/identity-form HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "form": { "name": "SENDER_IDENTITY", "fields": [ { "name": "dateOfBirth" }, { "name": "nationality" }, { "name": "address1" } ], "agreements": [ { "id": "tos" } ] } }
Data categories
- fx-rates
- transfers
- recipients
- payment-methods
- kyc-profile
- transactions
Where teams use this data
Corridor FX monitor
Treasury bots pull sendAmount, receiveAmount, fee and fxRate from each remittance quote so a dashboard can watch USD→MXN / USD→INR corridors against bank desks.
Recipient payout directory
Support tools join recipient id, disbursement type and latestTransfer.transactionNumber to answer 'where did the last send land' without opening the activity screen.
Transfer operations board
Ops pages the activity list (invoiceId, totalAmount, statusBadge) and confirmation (transactionNumber, channelReturn) to reconcile cash-pickup partners.
Funding-source reconciliation
Bookkeeping matches paymentSourceId, accountType and walletType on stored instruments to the fundingPlan that paid each checkout order.
Frequently asked questions
What quote fields does a Xoom remittance return?
The remittance quote includes sendAmount, receiveAmount, fee, fxRate, discountAmount, total, target currency, paymentType and disbursementType (bank deposit, cash pickup, wallet or reload).
How does the app authenticate API calls?
After PayPal unified login the client attaches a Bearer access token plus request-timestamp, timezone and device-metadata headers. The session rotates with a refresh token, and the checkout confirm step also sends a device fingerprint.
Can I read transfer history, not just a live quote?
Yes. The activity list pages invoiceId, totalAmount and statusBadge per send, and the confirmation resource returns transactionNumber plus channelReturn for the payout partner.
Which funding instruments are listed?
Stored payment methods return paymentSourceId, type (card or bank), accountType, walletType, nameOnAccount, issuingCountryCode and expiry, which the checkout order then binds through its fundingPlan.
Apps similar to Xoom: Send Money & Transfer
- Remitly: Send Money & Transfer — Remitly is an international remittance app that sends from the United States and 30-plus other countries to 175-plus destinations as a bank deposit, mobile wallet, or cash pickup.
- Wise: International Transfers — Wise is a London-based international money app that sends across 160 countries and 40-plus currencies at the mid-market exchange rate and holds a multi-currency account, without cash pickup.
- Western Union Send Money Now — Western Union sends money online, in its app, or in person to bank accounts, mobile wallets, or cash-pickup locations in 200 countries and territories.
- MoneyGram — MoneyGram is a Dallas-based peer-to-peer money-transfer company that sends funds for cash pickup or bank deposit through a network of about 400,000 agent offices in more than 200 countries and territories.
- WorldRemit — WorldRemit is a London-based digital remittance app that sends money to more than 130 countries, with payout via bank deposit, mobile money, cash pickup, or airtime top-up.
- Ria Money Transfer — Ria Money Transfer is a Euronet Worldwide subsidiary that specializes in customer-to-customer international remittances through agent locations, stores, and a mobile app.
- Taptap Send: Money Transfer — Taptap Send is an international remittance app that sends from the United States, Canada, the United Kingdom and other European countries to 70-plus destinations in Africa, Asia and Latin America, with payout as bank deposit, mobile money or cash pickup.
- Xe Money Transfer & Currency — Xe Money Transfer, part of Euronet Worldwide, sends consumer and business payments to more than 170 countries in 100-plus currencies as a bank deposit, mobile wallet, or cash pickup.
Topics
- Xoom API
- remittance data API
- sendAmount
- fxRate
- paymentSourceId
- transactionNumber
- Xoom quotes
- recipient payout
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use