### Initialize and start Slate server Source: https://github.com/transferwise/api-docs/blob/master/README.md Commands to install dependencies and launch the local development server. ```shell bundle install bundle exec middleman server ``` -------------------------------- ### Get User Tokens Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_users.md Request and response examples for retrieving user-specific tokens using a registration code. ```shell curl \ -u '[your-api-client-id]:[your-api-client-secret]' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'grant_type=registration_code' \ -d 'email=' \ -d 'client_id=[your-api-client-id]' \ -d 'registration_code=' \ 'https://api.sandbox.transferwise.tech/oauth/token' ``` ```json { "access_token": "01234567-89ab-cdef-0123-456789abcdef", "token_type": "bearer", "refresh_token": "01234567-89ab-cdef-0123-456789abcdef", "expires_in": 43199, "scope": "transfers" } ``` ```json { "error": "invalid_grant", "error_description": "Invalid user credentials." } ``` -------------------------------- ### Get Account By ID Response Example Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_recipients.md This is an example JSON response when successfully retrieving account information. It includes various details about the account, such as ID, profile, account holder name, type, country, currency, and nested details. ```json { "id": 13967081, "profile": , "accountHolderName": "Ann Johnson", "type": "sort_code", "country": "GB", "currency": "GBP", "details": { "address": { "country": null, "countryCode": null, "firstLine": null, "postCode": null, "city": null, "state": null }, "email": null, "legalType": "PRIVATE", "accountNumber": "28821822", "sortCode": "231470", "abartn": null, "accountType": null, "bankgiroNumber": null, "ifscCode": null, "bsbCode": null, "institutionNumber": null, "transitNumber": null, "phoneNumber": null, "bankCode": null, "russiaRegion": null, "routingNumber": null, "branchCode": null, "cpf": null, "cardNumber": null, "idType": null, "idNumber": null, "idCountryIso3": null, "idValidFrom": null, "idValidTo": null, "clabe": null, "swiftCode": null, "dateOfBirth": null, "clearingNumber": null, "bankName": null, "branchName": null, "businessNumber": null, "province": null, "city": null, "rut": null, "token": null, "cnpj": null, "payinReference": null, "pspReference": null, "orderId": null, "idDocumentType": null, "idDocumentNumber": null, "targetProfile": null, "taxId": null, "iban": null, "bic": null, "IBAN": null, "BIC": null, "interacAccount": null }, "user": , "active": true, "ownedByCustomer": false } ``` -------------------------------- ### Get Client Credentials Token Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_users.md Request and response examples for obtaining an access token using API client credentials. ```shell curl -X "POST" "https://api.sandbox.transferwise.tech/oauth/token" \ -H 'Content-Type: application/x-www-form-urlencoded' \ -u '[your-api-client-id]:[your-api-client-secret]' \ --data-urlencode "grant_type=client_credentials" ``` ```json { "access_token":"ba8k1234-00f2-475a-60d8-6g45377b4062", "token_type":"bearer", "expires_in": 43199, "scope":"transfers" } ``` -------------------------------- ### Get Borderless Account Balance Response Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_borderless.md Example JSON response containing account details and a list of currency balances. ```json [ { "id": 64, "profileId": , "recipientId": 13828530, "creationTime": "2018-03-14T12:31:15.678Z", "modificationTime": "2018-03-19T15:19:42.111Z", "active": true, "eligible": true, "balances": [ { "balanceType": "AVAILABLE", "currency": "GBP", "amount": { "value": 10999859, "currency": "GBP" }, "reservedAmount": { "value": 0, "currency": "GBP" }, "bankDetails": null }, { "balanceType": "AVAILABLE", "currency": "EUR", "amount": { "value": 9945236.2, "currency": "EUR" }, "reservedAmount": { "value": 0, "currency": "EUR" }, "bankDetails": { "id": 90, "currency": "EUR", "bankCode": "DEKTDE7GXXX", "accountNumber": "DE51 7001 1110 6050 1008 91", "swift": "DEKTDE7GXXX", "iban": "DE51 7001 1110 6050 0008 91", "bankName": "Handelsbank", "accountHolderName": "Oliver Wilson", "bankAddress": { "addressFirstLine": "Elsenheimer Str. 41", "postCode": "80687", "city": "München", "country": "Germany", "stateCode": null } } } ] } ] ``` -------------------------------- ### Get User by ID Response Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_users.md Example JSON response containing user profile and address details. ```json { "id": 101, "name": "Example Person", "email": "person@example.com", "active": true, "details": { "firstName": "Example", "lastName": "Person", "phoneNumber": "+37111111111", "occupation": "", "address": { "city": "Tallinn", "countryCode": "EE", "postCode": "11111", "state": "", "firstLine": "Road 123" }, "dateOfBirth": "1977-01-01", "avatar": "https://lh6.googleusercontent.com/photo.jpg", "primaryAddress": 111 } } ``` -------------------------------- ### Example Authorization Request URL Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_openbanking.md This is an example of the URL used to initiate an authorization request. Ensure all parameters match those in the JWT request object. ```shell https://sandbox.transferwise.tech/openbanking/authorize? response_type=code%20id_token& redirect_uri=https://ob-dummy-tpp/redirect& scope=openid%20accounts& client_id=ob-dummy-tpp& state=state123& nonce=nonce123& request=eyJ0...sYjmjJg ``` -------------------------------- ### Temporary Quote Request Examples Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_quotes.md Example request URLs for specific currency conversion scenarios. ```http GET https://api.sandbox.transferwise.tech/v1/quotes?source=SEK&target=USD&sourceAmount=1000&rateType=FIXED ``` ```http GET https://api.sandbox.transferwise.tech/v1/quotes?source=SEK&target=USD&targetAmount=1000&rateType=FIXED ``` -------------------------------- ### Redirect URL Example Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_connected-apps.md This is an example of a redirect URL with authorization parameters after a user grants access. ```url https://www.yourapp.com/?code=ABCDEF&state=f6027a42-344d-4a4d-9f8a-39e42acf9887&profileId=12345 ``` -------------------------------- ### Get User Tokens Response Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_connected-apps.md This is an example JSON response containing the access token, refresh token, and their validity period. ```json { "access_token":"ba8k9935-62f2-475a-60d8-6g45377b4062", "token_type":"bearer", "refresh_token":"a235uu9c-9azu-4o28-a1kn-e15500o151cx", "expires_in": 43199, "scope":"transfers" } ``` -------------------------------- ### Example API Response for Verification Status (JSON) Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_connected-apps.md This is an example of the JSON response you will receive when checking a profile's verification status. It includes the profile ID and its current verification status. ```json { "profileId": 12345, "currentStatus": "verified" } ``` -------------------------------- ### Example Test Notification Structure Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_app_webhooks.md This is an example of a test notification as it would be received. Note the 'x-test-notification: true' header and the dummy data within the payload. This flag helps distinguish test notifications from real ones. ```text x-signature: bnho0q9JhjR6IPJIOZqWVP... x-delivery-id: 4a6b9810-4279-4de5-8d8d-1a6cf3b92a75 x-test-notification: true { "data": { "resource": { "id": 0, "profile_id": 0, "account_id": 0, "type": "transfer" }, "current_state": "processing", "previous_state": "incoming_payment_waiting", "occurred_at": "2019-03-28T11:22:33Z" }, "subscription_id": "39f241b7-293d-439e-beb3-4bf947bd4ff8", "event_type": "transfers#state-change", "schema_version": "2.0.0", "sent_at": "2019-03-28T11:22:33Z" } ``` -------------------------------- ### Example Comparison Response Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_comparison.md This is an example of the JSON response structure when requesting comparison quotes. It includes details about providers, their rates, fees, received amounts, and delivery estimations. ```json { "sourceCurrency": "GBP", "targetCurrency": "EUR", "sourceCountry": null, "targetCountry": null, "providerCountry": null, "providerType": null, "sendAmount": 10000.0, "providers": [ { "id": 39, "alias": "transferwise", "name": "TransferWise", "logo": "https://dq8dwmysp7hk1.cloudfront.net/logos/transferwise.svg", "type": "moneyTransferProvider", "partner": false, "quotes": [ { "rate": 1.15989, "fee": 37.12, "receivedAmount": 11555.84, "dateCollected": "2019-10-22T14:36:43Z", "sourceCountry": null, "targetCountry": null, "markup": 0.0, "deliveryEstimation": { "duration": { "min": "PT20H8M16.305111S", "max": "PT20H8M16.305111S" }, "providerGivesEstimate": true } } ] }, { "id": 1, "alias": "barclays", "name": "Barclays", "logo": "https://dq8dwmysp7hk1.cloudfront.net/logos/barclays.svg", "type": "bank", "partner": false, "quotes": [ { "rate": 1.12792426, "fee": 0.0, "receivedAmount": 11279.24, "dateCollected": "2019-10-22T14:00:04Z", "sourceCountry": "GB", "targetCountry": "ES", "markup": 2.75592858, "deliveryEstimation": { "duration": { "min": "PT24H", "max": "PT24H" }, "providerGivesEstimate": true } }, ... { "rate": 1.12792426, "fee": 0.0, "receivedAmount": 11279.24, "dateCollected": "2019-10-22T14:00:04Z", "sourceCountry": "GB", "targetCountry": "FI", "markup": 2.75592858, "deliveryEstimation": { "duration": { "min": "PT24H", "max": "PT24H" }, "providerGivesEstimate": true }, ... } ... ] } ] } ``` -------------------------------- ### GET /v1/currency-pairs Source: https://context7.com/transferwise/api-docs/llms.txt Retrieve all supported currency routes with limits. ```APIDOC ## GET /v1/currency-pairs ### Description Retrieve all supported currency routes with limits. ### Method GET ### Endpoint https://api.sandbox.transferwise.tech/v1/currency-pairs ### Response #### Success Response (200) - **sourceCurrencies** (array) - List of source currencies and their target currency limits ``` -------------------------------- ### Get Account Balance Source: https://context7.com/transferwise/api-docs/llms.txt Retrieve available balances for all currencies in a borderless account. ```shell curl -X GET "https://api.sandbox.transferwise.tech/v1/borderless-accounts?profileId=220192" \ -H "Authorization: Bearer " ``` ```json [ { "id": 64, "profileId": 220192, "recipientId": 13828530, "active": true, "balances": [ { "balanceType": "AVAILABLE", "currency": "GBP", "amount": {"value": 10999859, "currency": "GBP"}, "reservedAmount": {"value": 0, "currency": "GBP"} }, { "balanceType": "AVAILABLE", "currency": "EUR", "amount": {"value": 9945236.2, "currency": "EUR"}, "reservedAmount": {"value": 0, "currency": "EUR"}, "bankDetails": { "iban": "DE51 7001 1110 6050 0008 91", "swift": "DEKTDE7GXXX", "bankName": "Handelsbank" } } ] } ] ``` -------------------------------- ### Create User Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_users.md Request and response examples for creating a new user. Includes success and failure scenarios. ```shell curl -X POST https://api.sandbox.transferwise.tech/v1/user/signup/registration_code \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "email": , "registrationCode": , "language":"PT" }' ``` ```json { "id": 12345, "name": null, "email": "new.user@domain.com", "active": true, "details": null } ``` ```json { "errors": [ { "code": "NOT_UNIQUE", "message": "You’re already a member. Please login", "path": "email", "arguments": [ "email", "class com.transferwise.fx.api.ApiRegisterCommand", "existing.user@domain.com" ] } ] } ``` -------------------------------- ### Securely Manage Configuration Files Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_payouts.md Shows how to copy a sample environment file, add it to .gitignore to prevent committing, and set restrictive permissions. This prevents sensitive information like API tokens from being exposed in version control. ```bash $ cp .env.sample .env $ echo .env >> .gitignore $ chown myapp:root .env && chmod 600 .env ``` -------------------------------- ### Perform initial API request Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_payouts.md Example of an API request that may trigger a 403 Forbidden response requiring strong authentication. ```bash $ curl -i -X POST 'https://api.sandbox.transferwise.tech/v3/profiles/{profileId}/transfers/{transferId}/payments' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ -d '{"type": "BALANCE"}' ``` -------------------------------- ### Get Webhook Subscription by ID Response Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_webhooks_v1.md Example JSON response for retrieving a single webhook subscription by its ID. This includes all details of the specified subscription. ```json { "id": "abcde123-abcd-abcd-abcd-abcde1234567", "name": "Webhook Subscription #1", "channel_id": "WEBHOOK", "user_id": "TW::", "status": "ENABLED", "created_on": "2019-03-10T09:32:15.663Z", "url": "", "profile_id": , "enabled_notifications": [ "balance", "transfers" ] } ``` -------------------------------- ### GET /v1/subscriptions/{subscriptionId}/ Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_webhooks_v1.md Get subscription information by ID. ```APIDOC ## GET /v1/subscriptions/{subscriptionId}/ ### Description Get subscription information by ID. ### Method GET ### Endpoint https://api.transferwise.com/v1/subscriptions/{subscriptionId}/ ### Parameters #### Path Parameters - **subscriptionId** (string) - Required - The unique identifier of the subscription. ### Response #### Success Response (200) - **id** (Text) - Subscription ID - **name** (String) - Custom name of your webhook - **channel_id** (String) - ID of the channel through which you're receiving notifications, always equal to WEBHOOK - **user_id** (Integer) - Your user ID - **status** (String) - Status of the subscription - **created_on** (Date) - Timestamp when subscription was created - **url** (String) - URL of your server - **profile_id** (Integer) - ID of the profile you want to receive notifications from - **enabled_notifications** ([String]) - List of resources you would like to receive notifications about #### Response Example { "id": "abcde123-abcd-abcd-abcd-abcde1234567", "name": "Webhook Subscription #1", "channel_id": "WEBHOOK", "user_id": "TW::", "status": "ENABLED", "created_on": "2019-03-10T09:32:15.663Z", "url": "", "profile_id": "", "enabled_notifications": ["balance", "transfers"] } ``` -------------------------------- ### Create topup quote Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_payouts.md Initiate a quote for a topup order using the REGULAR quote type. ```shell curl -X POST https://api.sandbox.transferwise.tech/v1/quotes \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "profile": , "source": "EUR", "target": "EUR", "rateType": "FIXED", "targetAmount": 6000, "type": "REGULAR" }' ``` -------------------------------- ### GET /v1/delivery-estimates/{transferId} Source: https://context7.com/transferwise/api-docs/llms.txt Get the estimated delivery time for a specific transfer. ```APIDOC ## GET /v1/delivery-estimates/{transferId} ### Description Retrieve the estimated delivery date for a specific transfer. ### Method GET ### Endpoint https://api.sandbox.transferwise.tech/v1/delivery-estimates/{transferId} ### Parameters #### Path Parameters - **transferId** (string) - Required - The ID of the transfer. ### Response #### Success Response (200) - **estimatedDeliveryDate** (string) - The estimated delivery date. ``` -------------------------------- ### GET /v1/quotes Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_affiliates.md Get pricing, fees, and estimated delivery time for a transfer. ```APIDOC ## GET /v1/quotes ### Description Calculate transfer costs, fees, and estimated delivery times for a specific currency route and amount. ### Method GET ### Endpoint /v1/quotes ### Parameters #### Query Parameters - **source** (string) - Required - Source currency code. - **target** (string) - Required - Target currency code. - **rateType** (string) - Required - Type of rate (e.g., FIXED). - **targetAmount** (number) - Required - The amount to be received. ### Request Example curl -X GET https://api.sandbox.transferwise.tech/v1/quotes?source=EUR&target=GBP&rateType=FIXED&targetAmount=600 --user : ### Response #### Success Response (200) - **source** (string) - Source currency. - **target** (string) - Target currency. - **sourceAmount** (number) - Amount to send. - **targetAmount** (number) - Amount to receive. - **fee** (number) - Transfer fee. - **deliveryEstimate** (string) - Estimated delivery time. #### Response Example { "source": "EUR", "target": "GBP", "sourceAmount": 663.84, "targetAmount": 600.00, "type": "REGULAR", "rate": 0.9073, "fee": 2.34, "deliveryEstimate": "2018-08-27T14:35:44.496Z" } ``` -------------------------------- ### Install Ruby dependencies on Ubuntu Source: https://github.com/transferwise/api-docs/blob/master/README.md System packages required for building the project on Ubuntu environments. ```shell sudo apt-get install ruby-full build-essential liblzma-dev patch ruby-dev zlib1g-dev ``` -------------------------------- ### Create Address Request Example Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_addresses.md A valid request body for creating an address object once all required fields have been satisfied. ```json { "profile" : your-profile-id, "details": { "country" : "US", "state": "AZ", "city": "Phoenix", "postCode": "10025", "firstLine": "50 Sunflower Ave.", "occupation": "software engineer" } } ``` -------------------------------- ### Example Transfer Processing Response Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_simulation.md This is an example JSON response when simulating a transfer's status to 'processing'. It shows the transfer details and its current status. ```json { "id": 15574445, "user": 294205, "targetAccount": 7993919, "sourceAccount": null, "quote": 113379, "status": "processing", "reference": "good times", "rate": 1.2151, "created": "2017-03-14 15:25:51", "business": null, "transferRequest": null, "details": { "reference": "good times" }, "hasActiveIssues": false, "sourceValue": 1000, "sourceCurrency": "EUR", "targetValue": 895.32, "targetCurrency": "GPB" } ``` -------------------------------- ### Conversion details response Source: https://context7.com/transferwise/api-docs/llms.txt Example JSON response detailing a completed currency conversion. ```json { "id": 369588, "type": "CONVERSION", "state": "COMPLETED", "sourceAmount": {"value": 113.48, "currency": "EUR"}, "targetAmount": {"value": 100, "currency": "GBP"}, "rate": 0.88558, "feeAmounts": [{"value": 0.56, "currency": "EUR"}] } ``` -------------------------------- ### Get Banks List Source: https://context7.com/transferwise/api-docs/llms.txt Retrieve available banks for countries requiring bank code selection. Specify the country code to get relevant bank information. ```shell # Get banks for Hong Kong curl -X GET "https://api.sandbox.transferwise.tech/v1/banks?country=HK" \ -H "Authorization: Bearer " ``` ```shell # Get bank branches curl -X GET "https://api.sandbox.transferwise.tech/v1/bank-branches?country=HK&bankCode=003" \ -H "Authorization: Bearer " ``` -------------------------------- ### Create Address Response Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_addresses.md Example response after successfully creating an address. The response includes the newly created address ID and its details. ```json { "id": 236532, "profile": , "details": { "country": "EE", "firstLine": "Narva mnt 5-1", "postCode": "10113", "city": "Tallinn", "state": "", "occupation": null } } ``` -------------------------------- ### Currency Pairs Response Source: https://context7.com/transferwise/api-docs/llms.txt Example response showing supported currency pairs, including minimum and maximum invoice amounts for transfers. ```json { "sourceCurrencies": [ { "currencyCode": "GBP", "maxInvoiceAmount": 1000000, "targetCurrencies": [ {"currencyCode": "EUR", "minInvoiceAmount": 1}, {"currencyCode": "USD", "minInvoiceAmount": 1} ] } ] } ``` -------------------------------- ### Get Account By ID Request Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_recipients.md Use this cURL command to make a GET request to retrieve account details. Replace `{accountId}` with the actual account ID and `` with your authentication token. ```shell curl -X GET https://api.sandbox.transferwise.tech/v1/accounts/{accountId} \ -H "Authorization: Bearer " ``` -------------------------------- ### Execute a currency conversion Source: https://context7.com/transferwise/api-docs/llms.txt Use this endpoint to initiate a currency conversion. Ensure you have a valid quote ID. ```shell curl -X POST https://api.sandbox.transferwise.tech/v1/borderless-accounts/64/conversions \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -H "X-idempotence-uuid: 550e8400-e29b-41d4-a716-446655440000" \ -d '{"quoteId": 113379}' ``` -------------------------------- ### Example borderless accounts response Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_payouts.md Sample JSON response structure for the borderless accounts query. ```json [ { "id": 64, "profileId": , "recipientId": , ... } ] ``` -------------------------------- ### Get User Profile ID Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_payouts.md Retrieve your personal or business profile ID by making a GET request to the profiles endpoint. This ID is essential for creating quotes and transfers, and will default to your personal profile if not specified. ```shell curl -X GET https://api.sandbox.transferwise.tech/v1/profiles \ -H "Authorization: Bearer " ``` -------------------------------- ### Available Currencies Response Source: https://context7.com/transferwise/api-docs/llms.txt Example response listing currencies available for borderless accounts, indicating if bank details are supported and if pay-in is allowed. ```json [ {"code": "EUR", "hasBankDetails": true, "payInAllowed": true}, {"code": "GBP", "hasBankDetails": true, "payInAllowed": true}, {"code": "USD", "hasBankDetails": true, "payInAllowed": true} ] ``` -------------------------------- ### GET /v1/transfers Source: https://context7.com/transferwise/api-docs/llms.txt List transfers with optional filters. ```APIDOC ## GET /v1/transfers ### Description Retrieve a list of transfers with optional filters for status, currency, and date range. ### Method GET ### Endpoint https://api.sandbox.transferwise.tech/v1/transfers ### Parameters #### Query Parameters - **profile** (integer) - Optional - Profile ID - **status** (string) - Optional - Transfer status - **sourceCurrency** (string) - Optional - Source currency code - **createdDateStart** (string) - Optional - Start date filter - **createdDateEnd** (string) - Optional - End date filter - **limit** (integer) - Optional - Number of results - **offset** (integer) - Optional - Pagination offset ``` -------------------------------- ### POST /v1/user/signup/registration_code Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_users.md Create a new user account using an email address and a registration code. ```APIDOC ## POST /v1/user/signup/registration_code ### Description Creates a new user if the email address is not already associated with an active user. ### Method POST ### Endpoint https://api.sandbox.transferwise.tech/v1/user/signup/registration_code ### Parameters #### Request Body - **email** (string) - Required - User email address - **registrationCode** (string) - Required - Registration code - **language** (string) - Optional - Language code (e.g., "PT") ### Request Example curl -X POST https://api.sandbox.transferwise.tech/v1/user/signup/registration_code \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "email": , "registrationCode": , "language":"PT" }' ### Response #### Success Response (200) - **id** (integer) - User ID - **email** (string) - User email - **active** (boolean) - Account status #### Response Example { "id": 12345, "name": null, "email": "new.user@domain.com", "active": true, "details": null } ``` -------------------------------- ### POST /v3/applications/{clientKey}/subscriptions Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_app_webhooks.md Create a new webhook subscription for a specific application. ```APIDOC ## POST /v3/applications/{clientKey}/subscriptions ### Description Creates a new webhook subscription to receive notifications for specific events. ### Method POST ### Endpoint https://api.sandbox.transferwise.tech/v3/applications/{clientKey}/subscriptions ### Parameters #### Path Parameters - **clientKey** (Text) - Required - The unique key for the application. #### Request Body - **name** (Text) - Required - A custom name for your webhook. - **trigger_on** (Text) - Required - The event type to trigger the webhook. - **delivery.version** (Text) - Required - The event representation semantic version. - **delivery.url** (Text) - Required - The URL where your server will be listening for events. ### Request Example { "name": "Webhook Subscription #1", "trigger_on": "transfers#state-change", "delivery": { "version": "2.0.0", "url": "https://your.webhook.url/12345" } } ### Response #### Success Response (200) - **id** (Text) - Unique identifier for the subscription - **name** (Text) - Name of the subscription - **delivery** (Object) - Delivery configuration - **trigger_on** (Text) - The event triggered - **scope** (Object) - Scope details - **created_by** (Object) - Creator information - **created_at** (Text) - Timestamp of creation #### Response Example { "id": "72195556-e5cb-495e-a010-b37a4f2a3043", "name": "Webhook Subscription #1", "delivery": { "version": "2.0.0", "url": "https://your.webhook.url/12345" }, "trigger_on": "transfers#state-change", "scope": { "domain": "application", "id": "" }, "created_by": { "type": "application", "id": "" }, "created_at": "2019-10-10T13:55:57Z" } ``` -------------------------------- ### GET /v1/subscriptions Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_webhooks_v1.md List all created webhook subscriptions. ```APIDOC ## GET /v1/subscriptions ### Description List all created webhook subscriptions. ### Method GET ### Endpoint https://api.transferwise.com/v1/subscriptions ### Parameters #### Query Parameters - **channelId** (string) - Required - The channel ID, should be set to 'webhook'. ### Response #### Success Response (200) - **id** (Text) - Subscription ID - **name** (String) - Custom name of your webhook - **channel_id** (String) - ID of the channel through which you're receiving notifications, always equal to WEBHOOK - **user_id** (Integer) - Your user ID - **status** (String) - Status of the subscription - **created_on** (Timestamp) - Timestamp when subscription was created - **url** (String) - URL of your server - **profile_id** (Integer) - ID of the profile you want to receive notifications from - **enabled_notifications** ([String]) - List of resources you would like to receive notifications about #### Response Example [ { "id": "abcde123-abcd-abcd-abcd-abcde1234567", "name": "Webhook Subscription #1", "channel_id": "WEBHOOK", "user_id": "TW::", "status": "ENABLED", "created_on": "2019-03-10T09:32:15.663Z", "url": "", "profile_id": "", "enabled_notifications": ["balance"] } ] ``` -------------------------------- ### GET /v3/comparisons/ Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_comparison.md Retrieves a list of quotes for a given currency route and amount. The response includes details about providers, their fees, exchange rates, and delivery estimations. ```APIDOC ## GET /v3/comparisons/ ### Description Retrieves a list of quotes for a given currency route and amount. The response includes details about providers, their fees, exchange rates, and delivery estimations. ### Method GET ### Endpoint https://api.transferwise.com/v3/comparisons/ ### Parameters #### Query Parameters - **sourceCurrency** (Text) - Required - ISO 4217 source currency code - **targetCurrency** (Text) - Required - ISO 4217 target currency code - **sendAmount** (Decimal) - Required - Amount in source currency - **sourceCountry** (Text) - Optional - Filter by source country (ISO 3166-1 Alpha-2 code) - **targetCountry** (Text) - Optional - Filter by target country (ISO 3166-1 Alpha-2 code) - **providerType** (Text) - Optional - Filter by provider type. One of "bank","moneyTransferProvider" ### Response #### Success Response (200) - **id** (Integer) - Provider id - **alias** (Text) - Provider alias (lowercase slug name) - **name** (Text) - Provider name (presentational / formal name) - **logo** (Text) - URL pointing to provider logo (default svg format) - **type** (Text) - Provider type - **partner** (Boolean) - Whether a partner of TransferWise or not - **quotes** (Array) - An array of estimated quotes per provider - **quotes.rate** (Timestamp) - The live estimated exchange for the provider for this quote - **quotes.fee** (Integer) - The estimated fee for the provider for this quote - **quotes.receivedAmount** (Integer) - The total estimated receive amount for the provider for this quote - **quotes.dateCollected** (Text) - The date of collection for the original quote - **quotes.sourceCountry** (Timestamp) - Source country (ISO 3166-1 Alpha-2 code) - **quotes.targetCountry** (Decimal) - Target country (ISO 3166-1 Alpha-2 code) - **quotes.deliveryEstimation** (Object) - Delivery estimation details - i.e a speed estimate - **quotes.deliveryEstimation.duration** (Object) - Duration range - **quotes.deliveryEstimation.duration.min** (ISO 8601 duration format) - Minimum quoted time for transaction delivery - **quotes.deliveryEstimation.duration.max** (ISO 8601 duration format) - Maximum quoted time for transaction delivery - **quotes.deliveryEstimation.providerGivesEstimate** (Boolean) - Whether a provider publicly surfaces / exposes a speed estimate #### Response Example { "example": "{\"id\": 123, \"alias\": \"provider_x\", \"name\": \"Provider X\", \"logo\": \"https://example.com/logo.svg\", \"type\": \"moneyTransferProvider\", \"partner\": false, \"quotes\": [ { \"rate\": \"2023-10-27T10:00:00Z\", \"fee\": 10, \"receivedAmount\": 990, \"dateCollected\": \"2023-10-27T09:55:00Z\", \"sourceCountry\": \"GB\", \"targetCountry\": \"ES\", \"deliveryEstimation\": { \"duration\": { \"min\": \"PT24H\", \"max\": \"PT48H\" }, \"providerGivesEstimate\": true } } ]}" } ``` -------------------------------- ### Get List of Countries Endpoint Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_recipients.md Endpoint to retrieve allowed countries. ```http GET https://api.sandbox.transferwise.tech/v1/countries ``` -------------------------------- ### List All Subscriptions Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_app_webhooks.md Retrieve a list of all subscriptions associated with your application. Each subscription includes details like its ID, name, delivery configuration, and the event it triggers on. ```shell curl -X GET "https://api.sandbox.transferwise.tech/v3/applications/{clientKey}/subscriptions" \ -H "Authorization: Bearer " ``` -------------------------------- ### Open profile update window Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_profiles.md Initiates an update window for a specific profile to allow modifications. ```shell curl -X POST https://api.sandbox.transferwise.tech/v1/profiles/{profileId}/update-window \ -H "Authorization: Bearer " ``` -------------------------------- ### GET /v1/validators/* Source: https://context7.com/transferwise/api-docs/llms.txt Validate recipient bank details before creating accounts. ```APIDOC ## GET /v1/validators/{type} ### Description Validate recipient bank details before creating accounts. ### Method GET ### Endpoint https://api.transferwise.com/v1/validators/{type} ### Parameters #### Query Parameters - **sortCode** (string) - Optional - For sort-code validation - **iban** (string) - Optional - For IBAN validation - **abartn** (string) - Optional - For US routing number validation - **ifscCode** (string) - Optional - For Indian IFSC code validation ### Response #### Success Response (200) - **validation** (string) - Status of the validation ``` -------------------------------- ### Get Transfer Status Source: https://context7.com/transferwise/api-docs/llms.txt Retrieve the current status of a transfer by its ID. ```shell curl -X GET https://api.sandbox.transferwise.tech/v1/transfers/468956 \ -H "Authorization: Bearer " ``` ```json { "id": 468956, "status": "outgoing_payment_sent", "rate": 0.9065, "created": "2018-08-28 07:43:55", "sourceCurrency": "EUR", "sourceValue": 661.89, "targetCurrency": "GBP", "targetValue": 600, "customerTransactionId": "bd244a95-dcf8-4c31-aac8-bf5e2f3e54c0" } ``` -------------------------------- ### Execute Conversion Source: https://context7.com/transferwise/api-docs/llms.txt Executes a currency conversion for a given borderless account. ```APIDOC ## POST /v1/borderless-accounts/{accountId}/conversions ### Description Executes a currency conversion for a given borderless account. ### Method POST ### Endpoint https://api.sandbox.transferwise.tech/v1/borderless-accounts/{accountId}/conversions ### Parameters #### Path Parameters - **accountId** (string) - Required - The ID of the borderless account. #### Request Body - **quoteId** (integer) - Required - The ID of the quote to use for the conversion. ### Request Example ```json { "quoteId": 113379 } ``` ### Response #### Success Response (200) - **id** (integer) - The ID of the conversion. - **type** (string) - The type of the transaction, always "CONVERSION". - **state** (string) - The current state of the conversion (e.g., "COMPLETED"). - **sourceAmount** (object) - The amount and currency of the source. - **value** (number) - The amount. - **currency** (string) - The currency code. - **targetAmount** (object) - The amount and currency of the target. - **value** (number) - The amount. - **currency** (string) - The currency code. - **rate** (number) - The exchange rate used for the conversion. - **feeAmounts** (array) - An array of fee amounts. - **value** (number) - The fee amount. - **currency** (string) - The currency code. #### Response Example ```json { "id": 369588, "type": "CONVERSION", "state": "COMPLETED", "sourceAmount": {"value": 113.48, "currency": "EUR"}, "targetAmount": {"value": 100, "currency": "GBP"}, "rate": 0.88558, "feeAmounts": [{"value": 0.56, "currency": "EUR"}] } ``` ``` -------------------------------- ### GET /v1/addresses Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_addresses.md Lists all addresses associated with a specific user profile. ```APIDOC ## GET /v1/addresses ### Description List of addresses belonging to user profile. ### Method GET ### Endpoint https://api.sandbox.transferwise.tech/v1/addresses ### Parameters #### Query Parameters - **profile** (string) - Required - The ID of the profile to list addresses for. ### Response #### Success Response (200) - **id** (Integer) - Address id - **profile** (Integer) - User profile id. - **details.country** (Text) - 2 digit ISO country code. - **details.firstLine** (Text) - Address line: street, house, apartment. - **details.postCode** (Text) - Zip code - **details.city** (Text) - City name - **details.state** (Text) - State code. - **details.occupation** (Text) - User occupation. #### Response Example ```json [ { "id": 7099091, "profile": , "details": { "country": "EE", "firstLine": "Veerenni 29", "postCode": "12991", "city": "Tallinn", "state": null, "occupation": null } } ] ``` ``` -------------------------------- ### Get List of Allowed Countries Source: https://github.com/transferwise/api-docs/blob/master/source/includes/reference/_recipients.md Retrieves a list of countries supported for addresses. ```shell curl -X GET https://api.sandbox.transferwise.tech/v1/countries ``` ```json { "values": [ { "code": "AL", "name": "Albania" }, { "code": "DZ", "name": "Algeria" }, ... { "code": "ZW", "name": "Zimbabwe" }, { "code": "AX", "name": "Åland Islands" } ] } ``` -------------------------------- ### Create a recipient account Source: https://github.com/transferwise/api-docs/blob/master/source/includes/_payouts.md Use this request to register a new recipient account. The 'details' object structure varies depending on the currency and account type. ```shell curl -X POST https://api.sandbox.transferwise.tech/v1/accounts \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "currency": "GBP", "type": "sort_code", "profile": , "accountHolderName": "Ann Johnson", "legalType": "PRIVATE", "details": { "sortCode": "231470", "accountNumber": "28821822" } }' ``` ```json { "id": 31273058, "profile": , "accountHolderName": "Ann Johnson", "type": "sort_code", "country": "GB", "currency": "GBP", "details": { "accountNumber": "28821822", "sortCode": "231470" } } ```