Paysend: Send Money Home icon

Paysend money transfer data: recipients, FX quotes and payout status

Paysend Group · Payments

Paysend: Send Money Home is the cross-border remittance app from Paysend Group, the London-founded fintech behind the Paysend network. It lets people send money to bank accounts, cards, mobile wallets and cash pickup points in about 170 recipient countries, and supports senders in roughly 50 markets including the UK, the US, the EEA, Mexico and Brazil. Beyond one-off transfers, the app bundles multi-currency pockets with local IBANs, virtual and plastic Paysend cards with freeze and PIN controls, recurring bank-transfer and card payouts, KYC document capture, referral bonuses and Paysend Plus subscription plans. Frequent senders use it for small, fast transfers to family abroad, while migrant workers and expats use the pockets and cards as a lightweight alternative to a traditional multi-currency bank account.

Payout routing, delivery progress and statement entries share payment_id for reconciliation. The transfer model carries recipient_country, recipient_account_number, recipient_sort_code, amount_from and amount_delivered, while status records add payment_status, delivery_method and timestamped status_transitions. Statement entries contribute payout_country, payment_currency, payment_value and payment_change_date, giving finance teams a way to match payouts to dated account activity.

Quotes keep rateValue separate from rateOrig and expose feeValue, feeCut, bonusSpecialRate and bonusSpecialCommission. Route calculations use recipient_country, payout_method and promo_code alongside payment_method_type, exchange_rate, fee_value and amount_to. Treasury and comparison tools can use these distinct pricing views to compare rates, fees and delivered amounts without treating a quoted amount as a completed payout.

Bank-directory fields bankCode, countryIso and paymentSystem describe destination rails for corridor analysis; timestamped status histories support delivery-time comparisons. Account context comes from the profile's kycState and limit fields limitType, limitState, limitValue, limitCurrency and availableAmount, supporting verification-state and remaining-capacity checks in onboarding workflows.

Card records supply masked cardNumber, cardExp, cardType, paymentSystem and isActive; pocket records supply pocketId, currency, balanceAmount and iban. Together they give finance and wallet builders a currency-by-currency funding view to accompany transfer reconciliation. openData Studio turns these field models into callable open data for pricing comparisons, delivery analysis and account reconciliation.

Screenshots

  • Paysend: Send Money Home screenshot 1
  • Paysend: Send Money Home screenshot 2
  • Paysend: Send Money Home screenshot 3
  • Paysend: Send Money Home screenshot 4
  • Paysend: Send Money Home screenshot 5
  • Paysend: Send Money Home screenshot 6

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Open a Paysend session

    POST /illustrative/v1/remittances/sign-in openbanking

    Exchanges the account's phone number and password for the access and refresh tokens that gate every transfer, card and pocket call.

    Auth: Unauthenticated. The phone number and password are exchanged for an accessToken (sent as an Authorization Bearer header) plus a session token reused as the X-Session-Id header on every later call.

    • phoneNumber
    • password
    • deviceId
    • accessToken
    • refreshToken
    • sessionToken
    • expiresAt
    • isNewUser
    POST /illustrative/v1/remittances/sign-in HTTP/1.1
    Content-Type: application/json
    
    {
      "phoneNumber": "+447700900123",
      "password": "<PASSWORD>",
      "deviceId": "3f8c1a9e2b7d4c0f",
      "locale": "en-GB"
    }
    {
      "accessToken": "<ACCESS_TOKEN>",
      "refreshToken": "<REFRESH_TOKEN>",
      "sessionToken": "<SESSION_TOKEN>",
      "expiresAt": "2026-10-25T23:41:07Z",
      "isNewUser": false
    }
  • Confirm the sign-in code

    POST /illustrative/v1/remittances/code-verification openbanking

    Validates the one-time code sent to the registered phone number and promotes the pending session into a fully authenticated one.

    Auth: Carries the partial sessionToken from the first auth call; returns the final accessToken once the OTP matches.

    • sessionToken
    • code
    • accessToken
    • refreshToken
    • expiresAt
    POST /illustrative/v1/remittances/code-verification HTTP/1.1
    Content-Type: application/json
    
    {
      "sessionToken": "<SESSION_TOKEN>",
      "code": "<SIGN_IN_CODE>"
    }
    {
      "accessToken": "<ACCESS_TOKEN>",
      "refreshToken": "<REFRESH_TOKEN>",
      "sessionToken": "<SESSION_TOKEN>",
      "expiresAt": "2026-10-25T23:41:07Z"
    }
  • Read the profile record

    GET /illustrative/v1/remittances/customer-record openbanking

    Returns the signed-in customer's identity, residence country, KYC state and referral code as stored on the Paysend platform.

    Auth: Authorization: Bearer accessToken plus X-Session-Id sessionToken from the auth flow.

    • userId
    • firstName
    • lastName
    • phoneNumber
    • email
    • countryAlpha2
    • kycState
    • emailConfirmed
    • referralCode
    GET /illustrative/v1/remittances/customer-record HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    {
      "userId": "u_88123",
      "firstName": "Alex",
      "lastName": "Moreau",
      "phoneNumber": "+447700900123",
      "email": "[email protected]",
      "countryAlpha2": "GB",
      "kycState": "COMPLETED",
      "emailConfirmed": true,
      "referralCode": "ALEXM7Q"
    }
  • Read transfer limits

    GET /illustrative/v1/remittances/sending-capacity openbanking

    Reports the customer's AML and card limits together with how much headroom is left before the next verification tier.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • limitType
    • limitState
    • limitName
    • limitValue
    • limitCurrency
    • currentAmlLimit
    • availableAmount
    GET /illustrative/v1/remittances/sending-capacity HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    {
      "limitType": "AML",
      "limitState": "ACTIVE",
      "limitName": "annual_inbound",
      "limitValue": 25000.0,
      "limitCurrency": "GBP",
      "currentAmlLimit": 18500.0,
      "availableAmount": 6500.0
    }
  • List saved recipients and contacts

    GET /illustrative/v1/remittances/recipient-directory openfinance

    Returns the address book of people and businesses the customer has paid or saved, which is what the send flow pre-fills.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • contacts
    • contactId
    • firstName
    • lastName
    • phoneNumber
    • countryIso
    • bankName
    • lastPaymentAt
    GET /illustrative/v1/remittances/recipient-directory HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    {
      "contacts": [
        {
          "contactId": "c_4412",
          "firstName": "Maria",
          "lastName": "Lopez",
          "phoneNumber": "+525512345678",
          "countryIso": "MX",
          "bankName": "BBVA Mexico",
          "lastPaymentAt": "2026-09-30T12:04:11Z"
        }
      ]
    }
  • Search the local bank directory

    GET /illustrative/v1/remittances/payout-institutions opendata

    Serves the payout bank list for a destination country so the recipient form can resolve a bank name to its clearing code and rails.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • bankId
    • bankName
    • bankCode
    • countryIso
    • paymentSystem
    • isActive
    GET /illustrative/v1/remittances/payout-institutions?countryIso=PH&query=bank HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    {
      "banks": [
        {
          "bankId": "ph_bdo",
          "bankName": "Banco de Oro",
          "bankCode": "010530067",
          "countryIso": "PH",
          "paymentSystem": "INSTAPAY",
          "isActive": true
        }
      ]
    }
  • Get a live FX quote

    GET /illustrative/v1/remittances/currency-quote openfinance

    Returns the mid-market-derived exchange rate, the applied fee and the delivered amount for a currency pair — the numbers behind the calculator screen.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • frCurIso
    • toCurIso
    • rateValue
    • rateOrig
    • feeValue
    • feeCut
    • amountFrom
    • amountTo
    • bonusSpecialRate
    • bonusSpecialCommission
    GET /illustrative/v1/remittances/currency-quote?frCurIso=GBP&toCurIso=MXN&amount=200 HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    {
      "rateValue": 24.8715,
      "rateOrig": 25.0102,
      "feeValue": 0.0,
      "feeCut": 0.0,
      "amountFrom": 200.0,
      "amountTo": 4974.3,
      "bonusSpecialRate": 0.0,
      "bonusSpecialCommission": 0.0
    }
  • Calculate a transfer before sending

    POST /illustrative/v1/remittances/route-pricing openfinance

    Prices a specific send route — country, payout method and promo — and returns the delivered amount, rate and fee that the confirmation sheet displays.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • account_currency
    • amount_from
    • recipient_country
    • payout_method
    • promo_code
    • amount_to
    • exchange_rate
    • fee_value
    • payment_method_type
    • payment_status
    • bonus_special_rate
    POST /illustrative/v1/remittances/route-pricing HTTP/1.1
    Content-Type: application/json
    
    {
      "account_currency": "GBP",
      "amount_from": 200.0,
      "recipient_country": "PH",
      "payout_method": "BANK_TRANSFER",
      "promo_code": "WELCOME"
    }
    {
      "amount_to": 15240.0,
      "exchange_rate": 76.2,
      "fee_value": 0.0,
      "payment_method_type": "CARD",
      "payment_status": "CALCULATED",
      "bonus_special_rate": 0.0
    }
  • Create a money transfer

    POST /illustrative/v1/remittances/payout-orders openbanking

    Accepts the full recipient routing block and funding source and opens the payout, returning the payment id and initial status the app then polls.

    Auth: Authorization: Bearer accessToken plus X-Session-Id; funding source is referenced by source_id.

    • recipient_first_name
    • recipient_last_name
    • recipient_country
    • recipient_account_number
    • recipient_bank
    • recipient_sort_code
    • amount_from
    • account_currency
    • source_id
    • payment_method_type
    • promo_code
    • payment_id
    • payment_status
    • status_code
    • tracking_id
    • amount_delivered
    POST /illustrative/v1/remittances/payout-orders HTTP/1.1
    Content-Type: application/json
    
    {
      "recipient_first_name": "Maria",
      "recipient_last_name": "Lopez",
      "recipient_country": "MX",
      "recipient_account_number": "012180015487654321",
      "recipient_bank": "BBVA Mexico",
      "recipient_sort_code": null,
      "amount_from": 200.0,
      "account_currency": "GBP",
      "source_id": "card_9921",
      "payment_method_type": "CARD",
      "promo_code": "WELCOME"
    }
    {
      "payment_id": "p_77300123",
      "payment_status": "PENDING",
      "status_code": "CREATED",
      "tracking_id": "PS-9F27K1",
      "amount_delivered": 4974.3,
      "exchange_rate": 24.8715
    }
  • Track a transfer's status

    GET /illustrative/v1/remittances/payout-orders/{payment_id}/progress openbanking

    Polls the payout leg and returns its state history, delivery rail and delivered amount for the transfer detail screen.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • payment_id
    • payment_status
    • status_code
    • delivery_method
    • amount_delivered
    • tracking_id
    • status_transitions
    GET /illustrative/v1/remittances/payout-orders/{payment_id}/progress HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    {
      "payment_id": "p_77300123",
      "payment_status": "COMPLETED",
      "status_code": "DELIVERED",
      "delivery_method": "BANK_ACCOUNT",
      "amount_delivered": 4974.3,
      "tracking_id": "PS-9F27K1",
      "status_transitions": [
        {
          "state": "CREATED",
          "at": "2026-10-25T09:02:11Z"
        },
        {
          "state": "SENDING",
          "at": "2026-10-25T09:03:40Z"
        },
        {
          "state": "DELIVERED",
          "at": "2026-10-25T09:41:02Z"
        }
      ]
    }
  • Read the account statement

    GET /illustrative/v1/remittances/activity-export openfinance

    Returns the dated ledger of transfers and top-ups for one pocket currency, which powers the activity list and PDF statement export.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • account_currency
    • date_begin
    • date_end
    • time_zone
    • payments
    • payment_id
    • payment_change_date
    • payment_value
    • payment_currency
    • payment_status
    • payout_country
    • recipient_name
    GET /illustrative/v1/remittances/activity-export?account_currency=GBP&date_begin=2026-01-01&date_end=2026-10-25&time_zone=Europe%2FLondon HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    {
      "payments": [
        {
          "payment_id": "p_77300123",
          "payment_change_date": "2026-10-25T09:41:02Z",
          "payment_value": -200.0,
          "payment_currency": "GBP",
          "payment_status": "COMPLETED",
          "payout_country": "MX",
          "recipient_name": "Maria Lopez"
        }
      ]
    }
  • List payment cards

    GET /illustrative/v1/remittances/funding-cards openbanking

    Returns the customer's virtual and plastic cards with masked PAN, expiry, network and status for the cards tab.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • cards
    • cardId
    • cardNumber
    • cardExp
    • cardHolderName
    • cardType
    • paymentSystem
    • isActive
    • balanceAmount
    • currency
    GET /illustrative/v1/remittances/funding-cards HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    {
      "cards": [
        {
          "cardId": "card_9921",
          "cardNumber": "**** **** **** 4412",
          "cardExp": "09/29",
          "cardHolderName": "ALEX MOREAU",
          "cardType": "VIRTUAL",
          "paymentSystem": "MASTERCARD",
          "isActive": true,
          "balanceAmount": 120.5,
          "currency": "GBP"
        }
      ]
    }
  • Freeze or unfreeze a card

    POST /illustrative/v1/remittances/funding-cards/{cardId}/freeze-state openbanking

    Flips the customer-controlled freeze flag on a card so the freeze/unfreeze toggle in the card sheet takes effect immediately.

    Auth: Authorization: Bearer accessToken plus X-Session-Id; card must belong to the signed-in customer.

    • cardId
    • isActive
    • statusCode
    POST /illustrative/v1/remittances/funding-cards/{cardId}/freeze-state HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    Content-Type: application/json
    
    {
      "cardId": "card_9921"
    }
    {
      "cardId": "card_9921",
      "isActive": false,
      "statusCode": "FROZEN"
    }
  • List multi-currency pockets

    GET /illustrative/v1/remittances/currency-balances openbanking

    Returns every currency pocket the customer holds with its balance and local IBAN, feeding the balances home and top-up screens.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • pockets
    • pocketId
    • currency
    • balanceAmount
    • iban
    • isActive
    GET /illustrative/v1/remittances/currency-balances HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    {
      "pockets": [
        {
          "pocketId": "pk_gbp_01",
          "currency": "GBP",
          "balanceAmount": 1240.18,
          "iban": "GB29NWBK60161331926819",
          "isActive": true
        },
        {
          "pocketId": "pk_eur_01",
          "currency": "EUR",
          "balanceAmount": 380.0,
          "iban": "DE89370400440532013000",
          "isActive": true
        }
      ]
    }
  • Issue an IBAN for a pocket

    POST /illustrative/v1/remittances/currency-balances/{pocketId}/receiving-details openbanking

    Mints a local receiving IBAN for a currency pocket so the customer can be paid in that currency like a domestic account.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • pocketId
    • iban
    • bic
    • statusCode
    POST /illustrative/v1/remittances/currency-balances/{pocketId}/receiving-details HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    Content-Type: application/json
    
    {
      "pocketId": "pk_eur_01"
    }
    {
      "pocketId": "pk_eur_01",
      "iban": "DE89370400440532013000",
      "bic": "NWBKGB2L",
      "statusCode": "ISSUED"
    }
  • List funding options

    GET /illustrative/v1/remittances/available-funding openbanking

    Enumerates the cards and pockets a customer can pay from, which is what the payment-source picker on the send screen renders.

    Auth: Authorization: Bearer accessToken plus X-Session-Id.

    • fundingOptions
    • sourceId
    • sourceType
    • sourceFunding
    • paymentMethodType
    • currency
    • isActive
    GET /illustrative/v1/remittances/available-funding?currency=GBP HTTP/1.1
    Authorization: Bearer <ACCESS_TOKEN>
    X-Session-Id: <SESSION_TOKEN>
    {
      "fundingOptions": [
        {
          "sourceId": "card_9921",
          "sourceType": "CARD",
          "sourceFunding": "DEBIT",
          "paymentMethodType": "VISA",
          "currency": "GBP",
          "isActive": true
        },
        {
          "sourceId": "pk_gbp_01",
          "sourceType": "POCKET",
          "sourceFunding": "BALANCE",
          "paymentMethodType": "INTERNAL",
          "currency": "GBP",
          "isActive": true
        }
      ]
    }

Data categories

  • transfers
  • fx-rates
  • recipients
  • cards
  • balances
  • limits
  • auth sessions
  • kyc

Where teams use this data

  • Remittance reconciliation for finance teams

    Accounting bots match each payout's payment id against its recipient routing block, delivered amount and status history, so cross-border payroll and supplier payments reconcile without manual statement stitching.

  • FX and fee benchmarking

    Treasury and comparison tools pull the quote rate, original rate, fee and promo-adjusted rate for a corridor and track how the delivered amount moves against the mid-market rate.

  • Payout rail analytics

    Analysts map destination countries to their local bank codes and payment systems and measure delivery times per rail, useful for corridor planning and for spotting payout failures early.

  • KYC and limit-aware onboarding

    Lending and wallet products reuse the identity, KYC state and limit headroom fields to gate onboarding and size a customer's first transfer without re-collecting documents.

Frequently asked questions

Which data can be combined to reconcile a Paysend transfer?

The transfer model provides recipient routing details, the amount sent, the delivered amount and a payment_id. Status records add the delivery method and timestamped status transitions; statement entries add the dated payment value, currency and payout country. The payment_id links the transfer to its status and statement entry, while fees and the calculated exchange rate are documented in the pricing model.

Can FX rates and fees be read before a transfer is created?

Yes. The quote model includes rateValue, rateOrig, feeValue, feeCut and bonus fields for a currency pair and send amount. The route calculation adds recipient_country, payout_method and promo_code to the pricing context, with exchange_rate, fee_value and amount_to for comparison before creating a transfer.

What is in a Paysend multi-currency pocket?

A pocket record holds a currency, its balance, an optional local IBAN issued for receiving money in that currency, and an active flag — the same fields shown on the balances screen and used for pocket top-ups.

How is transfer status tracked?

The status call returns the current payment status and status code together with a timestamped transition list, the delivery method and the tracking id, which is what the transfer detail screen renders.

Apps similar to Paysend: Send Money Home

  • Remitly: Send Money & Transfer — Remitly is a digital remittance service that sends from 34 countries, including the US, Canada, the UK and Australia, to more than 175 destinations as a bank deposit, mobile wallet, or cash pickup.
  • Western Union Send Money Now — Western Union sends money from the United States via its website, app, or agent locations to bank accounts, cash pickup, or supported mobile wallets in more than 200 countries and territories.
  • Xoom: Send Money & Transfer — Xoom, a PayPal service, sends international transfers to bank accounts, debit cards, digital wallets including UPI and PIX, cash pickup or delivery, and mobile-phone top-ups.
  • Taptap Send: Money Transfer — Taptap Send is a mobile remittance app that pays out as bank deposits, mobile wallets, or cash pickup to destinations across Africa, Asia, and Latin America, including India, Nigeria, Mexico, and the Philippines.
  • Wise: International Transfers — Wise sends money to more than 140 countries and offers a multi-currency account with receiving details in 22 currencies plus a Wise Multi-Currency Card for spending and ATM withdrawals.
  • WorldRemit — WorldRemit is a digital remittance service that sends via its website and app to more than 130 countries, with payout as a bank deposit, cash pickup, mobile wallet, or prepaid phone credit.

Topics

  • Paysend API
  • remittance data
  • international transfer API
  • FX quote API
  • recipient bank details
  • transfer status API
  • multi-currency pockets
  • payout country data

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

Get a quote