{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"70528056-a00c-4e19-8cf5-d721a6dad95f","name":"VertoFX API - Technical Integration Guide","description":"## **Introduction**\n\nWelcome to the Verto FX Platform API documentation.\n\nVertoFX is a cross-border payments and FX platform that allows businesses to have global & local accounts.\n\nWe accept & send payments using accounts globally in 50 currencies on a single application.\n\nThis document is written for a technical audience implementing online pay-in/out and currency exchange functions using VertoFX platform.\n\nThe API integration model is the most simplest and straightforward way which enables secure pay-in/out and FX experience to take place behind the scenes. Available API calls for authentication, transaction and queries enable businesses to enjoy VertoFX features in a secure and safe manner from the backend without interacting with VertoFX screens.\n\n## **Supported Languages/Methods**\n\nThe API supports all platforms & languages that can implement HTTP RESTful methods.\n\n## Setting up an account in Sandbox\n\nTo try out our API on sandbox you can create on account using this link - [https://sandbox.vertofx.com/auth/register](https://sandbox.vertofx.com/auth/register).\n\n<img src=\"https://content.pstmn.io/9faa5609-101f-4d35-838d-68f9ee7544b6/aW1hZ2UucG5n\" width=\"759\" height=\"122\">\n\n## **Environment**\n\nA dedicated API test environment (staging) is available and all API action types given in this document can be tested using VertoFX API Test URL. All API requests should be sent to this URL address using HTTP RESTful methods.\n\n- **VertoFX API Testing URL**\n    \n    - [https://api-v3-sandbox.vertofx.com](https://api.sandbox.vertofx.com/)\n        \n- **VertoFX API Live URL**\n    \n    - [https://api-v3-beta.vertofx.com](https://api.vertofx.com/)\n        \n\n## **Security**\n\nVertoFX is built on a robust and secure communication protocol. VertoFX API is a set of instructions submitted with standard [HTTPS](http://en.wikipedia.org/wiki/HTTP_Secure) Post requests. At the server end, we use a certificate delivered by Verisign. The [SSL](https://en.wikipedia.org/wiki/Transport_Layer_Security) encryption guarantees that it is our servers you are communicating with and that your data is transmitted in encrypted form.\n\nWhen we receive a request, we check the level of encryption. Directly TLSv1.2 version and next version is supported.\n\n> **Note**:  \nNon-encrypted HTTP connections are not accepted. Do not connect to our API with unencrypted HTTP, as this will transmit your access token in plaintext over the network \n  \n> You should also not proceed with a connection when you receive a certificate validation error from VertoFX. Make sure all parts of your application are using encryption and HTTPS and failing when certificate validation fails. \n  \n\n## **Authentication**\n\nYou first authenticate to the API by providing an API token in the request. To know how to generate and access your client Id and Access token click [here](https://docs.vertofx.com/#quick-start-guide)\n\nYour Client ID & API Key combination enables you to access many privileges, so be sure to **keep them secret**.\n\nFor security reasons, **once copied, the API key will be invisible**. If you lost your existing API key or was not able to save it; then you need to generate a new one by following the same steps.\n\n> **Note:**  \nAll API requests must be made over **HTTPS** and **authenticated**. \n  \n\n## **Request & Response Basics**\n\n#### **Sending Request to VertoFX API**\n\nA request to the VertoFX API is made by sending a JSON request to VertoFX API Endpoint URL. Each HTTP POST request sent to the API URL should have a set of parameter-value pairs encoded in it, depending on the type of request being sent.\n\nBaseURL to be used in all API Requests for the sandbox environment:\n\n**BaseURL** : [https://api-v3-sandbox.vertofx.com](https://api-v3-sandbox.vertofx.com/)\n\n#### **Parsing Response of VertoFX API**\n\nVertoFX responses by default will be in the form of [JSON](http://www.json.org/) format. You can use any JSON parsing tool or framework to process VertoFX responses.\n\n## **Error Handling**\n\nIf a request results in an error, the relevant error code, message and details will be present in the response. The existing error codes in the system are as follows:\n\n- 500 - Internal Server Error\n    \n- 400 - Bad Request, the request contains missing parameters, is in an incorrect shape, or failed a validation test\n    \n- 401 - Unauthorized - Please verify that the authentication token is provided and is valid\n    \n- 404 - Not Found - The requested endpoint or entity does not exist\n    \n- 200 - The request was processed successfully\n    \n\n# Quick Start Guide\n\nVerto API v2.1 supports four main functional areas which are:\n\n<img src=\"https://content.pstmn.io/09df96fc-c453-4a8b-a19b-a535fa2cce16/TWFpbiBTZXJ2aWNlcy5qcGc=\" alt=\"Available%20main%20services%20on%20Verto%20API%20v2.1\">\n\nUsing the functions independently or together, you can automate many business use cases. The following diagram illustrates the standard FX and Payment flow which also gives a quick overview of a typical business case.\n\n<img src=\"https://content.pstmn.io/297125f1-dae9-4cd3-b2f2-24d6a4a3664d/U3VtbWFyeSBGbG93IEhpZ2ggUXVhbGl0eS5qcGc=\" width=\"619\" height=\"291\">\n\nAfter the successful authentication to Verto API service (1), you can benefit from the following services:\n\n- Check your wallet and balance information (2)\n    \n- Check the exchange rate (3)\n    \n- Exchange funds (4)\n    \n- Create and update Beneficiaries (5)\n    \n- Create payments (6)\n    \n\nYou can also check the status of exchange and payment transactions using **“Get Order Details”** and **“Get Payment Details”** services. You can find the details of these individual services in the following sections.\n\n> **Note**:  \nYou first need to authenticate to the API service by providing an API token in the request. You can get your API token using the AUTHORIZATION service specified below. This service requires you to send your Client ID & API Key which can be found on your Verto account profile. \n  \n\nIn response you’ll be provided with a token that will be valid for 60 minutes. Simply add this token as header parameter to every request. Your Client ID & API Key set enables you to access many privileges, so be sure to keep them secret!\n\n# Authorization\n\nURL : - {{baseurl}}/users/login\n\nYou first need to authenticate to the API by providing an \"Authorization Token\" in the request. You can get your Authorization token using the \"login'\" service.\n\n<img src=\"https://content.pstmn.io/fe299e1c-a360-4ea0-8ff8-243a5f665ea7/QVBJIEF1dGhvcml6YXRpb24gSElHSC5qcGc=\" width=\"539\" height=\"463\">\n\nThis service will require you to send your Client ID & API Key which can be found on your Verto account profile. Simply go to your Verto Account on the right hand side and select API Credentials option.\n\n<img src=\"https://content.pstmn.io/af966510-ac43-4470-9b92-357b7d4d0015/QVBJIENyZWRuZXRpYWxzLnBuZw==\">\n\nWhen clicked, your Client ID will be displayed along with the option to **\"Generate New API Key\"** as follows:\n\n<img src=\"https://content.pstmn.io/e8803e1a-e54f-410e-9bca-2b60a0030057/a2V5LnBuZw==\">\n\n> **Note**:  \nThe API Key will not be displayed again when you come back to this screen for security reasons. So please make sure that you copy your API Key and save securely at your end. However, if you lost your existing API key or were not able to save it; then you can obtain another one by deactivating the existing one and then generating a new one using the buttons on the top right corner. \n  \n\nYou can send your Authorization request using the Client ID and API key values. In response to your request, you’ll be provided with a token value that will be valid for 60 minutes. You need to add this token as “header parameter” to your requests for other services.\n\n# FX Services\n\nFollowing API services available to support FX related business cases:\n\n- Create FX Trade\n    \n- Get FX Rate\n    \n- Get FX Order Details\n    \n- Book FX Trade (This service has been deprecated in v2)\n    \n\n<img src=\"https://content.pstmn.io/cbd271e2-be1e-418d-9359-f449f368ede5/RlggdHJhbnNhY3Rpb25zLlBORw==\" width=\"386\" height=\"563\">\n\nPlease see the below diagram for a typical exchange use case flow.\n\n# Beneficiary Services\n\nFollowing API services available to support Beneficiaries related business cases:\n\n- Create Beneficiaries\n    \n- Update Beneficiaries\n    \n- Delete Beneficiaries\n    \n- List Beneficiaries\n    \n- Get Beneficiary Details\n    \n\nPlease see the below diagram for a typical use case flow involving beneficiaries.\n\n<img src=\"https://content.pstmn.io/ad8be3ba-5361-4b75-ab1a-5e8bff7e65ed/Q3JlYXRlICYgTGlzdCBCZW5lZmljaWFyeSBISUdILmpwZw==\">\n\n> **Note**:  \nIf you are operating in the financial sector, your beneficiaries will be subject to approval. For all other clients, the beneficiaries will be auto-approved. \n  \n\n# Withdraw Services\n\nFollowing API services available to support withdrawal/payment related business cases.\n\n- Create Payment Request\n    \n- Get Payment Request Details\n    \n- Get Payment Request List\n    \n\nIn addition to the beneficiaries, list wallet, list purpose codes services; you need to utilise the above given payment specific services.\n\nPlease see the below diagram for a typical payment use case and possible values that you might get in the Status field.\n\n<img src=\"https://content.pstmn.io/8fb50905-5377-47ee-b3b2-d56ea934a31b/UGF5LU91dCBUcmFuc2FjdGlvbiBGbG93IEhJR0guanBn\">\n\n# Webhooks\n\nIn response to some events, we generate and send out a webhook message to your defined URL.\n\nThe events for which Verto API will send webhooks\n\n- **FX status changes**\n    \n    - When FX order is created\n        \n    - When inward order is confirmed\n        \n    - When inward order is disputed\n        \n    - When outward order is completed\n        \n    - When Outward order is disputed\n        \n- **Beneficiaries**\n    \n    - When a Beneficiary is created with a status for pending\n        \n    - When a Beneficiary gets approved.\n        \n    - When a beneficiary gets rejected.\n        \n- **Making Payments**\n    \n    - When payment is requested\n        \n    - When payment request is completed\n        \n    - When payment is refunded\n        \n    - When Payment is achieved\n        \n- **Receiving Payments**\n    \n    - When you receive a payment into your wallet from an external entity, this can be through our global accounts feature or directly into your wallet from a business which an entity on Verto.\n        \n    - When you add funds to your wallet.\n        \n\n> **Note:**  \n**We don’t notify on any actions taken by the vertofx admin team, only for requests created by you or your customers. These would include actions like a manual credit intoyour wallet done by the verto operations team. In order to check balance use the wallet listing APIs** \n  \n\n## **Receiving web hooks**\n\nTo configure the web hooks from your account\n\n- Login to the production or sandbox account\n    \n- Go to your profile and click on API\n    \n- Go to Web hook settings\n    \n\n<img src=\"https://content.pstmn.io/4f4319ab-6fc5-4b08-a853-040b7bed560a/aW1hZ2UtMjAyMjEwMTEtMDY1MzAzLnBuZw==\">\n\n<img src=\"https://content.pstmn.io/9695f424-1fc7-441c-b901-3011484fca2a/aW1hZ2UtMjAyMjEwMTEtMDcwMzUwLnBuZw==\" width=\"760\" height=\"940\">\n\n- Save and continue\n    \n- Once you’re done configuring the call back URLs it should look something like this\n    \n\n<img src=\"https://content.pstmn.io/22b73f8b-44e2-4aad-a061-f0b46021cfde/aW1hZ2UtMjAyMjEwMTEtMDcwNjQ5LnBuZw==\" width=\"1598\" height=\"383\">\n\n## **Web hook logs**\n\nWeb hooks that are sent and the responses we receive for them from the client can be seen in this section.\n\n<img src=\"https://content.pstmn.io/b6fcc3b8-fa37-4030-aa15-62ea6d76c69c/aW1hZ2UtMjAyMjEwMzEtMTEzODEwLnBuZw==\">\n\nTo view more information on the log you can click on an individual record\n\n<img src=\"https://content.pstmn.io/361e1a73-de36-4cf4-9249-53e20ab0e1b2/aW1hZ2UtMjAyMjEwMzEtMTE0MDQ0LnBuZw==\" width=\"900\" height=\"648\">\n\n| **Attributes** | **Description** |\n| --- | --- |\n| type | \\[ PAYMENT_STATUS_CHANGE, FX_STATUS_CHANGE, BENEFICIARY_STATUS_CHANGE \\]  <br>  <br>You can expect to have 3 enum values |\n| payload | The payload based on the type of response received |\n| Status | The webbook was successfully consumed or received |\n| Response Body | What was received after consuming the webhook |\n| Response Time | Time it took to receive the web hook response |\n\n## Authorization\n\nYou are not required to authorize the callbacks sent by Verto API.\n\nWe recommend you to whitelist the IP addresses listed below for both the Sandbox and Production environment.\n\n- **18.157.51.166**\n    \n- **18.198.227.220**\n    \n- **18.235.242.90**\n    \n- **3.208.60.185**\n    \n\n## Webhook Payloads\n\n``` json\n//Example of the web hooks structure\n{\n  \"payload\": {\n    //Response for API goes here\n  }\n}\n//Example response for a Beneficiary Approved\n{\n  \"payload\": {\n    \"id\": 9734,\n    \"accountNumber\": \"121212184874848\",\n    \"bankName\": \"Punjab National Bank\",\n    \"beneficiaryAddress\": \"Plot No 4, Sector -10 Dwarka\",\n    \"beneficiaryCity\": \"New Delhi\",\n    \"beneficiaryCompanyName\": \"Test 3 \",\n    \"beneficiaryCountryCode\": \"IN\",\n    \"beneficiaryEntityType\": \"company\",\n    \"beneficiaryPostcode\": \"110075\",\n    \"country\": \"India\",\n    \"reference\": \"RP-09112022-006\",\n    \"nationalId\": \"PUNB0657700\",\n    \"currency\": \"INR\",\n    \"clientReference\": \"\",\n    \"status\": \"approved\"\n  }\n}\n//Example response for a payment outward approved\n{\n  \"payload\": {\n    \"id\": 6548,\n    \"amount\": \"200000.00\",\n    \"reference\": \"TO-22092024-005\",\n    \"state\": \"completed\",\n    \"currency\": \"NGN\",\n    \"paymentId\": null,\n    \"type\": \"wallet_to_account\",\n    \"clientReference\": null,\n    \"account\": {\n      \"id\": 4369,\n      \"accountNumber\": \"9079135431\",\n      \"bankName\": \"MONIEPOINT MICROFINANCE BANK\",\n      \"beneficiaryAddress\": \"\",\n      \"beneficiaryCity\": \"\",\n      \"beneficiaryCompanyName\": \"\",\n      \"beneficiaryCountryCode\": \"\",\n      \"beneficiaryEntityType\": \"individual\",\n      \"beneficiaryPostcode\": \"\",\n      \"beneficiaryEmail\": \"\",\n      \"country\": \"Nigeria\",\n      \"reference\": \"RP-19062024-003\",\n      \"beneficiaryFirstName\": \"Daniel\",\n      \"beneficiaryLastName\": \"Torkura\",\n      \"nationalId\": \"090405\",\n      \"currency\": \"NGN\",\n      \"clientReference\": \"\",\n      \"status\": \"approved\"\n    },\n    \"walletId\": 2561,\n    \"createdDate\": \"2024-09-22T14:26:07.000Z\",\n    \"completedDate\": \"2024-09-22T14:26:46.018Z\",\n    \"archivedDate\": null\n  }\n}\n//Example response for an inward payment to wallet from an external entity\n{\n  \"payload\": {\n    \"id\": 6546,\n    \"amount\": \"230000.00\",\n    \"reference\": \"TO-22092024-003\",\n    \"state\": \"completed\",\n    \"currency\": \"USD\",\n    \"paymentId\": null,\n    \"type\": \"iban_to_wallet\",\n    \"clientReference\": \"null:test_sandbox:Daniel Torkura:1234567890:TY28239UY\",\n    \"account\": {\n      \"id\": 4368,\n      \"accountNumber\": \"1234567890\",\n      \"bankName\": null,\n      \"beneficiaryAddress\": null,\n      \"beneficiaryCity\": null,\n      \"beneficiaryCompanyName\": \"Daniel Torkura\",\n      \"beneficiaryCountryCode\": null,\n      \"beneficiaryEntityType\": \"company\",\n      \"beneficiaryPostcode\": null,\n      \"beneficiaryEmail\": null,\n      \"country\": null,\n      \"reference\": \"RP-22092024-001\",\n      \"beneficiaryFirstName\": null,\n      \"beneficiaryLastName\": null,\n      \"nationalId\": \"TY28239UY\",\n      \"currency\": \"USD\",\n      \"clientReference\": null,\n      \"status\": \"approved\"\n    },\n    \"walletId\": 2558,\n    \"createdDate\": \"2024-09-22T14:06:02.000Z\",\n    \"completedDate\": \"2024-09-22T14:06:03.308Z\",\n    \"archivedDate\": null\n  }\n}\n//\"clientReference\": \"customReferenceLabel : \"vendorReferenceId : ultimateDebitorName : ultimateDebitorIdentifier : ultimateDebitorFinancialInstitution\"\n//vendorReferenceId - Sender reference (e.g Collaboration 09087).\n//ultimateDebitorName - Sender’s name.\n//ultimateDebitorIdentifier - Sender’s account number.\n//ultimateDebitorFinancialInstitution - Sender’s Bank.\n//Example response for an FX order being inward confirmed\n{\n  \"payload\": {\n    \"id\": 3791,\n    \"reference\": \"EN-22092024-004\",\n    \"amountFrom\": \"10000000.00\",\n    \"amountTo\": \"7506100.00\",\n    \"rate\": \"0.7506100000\",\n    \"transactionState\": \"outward_remittance_complete\",\n    \"status\": \"deposit_recorded\",\n    \"createdDate\": \"2024-09-22T14:18:51.000Z\",\n    \"completedDate\": \"2024-09-22T14:20:08.278Z\",\n    \"archivedDate\": null,\n    \"clientReference\": null,\n    \"currencyFrom\": \"USD\",\n    \"currencyTo\": \"GBP\"\n  }\n}\n// Wallet to wallet inbound webhook\n{\n  \"payload\": {\n    \"id\": 6547,\n    \"amount\": \"20000.00\",\n    \"reference\": \"TO-22092024-004\",\n    \"state\": \"completed\",\n    \"currency\": \"USD\",\n    \"paymentId\": null,\n    \"type\": \"wallet_to_wallet\",\n    \"clientReference\": null,\n    \"walletId\": 3063,\n    \"transactionType\": \"credit\",\n    \"toWalletId\": 3063,\n    \"fromWalletId\": 2558,\n    \"createdDate\": \"2024-09-22T14:13:51.000Z\",\n    \"completedDate\": \"2024-09-22T14:13:51.000Z\",\n    \"archivedDate\": null\n  }\n}\n// Wallet to wallet outbound webhook\n{\n  \"payload\": {\n    \"id\": 6547,\n    \"amount\": \"20000.00\",\n    \"reference\": \"TO-22092024-004\",\n    \"state\": \"completed\",\n    \"currency\": \"USD\",\n    \"paymentId\": null,\n    \"type\": \"wallet_to_wallet\",\n    \"clientReference\": null,\n    \"walletId\": 2558,\n    \"transactionType\": \"debit\",\n    \"toWalletId\": 3063,\n    \"fromWalletId\": 2558,\n    \"createdDate\": \"2024-09-22T14:13:51.000Z\",\n    \"completedDate\": \"2024-09-22T14:13:51.000Z\",\n    \"archivedDate\": null\n  }\n}\n\n ```\n\nThe payload in the response would have the object for a successful API call for getting corresponding Data type.\n\n## Captured Events by Type\n\n| **Event** | **Type** | **Transaction status** | **Description** |\n| --- | --- | --- | --- |\n| Payment request created from client | PAYMENT_STATUS_CHANGE | Requested | This is the initial status received by the first request the system makes to Verto API |\n| Payments made to beneficiary by Verto | PAYMENT_STATUS_CHANGE | Completed | The transaction has been successfully completed |\n| Payments are archived and refunded | PAYMENT_STATUS_CHANGE | Archived | The transaction has been achieved |\n| When payments are disputed | PAYMENT_STATUS_CHANGE | disputed | When the payment request did not result into a pay in into our accounts |\n| Payments received from other entities  <br>  <br>(Into your Global account or wallet) | PAYMENT_STATUS_CHANGE | Requested | Whenever a payment from an external entity , you get a web hook for the request being created |\n| Payments received from other entities  <br>  <br>(Into your Global account or wallet) | PAYMENT_STATUS_CHANGE | Completed | Whenever you receive a payment from an external entity or transfer money into your wallet, you get a web hook for the request completed |\n| When an FX order is created | FX_STATUS_CHANGE | inward_remittance_pending | This is the initial status received by the first request the system makes to Verto API  <br>There are some internal statuses like  <br>1\\. order_placed  <br>2\\. recipient_added  <br>3\\. deposit_recorded  <br>4\\. wallet_deduction  <br>with the transaction status of inward_remittance_pending which you may receive notifications for, you may choose to ignore them. |\n| When an FX order is confirmed | FX_STATUS_CHANGE | inward_remittance_confirmed | Order acknowledged and confirmed  <br>If the inward transaction in situations gets cancelled you might receive a status for  <br>1\\. archived  <br>Along with the transaction status  <br>inward_remittance_confirmed |\n| When an FX order is disputed | FX_STATUS_CHANGE | inward_remittance_disputed | The inward FX transaction is disputed |\n| When the FX conversion completed and paid out | FX_STATUS_CHANGE | outward_remittance_complete | The payment is completed |\n| When the FX conversion was disputed | FX_STATUS_CHANGE | outward_remittance_disputed | The outward FX transaction is disputed |\n| When a beneficiary is created through the API or the platform | BENEFICIARY_STATUS_CHANGE | pending | Beneficiary created or no action has been taken yet |\n| When a beneficiary is approved by admin | BENEFICIARY_STATUS_CHANGE | approved | When beneficiaries are approved by the admin.  <br>  <br>Based on the type of business we set the beneficiary to be approved directly without an explicit approval needed. |\n| When a beneficiary is rejected by admin | BENEFICIARY_STATUS_CHANGE | rejected | When beneficiaries are rejected by the admin. |\n| When a beneficiary is updated successfully | BENEFICIARY_STATUS_CHANGE | approved | When beneficiaries are updated successfully. |\n\n## Retry Mechanism\n\nWeb hooks are sent on events like when the payment status changes, beneficiary status changes and FX order changes.\n\nIf there is a failure to consume these web hooks Verto has a mechanism to send a retry message for the consumer of the API to acknowledge.\n\nVerto tries to send the web hook for **failed attempts 10 times** in the same day with an **exponential back off**.\n\n# FAQ\n\n**1\\. How to use the Side field in the create fx request? I am already providing Currency From and Currency To information in the exchange token, why do I still need to specify the Side?**\n\nSuppose we say currency from = USD and currency to = GBP, the API will return us the rate of let’s say 0.8. Now, in Create FX if the clients only mention amount (e.g. 1000), it can mean either of the two options:\n\nSELL 1000 USD and buy 800 GBP\n\nSell 1250 USD to BUY 1000 GBP\n\nTo prevent ambiguity, either we ask for both the amounts (from + to) OR ask amount + side (buy / sell)\n\nBoth of the use cases are valid and depend on the client which one to opt.\n\nThe side refers to the amount. If you say the amount is 100 and currencies are USD to NGN. That implies whether you want to sell 100 USD or buy 100 NGN\n\n**2\\. What are the statuses that GetPaymentDetails may return?**\n\nWhen you enquiry the status of payment, you may get following values in the response:\n\nRequested - payment request received successfully.\n\nCompleted - payment request completed.\n\nRefunded - payment could not completed and funds returned.\n\nArchived - payment archived due to being cancelled by the client or staying in the requested status over a certain period of time.\n\n**3\\. If the created beneficiary is subject to approval, how can we know whether a beneficiary has been approved or not. Where can we see the status of the beneficiaries?**\n\nGet beneficiaries List service will return all beneficiaries created and their statuses. Please make sure that you create your payment requests only for approved beneficiaries. Otherwise your payment request will return beneficiary not found error message.\n\n4\\. **On beneficiary creation, what are the required fields for USD Beneficiaries?**\n\nA/c Number + Routing Number / ABA Code (within the US - Domestic Payments)\n\nA/c Number\n\nRouting Number / ABA Code\n\nBank Name\n\nBeneficiary Address\n\nBeneficiary City\n\nBeneficiary PostCode\n\nBeneficiary State or Province\n\nA/c Number + Swift (Outside the US - International Payments)\n\nA/c Number\n\nSwift\n\nBank Name\n\nBeneficiary Address\n\nBeneficiary City\n\nBeneficiary PostCode\n\nBeneficiary State or Province\n\n**5\\. What am I supposed to enter in the National ID field? Is it mandatory?**\n\nYes, the National ID field is mandatory and you can use this field to provide Beneficiary Bank’s BIC/Swift Code.\n\n**6\\. To create an FX trade, we have to generate a token first which lasts for 30 secs. What do we do if the client does not do the trade in 30 secs and does it after this period.**\n\nTo work around this, you can keep your wallet pre-funded to avoid market rates change risk, in order to get started using our API you'll need to have multi currency wallets and funds in these accounts.\n\n**7\\. Do I have to pay an extra amount to access the API.**\n\nYes, you can write to us on [api.support@vertofx.com](https://api.support@vertofx.com) with your details, a sales person will get back to you to discuss commercials based on your usage volumes. This is only applicable to when you are ready to go live.\n\n**8\\. What happens post integration on sandbox, how do we go live?**\n\nOn agreement with us on the commercials to consume our APIs, we'll setup a tech review call with you on the integrations done, we'll create your account on the live environment, there will be a process of onboarding that'll take place which generally takes 1-2 days based on receiving required documents. Your billing on the API only starts once we turn on your API access on the live environment.\n\n# Contact Us\n\n## **How to Contact Us**\n\n#### **Have a technical question about API?**\n\nSend email to [api.support@vertofx.com](https://api.support@vertofx.com)\n\n#### **Making lots of payments?**\n\nWe have a dedicated team to talk to you. [https://www.vertofx.com/contact](https://www.vertofx.com/contact)\n\n#### **Have a question about how VertoFX works?**\n\nSearch our FAQ. [https://vertofx.com/faq](https://vertofx.com/faq)\n\n#### **Want more information about your payments?**\n\nContact Customer Excellence team. [customersupport@vertofx.com](https://mailto:customersupport@vertofx.com)\n\n#### Slack Channel\n\nWe also setup slack channels on request, you can drop in a request on the above support mail ID and we'll set one up for a direct communication.\n\n# Change Log\n\n#### v2.1\n\n- **Create Payment Request** updated to accept Payment Id, passing duplicate payment Id will cause the request to fail. This is to avoid any double debit scenarios.\n    \n- **The Get FX rate** updated from rate to FX and it now accepts from and to currency codes, request mthod is changed from POST to Get\n    \n- **Get order details :** /orders/v2/:orderId updated to /orders/v2.1/fx/:orderId\n    \n- **Create Payment :** /profile/v2/wallets/:walletId/payment updated to /profile/v2.1/request\n    \n- **Create Payment :** Wallet Id is taken from the request body\n    \n- **Get Payment Details** : profile/v2/transferRequest/:requestId to profile/v2.1/request/:requestId\n    \n- **Update Beneficiary :** /profile/v2/beneficiaries/account/:beneficiaryId to /profile/v2.1/beneficiaries/:beneficiaryId\n    \n- You can now get payments list, delete beneficiaries and get beneficiary details\n    \n- Get FX rate the request method has been changed to GET from POST\n    \n- **Create Beneficiary/Update Beneficiary**  \n    Change: We remove some fields from the request body, these fields auto fill by nationalId(Swift code/Bic/ABA code/ IFSC code/ Routing Number).  \n    The fields which are removed are:  \n    bankName  \n    beneficiaryAddress  \n    beneficiaryCity  \n    **New Field :** clientReference to take a custom reference from the consumers of the API\n    \n- **Create Beneficiary/Update Beneficiary** request body changes to make entity type mandatory and based on that either the individual details or the company name is mandatory\n    \n\n# Coming Soon\n\nBrace yourself — game-changing APIs are on the horizon.\n\nWe’re about to drop some powerful new functionality that will ignite fresh possibilities for developers and businesses.\n\nGet ready to push boundaries and take your projects to the next level.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"18594636","collectionId":"70528056-a00c-4e19-8cf5-d721a6dad95f","publishedId":"UzBjrnt7","public":true,"publicUrl":"https://docs.vertofx.com","privateUrl":"https://go.postman.co/documentation/18594636-70528056-a00c-4e19-8cf5-d721a6dad95f","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2023-06-24T03:46:59.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/f78980546ddc075b95254fb2459ec0cb569607b02b10e06c4e3095806b23e389","favicon":"https://vertofx.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://docs.vertofx.com/view/metadata/UzBjrnt7"}