Skip to main content
Glama

Walutomat MCP Server

by jpospychala
v2_0_0.yaml115 kB
swagger: '2.0' info: version: '2.0.0' title: 'Walutomat API' x-logo: url: "walutomat_logo.png" backgroundColor: "#FFFFFF" altText: "Walutomat" description: | [Other versions](https://www.walutomat.pl/api/versions) # Overview ## Introduction The Walutomat API is used to manage Walutomat multicurrency wallet from third party IT systems. The API is built using RESTful endpoints and standard HTTP verbs. JSON is returned on all our API responses, with a consistent structure for all messages. Each response contains success flag and in case of failure, error section contains information necessary to investigate error reason. Authentication to the API is performed via token-based auth (API key). Additionally sensitive operations like ordering money transfer must be signed with the private key. Further infromation on a topic of authentication and authorisation may be found in [dedicated section](#section/Usage/Authentication). All API requests must be made over HTTPS. Calls made over plain HTTP will fail. All requests must use TLS 1.1 or above. ## Getting started ### Samples Check for sample code demonstrating usage of Walutomat API in [this Github repository](https://github.com/Currency-One/api-examples) ### Sandbox We prepared sandbox to ease integration with Walutomat. Developers may learn Walutomat API and test integration even before business arrangments are finalized. Sandbox is best place to test changes first as well. Sandbox URL: `walutomat.dev` To request sandbox account, please contact us: api@walutomat.pl ### First steps Follow this simple step-by-step guide to get started using the Walutomat API. #### Generate your public/private key pair Generate a pair of RSA keys with key size of 4096 bits, here are examples for different operating systems: For Linux: ```sh $ openssl genrsa -out ./private.key 4096 $ openssl rsa -in ./private.key -pubout -out ./public.key ``` For Windows: - Download and install PuTTY, - Use PuTTYgen to generate RSA key, make sure you change "Number of bits in a generated key" to 4096, - After key is generated in "Actions" section, click "Save public key", as it saves key in RSA PEM format, - "Save private key" as well and store it somewhere. Generated key should look as follows: ``` -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAucK1TudLBMAF0GjGII6h 25k1kh0MBCNjNnVBWyOwc06ivr1Xg5U4EBXJqi4HQowhcOKHNVusL1KgsbRqwNvR fGwXUgfp9CNeeKKZrgo98+0hUcR+wrR59F2dSnoQ4CWUHuUk5Tinj7mh2+uzu5BF mJefy5d1Mj81ANbpwwETeo/OSK+3++h0ac+kfdokE57CjurnD3b5AMnQ6RLtZm2O GnEtwWymxXLO84tdRYo/e/Rbg9/yTmDhpTDcexJDd1f5O6814BxL4TFe/6AnFa2y nm+Ot9Sxa01OOEzHDQW6CK3x5BbH3rv6/5UAKoliWyTUcyDvIlikiO0eQPlHk/YP W0dYGqFlSkdc8xDJByhiDZWZlnNUrKiLaJw/O6oybqme9+NnghiuQ8Ck3VO8ESpJ Q90TV3Ffl+TkWoULKF/9iK37szwV57ogafgX0YimN+qkQjLPr/9s/PQxDLxd/JKq WM4MTEkNxsE9Cw5r76Xkex3Z6X0YF89UryjFIuTi2+U5yow6gF6uBKcD2tYzMmdx orCRtNSUrueH56+c7axDtIdoX0GGvCWIDT343I96Di2ZDKo8Lxx11vTNjLokJaDj IQz12YrqNnKtAjqmDO+Y4mAU7qbFgiBGIT7R1JLoemiNhLf7UdX9g1/0AOyGvDxp Pe62GHE5pTQ74mf5jxWseskCAwEAAQ== -----END PUBLIC KEY----- ``` #### Upload your public RSA key and reveal your API key 1. Log into the Walutomat User Panel - [live production](https://user.walutomat.pl) or [sandbox environment](https://user.walutomat.dev) accordingly 2. Go to section "Additional services" > "API Key" (contact our Customer Service if there is no API Key section in the Additional services menu) 3. Using "Your API Keys v.2" section, add new key and paste the content of the `public.key` file 4. Store the API key in a safe place. You will be able to view it later in the User Panel using additional authentication. 5. Contact our Customer Service to setup your API Key permissions. ### Simple API usage scenario Now, as you have Walutomat API activated, your API key generated and probably your public key uploaded in the user panel, you can try first calls to API endpoints. We suggest you to try example provided below. Please note you may use sandbox for first trials (recommended). If this is the case, please change production URL `api.walutomat.pl` to sandbox `api.walutomat.dev` in samples below. #### Example, step 1: learn current exchange rate 1. Replace `API_KEY` and `path/to/private.key` in the command below 2. Query the following endpoint to learn current exchange rate offered by Currency One 3. You should see the exchange rate in the response; note down the `ts` attribute of the response, you will need it in the next step. ```sh $ timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ") $ endpoint="/api/v2.0.0/direct_fx/rates?currencyPair=EURPLN" $ body="" $ signature=$(echo -n "$timestamp$endpoint$body" | openssl dgst -sha256 -binary -sign /path/to/private.key | openssl enc -A -base64) $ curl -i \ -H "X-API-Key: API_KEY" \ -H "X-API-Signature: $signature" \ -H "X-API-Timestamp: $timestamp" \ -X GET "https://api.walutomat.pl$endpoint" ``` > Example response: ```json { "success": true, "result": { "ts": "2018-03-27T09:58:06.945Z", "currencyPair": "EURPLN", "buyRate": "4.1234", "sellRate": "4.0987" } } ``` #### Example, step 2: order currency exchange Knowing current exchange rate you are now ready to order currency exchange accepting received exchange rate. Notice the `dryRun` flag. Set `dryRun=true` to test the action (no actual exchange would take place). 1. Use the command below replacing `API_KEY` and `/path/to/private.key` 2. Replace `exchange_rate_ts` with the `ts` from the previous step. ```sh $ timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ") $ endpoint="/api/v2.0.0/direct_fx/exchanges" $ body="dryRun=false&submitId=93a68f4d-ce40-40be-adac-3bb4d4b5e392&currencyPair=EURPLN&buySell=BUY&volume=999.00&volumeCurrency=EUR&ts=exchange_rate_ts" $ signature=$(echo -n "$timestamp$endpoint$body" | openssl dgst -sha256 -binary -sign /path/to/private.key | openssl enc -A -base64) $ curl -i \ -d "$body" \ -H "X-API-Key: API_KEY" \ -H "X-API-Signature: $signature" \ -H "X-API-Timestamp: $timestamp" \ -H "Content-Type: application/x-www-form-urlencoded" \ -X POST "https://api.walutomat.pl$endpoint" ``` > Example response: ```json { "success": true, "duplicate": false, "result": { "exchangeId": "2607f83b-3a60-4097-912c-72e1cf7a0085" } } ``` **Note**: There are two models of currency exchange offered by Currency One via API: direct currency exchange with Currency One (endpoints in `direct_fx` namespace), used in this demonstration, and P2P exchange on Walutomat market (endpoints in `market_fx` namespace) - see further sections to learn more about those 2 models and acting on Walutomat market via API. Congratulations! You have performed your first currency exchange with Walutomat API. ### Next steps Now that you have performed your first currency exchange, you can learn more about the rest of the API. #### Learn about direct vs market exchange Currency One offers two types of currency exchange. Learn about the [difference](#section/Overview/Currency-exchange-models) and pick the right one for your system/business. #### Submit new currency exchange order to Walutomat market Now that you have performed your first direct currency exchange with Currency One, you can try the market model of currency exchange by submitting new [exchange order](#operation/newOrder) to Walutomat market. In this scenario Currency One is only platform operator and orders are executed if/when matching opposite order is available on the market. #### Order transfer from Walutomat multicurrency wallet After currency exchange you may want to transfer exchanged currency from Walutomat multicurrency wallet to your bank account or transfer it to third party. This operation can be requested via API as well and you use [transfer](#operation/newTransferIban) endpoint to achieve this. ## Currency exchange models The Walutomat API offers two different currency exchange types: direct and market. A direct exchange is standard currency exchange with Currency One and requires to accept exchange rate offered by Currency One. The exchange rate is valid 10 minutes from its publication (publication timestamp is stored in `ts` attribute). A market exchange uses Walutomat market, where all participants may submit their currency exchange offers (bids and asks). Walutomat API provides endpoints to act on this market, by learning current best offers available on the market, submitting new exchange order with limit price to Walutomat market, checking order execution (whether and how much of the offered currency were exchanged so far), withdrawing own offers from the market. To distinguish API endpoints related to different currency exchange models, endpoints dedicated to direct exchange with Currency one are located in `direct_fx/` namespace while endpoints dedicated to P2P currency exchange on Walutomat market are located in `market_fx/` namespace. ### Which type of exchange do I need? It depends upon your business model ad your system requirements. Note that in direct exchange model, exchange rate is known a priori and could be freezed up to ten minutes while in market exchange situation on the market changes dynamically. On the other hand, API to Walutomat market allows to design and automate different trading strategies that may perform well and significantly outrank results that would be achieved in direct exchange scenario. ## Backwards compatibility The following changes are considered backwards compatible: * Adding new API endpoints * Adding new properties to the responses from existing API endpoints * Adding optional request parameters to existing API endpoints * Altering the format or length of IDs * Altering the message attributes returned by validation failures or other errors * Reordering properties returned from existing API endpoints ## Changelog Release date | Description ------------ | ----------- 2022-10-25 | Added endpoint GET /account/history/mt940 for mt940 export statement 2022-03-21 | Added transferPurpose and sourceOfIncome optional params to /transfer/(non)iban endpoints 2021-12-13 | Added operationDetailedType parameter to /account/history endpoint 2021-08-24 | Added endpoint GET /transfer to learn transfer status and details 2018-XX-XX | Added endpoints to history of operations on multicurrency wallet (payins, payouts, currency exchanges) 2018-XX-XX | Release API version 2.0.0 Documentation for earlier versions - see [v1](https://api.walutomat.pl/v1/) # Usage ## Authentication All API requests must be made over HTTPS. Any requests made over HTTP will fail. The API uses token-based authentication. You will be provided with a API key which must be included in the header under X-API-Key attributes of all requests made to the API that requires authentication. Additionally sensitive requests must be signed with RSA key with key size of 4096 bits and in such cases request signature shall be included in the request header in X-API-Signature attribute. Check specific endpoints documentation to learn given endpoint requirements. <!-- ReDoc-Inject: <security-definitions> --> ## Errors Responses contain `success` flag and `error` object. If `success` attribute contains `false`, `error` object is not empty and shall be examined to learn error reason and details. ### Error object > Error object example: ```json { "success": false, "errors": [ { "key": "INSUFFICIENT_FUNDS", "description": "Requested payout exceeds current wallet balance {walletBalance}", "trace": "", "errorData": [ { "key": "walletBalance", "value": "3.14 EUR" } ] } ] } ``` Error object always contains error `key` and error `description` in English. May contain key-value structure `errorData` with additional values that may be referred to in `description`. Error object may contain `trace` information. When unspecified error occurred, the trace can help to track the problem. You may be asked to deliver received response with trace content to our support team. **Note**: It is assumed that all API endpoints always responds with 200 code and valid json success attribute. No response received or response with other code shall not be treated as confirmation of request rejection. In such cases recommended approach is to repeat request *with unchanged submitId*. See also Duplicates section. ![API response handling diagram](handling_responses.png) ## Pagination Requests that return multiple items, e.g. `GET /account/history`, will be paginated to 100 items by default. You can access further items using the `?continueFrom` parameter. You can change default page size with `?volume` parameter. Items could be sorted from the newest created (default) or in reverse order by setting `?sortOrder` parameter to `ASC`. ## Duplicates You can safely repeat submitting requests, especially when you are unsure whether previous attempt reaches Walutomat or you did not manage to process Walutomat API response. **Note**: When repeating request make sure to provide same request id (`submitId`)! When Walutomat API receives request with same `submitId` parameter value again, it will not perform requested operation one more time, but simply repeats last response, this time with `duplicate` attribute set to `true`. ## Testing ### Dry run mode All requests that may incur charges or otherwise may affect multicurrency wallet balance (like currency exchange, payout) are equipped with `dryRun` parameter. When set to `true` dry run mode is on. In this mode request is just validated but not executed. #### Why use a `dryRun` flag? The key difference, for dryRun requests: * requests does not affect money, no operation on multicurrency wallet is performed, no charges are incurred * still, requests correctness is validated, possibility to perform request operation is verified and additional information is returned (e.g. the cost tested operation may incur) The main reasons for using dry run are therefore to: * Verify your system have network connectivity with the Walutomat API * Verify you are posting all the required data in the right format to the Walutomat API * Verify you are handling the Walutomat API responses correctly but also to: * Verify whether requested operation can be performed (e.g. indicated currencies are supported or IBAN account number is valid) * Learn the cost of the operation if it would be requested not in dry run mode (i.e. you can use it to determine payout cost) ### Testing with sandbox Following tools are available on sandbox environment only: #### Payins (incoming transfer) simulator First log in to your sandbox user panel, then type in URL: [https://api.walutomat.pl/v1/](https://api.walutomat.pl/v1/) Select payin parameters - executed pamyent will affect account balance and history of operations - usable to test `/account/history` endpoint response. #### Payout (outgoing transfer) status simulator This is a method to test 'R' events (Rejects, Returns) and possible states in `/transfer` endpoint response. When submitting sandbox transfer request with `transfer/iban/sepa` endpoint enter into transfer title following keywords to obtain selected transfer status: * TESTREJECT * TESTRETURN * TESTSETTLE externalDocs: description: Find out more about Walutomat url: http://walutomat.pl/en schemes: - https securityDefinitions: api_key: type: apiKey name: X-API-Key in: header ######## DOC CHAPTERS ############ x-tagGroups: - name: Endpoint reference tags: - account - payout - direct_fx - market_fx tags: - name: account description: Account balance and history x-displayName: Account information - name: payout description: | Payout from wallet x-displayName: Payouts - name: direct_fx description: Exchange currency with Currency One x-displayName: Direct FX - name: market_fx description: Endpoints dedicated to P2P currency exchange at Walutomat stock exchange (managing orders and trace order execution) x-displayName: Market (P2P) FX basePath: "/api/v2.0.0" ########## DEFINITIONS ############# definitions: GenericResponse: type: object properties: success: type: boolean description: True when exchange request was valid and succesfully handled, if false investigate errors table for details errors: type: array items: $ref: '#/definitions/ErrorType' required: - success ErrorType: type: object properties: key: type: string description: Error key example: INSUFFICIENT_FUNDS enum: - AMOUNT_TOO_SMALL - API_DISABLED - COUNTRY_NOT_SUPPORTED - CURRENCY_NOT_SUPPORTED - INSUFFICIENT_FUNDS - INVALID_ACCOUNT_NUMBER - INVALID_API_KEY - INVALID_ARGUMENTS - INVALID_SIGNATURE - MISSING_API_KEY - MISSING_AUTH_ROLE - MISSING_PUBLIC_KEY - MISSING_SIGNATURE - NOT_AUTHORIZED - NO_RATE_FOR_PAIR - OTHER - PAYOUT_LIMIT_EXCEEDED - TRANSACTION_NOT_FOUND - SOURCE_OF_INCOME_REQUIRED - PURPOSE_REQUIRED - TITLE_REQUIRED - AMOUNT_MUST_BE_INTEGER description: type: string description: Descriptive error message with possible references to errorData entries example: Requested payout exceeds current wallet balance {walletBalance} errorData: type: array items: $ref: '#/definitions/ErrorData' required: - key - description - errorData ErrorData: required: - key - value properties: key: type: string description: Error data entry key example: walletBalance value: type: string description: Error data entry value example: 3.14 EUR DuplicatableResponse: type: object required: - duplicate properties: duplicate: type: boolean description: True when submitId was used before, in such a case no new operation like exchange or payout is performed. It is safe to repeat request e.g. in cases when response from first attempt was not received or processed MarketCurrency: type: string enum: &MarketCurrency - EUR - GBP - USD - CHF - PLN - CZK - DKK - NOK - SEK NonibanTransfersCurrency: type: string enum: &NonibanTransfersCurrency - EUR - USD - AUD - CAD - HKD - NZD - SGD - GBP - CHF - CNY - JPY - CZK - DKK - NOK - SEK - PLN - TBD MarketPair: type: string enum: &MarketPair - EURGBP - EURUSD - EURCHF - EURPLN - GBPUSD - GBPCHF - GBPPLN - USDCHF - USDPLN - CHFPLN - EURSEK - EURNOK - EURDKK - EURCZK - CZKPLN - DKKPLN - NOKPLN - SEKPLN - AUDPLN - BGNPLN - CADPLN - CNYPLN - HKDPLN - HUFPLN - ILSPLN - JPYPLN - MXNPLN - NZDPLN - RONPLN - SGDPLN - TRYPLN - ZARPLN - EURAUD - EURBGN - EURCAD - EURCNY - EURHKD - EURHUF - EURILS - EURJPY - EURMXN - EURNZD - EURRON - EURSGD - EURTRY - EURZAR AnyCurrency: type: string enum: &AnyCurrency - AUD - BGN - CAD - CHF - CNY - CZK - DKK - EUR - GBP - HKD - ILS - JPY - MXN - NOK - NZD - PLN - RON - SEK - SGD - TRY - USD - ZAR - HUF NewOrderResponse: allOf: - $ref: '#/definitions/GenericResponse' - $ref: '#/definitions/DuplicatableResponse' - type: object properties: result: type: object required: - orderId properties: orderId: type: string description: Identifier of the exchange order (generated by server, this is not `submitId`) or empty string when `dryRun=true`. example: 2607f83b-3a60-4097-912c-72e1cf7a0085 ExchangeResponse: allOf: - $ref: '#/definitions/GenericResponse' - $ref: '#/definitions/DuplicatableResponse' - type: object properties: result: type: object required: - exchangeId properties: exchangeId: type: string description: Identifier of the exchange (generated by server, this is not `submitId`) or empty string when `dryRun=true`. example: 2607f83b-3a60-4097-912c-72e1cf7a0085 NewTransferResponse: allOf: - $ref: '#/definitions/GenericResponse' - $ref: '#/definitions/DuplicatableResponse' - type: object properties: result: type: object description: Container for transfer result required: - transferId - feeAmount - feeCurrency - transferType properties: transferId: type: string description: Identifier of the transfer (generated by server, this is not `submitId`) or empty string when `dryRun=true`. example: 2b5121cb-2b38-4fd8-be34-0aac4cf96c8d feeAmount: type: string description: Fee/commission amount applicable to given transfer example: "3.00" feeCurrency: type: string description: Fee/commission currency (ISO currency code) example: "PLN" enum: - EUR - PLN transferType: type: string description: Used transfer type example: "SEPA" enum: - SEPA - SEPA INSTANT - SWIFT SHA TODAY - SWIFT SHA SPOT - SWIFT OUR TODAY - DOMESTIC - DOMESTIC EXPRESS - LOCAL - INTERNAL TransferResponse: allOf: - $ref: '#/definitions/GenericResponse' - type: object properties: result: type: object required: - transferId - responseTs - transferStatus properties: transferId: type: string description: Identifier of the transfer (generated by Walutomat) example: 2b5121cb-2b38-4fd8-be34-0aac4cf96c8d submitId: type: string description: Identifier of client request that involves given wallet balance change (`submitId` of client API request when transfer were ordered via the API channel) example: "916f1f98-01f6-412a-85e7-2482f1f4c112" responseTs: type: string description: Timestamp of generated response, as transfer status may change in time example: "2018-03-27T09:58:06.945Z" transferStatus: type: string description: | Current transfer status: * REQUEST_RECEIVED - Walutomat has received client payment order and assigned uniquie transfer ID to it * SETTLED - transfer is setttled, i.e. either Walutomat has received SETTLED status directly from payment system or Walutomat has detected outgoing operation on his bank account related to the client payment order * REJECTED - Walutomat was unable to succesfully place transfer in the payment system (or in the banks systems participating in given transaction) and funds were credited back to client Walutomat wallet * RETURNED - Walutomat has received return transaction to given and credited it to client Walutomat wallet example: "SETTLED" enum: - REQUEST_RECEIVED - SETTLED - REJECTED - RETURNED submittedTs: type: string description: Timestamp indicating when Walutomat received transfer order from client (either via API or user panel) example: "2018-03-27T09:58:06.945Z" settledTs: type: string description: Timestamp indicating when SETTLED status was achieved (if already achieved) example: "2018-03-27T09:58:06.945Z" returnedTs: type: string description: Timestamp indicating when RETURNED status was achieved (if already achieved) example: "2018-03-27T09:58:06.945Z" currency: type: string description: Transfer currency ISO currency code enum: *AnyCurrency volume: type: string description: Transfer amount example: "99.00" transferTitle: type: string description: Transfer title recipientAccount: type: string description: The beneficiary (recipient) account, as entered in the transfer order recipientName: type: string description: The beneficiary (recipient) name, as entered in the transfer order returnReason: type: string description: Information why transfer has been returned example: "The account is closed" OrderResponse: allOf: - $ref: '#/definitions/GenericResponse' - type: object properties: result: $ref: '#/definitions/OrderDetails' OrdersResponse: allOf: - $ref: '#/definitions/GenericResponse' - type: object properties: result: type: array items: $ref: '#/definitions/OrderDetails' OrderDetails: type: object required: - orderId - submitId - submitTs - updateTs - status - completion - currencyPair - buySell - volume - volumeCurrency properties: orderId: type: string description: Unique order identifier assigned by market operator's system example: "2035e361-e672-457a-9c3c-0e86e5ff54d6" submitId: type: string description: Unique order identifier assigned by client system submitting new order. GUID or UUID highly advised example: "916f1f98-01f6-412a-85e7-2482f1f4c112" submitTs: type: string description: Timestamp of order, as registered during order request acceptance example: "2018-02-02T10:06:01.111Z" updateTs: type: string description: Timestamp of last order update, such as status change or ecution progress update example: "2018-02-02T10:06:01.396Z" status: type: string description: Order status, ACTIVE when still active on market example: "ACTIVE" enum: - ACTIVE - CLOSED completion: type: number description: Percentage of executed order amount to total order volume, 100 when fullye executed example: 67 currencyPair: type: string description: Currency pair - base currency and counter currency example: EURPLN buySell: type: string description: BUY or SELL order enum: - BUY - SELL volume: type: string description: Order volume, order limit (maximum amount of currency to be bought/sold depending on buySell attribute) example: "999.00" volumeCurrency: $ref: '#/definitions/MarketCurrency' limitPrice: type: string description: Maximum rate to buy currency at in case of BUY order, minimum rate to sell currency at in case of SELL order example: "4.2321" soldAmount: type: string description: Amount of currency sold so far within this order example: "999.00" soldCurrency: $ref: '#/definitions/MarketCurrency' boughtAmount: type: string description: Amount of currency bought so far within this order. Commission is not deducted, amount deposited to customer wallet is boughtAmount - commissionAmount example: "999.00" boughtCurrency: $ref: '#/definitions/MarketCurrency' commissionAmount: type: string description: Commission for fx order execution charged by platform operator so far example: "9.00" commissionCurrency: $ref: '#/definitions/MarketCurrency' commissionRate: type: string description: Commission rate applicable to this order example: "0.0020" FxRateResponse: allOf: - $ref: '#/definitions/GenericResponse' - type: object properties: result: type: object required: - ts - currencyPair - buyRate - sellRate properties: ts: type: string description: This is an identifier of the rate, you will reference the rate by this value, this is also timestamp of the currency quote example: "2018-03-27T09:58:06.945Z" currencyPair: type: string description: Currency pair, i.e. base currency and counter currency example: EURPLN buyRate: type: string description: This is a rate you can buy currency at, so at this rate Currency One sells example: "4.1234" sellRate: type: string description: This is a rate you can sell scurrency at, so at this rate Currency One buys example: "4.0987" BestOffersResponse: allOf: - $ref: '#/definitions/GenericResponse' - type: object properties: result: type: object required: - ts - currencyPair - bids - asks properties: ts: type: string description: timestamp of the snapshot example: "2018-04-29T09:48:37.122Z" currencyPair: type: string description: Currency pair, i.e. base currency and counter currency example: EURPLN bids: type: array description: List of 10 best bid offers (e.g. in EURPLN offers of buying EUR paid in PLN). List could be shorter than 10 in rare situation of fewer than 10 bids in given currency pair on Walutomat stock exchange items: $ref: '#/definitions/BidAsk' asks: type: array description: List of 10 best ask offers (e.g. in EURPLN offers of selling EUR paid in PLN). List could be shorter than 10 in rare situation of fewer than 10 asks in given currency pair on Walutomat stock exchange items: $ref: '#/definitions/BidAsk' BidAsk: required: - price - volume - valueInOppositeCurrency properties: price: type: string description: Price of the offer(s), 4 decimal places precision, e.g. if pair is EURPLN price 4.3518 means that 1 EUR is offered for 4.3518 PLN example: 4.3518 volume: type: string description: Volume, quantity of offered currency, e.g. if pair is EURPLN this value represents quantity of EUR offered example: 962.65 valueInOppositeCurrency: type: string description: Offer(s) amount, that is price * volume, e.g. if it is EURPLN this value represents offer value in PLN example: 4189.27 BestOffersDetailedResponse: allOf: - $ref: '#/definitions/GenericResponse' - type: object properties: result: type: object required: - ts - currencyPair - bids - asks properties: ts: type: string description: timestamp of the snapshot example: "2018-04-29T09:48:37.122Z" currencyPair: type: string description: Currency pair, i.e. base currency and counter currency example: EURPLN bids: type: array description: List of 10 (or itemLimit) best bid offers (e.g. in EURPLN offers of buying EUR paid in PLN). List could be shorter than 10 (or itemLimit) in rare situation of Walutomat stock exchange having fewer bids in given currency pair items: $ref: '#/definitions/BidAskDetailed' asks: type: array description: List of 10 (or itemLimit) best ask offers (e.g. in EURPLN offers of selling EUR paid in PLN). List could be shorter than 10 (or itemLimit) in rare situation of Walutomat stock exchange having fewer asks in given currency pair items: $ref: '#/definitions/BidAskDetailed' BidAskDetailed: allOf: - $ref: '#/definitions/BidAsk' - type: object required: - quotes properties: includesOwn: type: boolean description: Either true or not defined. True when one or more offers of this price on this currency pair has been placed by the owner of the API key used to sign the request, otherwise not defined. example: true quotes: type: array description: List of individual offers of this price on this currency pair. items: $ref: '#/definitions/Quote' Quote: required: - volume - valueInOppositeCurrency - ts properties: ts: type: string description: Time of the offer's placement. example: 2017-12-16T21:01:56.513Z volume: type: string description: Volume, quantity of offered currency, e.g. if pair is EURPLN this value represents quantity of EUR offered example: 962.65 valueInOppositeCurrency: type: string description: Offer's amount, that is price * volume, e.g. if it is EURPLN this value represents offer value in PLN example: 4189.27 own: type: boolean description: Either true or not defined. Indicates whether the offer has been placed by the owner of the API key used to sign the request. Otherwise not defined. example: true orderId: type: string description: Unique order identifier assigned by market operator's system. Exists only if the offer has been placed by the owner of the API key used to sign the request. Otherwise not defined. example: 2607f83b-3a60-4097-912c-72e1cf7a0085 BalanceResponse: allOf: - $ref: '#/definitions/GenericResponse' - type: object properties: result: type: array items: $ref: '#/definitions/BalanceItem' BalanceItem: type: object required: - currency - balanceTotal - balanceAvailable - balanceReserved properties: currency: type: string description: ISO currency code. Consult business documentation and agreement to determine which currencies are provided to you. enum: *AnyCurrency balanceTotal: type: string description: Account balance (sum of available and blocked sources) example: "123.00" balanceAvailable: type: string description: Balance of available sources on wallet example: "99.00" balanceReserved: type: string description: Balance of blocked sources on wallet. Common reason are sources blocked to secure order execution on currency stock exchange or sources blocked for ordered and not yet executed money transfer. example: "24.00" HistoryMt940Response: allOf: - $ref: '#/definitions/GenericResponse' - type: object properties: result: type: string HistoryResponse: allOf: - $ref: '#/definitions/GenericResponse' - type: object properties: result: type: array items: $ref: '#/definitions/HistoryItem' HistoryItem: type: object required: - historyItemId - operationType - operationDetailedType - ts - currency - operationAmount - balanceAfter - operationDetails properties: historyItemId: type: integer description: ID of the history item example: 10003 operationType: type: string description: "Type of operation. Walutomat API distiguishes high level type of operations: payins, payouts from wallet, currency exchanges made in one of two models, commissions and fees, other operations not fitted to any of group mentioned earlier." enum: - PAYIN - PAYOUT - COMMISSION - DIRECT_FX - MARKET_FX - TRANSFER - OTHER operationDetailedType: type: string description: More specific operation type. enum: - PAYIN - PAYIN_FEE - PAYOUT - PAYOUT_FEE - PAYOUT_RETURN - PAYOUT_FEE_RETURN - PAYOUT_POST_FACTUM - CASH_PAYOUT - CASH_PAYOUT_FEE - CASH_PAYOUT_RETURN - PAYIN_P24 - PAYIN_P24_FEE - PAYIN_PAYPAL - PAYIN_PAYPAL_FEE - MARKET_FX - MARKET_FX_FEE - DIRECT_FX - CHARGE_COMPENSATION - CUSTOMER_PROFIT - WT_PAY - INTERNAL - MONTHLY_FEE - OTHER ts: type: string description: Timestamp of operation example: "2018-03-27T09:58:06.945Z" currency: type: string description: ISO currency code. Consult business documentation and agreement to determine which currencies are provided to you. enum: *AnyCurrency operationAmount: type: string description: Amount of currency credited or debited to wallet account in given currency. In case of debit operations, negaive sign is used. example: "-999.00" balanceAfter: type: string description: Account balance after this operation. Note that in same cases wallet accounts may have negative balance (debit) example: "123.00" transactionId: type: string description: Identifier of Walutomat API transaction that results in account balance change. Please note that one transaction may affect multiple wallets more than one time, so this identifier may be identical in more than one wallet history item. E.g. exchange transaction affect at least 2 wallets (buyer and seller) in 2 currencies (bought and sold) example: "2035e361-e672-457a-9c3c-0e86e5ff54d6" submitId: type: string description: Identifier of client request that involves given wallet balance change, assigned by client system submitting new request. Not present when given wallet balance change is not result of client request submitted by Walutomat API. example: "916f1f98-01f6-412a-85e7-2482f1f4c112" correctingEntry: type: boolean description: Flag indicating that this entry is a correcting entry. Operations can be corrected by correcting entries that usually have opposite amounts. example: false operationDetails: type: array items: type: object properties: key: type: string description: operation detail entry key example: transferTitle value: type: string description: operation detail entry value example: "Invoice 1/01/2018, from John Smith" orderedBy: type: string description: "Combination of order channel and first five characters of used of the API key in case of API channel or panel user email address in case of GUI channel, for example: API/1a2b3... or BIZ/user@example.com" example: "/^(API|WT|BIZ)/(.*)?$/" ######## ENDPOINTS ############ paths: /account/balances: get: tags: - account summary: Returns wallet balance operationId: getBalances produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: false - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: false responses: 200: description: Returns wallet balances (if success set to false, examine errors object) schema: $ref: '#/definitions/BalanceResponse' examples: application/json: { "success":true, "result":[ { "currency":"EUR", "balanceTotal":"300.33", "balanceAvailable":"300.33", "balanceReserved":"0.00" }, { "currency":"PLN", "balanceTotal":"17.34", "balanceAvailable":"17.34", "balanceReserved":"0.00" }, { "currency":"USD", "balanceTotal":"1.28", "balanceAvailable":"1.28", "balanceReserved":"0.00" } ] } x-code-samples: - lang: Shell source: | curl -X GET -H 'X-API-Key:<your api-key>' 'https://api.walutomat.pl/api/v2.0.0/account/balances' security: - api_key: [] x-c1-roles: [admin, reader] /account/history: get: tags: - account summary: Returns wallet history - operations recorded on the wallet description: | **OperationDetails**: The table below presents keys provided in OperationDeatils depending on OperationType of an entry in the account history | OperationType | OperationDetailedType | OperationDetails | |------------------|---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------| | PAYIN | PAYIN | transferTitle, senderName, sourceAccount, destinationAccount | | PAYIN | PAYIN_P24 | transferTitle, paymentProviderId | | PAYIN | PAYIN_CARD | transferTitle, provider, providerOperationId, cardNumber | | PAYIN | PAYIN_PAYPAL | transferTitle | | PAYIN | PAYIN_P24_BLIK | transferTitle, provider, providerOperationId, cardNumber | | PAYIN | PAYIN_BLIK | transferTitle, provider, providerOperationId, cardNumber | | PAYIN | PAYIN_P24_GPAY | transferTitle, provider, providerOperationId, cardNumber | | PAYIN | PAYIN_P24_NOW | transferTitle, paymentProviderId | | PAYOUT | PAYOUT | destinationAccount, sourceAccount, ownerName, ownerAdress, country, swift, transferTitle | | PAYOUT | PAYOUT_REJECT | destinationAccount, sourceAccount, ownerName, ownerAdress, country, swift, transferTitle | | PAYOUT | PAYOUT_RETURN | destinationAccount, sourceAccount, ownerName, ownerAdress, country, swift, transferTitle, returnReasonCode, returnReasonText | | PAYOUT | PAYOUT_POST_FACTUM | destinationAccount, sourceAccount, ownerName, ownerAdress, country, swift, transferTitle, | | PAYOUT | CASH_PAYOUT | no details | | PAYOUT | CASH_PAYOUT_RETURN | no details | | PAYOUT | THIRD_PARTY_PAYOUT | destinationAccount, ownerName, ownerAdress, country, swift, transferTitle | | PAYOUT | THIRD_PARTY_PAYOUT_REJECT | destinationAccount, ownerName, ownerAdress, country, swift, transferTitle | | PAYOUT | THIRD_PARTY_PAYOUT_RETURN | destinationAccount, ownerName, ownerAdress, country, swift, transferTitle, returnReasonCode, returnReasonText | | PAYOUT | PAYMENT_AGENT_PAYOUT | destinationAccount, ownerName, ownerAddress, country, swift, transferTitle, debtorId, debtorName, debtorAccount | | PAYOUT | PAYMENT_AGENT_PAYOUT_REJECT | destinationAccount, ownerName, ownerAddress, country, swift, transferTitle, debtorId, debtorName, debtorAccount | | PAYOUT | PAYMENT_AGENT_PAYOUT_RETURN | destinationAccount, ownerName, ownerAddress, country, swift, transferTitle, debtorId, debtorName, debtorAccount, returnReasonCode, returnReasonCode | | MARKET_FX | MARKET_FX | orderId, currencyPair, buySell, orderVolume, priceLimit | | DIRECT_FX | DIRECT_FX | amountSold, amountBought, rate, rateTs | | TRANSFER | INTERNAL | title, senderAccountId, receiverAccountId, receiverDetails | | TRANSFER | WT_PAY | title, senderAccountId, receiverAccountId, receiverDetails, partnerOrderId | | COMMISSION | PAYIN_FEE | transferTitle, senderName, sourceAccount, destinationAccount | | COMMISSION | PAYIN_P24_FEE | transferTitle, paymentProviderId | | COMMISSION | PAYIN_CARD_FEE | transferTitle, provider, providerOperationId, cardNumber | | COMMISSION | PAYIN_BLIK_FEE | transferTitle, provider, providerOperationId, cardNumber | | COMMISSION | PAYIN_PAYPAL_FEE | transferTitle | | COMMISSION | PAYOUT_FEE | destinationAccount, ownerName, ownerAdress, country, swift, transferTitle | | COMMISSION | PAYOUT_REJECT_FEE | destinationAccount, ownerName, ownerAdress, country, swift, transferTitle | | COMMISSION | CASH_PAYOUT_FEE | no details | | COMMISSION | THIRD_PARTY_PAYOUT_FEE | destinationAccount, ownerName, ownerAdress, country, swift, transferTitle | | COMMISSION | THIRD_PARTY_PAYOUT_REJECT_FEE | destinationAccount, ownerName, ownerAdress, country, swift, transferTitle | | COMMISSION | PAYMENT_AGENT_PAYOUT_FEE | destinationAccount, ownerName, ownerAddress, country, swift, transferTitle, debtorId, debtorName, debtorAccount | | COMMISSION | PAYMENT_AGENT_PAYOUT_REJECT_FEE | destinationAccount, ownerName, ownerAddress, country, swift, transferTitle, debtorId, debtorName, debtorAccount | | COMMISSION | MARKET_FX_FEE | orderId, currencyPair, buySell, orderVolume, priceLimit | | COMMISSION | CHARGE_COMPENSATION | title | | COMMISSION | MONTHLY_FEE | no details | | OTHER | CUSTOMER_PROFIT | title | operationId: getHistory consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: | Individual request signature with a private key, refer to documentation how to sign requests. required: true - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: false - in: query name: dateFrom type: string description: Date in format YYYY-MM-DDThh:mm:ssTZD, if provided just operations recorded in this date and newer are returned (inclusive) format: date-time required: false - in: query name: dateTo type: string format: date-time description: Date in format YYYY-MM-DDThh:mm:ssTZD, if provided just operations older than this date are returned (exclusive) required: false - in: query name: currencies type: array items: type: string enum: *AnyCurrency description: Comma-separated list of currency codes in ISO format, if provided only operations in given currencies are returned, otherwise operations in all currencies are returned required: false - in: query name: operationType type: string description: Can be used to limit results to selected operation type like payin, payout, currency exchange or commission, if not provided all operations of any kind on multicurrency wallet are returned required: false enum: - PAYIN - PAYOUT - COMMISSION - DIRECT_FX - MARKET_FX - TRANSFER - OTHER - in: query name: operationDetailedType type: string description: Can be used to limit results to selected operation detailed type required: false enum: - PAYIN - PAYIN_CARD - PAYIN_CARD_FEE - PAYIN_FEE - PAYIN_PAYPAL - PAYIN_PAYPAL_FEE - PAYOUT - PAYOUT_FEE - PAYOUT_RETURN - PAYOUT_FEE_RETURN - PAYOUT_POST_FACTUM - CASH_PAYOUT - CASH_PAYOUT_FEE - CASH_PAYOUT_RETURN - PAYIN_P24 - PAYIN_P24_FEE - PAYIN_P24_BLIK - PAYIN_BLIK - PAYIN_BLIK_FEE - PAYIN_P24_GPAY - PAYIN_P24_NOW - MARKET_FX - MARKET_FX_FEE - DIRECT_FX - CHARGE_COMPENSATION - CUSTOMER_PROFIT - WT_PAY - INTERNAL - MONTHLY_FEE - OTHER - in: query name: itemLimit type: integer default: 200 description: Maximum number of account operations fetched in one response. If actual number of operations satisfying request criteria exceeds volume number, response is trimmed to this number and next request with appropriate continueFrom parameter shall be used to read next batch of operations. required: false minimum: 1 maximum: 200 - in: query name: continueFrom type: integer description: ID of the history item the query will resume from. Usually the last historyItemId received in a prevoius batch. Item with provided id will not be included in the response (exclusive). required: false minimum: 1 - in: query name: sortOrder type: string default: 'DESC' description: Sort order of returned elements. required: false enum: - ASC - DESC responses: 200: description: Returns list of operations on Walutomat multicurrency account according to selected filters. When no filters seelcted all operations up to the default volume of 200 are taken into account. schema: $ref: '#/definitions/HistoryResponse' examples: application/json: { "success":true, "result":[ { "historyItemId":51277549, "transactionId":"a4570b2b-23cf-4703-baf1-9b6361be267c", "ts":"2018-10-08T13:10:14.788Z", "operationAmount":"-432.43 PLN", "balanceAfter":"-423.75 PLN", "operationDetails":[ { "key":"amountSold", "value":"432.43 PLN" }, { "key":"amountBought", "value":"100.00 EUR" }, { "key":"rate", "value":"4.3243" }, { "key":"rateTs", "value":"2018-10-08T13:10:00.000Z" } ], "currency":"PLN", "operationType":"DIRECT_FX", "operationDetailedType":"DIRECT_FX", "submitId":"test105", "orderedBy": "API/apike…" }, { "historyItemId":51277650, "transactionId":"8981849f-30ea-4049-9ecc-1a25db0920ae", "ts":"2018-10-08T13:11:41.970Z", "operationAmount":"-0.24 EUR", "balanceAfter":"105.09 EUR", "operationDetails":[ { "key":"amountSold", "value":"0.24 EUR" }, { "key":"amountBought", "value":"1.00 PLN" }, { "key":"rate", "value":"4.2943" }, { "key":"rateTs", "value":"2018-10-08T13:10:00.000Z" } ], "currency":"EUR", "operationType":"DIRECT_FX", "operationDetailedType":"DIRECT_FX", "submitId":"test106", "orderedBy": "GUI/user@example.com" } ] } x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" timestamp=2019-08-12T14:18:36Z server=https://api.walutomat.pl endpoint=/api/v2.0.0/account/history params="?currencies=PLN,EUR&operationType=DIRECT_FX&dateFrom=2018-10-01T00:00:00Z&dateTo=2018-11-01T00:00:00Z&itemLimit=2&continueFrom=51277548&sortOrder=ASC" toSign=$timestamp$endpoint$params sign=`echo -n "$toSign" | openssl dgst -sha256 -binary -sign /path/to/private.key | openssl enc -A -base64` curl -i \ -H "X-API-Key: $apikey" \ -H "X-API-Timestamp: $timestamp" \ -H "X-API-Signature: $sign" \ -X GET "$server$endpoint$params" security: - api_key: [] x-c1-roles: [admin, reader] /account/history/mt940: get: tags: - account summary: Returns wallet history (operations recorded on the wallet) in MT940 format description: The MT940 is a standard SWIFT message for electronic banking statements. MT940 statements used to import balances and transactions to ERP systems. MT940 statements are delivered as text in the result field. Format bases on MT940 SWIFT specification. consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: | Individual request signature with a private key, refer to documentation how to sign requests. required: true - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: false - in: query name: dateFrom type: string description: Date in format YYYY-MM-DD, if provided only dateFrom, given date automatically will be used for dateTo and operations recorded in this date are returned (inclusive) example: "2020-01-01" format: date required: true - in: query name: dateTo type: string description: Date in format YYYY-MM-DD, if provided just operations older than this date are returned (exclusive) example: "2020-03-01" format: date required: false - in: query name: currencies type: array items: type: string enum: *AnyCurrency description: Comma-separated list of currency codes in ISO format, if provided only operations in given currencies are returned, otherwise operations in all currencies are returned required: false responses: 200: description: Returns string in mt940 format statement with operations on Walutomat multicurrency account according to selected filters. When no filters seelcted all operations up to the default volume of 200 are taken into account. schema: $ref: '#/definitions/HistoryMt940Response' examples: application/json: { "success": true, "result": ":20:ST-WT161109EUR/1\r\n:25:WX123WX-EUR\r\n:28C:314/1\r\n:60F:C161109EUR1000270,00\r\n:62F:C161109EUR1000270,00\r\n:64:C161109EUR1000270,00\r\n" } x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ") server=https://api.walutomat.pl endpoint=/api/v2.0.0/account/history/mt940 params="?dateFrom=2022-08-08&currencies=PLN,EUR" toSign=$timestamp$endpoint$params sign=`echo -n "$toSign" | openssl dgst -sha256 -binary -sign /path/to/private.key | openssl enc -A -base64` curl -i \ -H "X-API-Key: $apikey" \ -H "X-API-Timestamp: $timestamp" \ -H "X-API-Signature: $sign" \ -X GET "$server$endpoint$params" security: - api_key: [] x-c1-roles: [admin, reader] /direct_fx/rates: get: tags: - direct_fx summary: Returns current exchange rate description: Returns current exchange rate (buy and sell) offered by Currency One for specified currency pair operationId: getFxRate security: - api_key: [] x-c1-roles: [admin, direct_fx] consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: false - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: false - in: query name: currencyPair type: string description: Currency pair, i.e. base currency and counter currency with no separator, e.g. EURPLN required: true responses: 200: description: Returns current exchange rate (if success set to false, examine errors object) schema: $ref: '#/definitions/FxRateResponse' examples: application/json: { "success": true, "errors": [ ], "result": { "ts": "2018-03-27T09:58:06.945Z", "currencyPair": "EURPLN", "buyRate": "4.1234", "sellRate": "4.0987" } } x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" endpoint=https://api.walutomat.pl/api/v2.0.0/direct_fx/rates params="?currencyPair=EURPLN" curl -i \ -H "X-API-Key: $apikey" \ -X GET "$endpoint$params" /market_fx/best_offers: get: tags: - market_fx summary: Returns 10 best bids and asks on currency pair in question operationId: getBestOffers consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: query name: currencyPair type: string enum: *MarketPair description: Currency pair, i.e. base currency and counter currency with no separator, e.g. EURPLN required: true responses: 200: description: Returns best offers available on market (10 bids and asks), if success set to false, examine errors object schema: $ref: '#/definitions/BestOffersResponse' examples: application/json: { "success": true, "errors": [ ], "result": { "ts": "2018-03-27T09:58:06.945Z", "currencyPair": "EURPLN", "bids": [ { "price": 4.3518, "volume": 962.65, "valueInOppositeCurrency": 4189.27 } ], "asks": [ { "price": 4.3518, "volume": 962.65, "valueInOppositeCurrency": 4189.27 } ] } } x-c1-roles: [public] /market_fx/best_offers/detailed: get: tags: - market_fx summary: Returns more detailed list of best bids and asks on currency pair in question operationId: getBestOffersDetailed consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: false - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: false - in: query name: currencyPair type: string enum: *MarketPair description: Currency pair, i.e. base currency and counter currency with no separator, e.g. EURPLN required: true - in: query name: itemLimit type: integer default: 10 description: Indicates how many uniquely priced offers are to be fetched (starting from the best). required: false minimum: 1 responses: 200: description: Returns best offers available on market - 10 (or itemLimit) bids and asks, if success set to false, examine errors object schema: $ref: '#/definitions/BestOffersDetailedResponse' examples: application/json: { "success": true, "errors": [ ], "result": { "ts": "2020-07-02T00:05:06.531Z", "currencyPair": "EURPLN", "bids": [ { "price": 4.3518, "volume": 962.65, "valueInOppositeCurrency": 4189.27, "quotes": [ { "volume": 962.65, "valueInOppositeCurrency": 4189.27, "ts": "2020-07-02T00:03:06.531Z" }, ] } ], "asks": [ { "price":4.3768, "volume": 3935.70, "valueInOppositeCurrency": 17225.77, "quotes": [ { "volume": 3835.70, "valueInOppositeCurrency": 16788.09, "ts": "2020-07-02T00:04:06.531Z" }, { "volume": 100.00, "valueInOppositeCurrency": 437.68, "ts": "2020-07-21T11:27:33.352597Z", "own": true } ], "includesOwn": true }, ] } } x-code-samples: - lang: Shell source: | curl -X GET -H 'X-API-Key:<your api-key>' 'https://api.walutomat.pl/api/v2.0.0/market_fx/best_offers/detailed' security: - api_key: [] x-c1-roles: [admin, reader, market_fx] /market_fx/orders/active: get: tags: - market_fx summary: Returns active orders, ordered by most recently submitted. operationId: findActiveOrders consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: false - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: false - in: query name: itemLimit type: integer default: 10 description: Maximum items fetched in one response. Use olderThan parameter to get older orders. required: false minimum: 1 maximum: 100 - in: query name: olderThan type: string description: > `submitTs` of the last order from previous response. Use this to fetch next batch of active orders, if any. format: date-time required: false responses: 200: description: Returns matching orders details, if success set to false, examine errors object schema: $ref: '#/definitions/OrdersResponse' security: - api_key: [] x-c1-roles: [admin, reader, market_fx] /market_fx/orders: get: tags: - market_fx summary: Returns the list with an order specified by orderId or empty list if not found. operationId: findOrders consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: false - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: false - in: query name: orderId type: string minLength: 36 maxLength: 36 description: Order identifier returned during order creation, example "22dba34d-d266-4084-9f3e-1b2c7c78c172" required: true responses: 200: description: Returns matching order details, if success set to false, examine errors object schema: $ref: '#/definitions/OrdersResponse' security: - api_key: [] x-c1-roles: [admin, reader, market_fx] post: tags: - market_fx summary: Submits new FX order to market description: Platform allows to submit buy or sell order with price limit. Orders shall concern one of currency pairs listed on Walutomat market. operationId: newOrder consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature, optional when dryRun set to true (if present in dryRun mode, its correctness will be validated), way of protecting most sensitive requests, hash from request is signed with client private key, refer to documentation how to sign requests required: false - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: false - in: formData name: dryRun type: boolean description: If set to true, dry run mode is on. In this mode order is not placed on market, only request correctness and possiblity to place order is checked default: false - in: formData name: submitId type: string pattern: /^[a-zA-Z0-9_-]{1,36}$/ description: Unique exchange identifier assigned by sender (GUID or UUID), required when not dry run mode, must not be used when dryRun=true, example "93a68f4d-ce40-40be-adac-3bb4d4b5e392" - in: formData name: currencyPair type: string enum: *MarketPair description: Currency pair, i.e. base currency and counter currency with no separator, e.g. EURPLN, must be a pair listed on Walutomat market required: true - in: formData name: buySell type: string description: BUY or SELL order type enum: - BUY - SELL required: true - in: formData name: volume type: string description: Order volume, order limit (maximum amount of currency to be bought/sold depending on buySell attribute) required: true pattern: /^[0-9]{1,12}([.][0-9]{2})?$/ - in: formData name: volumeCurrency type: string description: Currency of provided volume value. ISO currency code. enum: *MarketCurrency required: true - in: formData name: limitPrice type: string pattern: /^[0-9]{1,2}([.][0-9]{1,4})?$/ description: Maximum rate to buy currency at in case of BUY order, minimum rate to sell currency at in case of SELL order required: true responses: 200: description: Returns whether operation succeeded and identifier of created order or error - if success set to false, examine errors object schema: $ref: '#/definitions/NewOrderResponse' security: - api_key: [] x-c1-roles: [admin, market_fx] x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" endpoint=https://api.walutomat.pl/api/v2.0.0/market_fx/orders curl -i \ -d "currencyPair=EURPLN&buySell=SELL&volume=90.00&volumeCurrency=EUR&limitPrice=4.2456&submitId=submit-id-1" \ -H "X-API-Key: $apikey" \ -H "Content-Type: application/x-www-form-urlencoded" \ -X POST "$endpoint" /market_fx/orders/close: post: tags: - market_fx summary: Withdraw order from market description: If given order is still active on market, it will be eventually withdrawn even though it is not fully executed. Please note that order might be partially executed before close request has arrived. operationId: cancelOrder consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: false - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: false - in: formData name: orderId type: string minLength: 36 maxLength: 36 description: Order identifier returned during order creation, example "22dba34d-d266-4084-9f3e-1b2c7c78c172" required: true responses: 200: description: Returns operation result and closed order details. If success set to false, examine errors object. Successfully closed order has status CLOSED, completion is 0 when order was closed before any exchange was performed, 100 if order was fully executed before close request arrived or between 0 and 100 when order was partially executed before it was withdrew from market upon close request. schema: $ref: '#/definitions/OrderResponse' security: - api_key: [] x-c1-roles: [admin, market_fx] x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" endpoint=https://api.walutomat.pl/api/v2.0.0/market_fx/orders/close curl -i \ -d "orderId=order-id-1" \ -H "X-API-Key: $apikey" \ -H "Content-Type: application/x-www-form-urlencoded" \ -X POST "$endpoint" /direct_fx/exchanges: post: security: - api_key: [] tags: - direct_fx summary: Requests currency exchange description: Requests currency exchange at rate provided by Currency One operationId: newExchange consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature, optional when dryRun set to true (if present in dryRun mode, its correctness will be validated), way of protecting most sensitive requests, hash from request is signed with client private key, refer to documentation how to sign requests required: false - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: false - in: formData name: dryRun description: When true, dry run mode is on. In this mode currency exchange is not executed, only request correctness and possiblity to execute given exchange is checked instead type: boolean default: false - in: formData name: submitId description: Any unique exchange identifier assigned by sender, required when not dry run mode, must not be used when dryRun=true, example "93a68f4d-ce40-40be-adac-3bb4d4b5e392" type: string pattern: /^[a-zA-Z0-9_-]{1,36}$/ - in: formData name: currencyPair description: Currency pair, i.e. base currency and counter currency with no separator, e.g. EURPLN. type: string required: true - in: formData name: buySell description: BUY or SELL operation type: string enum: - BUY - SELL required: true - in: formData name: volume description: Exchange volume, example "999.00" type: string required: true pattern: /^[0-9]{1,12}([.][0-9]{2})?$/ - in: formData name: volumeCurrency description: Currency of provided volume value. ISO currency code. type: string enum: *AnyCurrency required: true - in: formData name: ts description: An identifier of the rate received from Exchange rates response (it is always in ISO 8601 format), example "2018-03-27T09:58:06.945Z" type: string format: date-time required: true responses: 200: description: Returns operation result, if operation succeeded details of permed currency exchange are returned, if success set to false, examine errors object. schema: $ref: '#/definitions/ExchangeResponse' examples: application/json: { "success":true, "duplicate":false, "errors":[ ], "result":{ "exchangeId":"8981849f-30ea-4049-9ecc-1a25db0920ae" } } x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" endpoint=https://api.walutomat.pl/api/v2.0.0/direct_fx/exchanges curl -i \ -d "currencyPair=EURPLN&buySell=SELL&volume=90.00&volumeCurrency=EUR&submitId=test107&ts=2018-10-08T13:15:00.000Z" \ -H "X-API-Key: $apikey" \ -H "Content-Type: application/x-www-form-urlencoded" \ -X POST "$endpoint" x-c1-roles: [admin, direct_fx] x-c1-logResponse: true /transfer: get: tags: - payout summary: Learn transfer status and details description: Returns the transfer specified by transferId (transactionId) or ErrorType TRANSACTION_NOT_FOUND if not found. operationId: getTransfer consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: true - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: true - in: query name: transferId type: string minLength: 36 maxLength: 36 description: Transfer identifier assigned during transfer creation, example "22dba34d-d266-4084-9f3e-1b2c7c78c172" (if transfer ordered via API, could be found in the response, also visible in operations history available in the user panel and API endpoint). If both transferId and submitId are provided then only transferId is used. required: false - in: query name: submitId type: string pattern: /^[a-zA-Z0-9_-]{1,36}$/ description: Unique transfer identifier assigned by sender when requesting this transfer. If both transferId and submitId are provided then only transferId is used. required: false responses: 200: description: Returns matching transfer details, if success set to false, examine errors object schema: $ref: '#/definitions/TransferResponse' examples: application/json: { "success": true, "errors": [], "result": { "transferId": "2b5121cb-2b38-4fd8-be34-0aac4cf96c8d", "submitId": "916f1f98-01f6-412a-85e7-2482f1f4c112", "responseTs": "2018-03-28T08:01:06.200Z", "transferStatus": "SETTLED", "submittedTs": "2018-03-27T09:58:06.945Z", "settledTs": "2018-03-27T10:12:16.120Z", "currency": "EUR", "volume": "99.00", "transferTitle": "transfer of money", "recipientAccount": "PL32508899582003907890722908", "recipientName": "John Doe" } } x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" timestamp=2019-08-12T14:18:36Z server=https://api.walutomat.pl endpoint=/api/v2.0.0/transfer params="?transferId=22dba34d-d266-4084-9f3e-1b2c7c78c172" toSign=$timestamp$endpoint$params sign=`echo -n "$toSign" | openssl dgst -sha256 -binary -sign /path/to/private.key | openssl enc -A -base64` curl -i \ -H "X-API-Key: $apikey" \ -H "X-API-Timestamp: $timestamp" \ -H "X-API-Signature: $sign" \ -X GET "$server$endpoint$params" security: - api_key: [] x-c1-roles: [admin, reader] /transfer/internal: post: security: - api_key: [] tags: - payout summary: Requests new internal transfer from own wallet to another wallet operated by Currency One. description: Requests new internal transfer from own wallet to another wallet operated by Currency One. Both beneficiary and debtor must have wallets in Currency One opened. Could be used in dryRun mode to learn just transfer possibility and cost instead of perforing actual money transfer. operationId: newTransferInternal consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: true - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: true - in: formData name: dryRun type: boolean description: When true, dry run mode is on. In this mode payout is not sent to execution, only request correctness, cost and possiblity to execute given transfer is checked instead default: false - in: formData name: submitId type: string pattern: /^[a-zA-Z0-9_-]{1,36}$/ description: Any unique transfer identifier assigned by sender, required when not dry run mode, must not be used when dryRun=true, example "93a68f4d-ce40-40be-adac-3bb4d4b5e392" - in: formData name: currency type: string description: ISO currency code. Consult business documentation and agreeement to determine in which currencies transfers are provided to you. enum: *AnyCurrency required: true - in: formData name: volume type: string description: Transfer amount, example "999.00" required: true pattern: /^[0-9]{1,12}([.][0-9]{2})?$/ - in: formData name: title type: string maxLength: 112 description: Transfer title, example "payment to invoice number 1/2018" - in: formData name: accountNumber type: string description: Destination account number assigned to customer that receives transfer, example "WX1234567890WX" required: true - in: formData name: recipientName type: string maxLength: 90 description: Destination account owner, example "Adventure Works Ltd" required: true - in: formData name: recipientAddress type: string maxLength: 90 description: | Destination account owner address. Address should have following format:<br/> `<country code (required)>;<province>;<town (required)>;<postcode>;<street>;<building number>;<flat number>`<br/> Which will be validated using regexp:<br/> `/^[A-Z]{2};[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]+;[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]*$/` <br/>Example: `PL;Pomorskie;Pruszcz Gdański;83-000;Ogrodowa;1;8` - in: formData name: transferCostInstruction type: string description: | - `RECEIVER_VOLUME` means recipient will receive exact amount provided in volume attribute. - `SENDER_VOLUME` means that volume attribute specifies sent volume (for certain transfers there are no guarantee that volume received is equal to volume sent, because extra charges may be deducted from transferred volume). Notes: - `transferCostInstruction` may have impact on transfer fee. - Business documentation specifies fees. enum: - SENDER_VOLUME - RECEIVER_VOLUME required: true responses: 200: description: Response indicates whether transfer was accepted and associated fees are provided. If success set to false, examine errors object. schema: $ref: '#/definitions/NewTransferResponse' examples: application/json: { "success": true, "duplicate": false, "result": { "feeAmount": "0.23", "feeCurrency": "EUR", "transferId": "1f38762e-48e7-447d-afea-85211acb7d0e", "transferType":"SEPA" } } x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" server=https://api.walutomat.pl endpoint=/api/v2.0.0/transfer/internal timestamp=2019-08-12T14:18:36Z params="dryRun=false&submitId=mytest2081023001&volume=100.00&currency=EUR&title=mytest23001&accountNumber=WX1234567890WX&recipientName=Kowalski&recipientAddress=Warsaw&transferCostInstruction=SENDER_VOLUME" toSign=$timestamp$endpoint$params sign=`echo -n "$toSign" | openssl dgst -sha256 -binary -sign /path/to/private.key | openssl enc -A -base64` curl -i \ -d $params \ -H "X-API-Key: $apikey" \ -H "X-API-Timestamp: $timestamp" \ -H "X-API-Signature: $sign" \ -H "Content-Type: application/x-www-form-urlencoded" \ -X POST "$server$endpoint" x-c1-roles: [admin, transfer_internal] x-c1-logResponse: true /transfer/iban: post: security: - api_key: [] tags: - payout summary: Requests new transfer from wallet where destination account number is provided in IBAN format description: Requests transfer from wallet where destination account number is provided in IBAN format - either actual or just simulation to learn transfer possibility and cost in dry run mode. operationId: newTransferIban consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: true - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: true - in: formData name: dryRun type: boolean description: When true, dry run mode is on. In this mode transfer is not sent to execution, only request correctness, cost and possiblity to execute given transfer is checked instead default: false - in: formData name: submitId type: string pattern: /^[a-zA-Z0-9_-]{1,36}$/ description: Any unique transfer identifier assigned by sender, required when not in dry run mode, must not be used when dryRun=true, example "93a68f4d-ce40-40be-adac-3bb4d4b5e392" - in: formData name: volume type: string description: Payout amount, example "999.00" required: true pattern: /^[0-9]{1,12}([.][0-9]{2})?$/ - in: formData name: currency type: string description: ISO currency code. Consult business documentation and agreeement to determine in which currencies transfers are provided to you. enum: *AnyCurrency required: true - in: formData name: title type: string maxLength: 112 description: Transfer title, example "payment to invoice number 1/2018". In certain cases title may be shortened by cutting end of title. - in: formData name: accountNumber type: string description: Destination account number in IBAN format. Country code at the beginning of IBAN number is mandatory, example "PL71967221037685356996377436" required: true - in: formData name: recipientName type: string maxLength: 90 required: true description: Destination account owner, example "Adventure Works Ltd" - in: formData name: recipientAddress type: string maxLength: 90 description: | Destination account owner address. Address should have following format:<br/> `<country code (required)>;<province>;<town (required)>;<postcode>;<street>;<building number>;<flat number>`<br/> Which will be validated using regexp:<br/> `/^[A-Z]{2};[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]+;[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]*$/` <br/>Example: `PL;Pomorskie;Pruszcz Gdański;83-000;Ogrodowa;1;8`<br/> For certain transfers address is required - check business documentation. Notes: - An address is required for transfers outside the EEA (GB, CH, and MC) or currency is not in the EEA currencies list. - An address is required for amounts above EUR 15,000 (and equivalent in another currency). - in: formData name: faster type: boolean description: Enables usually more expensive, but faster transfer. Availability may vary across currencies and destinations. Consult business documentation and agreement to determine availability, conditions and associated cost. default: false - in: formData name: transferCostInstruction type: string description: | - `RECEIVER_VOLUME` means recipient will receive exact amount provided in volume attribute. - `SENDER_VOLUME` means that volume attribute specifies sent volume (for certain transfers there are no guarantee that volume received is equal to volume sent, because extra charges may be deducted from transferred volume). Notes: - `transferCostInstruction` may have impact on transfer fee. - It is possible that for certain countries and currencies we are not able to send transfer with RECEIVER_VOLUME option. In such case, requests with `RECEIVER_VOLUME` option will be rejected. - Business documentation specifies fees and possible transfer instructions for various transfer destinations. enum: - SENDER_VOLUME - RECEIVER_VOLUME required: true - in: formData name: additionalRemittanceInformation type: string maxLength: 106 pattern: /^([A-Za-z0-9 _.\-]+),([A-Za-zÀ-ž0-9 _.\-]+);(A|I):([A-Za-z0-9 _.\-]+)$/ description: | Extra information about requested transfer, reserved for certain API clients and cases. Please fill in only when requested and in the form you will receive in separate document. Endpoint will return error if filled in when not required or incorrectly filled. - in: formData name: transferPurpose type: string description: | The purpose of transfer. Might be required for high volume and offshore transfers, detailed usage conditions outlined in the business agreement. enum: - BILLS - COMMODITY - DONATION_ENTITY - DONATION_PERSON - FAMILY - PREPAYMENT - SERVICE - PROPERTY - OTHER required: false - in: formData name: sourceOfIncome type: string description: | Source of funds. Might be required for high volume and offshore transfers, detailed usage conditions outlined in the business agreement. enum: - SALARY - SAVINGS - SCHOLARSHIP - INSURANCE - INVESTMENTS - DONATION - BUSINESS_INCOME - OTHER required: false responses: 200: description: Response indicates whether transfer was accepted and associated fees are provided. If success set to false, examine errors object. schema: $ref: '#/definitions/NewTransferResponse' examples: application/json: { "success": true, "duplicate": false, "result": { "feeAmount": "0.23", "feeCurrency": "EUR", "transferId": "1f38762e-48e7-447d-afea-85211acb7d0e", "transferType":"SEPA" } } x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" server=https://api.walutomat.pl endpoint=/api/v2.0.0/transfer/iban timestamp=2019-08-12T14:18:36Z params="dryRun=false&submitId=mytest2081023002&volume=100.00&currency=EUR&title=mytest23002&accountNumber=PL57109014630000000110267150&recipientName=Kowalski&recipientAddress=Warsaw&transferCostInstruction=SENDER_VOLUME&transferPurpose=BILLS&sourceOfIncome=SALARY" toSign=$timestamp$endpoint$params sign=`echo -n "$toSign" | openssl dgst -sha256 -binary -sign /path/to/private.key | openssl enc -A -base64` curl -i \ -d $params \ -H "X-API-Key: $apikey" \ -H "X-API-Timestamp: $timestamp" \ -H "X-API-Signature: $sign" \ -H "Content-Type: application/x-www-form-urlencoded" \ -X POST "$server$endpoint" x-c1-roles: [admin, transfer_iban] x-c1-logResponse: true /transfer/iban/sepa: post: security: - api_key: [] tags: - payout summary: Requests new SEPA transfer from wallet where destination account number is provided in IBAN format. description: Requests transfer from wallet where destination account number is provided in IBAN format - either actual or just simulation to learn transfer possibility and cost in dry run mode. This method is restricted to SEPA / SEPA INSTANT transfers only. operationId: newTransferIbanSepa consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: true - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: true - in: formData name: dryRun type: boolean description: When true, dry run mode is on. In this mode transfer is not sent to execution, only request correctness, cost and possiblity to execute given transfer is checked instead default: false - in: formData name: submitId type: string pattern: /^[a-zA-Z0-9_-]{1,36}$/ description: Any unique transfer identifier assigned by sender, required when not in dry run mode, must not be used when dryRun=true, example "93a68f4d-ce40-40be-adac-3bb4d4b5e392" - in: formData name: volume type: string description: Payout amount, example "999.00" required: true pattern: /^[0-9]{1,12}([.][0-9]{2})?$/ - in: formData name: title type: string maxLength: 112 description: In certain cases title may be shortened by cutting end of title. required: false pattern: /^[A-Za-zÀ-ž0-9 _.,()\/\-]+$/ - in: formData name: accountNumber type: string description: Destination account number in IBAN format. Country code at the beginning of IBAN number is mandatory, example "PL71967221037685356996377436" required: true - in: formData name: recipientName type: string maxLength: 90 required: true pattern: /^[A-Za-zÀ-ž0-9 _.\-]+$/ description: Destination account owner, example "Adventure Works Ltd" - in: formData name: recipientAddress type: string maxLength: 90 description: | Destination account owner address. Address should have following format:<br/> `<country code (required)>;<province>;<town (required)>;<postcode>;<street>;<building number>;<flat number>`<br/> Which will be validated using regexp:<br/> `/^[A-Z]{2};[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]+;[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]*;[A-Za-zÀ-ž0-9 _\.\-]*$/` <br/>Example: `PL;Pomorskie;Pruszcz Gdański;83-000;Ogrodowa;1;8` <br/>For certain transfers address is required - check business documentation. Notes: - An address is required for amounts above EUR 15,000 (and equivalent in another currency). - in: formData name: instant type: boolean description: Differentiates between SEPA [false] and SEPA INSTANT [true] transfer types. Consult business documentation and agreement to determine availability, conditions and associated cost. default: false - in: formData name: additionalRemittanceInformation type: string maxLength: 106 pattern: /^([A-Za-z0-9 _.\-]+),([A-Za-zÀ-ž0-9 _.\-]+);(A|I):([A-Za-z0-9 _.\-]+)$/ description: | Extra information about requested transfer, reserved for certain API clients and cases. Please fill in only when requested and in the form you will receive in separate document. Endpoint will return error if filled in when not required or incorrectly filled. - in: formData name: transferPurpose type: string description: | The purpose of transfer. Might be required for high volume and offshore transfers, detailed usage conditions outlined in the business agreement. enum: - BILLS - COMMODITY - DONATION_ENTITY - DONATION_PERSON - FAMILY - PREPAYMENT - SERVICE - PROPERTY - OTHER required: false - in: formData name: sourceOfIncome type: string description: | Source of funds. Might be required for high volume and offshore transfers, detailed usage conditions outlined in the business agreement. enum: - SALARY - SAVINGS - SCHOLARSHIP - INSURANCE - INVESTMENTS - DONATION - BUSINESS_INCOME - OTHER required: false responses: 200: description: Response indicates whether transfer was accepted and associated fees are provided. If success set to false, examine errors object. schema: $ref: '#/definitions/NewTransferResponse' examples: application/json: { "success": true, "duplicate": false, "result": { "feeAmount": "0.23", "feeCurrency": "EUR", "transferId": "1f38762e-48e7-447d-afea-85211acb7d0e" } } x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" server=https://api.walutomat.pl endpoint=/api/v2.0.0/transfer/iban/sepa timestamp=2019-08-12T14:18:36Z params="dryRun=false&submitId=mytest2081023002&volume=100.00&title=mytest23002&accountNumber=PL57109014630000000110267150&recipientName=Kowalski&recipientAddress=Warsaw&transferPurpose=BILLS&sourceOfIncome=SALARY" toSign=$timestamp$endpoint$params sign=`echo -n "$toSign" | openssl dgst -sha256 -binary -sign /path/to/private.key | openssl enc -A -base64` curl -i \ -d $params \ -H "X-API-Key: $apikey" \ -H "X-API-Timestamp: $timestamp" \ -H "X-API-Signature: $sign" \ -H "Content-Type: application/x-www-form-urlencoded" \ -X POST "$server$endpoint" x-c1-roles: [admin, transfer_iban] x-c1-logResponse: true /transfer/noniban: post: security: - api_key: [] tags: - payout summary: Requests new transfer from wallet to non-IBAN destinations description: Requests transfer from wallet where destination account number is provided in local non-IBAN format - either actual or just simulation to learn transfer possibility and cost in dry run mode. Endpoint availability and the list of available countries/destinations and transfer currencies depends on business agreement. operationId: newTransferNoniban consumes: - application/x-www-form-urlencoded produces: - application/json parameters: - in: header name: X-API-Signature type: string description: Individual request signature with a private key, refer to documentation how to sign requests required: true - in: header name: X-API-Timestamp type: string format: date-time description: The UTC date/time of the request, valid for +5 and -5 minutes, used to expire the signature (X-API-Signature) required: true - in: formData name: dryRun type: boolean description: When true, dry run mode is on. In this mode transfer is not sent to execution, only request correctness, cost and possiblity to execute given transfer is checked instead default: false - in: formData name: submitId type: string pattern: /^[a-zA-Z0-9_-]{1,36}$/ description: Any unique transfer identifier assigned by sender, required when not in dry run mode, must not be used when dryRun=true, example "93a68f4d-ce40-40be-adac-3bb4d4b5e392" - in: formData name: volume type: string description: Payout amount, example "999.00" required: true pattern: /^[0-9]{1,12}([.][0-9]{2})?$/ - in: formData name: currency type: string description: ISO currency code. Consult business documentation and agreeement to determine in which currencies transfers are provided to you. enum: *NonibanTransfersCurrency required: true - in: formData name: title type: string maxLength: 112 description: Transfer title, example "payment to invoice number 1/2018". Note that maximum allowed length is reduced in case additionalRemittanceInformation attribute is used. In certain cases title may be shortened by cutting end of title. - in: formData name: country type: string description: > Two letter code of supported destination country. Note: check list of destination countries enabled on your account. required: true enum: - KR - CN - AU - CA - JP - NZ - SG - TW - NG - GH - VN - IN - ET - ZA - GM - GN - AR - BD - CL - ID - MX - MY - PY - QA - TH - UY - LK - in: formData name: swift type: string maxLength: 11 description: SWIFT code of beneficiary bank or financial institution required: true pattern: /^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$/ - in: formData name: accountNumber type: string description: Destination account number. required: true - in: formData name: recipientName type: string maxLength: 90 required: true description: Destination account owner, example "Adventure Works Ltd" - in: formData name: recipientAddress type: string maxLength: 90 required: true description: | Destination account owner address, example "14 Tottenham Court Road, London, England, W1T 1JY". Note: money transfers to China requires province code in the recipient address field compliant with ISO 3166-2, for example `CN-HK` for Hong Kong. - in: formData name: faster type: boolean description: Enables usually more expensive, but faster transfer. Availability may vary across currencies and destinations. Consult business documentation and agreement to determine availability, conditions and associated cost. default: false - in: formData name: transferCostInstruction type: string description: | - `RECEIVER_VOLUME` means recipient will receive exact amount provided in volume attribute. - `SENDER_VOLUME` means that volume attribute specifies sent volume (for certain transfers there are no guarantee that volume received is equal to volume sent, because extra charges may be deducted from transferred volume). Notes: - `transferCostInstruction` may have impact on transfer fee. - It is possible that for certain countries and currencies we are not able to send transfer with RECEIVER_VOLUME option. In such case, requests with `RECEIVER_VOLUME` option will be rejected. - Business documentation specifies fees and possible transfer instructions for various transfer destinations. enum: - SENDER_VOLUME - RECEIVER_VOLUME required: true - in: formData name: transferPurpose type: string description: | The purpose of transfer enum: - BILLS - COMMODITY - DONATION_ENTITY - DONATION_PERSON - FAMILY - PREPAYMENT - SERVICE - PROPERTY - OTHER required: true - in: formData name: sourceOfIncome type: string description: | Source of funds. enum: - SALARY - SAVINGS - SCHOLARSHIP - INSURANCE - INVESTMENTS - DONATION - BUSINESS_INCOME - OTHER required: true - in: formData name: additionalRemittanceInformation type: string maxLength: 106 pattern: /^([A-Za-z0-9 _.\-]+),([A-Za-zÀ-ž0-9 _.\-]+);(A|I):([A-Za-z0-9 _.\-]+)$/ description: | Extra information about requested transfer, reserved for certain API clients and cases. Please fill in only when requested and in the form you will receive in separate document. Endpoint will return error if filled in when not required or incorrectly filled. responses: 200: description: Response indicates whether transfer was accepted and associated fees are provided. If success set to false, examine errors object. schema: $ref: '#/definitions/NewTransferResponse' examples: application/json: { "success": true, "duplicate": false, "result": { "feeAmount": "0.23", "feeCurrency": "EUR", "transferId": "1f38762e-48e7-447d-afea-85211acb7d0e", "transferType":"SEPA" } } x-code-samples: - lang: Shell source: | apikey="<your API-KEY>" server=https://api.walutomat.pl endpoint=/api/v2.0.0/transfer/noniban timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ") params="dryRun=false&submitId=mytest2081023002&volume=100.00&currency=EUR&title=mytest23002&swift=ICBKCNBJBJM&accountNumber=559970269249&recipientName=Kowalski&country=CN&recipientAddress=Hongkong+CN-HK&transferCostInstruction=SENDER_VOLUME&transferPurpose=PREPAYMENT&sourceOfIncome=SAVINGS" toSign=$timestamp$endpoint$params sign=`echo -n "$toSign" | openssl dgst -sha256 -binary -sign /path/to/private.key | openssl enc -A -base64` curl -i \ -d $params \ -H "X-API-Key: $apikey" \ -H "X-API-Timestamp: $timestamp" \ -H "X-API-Signature: $sign" \ -H "Content-Type: application/x-www-form-urlencoded" \ -X POST "$server$endpoint" x-c1-roles: [admin, transfer_noniban] x-c1-logResponse: true

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jpospychala/walutomat-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server