
Product
Introducing Tier 1 Reachability: Precision CVE Triage for Enterprise Teams
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
This Client provides conveniet way to communicate between CoinGate API v2 and your Python code.
Python 3.7+
pip install coingate-python
This library requires the following packages to work properly:
You can sign up for a CoinGate account at https://coingate.com for production and https://sandbox.coingate.com for testing (sandbox).
Please note, that for Sandbox you must generate separate API credentials on https://sandbox.coingate.com. API credentials generated on https://coingate.com will not work for Sandbox mode.
Usage of Client looks like:
>>> from coingate import CoinGate
>>> client = CoinGate("YOUR_API_TOKEN")
In order, to use sandbox mode, you need to pass second parameter as True
>>> from coingate import CoinGate
>>> client = CoinGate("YOUR_API_TOKEN", True)
If you planning to use only Public API endpoints, you can initialize client without parameters
>>> from coingate import CoinGate
>>> client = CoinGate()
Full documentation of the CoinGate API can be found here
Create order at CoinGate and redirect shopper to invoice (payment_url
). This is private API endpoint and requires authentication.
>>> client.order.create(Decimal('10'), 'EUR', 'EUR')
NewOrder(
id=1,
status='new',
do_not_convert=False,
price_currency='EUR',
price_ammount=Decimal('10'),
lightning_network=False,
receive_currency='EUR',
receive_amount=Decimal('10'),
created_at=datetime(2022, 10, 10, 12, 23, 22),
order_id='',
payment_url='',
underpaid_amount=Decimal('0.000543'),
overpaid_amount=Decimal('0.000543'),
is_refundable=True,
token='token'
)
Placing created order with pre-selected payment currency (BTC, LTC, ETH, etc). Display payment_address
and pay_amount
for shopper or redirect to payment_url
. Can be used to white-label invoices. This is private API endpoint and requires authentication.
>>> client.order.checkout(123, 'EUR')
Checkout(
pay_currency='EUR',
pay_amount=Decimal('10'),
expire_at=datetime(2022, 10, 10, 12, 23, 22),
payment_address='addy',
platform=Platform(id=1, title='title', id_name='id_name')
)
Retrieves a specific order. This is private API endpoint and requires authentication.
>>> client.order.get(123)
Order(
id=123,
status='new',
do_not_convert=False,
price_currency='EUR',
price_ammount=Decimal('10'),
lightning_network=False,
receive_currency='EUR',
receive_amount=Decimal('10'),
created_at=datetime(2022, 10, 10, 12, 23, 22),
order_id='',
payment_url='',
underpaid_amount=Decimal('0.000543'),
overpaid_amount=Decimal('0.000543'),
is_refundable=True,
orderable_type='order',
orderable_id=1,
payment_address='addy'
)
Retrieving information of all placed orders. This is private API endpoint and requires authentication.
>>> client.order.get_all()
PaginatedOrders(
current_page=1,
per_page=100,
total_orders=500,
total_pages=5,
orders=[
Order(
id=123,
status='new',
do_not_convert=False,
price_currency='EUR',
price_ammount=Decimal('10'),
lightning_network=False,
receive_currency='EUR',
receive_amount=Decimal('10'),
created_at=datetime(2022, 10, 10, 12, 23, 22),
order_id='',
payment_url='',
underpaid_amount=Decimal('0.000543'),
overpaid_amount=Decimal('0.000543'),
is_refundable=True,
orderable_type='order',
orderable_id=1,
payment_address='addy'
)
]
)
Creates a refund for an order. This is private API endpoint and requires authentication.
>>> client.refund.create_order_refund(1, Decimal('10'), 'addy', 1, 1, 'refund', 'email@email.com', 'id')
Refund(
id=1,
request_amount=Decimal('10'),
refund_amount=Decimal('10'),
address='addy',
status='new',
memo=None,
created_at=datetime(2022, 10, 10, 12, 23, 22),
order=RefundOrder(id=1),
transactions=['tx_id'],
ledger_account=RefundLedgerAccount(id=1, currency=Currency(id=1, title='Bitcoin', symbol='BTC'))
)
Retrieves a specific refund for an order. This is private API endpoint and requires authentication.
>>> client.refund.get_order_refund(1, 1)
Refund(
id=1,
request_amount=Decimal('10'),
refund_amount=Decimal('10'),
address='addy',
status='new',
memo=None,
created_at=datetime(2022, 10, 10, 12, 23, 22),
order=RefundOrder(id=1),
transactions=['tx_id'],
ledger_account=RefundLedgerAccount(id=1, currency=Currency(id=1, title='Bitcoin', symbol='BTC'))
)
Retrieves all refunds for an order. This is private API endpoint and requires authentication.
>>> client.refund.get_order_refunds(1)
PaginatedRefunds(
current_page=1,
per_page=100,
total_refunds=500,
total_pages=5,
refunds=[
PaginatedRefundsRefund(
id=1,
request_amount=Decimal('10'),
refund_amount=Decimal('10'),
crypto_address='addy',
crypto_address_memo=None,
status='new',
order=RefundOrder(id=1),
refund_currency=RefundCurrency(
id=1,
title='Bitcoin',
symbol='BTC',
platform=RefundCurrencyPlatform(id=1, title='platform')
)
)
]
)
Retrieves all refunds. This is private API endpoint and requires authentication.
>>> client.refund.get_refunds()
PaginatedRefunds(
current_page=1,
per_page=100,
total_refunds=500,
total_pages=5,
refunds=[
PaginatedRefundsRefund(
id=1,
request_amount=Decimal('10'),
refund_amount=Decimal('10'),
crypto_address='addy',
crypto_address_memo=None,
status='new',
order=RefundOrder(id=1),
refund_currency=RefundCurrency(
id=1,
title='Bitcoin',
symbol='BTC',
platform=RefundCurrencyPlatform(id=1, title='platform')
)
)
]
)
Retrieves a specific ledger account. This is private API endpoint and requires authentication.
>>> client.ledger.get(1)
LedgerAccount(
id="01GBPW7M2G5XQK3BE50XQRA36E",
balance=Decimal('10'),
status='active',
currency=Currency(
id=1,
title='Bitcoin',
symbol='BTC'
)
)
Retrieves all ledger accounts. This is private API endpoint and requires authentication.
>>> client.ledger.get_all()
PaginatedLedgerAccounts(
current_page=1,
per_page=100,
total_accounts=2,
total_pages=100,
accounts=[
LedgerAccount(
id="01GBPW7M2G5XQK3BE50XQRA36E",
balance=Decimal('10'),
status='active',
currency=Currency(
id=1,
title='Bitcoin',
symbol='BTC'
)
),
LedgerAccount(
id="01GBPW7M2G5XQK3BE50XQRA36E",
balance=Decimal('11'),
status='active',
currency=Currency(
id=2,
title='Bitcoin',
symbol='BTC'
)
)
]
)
Retrieves all withdrawals. This is private API endpoint and requires authentication.
>>> client.withdrawal.get_all()
PaginatedWithdrawals(
current_page=1,
per_page=100,
total_withdrawals=1000,
total_pages=10,
withdrawals=[
Withdrawal(
id=1,
status='active',
created_at=datetime('2022/10/10'),
completed_at=None,
currency=Currency(
id=1,
title='Bitcoin',
symbol='BTC'
payout_setting={
'id': 1,
'title': 'somewhere',
'address': 'addy',
'currency': {
'id': 1,
'title': 'Bitcoin',
'symbol': 'BTC'
}
}
platform=None
)
)
]
)
Retrieves withdrawal by ID. This is private API endpoint and requires authentication.
>>> client.withdrawal.get(1)
Withdrawal(
id=1,
status='active',
created_at=datetime('2022/10/10'),
completed_at=None,
currency=Currency(
id=1,
title='Bitcoin',
symbol='BTC'
payout_setting={
'id': 1,
'title': 'somewhere',
'address': 'addy',
'currency': {
'id': 1,
'title': 'Bitcoin',
'symbol': 'BTC'
}
}
platform=None
)
)
Current exchange rate for any two currencies, fiat or crypto. This endpoint is public, authentication is not required.
# Get exchange rate for Merchants
>>> client.public.get_exchange_rate_for_merchant(from_currency="EUR", to_currency="BTC")
Decimal('0.0000472')
# Get exchange rate for Traders
>>> client.public.get_exchange_rate_for_trader(kind="buy", from_currency="EUR", to_currency="ETH")
Decimal('0.00063213')
Current CoinGate exchange rates for Merchants and Traders. This endpoint is public, authentication is not required.
# Get all exchange rates for Merchants and Traders
>>> client.public.get_all_exchange_rates()
ExchangeRates(
merchant={
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
trader=ExchangeTrader(
buy={
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
sell={
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
)
)
# Get all exchange rates for Merchants
>>> client.public.get_merchant_exchange_rates()
{
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
# Get all exchange rates for Traders
>>> client.public.get_trader_exchange_rates()
ExchangeTrader(
buy={
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
sell={
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
)
A health check endpoint for CoinGate API. This endpoint is public, authentication is not required.
>>> client.public.ping()
Ping(ping='pong', time='2017-12-13T19:07:18+00:00')
Get IP addresses of CoinGate servers
>>> client.public.get_ip_addresses(separator="|")
'52.28.22.118|35.156.68.160'
Retrieves all currencies.
>>> client.public.get_currencies(native=True, enabled=True, merchant_pay=True, merchant_receive=True, kind="crypto")
[
PublicCurrency(id=1,
title='Bitcoin',
kind='crypto',
native=True,
disabled=False,
disabled_message=None,
merchant=CurrencyMerchant(price=True, pay=True, receive=True),
platforms=[
CurrencyPlatform(id=8, id_name='bitcoin', title='Bitcoin' enabled=True)
]
),
PublicCurrency(
id=2,
title='Euro',
kind='fiat',
symbol='EUR',
native=True,
disabled=False,
disabled_message=None,
merchant=CurrencyMerchant(price=True, pay=False, receive=True),
platforms=None
),
PublicCurrency(
id=3,
title='United States dollar',
kind='fiat',
symbol='USD',
native=True,
disabled=False,
disabled_message=None,
merchant=CurrencyMerchant(price=True, pay=False, receive=True),
platforms=None
),
PublicCurrency(
id=4,
title='British Pound',
kind='fiat',
symbol='GBP',
native=True,
disabled=False,
disabled_message=None,
merchant=CurrencyMerchant(price=True, pay=False, receive=True),
platforms=None
),
PublicCurrency(
id=5,
title='Ethereum',
kind='crypto',
symbol='ETH',
native=True,
disabled=False,
disabled_message=None,
merchant=CurrencyMerchant(price=True, pay=True, receive=True),
platforms=[
CurrencyPlatform(id=2, id_name='binance_chain', title='Binance Chain (BEP2)', enabled=True),
CurrencyPlatform(id=7, id_name='ethereum', title='Ethereum', enabled=True)
]
)
]
Get all platforms
>>> client.public.get_platforms(enabled=True)
[
PublicPlatform(
id=1,
title='Ethereum (ERC20)',
id_name='ethereum',
disabled=False,
disabled_message=None,
currencies=[
PlatformCurrency(id=50, title='Ethereum', symbol='ETH', enabled=True),
PlatformCurrency(id=61, title='DAI', symbol='DAI', enabled=True),
PlatformCurrency(id=71, title='Basic Attention Token', symbol='BAT', enabled=True)
]
),
PublicPlatform(
id=2,
title='Binance Chain (BEP2)',
id_name='binance_chain',
disabled=False,
disabled_message=None,
currencies=[
PlatformCurrency(id=50, title='Ethereum', symbol='ETH', enabled=True)
PlatformCurrency(id=91, title='Binance Coin', symbol='BNB', enabled=True)
]
)
]
To modify request timeout time, you need to call method which will change it.
>>> from coingate import CoinGate
>>> client = CoinGate("YOUR_API_TOKEN", True)
>>> client.set_timeout(10)
If you decided to initialize client without API Key and you need to do it later, you can call method which will update auth headers.
>>> from coingate import Coingate
>>> client = CoinGate()
>>> client.public.ping()
Ping(ping='pong', time='2017-12-13T19:07:18+00:00')
>>> client.set_api_key('YOUR_API_KEY')
Are you writing a plugin that integrates CoinGate and embeds our library? Then please use the setAppInfo function to identify your plugin. For example:
>>> from coingate import Coingate
>>> coingate.set_app_info("MyAwesomePlugin", "1.0.0")
The method should be called once, before any request is sent to the API. The second parameter is optional.
FAQs
CoinGate Python SDK (API v2)
We found that coingate-client demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Research
/Security News
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.
Security News
The MCP Steering Committee has launched the official MCP Registry in preview, a central hub for discovering and publishing MCP servers.