CoinGate Payment Gateway API

REST API for accepting cryptocurrency payments, managing orders, processing refunds, handling payouts, performing currency conversions, and accessing merchant ledger and billing data. Supports both production and sandbox environments.

OpenAPI Specification

openapi.json Raw ↑
{
  "openapi": "3.1.0",
  "info": {
    "title": "CoinGate Payment Gateway API",
    "description": "REST API for accepting cryptocurrency payments, managing orders, processing refunds, handling payouts, performing currency conversions, and accessing merchant ledger and billing data. Supports both production and sandbox environments.",
    "version": "2",
    "contact": {
      "name": "CoinGate Support",
      "url": "https://coingate.com/contact",
      "email": "[email protected]"
    },
    "termsOfService": "https://coingate.com/terms",
    "x-logo": {
      "url": "https://coingate.com/images/coingate-logo.png"
    }
  },
  "externalDocs": {
    "description": "CoinGate Developer Documentation",
    "url": "https://developer.coingate.com/docs/api-overview"
  },
  "servers": [
    {
      "url": "https://api.coingate.com/api/v2",
      "description": "Production"
    },
    {
      "url": "https://api-sandbox.coingate.com/api/v2",
      "description": "Sandbox"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API Token authentication. Obtain your API token from the CoinGate merchant dashboard."
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "Human-readable error message"
          },
          "reason": {
            "type": "string",
            "description": "Machine-readable error reason code"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of validation errors"
          }
        }
      },
      "Currency": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": ["crypto", "fiat"]
          },
          "symbol": {
            "type": "string"
          }
        }
      },
      "Order": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "status": {
            "type": "string",
            "description": "Order status (new, pending, confirming, paid, invalid, expired, canceled, refunded)"
          },
          "title": {
            "type": "string"
          },
          "do_not_convert": {
            "type": "boolean"
          },
          "orderable_type": {
            "type": "string"
          },
          "orderable_id": {
            "type": "integer"
          },
          "price_currency": {
            "type": "string"
          },
          "price_amount": {
            "type": "string"
          },
          "pay_currency": {
            "type": "string"
          },
          "pay_amount": {
            "type": "string"
          },
          "lightning_network": {
            "type": "boolean"
          },
          "receive_currency": {
            "type": "string"
          },
          "receive_amount": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "expire_at": {
            "type": "string",
            "format": "date-time"
          },
          "paid_at": {
            "type": "string",
            "format": "date-time"
          },
          "payment_address": {
            "type": "string"
          },
          "payment_gateway": {
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "payment_url": {
            "type": "string"
          },
          "payment_request_uri": {
            "type": "string"
          },
          "underpaid_amount": {
            "type": "string"
          },
          "overpaid_amount": {
            "type": "string"
          },
          "is_refundable": {
            "type": "boolean"
          },
          "conversion_rate": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "refunds": {
            "type": "array",
            "items": {}
          },
          "voids": {
            "type": "array",
            "items": {}
          },
          "fees": {
            "type": "array",
            "items": {}
          },
          "blockchain_transactions": {
            "type": "array",
            "items": {}
          }
        }
      },
      "Shopper": {
        "type": "object",
        "description": "Optional shopper information for Travel Rule compliance and checkout prefill",
        "properties": {
          "type": {
            "type": "string",
            "enum": ["business", "personal"]
          },
          "ip_address": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "date_of_birth": {
            "type": "string",
            "format": "date"
          },
          "residence_address": {
            "type": "string"
          },
          "residence_postal_code": {
            "type": "string"
          },
          "residence_city": {
            "type": "string"
          },
          "residence_country": {
            "type": "string",
            "description": "Alpha-2 country code"
          },
          "company_details": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "code": {
                "type": "string"
              },
              "incorporation_date": {
                "type": "string",
                "format": "date"
              },
              "incorporation_country": {
                "type": "string"
              },
              "address": {
                "type": "string"
              },
              "postal_code": {
                "type": "string"
              },
              "city": {
                "type": "string"
              },
              "country": {
                "type": "string"
              }
            }
          }
        }
      },
      "LedgerAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "balance": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": ["active", "inactive"]
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          }
        }
      },
      "SendRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "purpose": {
            "type": "string"
          },
          "callback_url": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "external_id": {
            "type": "string"
          },
          "ledger_account": {
            "$ref": "#/components/schemas/LedgerAccount"
          },
          "input_amount": {
            "type": "string"
          },
          "input_currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "sending_amount": {
            "type": "string"
          },
          "sending_currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "input_to_sending_rate": {
            "type": "string"
          },
          "sending_to_balance_debit_rate": {
            "type": "string"
          },
          "balance_debit_amount": {
            "type": "string"
          },
          "balance_debit_currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "fees": {
            "type": "object"
          },
          "blockchain_transactions": {
            "type": "array",
            "items": {}
          },
          "actions_required": {
            "type": "object",
            "properties": {
              "confirm": {
                "type": "string"
              },
              "cancel": {
                "type": "string"
              }
            }
          },
          "requires_2fa_confirmation": {
            "type": "boolean"
          }
        }
      },
      "Refund": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "request_amount": {
            "type": "string"
          },
          "refund_amount": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "skip_user_address_confirmation": {
            "type": "boolean"
          },
          "processor": {
            "type": "string"
          },
          "order": {
            "type": "object"
          },
          "refund_currency": {
            "type": "object"
          },
          "transactions": {
            "type": "array",
            "items": {}
          },
          "ledger_account": {
            "type": "object"
          }
        }
      }
    }
  },
  "paths": {
    "/orders": {
      "post": {
        "summary": "Create Order",
        "description": "Create an order at CoinGate and redirect the shopper to the invoice (payment_url).",
        "operationId": "create-order",
        "tags": ["Orders"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["price_amount", "price_currency", "title", "description"],
                "properties": {
                  "order_id": {
                    "type": "string",
                    "description": "Merchant's custom order ID. We recommend using a unique order ID. Example: CGORDER-12345."
                  },
                  "price_amount": {
                    "type": "number",
                    "format": "double",
                    "description": "The price set by the merchant. Example: 1050.99."
                  },
                  "price_currency": {
                    "type": "string",
                    "description": "ISO 4217 currency code defining the currency for pricing."
                  },
                  "receive_currency": {
                    "type": "string",
                    "description": "ISO 4217 currency code specifying settlement currency. Use DO_NOT_CONVERT to keep payment in original currency."
                  },
                  "title": {
                    "type": "string",
                    "description": "Min 3 - Max 150 characters. Example: product title, order id, or cart id."
                  },
                  "description": {
                    "type": "string",
                    "description": "Min 3 - Max 500 characters. Cart items, product details or other information."
                  },
                  "callback_url": {
                    "type": "string",
                    "description": "URL for automated order status change notifications."
                  },
                  "cancel_url": {
                    "type": "string",
                    "description": "Redirect URL when buyer cancels the order."
                  },
                  "success_url": {
                    "type": "string",
                    "description": "Redirect URL after successful payment."
                  },
                  "token": {
                    "type": "string",
                    "description": "Custom token to validate payment callback notification."
                  },
                  "shopper": {
                    "$ref": "#/components/schemas/Shopper"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Order created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "List Orders",
        "description": "Retrieve information of all placed orders.",
        "operationId": "list-orders",
        "tags": ["Orders"],
        "parameters": [
          {
            "name": "per_page",
            "in": "query",
            "description": "How many orders per page. Max: 100. Default: 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100,
              "maximum": 100
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort orders by field. Available: created_at_asc, created_at_desc.",
            "schema": {
              "type": "string",
              "default": "created_at_desc",
              "enum": ["created_at_asc", "created_at_desc"]
            }
          },
          {
            "name": "created_at[from]",
            "in": "query",
            "description": "Filter by order creation time (from). Example: 2018-09-01",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "created_at[to]",
            "in": "query",
            "description": "Filter by order creation time (to). Example: 2018-09-30",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by order status.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paid_at[from]",
            "in": "query",
            "description": "Filter by order paid time (from). Example: 2018-09-01",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "paid_at[to]",
            "in": "query",
            "description": "Filter by order paid time (to). Example: 2018-09-30",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of orders",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "current_page": {
                      "type": "integer"
                    },
                    "per_page": {
                      "type": "integer"
                    },
                    "total_orders": {
                      "type": "integer"
                    },
                    "total_pages": {
                      "type": "integer"
                    },
                    "orders": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Order"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          }
        }
      }
    },
    "/orders/{id}": {
      "get": {
        "summary": "Get Order",
        "description": "Retrieve information about a specific order by its CoinGate ID.",
        "operationId": "get-order",
        "tags": ["Orders"],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "CoinGate Order ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Order details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            }
          },
          "404": {
            "description": "Order not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/orders/{order_id}/refunds": {
      "post": {
        "summary": "Create Order Refund",
        "description": "Create a refund for a specific order.",
        "operationId": "create-refund",
        "tags": ["Refunds"],
        "parameters": [
          {
            "name": "order_id",
            "in": "path",
            "description": "ID of the order to be refunded",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "required": ["amount", "address", "currency_id", "platform_id", "reason", "email", "ledger_account_id"],
                "properties": {
                  "amount": {
                    "type": "number",
                    "format": "double",
                    "description": "Requesting amount in order price currency to refund"
                  },
                  "address": {
                    "type": "string",
                    "description": "Cryptocurrency address to which the refund will be sent"
                  },
                  "address_memo": {
                    "type": "string"
                  },
                  "currency_id": {
                    "type": "integer",
                    "format": "int32",
                    "description": "ID of the currency in which the refund will be issued"
                  },
                  "platform_id": {
                    "type": "integer",
                    "format": "int32",
                    "description": "Platform ID associated with the selected refund currency"
                  },
                  "reason": {
                    "type": "string",
                    "description": "Reason for issuing the refund"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "Customer will receive updates on refund status to this email"
                  },
                  "ledger_account_id": {
                    "type": "string",
                    "description": "Ledger balance from which the refund amount will be deducted"
                  },
                  "callback_url": {
                    "type": "string",
                    "description": "URL for automated refund status change notifications"
                  },
                  "skip_user_address_confirmation": {
                    "type": "boolean",
                    "default": false,
                    "description": "Skip email confirmation of crypto address to shopper"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Refund created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Refund"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/send_requests": {
      "post": {
        "summary": "Create Send Request",
        "description": "Create a payout send request to transfer crypto to a beneficiary.",
        "operationId": "create-send",
        "tags": ["Send Requests"],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "required": ["ledger_account_id", "beneficiary_payout_setting_id", "amount", "amount_currency_id", "purpose"],
                "properties": {
                  "ledger_account_id": {
                    "type": "string",
                    "description": "Ledger account ID (see /ledger/accounts)"
                  },
                  "beneficiary_payout_setting_id": {
                    "type": "integer",
                    "format": "int32",
                    "description": "Beneficiary payout setting ID (see /beneficiaries)"
                  },
                  "amount": {
                    "type": "string",
                    "description": "Amount to send"
                  },
                  "amount_currency_id": {
                    "type": "integer",
                    "format": "int32",
                    "description": "Currency ID for the amount (see /currencies)"
                  },
                  "purpose": {
                    "type": "string",
                    "description": "Purpose of the send request"
                  },
                  "callback_url": {
                    "type": "string",
                    "description": "URL for automated send request status change notifications"
                  },
                  "external_id": {
                    "type": "string",
                    "description": "Merchant internal reference ID (must be unique, max 50 chars)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Send request created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendRequest"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "List Send Requests",
        "description": "Retrieve a paginated list of all send requests.",
        "operationId": "list-send",
        "tags": ["Send Requests"],
        "parameters": [
          {
            "name": "per_page",
            "in": "query",
            "description": "Records per page",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Current page number",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of send requests",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "current_page": {
                      "type": "integer"
                    },
                    "per_page": {
                      "type": "integer"
                    },
                    "total_records": {
                      "type": "integer"
                    },
                    "total_pages": {
                      "type": "integer"
                    },
                    "send_requests": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SendRequest"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/send_requests/{id}": {
      "get": {
        "summary": "Get Send Request",
        "description": "Retrieve details of a specific send request.",
        "operationId": "get-send",
        "tags": ["Send Requests"],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Send request details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendRequest"
                }
              }
            }
          },
          "404": {
            "description": "Send request not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/ledger/conversions": {
      "post": {
        "summary": "Create Conversion",
        "description": "Create a currency conversion between ledger accounts.",
        "operationId": "create-conversion",
        "tags": ["Conversions"],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "required": ["ledger_account_id", "quote_currency_id", "base_amount"],
                "properties": {
                  "ledger_account_id": {
                    "type": "string",
                    "description": "ID of the ledger account to convert from"
                  },
                  "quote_currency_id": {
                    "type": "integer",
                    "format": "int32",
                    "description": "ID of the target currency to convert to"
                  },
                  "base_amount": {
                    "type": "string",
                    "description": "Amount to convert in the source ledger account currency"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Conversion created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "base_amount": {
                      "type": "string"
                    },
                    "quote_amount": {
                      "type": "string"
                    },
                    "base_ledger_account": {
                      "$ref": "#/components/schemas/LedgerAccount"
                    },
                    "quote_ledger_account": {
                      "$ref": "#/components/schemas/LedgerAccount"
                    },
                    "fees": {
                      "type": "object"
                    },
                    "actions_required": {
                      "type": "object"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "expires_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "List Conversions",
        "description": "Retrieve a paginated list of currency conversions.",
        "operationId": "list-conversions",
        "tags": ["Conversions"],
        "parameters": [
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of conversions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "current_page": {
                      "type": "integer"
                    },
                    "per_page": {
                      "type": "integer"
                    },
                    "total_records": {
                      "type": "integer"
                    },
                    "total_pages": {
                      "type": "integer"
                    },
                    "exchange_transactions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "base_amount": {
                            "type": "string"
                          },
                          "quote_amount": {
                            "type": "string"
                          },
                          "fees": {
                            "type": "object"
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "expires_at": {
                            "type": "string",
                            "format": "date-time"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/currencies": {
      "get": {
        "summary": "Get Currencies",
        "description": "Retrieves all supported currencies with optional filtering.",
        "operationId": "currencies",
        "tags": ["Currencies"],
        "security": [],
        "parameters": [
          {
            "name": "native",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "enabled",
            "in": "query",
            "schema": {
              "type": "boolean"
        

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/coingate/refs/heads/main/openapi/openapi.json