Skip to main content

CoinGate Python SDK (API v2)

Project description

CoinGate Python Client (API v2)

StaticCheckAndTestCI

This Client provides conveniet way to communicate between CoinGate API v2 and your Python code.

Requirements

Python 3.7+

Installing

pip install coingate-python

Dependencies

This library requires the following packages to work properly:

Getting started

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

Payment Gateway API

Create Order

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'
)

Checkout

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')
)

Get Order

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'
)

List Orders

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'
        )
    ]
)

Refunds API

Create Order Refund

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'))
)

Get Order Refund

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'))
)

Get Order Refunds

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')
            )
        )
    ]
)

Get Refunds

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')
            )
        )
    ]
)

Ledger API

Get Account

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'
    )
)

List Accounts

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'
            )
        )
    ]
)

Withdrawals API

Get Withdrawals

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
            )
        )
    ]
)

Get Withdrawal

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
    )
)

Public API

Get Exchange Rate

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')

List Exchange Rates

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'
        }
    }
)

Ping

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')

IP Addresses

Get IP addresses of CoinGate servers

>>> client.public.get_ip_addresses(separator="|")
'52.28.22.118|35.156.68.160'

Get Currencies

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)
        ]
    )
]

Platforms

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)
        ]
    )
]

Custom Request Timeout

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)

Setting API Key after initialization

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')

Attention plugin developers

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

coingate-client-1.1.0.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

coingate_client-1.1.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file coingate-client-1.1.0.tar.gz.

File metadata

  • Download URL: coingate-client-1.1.0.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.15 CPython/3.8.10 Linux/5.15.0-46-generic

File hashes

Hashes for coingate-client-1.1.0.tar.gz
Algorithm Hash digest
SHA256 d04c92bbb04cdfc985dbe1208682a9f35c646297a40b7666e203e92a65764394
MD5 8943fe925c17193882db4714d109927c
BLAKE2b-256 88698ee7028619fcd7949c309aced87cae6534f70f2feb5ae6f3fdabf5428685

See more details on using hashes here.

File details

Details for the file coingate_client-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: coingate_client-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.15 CPython/3.8.10 Linux/5.15.0-46-generic

File hashes

Hashes for coingate_client-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a7c014c29149d6e51443e025ae8469778a32072aeba2b88906ef08f676d9bc21
MD5 1797b887521c5a3b7ccd1a01286047d3
BLAKE2b-256 ccfabbcd0bf9d2e906e1365b07e4f80f87dca0716286d0eeefe97708ece91c85

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page