openapi: 3.1.0 info: title: Coinme Crypto-as-a-Service AuthLinkResult Cryptoquote API version: '1.2' description: 'Coinme Crypto-as-a-Service (CaaS) API. Harvested from provider-published per-endpoint OpenAPI blocks at docs.coinme.com/reference. Modular crypto infrastructure: KYC onboarding, quotes, buy/sell orders, wallets, sends, cash on/off-ramp, payment methods, and webhooks.' servers: - url: https://caas.coinme.com/services description: production - url: https://caas-staging.coinme.com/services description: staging tags: - name: Cryptoquote paths: /cryptoquote: post: summary: Initiate Transactional Quote description: Return crypto quote for amount exchanged from one currency to another and it’s expiration time in UTC. Response also includes a quoteId, which can be used to initiate a transaction. Quotes expire after 30 seconds by default. operationId: initiate-transactional-quote parameters: - name: Authorization in: header description: Bearer token {authorize} endpoint required: true schema: type: string default: Bearer ****** - name: User-Agent in: header description: Partner User Agent ID (provided by Coinme) required: true schema: type: string requestBody: content: application/json: schema: type: object required: - customerId - debitCurrencyCode - creditCurrencyCode - amountValue - amountCurrencyCode properties: customerId: type: integer description: Unique customer identifier format: int64 providerId: type: string description: ID of payment provider (provided by Coinme) debitCurrencyCode: type: string description: Debit currency code (i.e. USD) creditCurrencyCode: type: string description: Credit currency code (i.e. DOGE) amountValue: type: string description: Amount to buy or sell. This is used as the input value to calculate the quote amountCurrencyCode: type: string description: Currency code of amount (i.e. USD). It must match either creditCurrency or debitCurrency locationReference: type: string description: should be specified only if fiat settlement is done through Coinme and requires a physical location (i.e. selling crypto for cash) gpsCoordinates: type: object description: alternative to locationReference properties: latitude: type: string description: latitude of location when selling crypto for cash (i.e. -78.617716) longitude: type: string description: longitude of location when selling crypto for cash (i.e. 62.936942) cryptoSettlementType: type: string description: Possible values are "INTERNAL" or "EXTERNAL". defaults to "INTERNAL". Use "EXTERNAL" to also calculate blockchain fees default: INTERNAL enum: - INTERNAL - EXTERNAL chain: type: string description: Possible values are "XLM", "ETH", or "LINEA". Use only if Coinme supports trading this currency on multiple chains. otherwise unnecessary promoCode: type: string description: Applies promotional fees for this transaction. Please contact your Coinme Account Manager to set up a custom promotional code responses: '200': description: '200' content: application/json: examples: Business error: summary: Business error value: "{\n \"data\": null,\n \"errorResponse\": {\n \"httpStatus\":\"200\",\n \"timestamp\":\"2022-02-01T18:59:28.297Z\",//UTC\n \"path\":\"/services/cryptoquote POST\",\n \"errorData\": [\n {\n \"errorCode\":\"123-123-123-123\",//The error code is just a sample showing the structure of the error code.\n \"message\":\"CreditCurrencyCode cannot be same as DebitCurrencyCode\"\n }\n ]\n}" Success: value: "{\n \"data\": \n {\n \"expiresIn\": 30000,// in milliseconds\n \"expirationTime\": \"2022-02-01T18:59:28.297Z\",//UTC\n \"quoteId\": \"1006491596889587712\",\n \"creditCurrencyUnitPrice\":\"7.917\", // 7.8(market value for 1 USD to Dogecoin)*(1+ 0.015(spread))\n \"creditCurrencyUnitPriceCode\":\"DOGE/USD\",\n \"debitCurrencyUnitPrice\":\"0.1263104711\",// 1/7.917(creditCurrencyUnitPrice)\n \"debitCurrencyUnitPriceCode\":\"USD/DOGE\",\n \"creditCurrencyAmount\":\"771.9075\",//include the spread.Calculation- (100(debitCurrencyAmount)-2.5(totalFees))*7.917(creditCurrencyUnitPrice)\n \"creditCurrencyCode\":\"DOGE\",\n \"debitCurrencyAmount\":\"100\",//Amount value requested by User\n \"debitCurrencyCode\":\"USD\",\n \"totalFees\":\"2.5\",//exchange fee value\n \"feeCurrencyCode\":\"USD\", // exchange fee currency code\n \"feesMap\":{\n \"exchangeFee\":\"2.5\",\n \"processingFee\":\"0\",\n \"blockchainFee\": \"0.3\" // will be present if cryptoSettlementType is EXTERNAL\n },\n \"spreadAmount\":\"0.117\",\n \"spreadCurrencyCode\":\"USD\",\n },\n \"errorResponse\": null\n}" summary: Success schema: type: object properties: {} '400': description: '400' content: application/json: examples: Result: value: "{\n \"data\": null,\n \"errorResponse\": {\n \"httpStatus\":\"200\",\n \"timestamp\":\"2022-02-01T18:59:28.297Z\",//UTC\n \"path\":\"/services/cryptoquote POST\",\n \"errorData\": [\n {\n \"errorCode\":\"123-123-123-123\",//The error code is just a sample showing the structure of the error code.\n \"message\":\"CreditCurrencyCode cannot be same as DebitCurrencyCode\"\n }\n ]\n}" '401': description: '401' content: text/plain: examples: Result: value: '' '500': description: '500' content: text/plain: examples: Result: value: '' deprecated: false security: - x-api-key: [] tags: - Cryptoquote /cryptoquote/{quoteId}: get: summary: Get Transactional Quote description: Gathers details on a transactional quote based on the quoteId operationId: get-transactional-quote parameters: - name: quoteId in: path description: Quote Identifier referring to the specific crypto quote schema: type: string required: true - name: Authorization in: header description: Bearer token {authorize} endpoint required: true schema: type: string default: Bearer ****** - name: User-Agent in: header description: Partner User Agent ID (provided by Coinme) required: true schema: type: string responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"data\": {\n \"quoteId\": \"1016647805236006912\",\n \"creditCurrencyUnitPrice\": \"0.00003840\",\n \"creditCurrencyUnitPriceCode\": \"BTC/USD\",\n \"debitCurrencyUnitPrice\": \"26041.78\",\n \"debitCurrencyUnitPriceCode\": \"USD/BTC\",\n \"creditCurrencyAmount\": \"0.00028147\",\n \"creditCurrencyCode\": \"BTC\",\n \"debitCurrencyAmount\": \"7.47\",\n \"debitCurrencyCode\": \"USD\",\n \"totalFees\": \"0.14\",\n \"feeCurrency\": \"USD\",\n \"feesMap\": {\n \"exchangeFee\": \"0.14\",\n \"blockchainFee\": \"0.3\" // will be present if cryptoSettlementType is EXTERNAL\n },\n \"expiresIn\": 54600,\n \"expirationTime\": \"2023-09-06T09:56:25.171Z\",\n \"spread\": \"0.08\",\n \"spreadCurrencyCode\": \"USD\"\n },\n \"errorResponse\": null\n}" schema: type: object properties: data: type: object properties: quoteId: type: string example: '1016647805236006912' creditCurrencyUnitPrice: type: string example: '0.00003840' creditCurrencyUnitPriceCode: type: string example: BTC/USD debitCurrencyUnitPrice: type: string example: '26041.78' debitCurrencyUnitPriceCode: type: string example: USD/BTC creditCurrencyAmount: type: string example: '0.00028147' creditCurrencyCode: type: string example: BTC debitCurrencyAmount: type: string example: '7.47' debitCurrencyCode: type: string example: USD totalFees: type: string example: '0.14' feeCurrency: type: string example: USD feesMap: type: object properties: exchangeFee: type: string example: '0.14' blockchainFee: type: string example: '0.3' expiresIn: type: integer example: 54600 default: 0 expirationTime: type: string example: '2023-09-06T09:56:25.171Z' spread: type: string example: '0.08' spreadCurrencyCode: type: string example: USD errorResponse: {} '400': description: '400' content: application/json: examples: Result: value: '' '401': description: '401' content: text/plain: examples: Result: value: '' '500': description: '500' content: text/plain: examples: Result: value: '' deprecated: false security: - x-api-key: [] tags: - Cryptoquote /cryptoquote/informative: post: summary: Initiate Informative Quote description: Returns an informational crypto quote for amount exchanged from one currency to another. Unlike the Transactional Quote endpoint, this response does not include a quoteId (since its just informative) nor any expiration time. A buy or sell flow cannot be initiated with this quote operationId: initiate-informative-quote parameters: - name: Authorization in: header description: Bearer token {authorize} endpoint required: true schema: type: string default: Bearer ****** - name: User-Agent in: header description: Partner User Agent ID (provided by Coinme) required: true schema: type: string requestBody: content: application/json: schema: type: object required: - debitCurrencyCode - creditCurrencyCode - amountValue - amountCurrencyCode properties: debitCurrencyCode: type: string description: Debit currency code (i.e. USD) creditCurrencyCode: type: string description: Credit currency code (i.e. DOGE) amountValue: type: string description: Amount to buy or sell amountCurrencyCode: type: string description: Currency code of amount (i.e. USD) default: USD cryptoSettlementType: type: string description: Possible values are "INTERNAL" or "EXTERNAL". defaults to "INTERNAL". Use "EXTERNAL" to also calculate blockchain fees default: INTERNAL enum: - INTERNAL - EXTERNAL chain: type: string description: Possible values are "XLM" or "ETH". use only if Coinme supports trading this currency on multiple chains. otherwise unnecessary latitude: type: string description: Latitude of the selected location. Either lat & long , or the locationReference must be provided longitude: type: string description: Longitude of the selected location. Either lat & long , or the locationReference must be provided locationReference: type: string description: Encoded reference of the location. Either lat & long , or the locationReference must be provided promoCode: type: string description: Applies promotional fees for this transaction. Please contact your Coinme Account Manager to set up a custom promotional code responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"data\": \n {\n \"creditCurrencyUnitPrice\":\"7.917\", // 7.8(market value for 1 USD to Dogecoin)*(1+ 0.015(spread))\n \"creditCurrencyUnitPriceCode\":\"DOGE/USD\",\n \"debitCurrencyUnitPrice\":\"0.1263104711\",// 1/7.917(creditCurrencyUnitPrice)\n \"debitCurrencyUnitPriceCode\":\"USD/DOGE\",\n \"creditCurrencyAmount\":\"771.9075\",//include the spread.Calculation- (100(debitCurrencyAmount)-2.5(totalFees))*7.917(creditCurrencyUnitPrice)\n \"creditCurrencyCode\":\"DOGE\",\n \"debitCurrencyAmount\":\"100\",//Amount value requested by User\n \"debitCurrencyCode\":\"USD\",\n \"totalFees\":\"2.5\",//exchange fee value\n \"feeCurrency\":\"USD\", // exchange fee currency code\n \"feesMap\":{\n \"exchangeFee\":\"2.5\",\n \"processingFee\":\"0\",\n \"blockchainFee\": \"0.4\" // will be present if cryptoSettlementType == EXTERNAL\n },\n \"spread\":\"0.117\",\n \"spreadCurrencyCode\":\"USD\"\n },\n \"errorResponse\": null\n}" schema: type: object properties: data: type: object properties: creditCurrencyUnitPrice: type: string example: '7.917' creditCurrencyUnitPriceCode: type: string example: DOGE/USD debitCurrencyUnitPrice: type: string example: '0.1263104711' debitCurrencyUnitPriceCode: type: string example: USD/DOGE creditCurrencyAmount: type: string example: '771.9075' creditCurrencyCode: type: string example: DOGE debitCurrencyAmount: type: string example: '100' debitCurrencyCode: type: string example: USD totalFees: type: string example: '2.5' feeCurrency: type: string example: USD feesMap: type: object properties: exchangeFee: type: string example: '2.5' processingFee: type: string example: '0' blockchainFee: type: string example: '0.4' spread: type: string example: '0.117' spreadCurrencyCode: type: string example: USD errorResponse: {} '400': description: '400' content: application/json: examples: Result: value: "{\n \"data\": null,\n \"errorResponse\": {\n \"httpStatus\":\"200\",\n \"timestamp\":\"2022-02-01T18:59:28.297Z\",//UTC\n \"path\":\"/services/cryptoquote POST\",\n \"errorData\": [\n {\n \"errorCode\":\"123-123-123-123\",//The error code is just a sample showing the structure of the error code.\n \"message\":\"CreditCurrencyCode cannot be same as DebitCurrencyCode\"\n }\n ]\n}" '401': description: '401' content: text/plain: examples: Result: value: '' '500': description: '500' content: text/plain: examples: Result: value: '' deprecated: false security: - x-api-key: [] tags: - Cryptoquote /cryptoquote/sell-all: post: summary: Initiate Sell All Transaction description: Sells all of the customer's remaining cryptocurrency as specified. The response is exactly same as the Cryptoquote end point. This is usable only if the user’s crypto asset are managed by Coinme’s custody wallet operationId: initiate-sell-all-transaction parameters: - name: Authorization in: header description: Bearer token {authorize} endpoint required: true schema: type: string default: Bearer ****** - name: User-Agent in: header description: Partner User Agent ID (provided by Coinme) required: true schema: type: string requestBody: content: application/json: schema: type: object required: - customerId - debitCurrencyCode - creditCurrencyCode properties: customerId: type: integer description: Unique customer identifier format: int64 debitCurrencyCode: type: string description: Debit currency code (i.e. USD) creditCurrencyCode: type: string description: Credit currency code (i.e. DOGE) cryptoSettlementType: type: string description: Possible values are "INTERNAL" or "EXTERNAL". defaults to "INTERNAL". Use "EXTERNAL" to also calculate blockchain fees chain: type: string description: Possible values are "XLM" or "ETH". use only if Coinme supports trading this currency on multiple chains. otherwise unnecessary responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"data\": \n {\n \"expiresIn\": 30000,// in milliseconds\n \"expirationTime\": \"2022-02-01T18:59:28.297Z\",//UTC\n \"quoteId\": \"eyJhbGciOiJIUzI1NiJ9.eyJxdW90ZSI6eyJwcmljZSI6IjM4NTA0Ljc4IiwiZXhwaXJlc0luIjo2MCwiZXhwaXJhdGlvblRpbWUiOiIyMDIyLTAyLTAxVDE4OjU5OjI4LjI5N1oiLCJxdW90ZUNvZGUiOm51bGwsImN1cnJlbmN5UGFpciI6IkJUQy9VU0QiLCJpbnZlcnRlZFByaWNlIjoiMC4wMDAwMjU5NyIsImFwcGxpY2FibGVGZWVQZXJjZW50YWdlcyI6bnVsbCwiYXBwbGljYWJsZURpc2NvdW50UGVyY2VudGFnZXMiOm51bGx9LCJwcm92aWRlck5hbWUiOiJCaXR0cmV4In0.jUHyINH8t71Xyk2GonwIwIkAIuIfT6L64Y4eNnU_gvA\",\n \"creditCurrencyUnitPrice\":\"0.1301574906\",//1/(7.8(market value for 1 USD to Dogecoin) * (1 - 0.015(spread)))\n \"creditCurrencyUnitPriceCode\":\"USD/DOGE\",\n \"debitCurrencyUnitPrice\":\"7.683\",// 1/0.1301574906(creditCurrencyUnitPrice)\n \"debitCurrencyUnitPriceCode\":\"DOGE/USD\",\n \"creditCurrencyAmount\":\"100\",//Amount value requested by User \n \"creditCurrencyCode\":\"USD\",\n \"debitCurrencyAmount\":\"749.0925\",//Calculation: 7.683(debitCurrencyUnitPrice)*(100(creditCurrencyAmount)-2.5(totalFees))\n \"debitCurrencyCode\":\"DOGE\",\n \"totalFees\":\"2.5\",//exchange fee value\n \"feeCurrencyCode\":\"USD\", // exchange fee currency code\n \"feesMap\":{\n \"exchangeFee\":\"2.5\",\n \"processingFee\":\"0\",\n \"blockchainFee\": \"0.4\" // present if request had cryptoSettlementType: EXTERNAL\n },\n \"spreadAmount\":\"0.117\",\n \"spreadCurrencyCode\":\"USD\",\n \"timestamp\":\"2022-02-01T18:59:28.297Z\"//UTC\n },\n \"errorResponse\": null\n}" schema: type: object properties: data: type: object properties: expiresIn: type: integer example: 30000 default: 0 expirationTime: type: string example: '2022-02-01T18:59:28.297Z' quoteId: type: string example: eyJhbGciOiJIUzI1NiJ9.eyJxdW90ZSI6eyJwcmljZSI6IjM4NTA0Ljc4IiwiZXhwaXJlc0luIjo2MCwiZXhwaXJhdGlvblRpbWUiOiIyMDIyLTAyLTAxVDE4OjU5OjI4LjI5N1oiLCJxdW90ZUNvZGUiOm51bGwsImN1cnJlbmN5UGFpciI6IkJUQy9VU0QiLCJpbnZlcnRlZFByaWNlIjoiMC4wMDAwMjU5NyIsImFwcGxpY2FibGVGZWVQZXJjZW50YWdlcyI6bnVsbCwiYXBwbGljYWJsZURpc2NvdW50UGVyY2VudGFnZXMiOm51bGx9LCJwcm92aWRlck5hbWUiOiJCaXR0cmV4In0.jUHyINH8t71Xyk2GonwIwIkAIuIfT6L64Y4eNnU_gvA creditCurrencyUnitPrice: type: string example: '0.1301574906' creditCurrencyUnitPriceCode: type: string example: USD/DOGE debitCurrencyUnitPrice: type: string example: '7.683' debitCurrencyUnitPriceCode: type: string example: DOGE/USD creditCurrencyAmount: type: string example: '100' creditCurrencyCode: type: string example: USD debitCurrencyAmount: type: string example: '749.0925' debitCurrencyCode: type: string example: DOGE totalFees: type: string example: '2.5' feeCurrencyCode: type: string example: USD feesMap: type: object properties: exchangeFee: type: string example: '2.5' processingFee: type: string example: '0' blockchainFee: type: string example: '0.4' spreadAmount: type: string example: '0.117' spreadCurrencyCode: type: string example: USD timestamp: type: string example: '2022-02-01T18:59:28.297Z' errorResponse: {} '400': description: '400' content: application/json: examples: Result: value: "{\n \"data\": null,\n \"errorResponse\": {\n \"httpStatus\":\"200\",\n \"timestamp\":\"2022-02-01T18:59:28.297Z\",//UTC\n \"path\":\"/services/cryptoquote POST\",\n \"errorData\": [\n {\n \"errorCode\":\"123-123-123-123\",//The error code is just a sample showing the structure of the error code.\n \"message\":\"CreditCurrencyCode cannot be same as DebitCurrencyCode\"\n }\n ]\n}" '401': description: '401' content: text/plain: examples: Result: value: '' '500': description: '500' content: text/plain: examples: Result: value: '' deprecated: false security: - x-api-key: [] tags: - Cryptoquote components: securitySchemes: basic: type: http scheme: basic x-api-key: type: apiKey in: header name: x-api-key