Remitly: Send Money & Transfer icon

Remitly Data API: Endpoints & Fields

Remitly, Inc. · Payments

Remitly: Send Money & Transfer is the Android client of Seattle-based Remitly, Inc. for people who send money home across corridors — bank deposit, cash pickup, mobile wallet and a Remitly debit card on the receiving side. Senders pick a country pair, see an Economy or Express speed, fund with debit card, bank account, open banking (Plaid in the US, TrueLayer in Europe) or the in-app wallet, and follow the transfer on a money-tracker timeline. The same logged-in shell also holds a USD wallet with Circle USDC balance, Remitly Advance / Flex credit products, a membership and cashback layer, business send, PIX in Brazil and Singpass in Singapore. It competes with Wise, Western Union, MoneyGram, WorldRemit and bank FX desks for migrant and family senders moving funds from the United States and the euro area toward India, Mexico, Brazil, Indonesia, Nigeria and the Gulf.

Send-corridor FX quotes pin baseRate and promotionalExchangeRate against a conduit of source and target currencies, while the recipient book stores preferredDestinationPublicId, relationship and payout institutionCode. Wallet jars expose balance plus a Circle circleBalance; live transfers report pollResultStatus, collectionAmount and a deliveryPromise datetime.

Payroll and gig platforms reconcile those quotes against the ledger, compliance desks ingest the beneficiary register before a family remittance batch, and budgeting clients park the USD jar next to bank accounts. openData Studio turns that corridor, recipient and wallet surface into callable open data.

Screenshots

  • Remitly: Send Money & Transfer screenshot 1
  • Remitly: Send Money & Transfer screenshot 2
  • Remitly: Send Money & Transfer screenshot 3
  • Remitly: Send Money & Transfer screenshot 4
  • Remitly: Send Money & Transfer screenshot 5
  • Remitly: Send Money & Transfer screenshot 6
  • Remitly: Send Money & Transfer screenshot 7
  • Remitly: Send Money & Transfer screenshot 8

API surface

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

  • Bootstrap customer profile

    POST /v1/customers/bootstrap osint

    Loads the signed-in RemitlyCustomer after login — email, birth date, send-country mutability and structured address — used to paint the home shell and KYC gates.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • id
    • emailAddress
    • ftt
    • birthDate
    • sendCountryChangeable
    • line1
    • city
    • country
    • postalCode
    • subdivision
    • firstName
    • lastName
    POST /v1/customers/bootstrap HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "sections": ["identity", "address", "kyc"]
    }
    {
      "id": "cust_8f21c4a0",
      "emailAddress": "[email protected]",
      "ftt": false,
      "birthDate": "1991-04-18",
      "sendCountryChangeable": true,
      "address": {
        "line1": "1201 2nd Ave",
        "line2": "Apt 14",
        "city": "Seattle",
        "country": "USA",
        "postalCode": "98101",
        "subdivision": "WA"
      },
      "name": {
        "firstName": "Maria",
        "middleName": "",
        "lastName": "Santos",
        "secondLastName": "",
        "initials": "MS"
      }
    }
  • Customer send and receive corridor

    POST /v1/customers/corridor opendata

    Returns the customer's active send and receive country codes that drive corridor selection on the home FX bar and send flow.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • id
    • sendCountryCode
    • receiveCountryCode
    POST /v1/customers/corridor HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "scope": "active"
    }
    {
      "id": "cust_8f21c4a0",
      "sendCountryCode": "USA",
      "receiveCountryCode": "PHL"
    }
  • Best corridor FX rate

    POST /v1/fx/quote opendata

    Quotes the corridor's baseRate and promotionalExchangeRate for the home FX bar and send-amount calculator, including any first-transfer promotional rate.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • bestRate
    • baseRate
    • promotionalExchangeRate
    • sourceCurrency
    • targetCurrency
    • alpha3
    • displayCode
    • requiredSendAmount
    • requiredPaymentMethods
    • welcomeMessage
    POST /v1/fx/quote HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "sourceCountry": "USA",
      "targetCountry": "PHL",
      "availablePayInMethods": ["DEBIT_CARD", "BANK_ACCOUNT", "OPEN_BANKING"]
    }
    {
      "bestRate": {
        "baseRate": 57.42,
        "promotionalExchangeRate": 58.1,
        "sourceCurrency": {
          "alpha3": "USD",
          "displayCode": "USD"
        },
        "targetCurrency": {
          "alpha3": "PHP"
        }
      },
      "requiredSendAmount": {
        "amount": "200.00",
        "currency": "USD"
      },
      "requiredPaymentMethods": [
        "DEBIT_CARD"
      ],
      "welcomeMessage": "Promotional rate for first-time senders"
    }
  • Remittance price estimates

    POST /v1/remittances/estimate openfinance

    Returns per-pay-in-method remittance quotes (exchange rate plus fixed and proportional fees) that fill the send-flow calculator and speed merchandising cards.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • remittanceEstimate
    • conduit
    • sourceCountry
    • targetCountry
    • payInMethod
    • payInEstimates
    • exchangeRate
    • baseRate
    • finalFeeAmount
    • fixedFeeAmount
    • proportionalFeeAmount
    • proportionalFeePercentage
    • payOutMethod
    POST /v1/remittances/estimate HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "sendAmount": {
        "amount": "500.00",
        "currency": "USD"
      },
      "sourceCountry": "USA",
      "targetCountry": "PHL"
    }
    {
      "remittanceEstimate": {
        "conduit": {
          "sourceCountry": "USA",
          "sourceCurrency": {
            "alpha3": "USD"
          },
          "targetCountry": "PHL",
          "targetCurrency": {
            "alpha3": "PHP"
          }
        },
        "payInMethod": "DEBIT_CARD",
        "payInEstimates": {
          "estimates": [
            {
              "groupId": "debit-economy",
              "payInMethod": "DEBIT_CARD",
              "exchangeRate": {
                "baseRate": 57.42,
                "promotionalExchangeRate": 57.42
              },
              "fee": {
                "finalFeeAmount": {
                  "amount": "3.99",
                  "currency": "USD"
                },
                "fixedFeeAmount": {
                  "amount": "3.99",
                  "currency": "USD"
                },
                "proportionalFeeAmount": {
                  "amount": "0.00",
                  "currency": "USD"
                },
                "proportionalFeePercentage": 0
              }
            }
          ]
        },
        "payOutMethod": "BANK_DEPOSIT"
      }
    }
  • Initialize send-flow draft

    POST /v1/transfers/drafts openfinance

    Creates the TransactionDraft that carries corridor, destinationType, recipientId and paymentMethod through the send-flow steps until submit.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • draft
    • id
    • draftType
    • amount
    • corridor
    • destinationId
    • destinationType
    • recipientId
    • productType
    • paymentMethod
    • publicId
    • institutionCode
    • receiveMarket
    POST /v1/transfers/drafts HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "corridor": "USA-PHL",
      "destinationType": "BANK_DEPOSIT"
    }
    {
      "draft": {
        "id": "draft_9c11e2",
        "draftType": "REMITTANCE",
        "amount": {
          "amount": "500.00",
          "currency": "USD"
        },
        "corridor": "USA-PHL",
        "destinationId": "dest_bpi_bank",
        "destinationType": "BANK_DEPOSIT",
        "recipientId": "rcpt_4412",
        "productType": "ECONOMY",
        "paymentMethod": "DEBIT_CARD"
      },
      "destination": {
        "id": "dest_bpi_bank",
        "publicId": "PH-BPI-BANK",
        "name": "BPI Bank Deposit",
        "type": "BANK_DEPOSIT",
        "institutionCode": "BPI",
        "receiveMarket": {
          "country": {
            "alpha3": "PHL"
          },
          "currency": {
            "alpha3": "PHP"
          }
        }
      }
    }
  • List recipients

    POST /v1/recipients/search openfinance

    Returns the customer's recipient book with preferred payout destination, last-sent date and relationship, used by the select-recipient screen.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • allRecipients
    • id
    • displayName
    • firstName
    • lastName
    • phoneNumber
    • emailAddress
    • city
    • country
    • preferredDestinationPublicId
    • preferredSendAmount
    • lastSentDate
    • productType
    • relationship
    • isSelf
    POST /v1/recipients/search HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "receiveCountry": "PHL"
    }
    {
      "allRecipients": [
        {
          "id": "rcpt_4412",
          "name": {
            "displayName": "Ana Reyes",
            "firstName": "Ana",
            "lastName": "Reyes"
          },
          "phoneNumber": "+639171234567",
          "emailAddress": "[email protected]",
          "address": {
            "city": "Quezon City",
            "country": "PHL"
          },
          "preferences": {
            "preferredDestinationPublicId": "PH-BPI-BANK",
            "preferredSendAmount": "500.00",
            "lastSentDate": "2026-09-28T16:04:00Z",
            "productType": "ECONOMY"
          },
          "relationship": "FAMILY",
          "isSelf": false
        }
      ]
    }
  • Create recipient

    POST /v1/recipients openfinance

    Adds a recipient (name, address, phone, relationship) to the book and invalidates the bootstrap recipient cache.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • createRecipient
    • id
    • customerID
    • firstName
    • lastName
    • displayName
    • line1
    • city
    • country
    • postalCode
    • phoneNumber
    • relationship
    • version
    POST /v1/recipients HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "name": {
        "firstName": "Ana",
        "lastName": "Reyes"
      },
      "address": {
        "city": "Quezon City",
        "country": "PHL"
      },
      "phoneNumber": "+639171234567",
      "relationship": "FAMILY"
    }
    {
      "createRecipient": {
        "id": "rcpt_4412",
        "customerID": "cust_8f21c4a0",
        "name": {
          "firstName": "Ana",
          "lastName": "Reyes",
          "displayName": "Ana Reyes"
        },
        "address": {
          "line1": "14 Maginhawa St",
          "city": "Quezon City",
          "country": "PHL",
          "postalCode": "1101"
        },
        "phoneNumber": "+639171234567",
        "relationship": "FAMILY",
        "version": 1
      }
    }
  • List transfers

    POST /v1/transfers/search openbanking

    Pages the customer's remittance history (TransfersConnection) for the activity and home transfer lists.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • transfers
    • edges
    • cursor
    • node
    • id
    • pageInfo
    • hasNextPage
    • endCursor
    POST /v1/transfers/search HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "first": 20,
      "filters": {}
    }
    {
      "transfers": {
        "edges": [
          {
            "cursor": "cursor_01",
            "node": {
              "id": "txn_7b90"
            }
          },
          {
            "cursor": "cursor_02",
            "node": {
              "id": "txn_7b91"
            }
          }
        ],
        "pageInfo": {
          "hasNextPage": true,
          "endCursor": "cursor_02"
        }
      }
    }
  • Transfer status poll

    POST /v1/transfers/status openbanking

    Polls a transfer's live status (pollResultStatus, displayType) and any client action such as open-banking authentication, used by the money-tracker screen.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • id
    • pollResultStatus
    • displayType
    • retryErrorCode
    • authenticationType
    • errorKey
    • message
    • transferClientAction
    • code
    • paymentId
    • tokenId
    • sessionId
    POST /v1/transfers/status HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "id": "txn_7b90"
    }
    {
      "transfer": {
        "id": "txn_7b90",
        "status": {
          "pollResultStatus": "IN_PROGRESS",
          "displayType": "DELIVERING",
          "retryErrorCode": null,
          "authenticationType": "OPEN_BANKING",
          "transferErrorDetails": null,
          "transferClientAction": {
            "code": "COMPLETE_PAYMENT",
            "details": "Awaiting bank authorization",
            "resource": "ob-session-aa12",
            "metadata": {
              "product": "REMITTANCE",
              "paymentId": "pay_991",
              "tokenId": "tok_ob_14",
              "sessionId": "sess_ob_9"
            }
          }
        }
      }
    }
  • Transfer details

    POST /v1/transfers/details openbanking

    Loads a single transfer's send/receive amounts, collectionAmount, conduit and deliveryPromise for the transfer-details receipt screen.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • id
    • amount
    • converted
    • input
    • collectionAmount
    • conduit
    • deliveryPromise
    • datetime
    • template
    • recipient
    • relationship
    • displayName
    • phoneNumber
    POST /v1/transfers/details HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "transferId": "txn_7b90",
      "includeSmartRate": true
    }
    {
      "transfer": {
        "id": "txn_7b90",
        "amount": {
          "converted": {
            "amount": "28710.00",
            "currency": "PHP"
          },
          "input": {
            "amount": "500.00",
            "currency": "USD"
          }
        },
        "collectionAmount": {
          "amount": "503.99",
          "currency": "USD"
        },
        "conduit": "USA-PHL",
        "deliveryPromise": {
          "datetime": "2026-10-17T08:00:00Z",
          "template": "MINUTES"
        },
        "recipient": {
          "id": "rcpt_4412",
          "relationship": "FAMILY",
          "name": {
            "displayName": "Ana Reyes",
            "firstName": "Ana",
            "lastName": "Reyes"
          },
          "phoneNumber": "+639171234567"
        }
      }
    }
  • Wallet account balance

    POST /v1/wallets/accounts/balance openbanking

    Reads a Remitly wallet account's current balance and currency for the wallet home and spend screens.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • wallet
    • account
    • id
    • balance
    • currency
    POST /v1/wallets/accounts/balance HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "accountId": "acct_wallet_usd",
      "includeDeletedRelations": false
    }
    {
      "wallet": {
        "account": {
          "id": "acct_wallet_usd",
          "balance": "245.80",
          "currency": "USD"
        }
      }
    }
  • Wallet home snapshot

    POST /v1/wallets/overview openbanking

    Returns the wallet home snapshot: activation flag, profile, filteredAccounts (balance/currency/state) and circleBalance for the stablecoin jar.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • isUserActivated
    • profile
    • firstName
    • lastName
    • email
    • accounts
    • id
    • balance
    • currency
    • accountName
    • state
    • accountType
    • circleBalance
    POST /v1/wallets/overview HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {}
    {
      "wallet": {
        "isUserActivated": true,
        "profile": {
          "id": "prof_88",
          "status": "ACTIVE",
          "firstName": "Maria",
          "lastName": "Santos",
          "email": "[email protected]"
        },
        "accounts": [
          {
            "id": "acct_wallet_usd",
            "balance": "245.80",
            "currency": "USD",
            "accountName": "Remitly USD",
            "state": "OPEN",
            "accountType": "STANDARD"
          }
        ],
        "circleBalance": {
          "balance": "0.00",
          "currency": "USDC"
        }
      }
    }
  • Open banking providers

    POST /v1/payin/bank-providers openbanking

    Lists bank institutions (Plaid / TrueLayer) the customer can pay in from, with per-corridor transactionLimit text for the open-banking picker.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • openBankingProviders
    • items
    • name
    • countryCode
    • institutionOrNetworkCode
    • status
    • networkScheme
    • circularLogoUrl
    • displayedLimitText
    POST /v1/payin/bank-providers HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "country": "USA",
      "currency": "USD",
      "payInMethod": "OPEN_BANKING",
      "sendAmount": {
        "amount": "500.00",
        "currency": "USD"
      }
    }
    {
      "openBankingProviders": {
        "items": [
          {
            "name": "Chase",
            "countryCode": "USA",
            "institutionOrNetworkCode": "ins_chase",
            "status": "AVAILABLE",
            "networkScheme": "PLAID",
            "circularLogoUrl": "https://cdn.example.com/banks/chase.svg",
            "rectangularLogoUrl": "https://cdn.example.com/banks/chase.svg",
            "transactionLimit": {
              "status": "OK",
              "displayedLimitText": "Up to $2,999 per transfer"
            }
          }
        ]
      }
    }
  • Payment instruments

    POST /v1/payin/instruments openbanking

    Lists saved pay-in instruments (debit cards, bank accounts) with paymentsAvailableAfter, used by the payment-method picker.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • financialInstruments
    • resourceName
    • legacyId
    • paymentsAvailableAfter
    • deletedAt
    • updatedAt
    POST /v1/payin/instruments HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "country": "USA",
      "currency": "USD",
      "type": [
        "DEBIT_CARD",
        "BANK_ACCOUNT"
      ]
    }
    {
      "financialInstruments": [
        {
          "resourceName": "fi/card_visa_4412",
          "legacyId": "pp_debit_19",
          "paymentsAvailableAfter": "2026-10-16T12:00:00Z",
          "deletedAt": null,
          "updatedAt": "2026-10-12T09:14:00Z"
        }
      ]
    }
  • Remittance wallet

    POST /v1/wallets/remittance openbanking

    Reads the remittance-wallet jar (authorizing vs resolved balance and default payout institution) used when sending from wallet instead of a card.

    Auth: Bearer access token issued at sign-in; a native auth module holds the session and refreshes it via a dedicated token endpoint.

    • remittanceWallet
    • resourceName
    • owner
    • currency
    • status
    • defaultPayout
    • method
    • institution
    • authorizingBalance
    • resolvedBalance
    POST /v1/wallets/remittance HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "customerResourceName": "customers/cust_8f21c4a0"
    }
    {
      "remittanceWallet": {
        "resourceName": "remittanceWallets/rw_88",
        "owner": "customers/cust_8f21c4a0",
        "currency": "USD",
        "status": "ACTIVE",
        "defaultPayout": {
          "country": "PHL",
          "currency": "PHP",
          "method": "BANK_DEPOSIT",
          "institution": "BPI"
        },
        "balance": {
          "currency": "USD",
          "authorizingBalance": {
            "amount": {
              "amount": "245.80",
              "currency": "USD"
            }
          },
          "resolvedBalance": {
            "amount": {
              "amount": "245.80",
              "currency": "USD"
            }
          }
        }
      }
    }

Data categories

  • balances
  • transactions
  • fx-rates
  • recipients
  • kyc-profile
  • open-banking

Where teams use this data

  • Corridor FX and fee reconciliation

    Treasury jobs pull BestFxRate and PriceMerchandisingEstimates nightly, matching baseRate, promotionalExchangeRate and finalFeeAmount against the ledger so a payroll or gig platform can show the same USD→PHP quote the sender saw in the calculator.

  • Recipient payout book for compliance

    A compliance desk syncs GetAllRecipients — displayName, relationship, preferredDestinationPublicId, city and country — into its beneficiary register before releasing a batch of family remittances.

  • Wallet balance for personal-finance apps

    A budgeting client reads WalletAccountBalance and WalletHomeData (balance, currency, circleBalance, accountType) so the customer's Remitly USD jar and USDC circle sit next to their bank accounts.

  • Transfer tracking for support and ERP

    Support bots poll GetTransferStatus for pollResultStatus and transferClientAction, then open TransferDetailsScreen for collectionAmount, conduit and deliveryPromise when a sender asks where the money is.

Frequently asked questions

What customer fields does the bootstrap call return?

The customer bootstrap returns the signed-in profile: id, emailAddress, birthDate, sendCountryChangeable and a structured address (line1, city, country, postalCode, subdivision) plus name.firstName / lastName — the same record the corridor call later reduces to sendCountryCode and receiveCountryCode.

How are FX quotes and fees split?

The corridor rate call exposes the corridor's baseRate and any promotionalExchangeRate. The remittance estimate call then attaches per-pay-in-method fees: finalFeeAmount, fixedFeeAmount, proportionalFeeAmount and proportionalFeePercentage, with sourceCountry / targetCountry on the conduit.

Can I read wallet balance and transfer tracking, not just quotes?

Yes. The wallet balance call returns account.balance and currency, and the wallet overview adds filteredAccounts and circleBalance. A transfer status poll returns pollResultStatus and transferClientAction, and the transfer details call adds collectionAmount, conduit and deliveryPromise.

How does the app authenticate these calls?

Every call sends an Authorization: Bearer access token minted at sign-in; a native session module refreshes the token in the background. Open-banking pay-in still goes through Plaid or TrueLayer after the customer picks an institutionOrNetworkCode.

Apps similar to Remitly: Send Money & Transfer

  • Wise: International Transfers — Wise (formerly TransferWise) is a London-based international money app that sends and receives across currencies and holds a multi-currency account with local bank details.
  • Western Union — Western Union is a Denver-based money-transfer company whose app sends remittances 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 service that sends funds in-app, online or in person to a bank account, wallet or cash pickup in more than 200 countries and territories.
  • WorldRemit — WorldRemit is a London-based digital remittance app that sends money to 130+ countries, with payout via bank deposit, mobile money, cash pickup or airtime top-up.
  • Xoom — Xoom is PayPal's international money-transfer service that sends funds from the United States, Canada, the United Kingdom and select European countries to bank accounts, mobile wallets or cash pickup in 160 countries.
  • 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 covering 190+ countries.
  • Sendwave — Sendwave is a Zepz mobile remittance app that sends from North America, Europe and Asia to mobile wallets and bank accounts in Africa, Asia and other emerging markets.
  • Taptap Send — Taptap Send is an international remittance app for corridors into Africa, Asia and Latin America, with payout as bank deposits, mobile money or cash pickups.

Topics

  • Remitly API
  • remittance data API
  • sendCountryCode
  • baseRate
  • wallet balance
  • recipient payout
  • open banking Remitly
  • collectionAmount

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