Back to SDKs

PHP SDK

PHP SDK with Laravel integration, Guzzle client, and PSR-7 compatibility.

composer require coverkit/coverkit-php
View on GitHub

Installation

composer require coverkit/coverkit-php

Quick Start

<?php

require_once 'vendor/autoload.php';

use CoverKit\CoverKit;
use CoverKit\Quote;
use CoverKit\Policy;

// Initialize the client
$coverkit = new CoverKit([
    'api_key' => getenv('COVERKIT_API_KEY'),
    'environment' => 'production', // or 'sandbox'
]);

// Create a quote
$quote = $coverkit->quotes->create([
    'product' => 'shipping_protection',
    'coverage' => [
        'item_value' => 15000, // $150.00 in cents
        'shipping_method' => 'ground',
    ],
    'customer' => [
        'email' => 'customer@example.com',
    ],
]);

echo "Quote ID: " . $quote->id . "\n";
echo "Premium: $" . ($quote->premium / 100) . "\n";

// Bind the quote to create a policy
$policy = $coverkit->policies->create([
    'quote_id' => $quote->id,
    'payment' => [
        'method' => 'stripe',
        'token' => 'tok_visa',
    ],
]);

echo "Policy ID: " . $policy->id . "\n";
echo "Status: " . $policy->status . "\n"; // "active"

Laravel Integration

config/services.php
'coverkit' => [
    'api_key' => env('COVERKIT_API_KEY'),
    'environment' => env('COVERKIT_ENVIRONMENT', 'sandbox'),
],
Using the Facade
use CoverKit\Facades\CoverKit;

class QuoteController extends Controller
{
    public function store(Request $request)
    {
        $quote = CoverKit::quotes()->create([
            'product' => 'shipping_protection',
            'coverage' => $request->coverage,
            'customer' => $request->customer,
        ]);

        return response()->json([
            'quote_id' => $quote->id,
            'premium' => $quote->premium,
        ]);
    }
}

Features

Laravel Integration

Service provider, facade, and config publishing.

Guzzle Client

Built on Guzzle for reliable HTTP requests.

PSR-7 Compatible

Standard HTTP message interfaces.

Webhook Handlers

Middleware for webhook signature verification.

Webhook Handling

<?php

use CoverKit\Webhook;
use CoverKit\Exception\SignatureVerificationException;

// routes/api.php
Route::post('/webhooks/coverkit', function (Request $request) {
    $payload = $request->getContent();
    $signature = $request->header('Coverkit-Signature');

    try {
        $event = Webhook::constructEvent(
            $payload,
            $signature,
            config('services.coverkit.webhook_secret')
        );
    } catch (SignatureVerificationException $e) {
        return response('Invalid signature', 400);
    }

    switch ($event->type) {
        case 'policy.created':
            // Handle policy created
            break;
        case 'claim.submitted':
            // Handle claim submitted
            break;
    }

    return response('OK', 200);
});