mrbeandev/coinbase-cdp

Modern PHP client for the Coinbase Developer Platform (CDP) API — supports ES256 JWT auth, accounts, addresses, and transactions.

Maintainers

Package info

github.com/mrbeandev/coinbase-cdp-php

pkg:composer/mrbeandev/coinbase-cdp

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-04-11 13:48 UTC

This package is auto-updated.

Last update: 2026-05-11 14:03:21 UTC


README

Modern PHP client for the Coinbase Developer Platform (CDP) API.

Supports ES256 (ECDSA P-256) JWT authentication, the current auth method required by Coinbase since Feb 2025.

Requirements

Installation

composer require mrbeandev/coinbase-cdp

Quick Start

use MrBeanDev\CoinbaseCDP\CoinbaseCDP;

$cb = new CoinbaseCDP(
    orgId:      'your-org-uuid',
    apiKeyId:   'your-api-key-uuid',
    privateKey: file_get_contents('cdp_key.pem'),
);

// List accounts
$accounts = $cb->accounts()->list();

// Get BTC balance
$btc = $cb->accounts()->get('BTC');
echo $btc['data']['balance']['amount'];

// Create a deposit address
$address = $cb->addresses()->create($accountId, 'User deposit');
echo $address['data']['address'];

// Send crypto
$tx = $cb->transactions()->send(
    accountId: $accountId,
    to:        '0xabc123...',
    amount:    '0.01',
    currency:  'ETH',
);

// Poll for incoming deposits
$deposits = $cb->transactions()->confirmedDeposits($accountId);

API

Accounts

$cb->accounts()->list($limit, $startingAfter)   // paginated list
$cb->accounts()->get($idOrCurrency)              // by UUID or "BTC"
$cb->accounts()->getByCurrency('ETH')            // shortcut
$cb->accounts()->all()                           // auto-paginate all

Addresses

$cb->addresses()->create($accountId, $name, $network)  // new deposit address
$cb->addresses()->list($accountId)                      // list addresses
$cb->addresses()->get($accountId, $addressId)           // single address
$cb->addresses()->transactions($accountId, $addressId)  // txs for address

Transactions

$cb->transactions()->list($accountId, $limit, $order)           // list all
$cb->transactions()->get($accountId, $txId)                     // single tx
$cb->transactions()->send($accountId, $to, $amount, $currency)  // send crypto
$cb->transactions()->transfer($from, $to, $amount, $currency)   // internal
$cb->transactions()->deposits($accountId, $limit, $status)      // filter receives
$cb->transactions()->confirmedDeposits($accountId)               // completed only

Authentication

This library uses ES256 JWT authentication as required by CDP. Each API request generates a fresh JWT signed with your EC private key. No legacy API keys or HMAC auth.

Get your credentials at portal.cdp.coinbase.com — select ECDSA key type.

Error Handling

use MrBeanDev\CoinbaseCDP\Exception\CoinbaseException;

try {
    $cb->transactions()->send(...);
} catch (CoinbaseException $e) {
    echo $e->getMessage();       // human-readable error
    print_r($e->getResponseBody()); // raw API response
}

License

MIT