3.2 KiB

Manage Customers

How to create, update, and delete customers using the Mollie API.

Create a Customer

use Mollie\Api\Http\Requests\CreateCustomerRequest;

try {
    // Create a new customer
    $customer = $mollie->send(
        new CreateCustomerRequest(
            name: 'Luke Skywalker',
            email: 'luke@example.com',
            locale: 'en_US',
            metadata: [
                'isJedi' => true
            ]
        )
    );

    echo "New customer created: {$customer->id}\n";
} catch (\Mollie\Api\Exceptions\ApiException $e) {
    echo "API call failed: " . htmlspecialchars($e->getMessage());
}

Update a Customer

use Mollie\Api\Http\Requests\GetCustomerRequest;
use Mollie\Api\Http\Requests\UpdateCustomerRequest;

try {
    // First retrieve the customer you want to update
    $customer = $mollie->send(
        new GetCustomerRequest(
            id: 'cst_8wmqcHMN4U'
        )
    );

    // Update specific customer fields
    $customer = $mollie->send(
        new UpdateCustomerRequest(
            id: $customer->id,
            name: 'Luke Sky',
            email: 'luke@example.com',
            locale: 'en_US',
            metadata: [
                'isJedi' => true
            ]
            // Fields we don't specify will keep their current values
        )
    );

    echo "Customer updated: {$customer->name}\n";
} catch (\Mollie\Api\Exceptions\ApiException $e) {
    echo "API call failed: " . htmlspecialchars($e->getMessage());
}

Delete a Customer

use Mollie\Api\Http\Requests\DeleteCustomerRequest;

try {
    // Delete a customer
    $mollie->send(
        new DeleteCustomerRequest(
            id: 'cst_8wmqcHMN4U'
        )
    );

    echo "Customer deleted\n";
} catch (\Mollie\Api\Exceptions\ApiException $e) {
    echo "API call failed: " . htmlspecialchars($e->getMessage());
}

The Response

$customer->id;          // "cst_8wmqcHMN4U"
$customer->name;        // "Luke Skywalker"
$customer->email;       // "luke@example.com"
$customer->locale;      // "en_US"
$customer->metadata;    // Object containing custom metadata
$customer->mode;        // "live" or "test"
$customer->createdAt;   // "2024-02-24T12:13:14+00:00"

Additional Notes

  • Customers are used to store recurring payment details
  • Each customer can have multiple mandates for different payment methods
  • The customer ID is required for:
    • Creating recurring payments
    • Creating subscriptions
    • Retrieving payment history
  • Customer data should be kept in sync with your own database
  • Available locales:
    • en_US English (US)
    • en_GB English (UK)
    • nl_NL Dutch (Netherlands)
    • nl_BE Dutch (Belgium)
    • fr_FR French (France)
    • fr_BE French (Belgium)
    • de_DE German (Germany)
    • de_AT German (Austria)
    • de_CH German (Switzerland)
    • es_ES Spanish (Spain)
    • ca_ES Catalan (Spain)
    • pt_PT Portuguese (Portugal)
    • it_IT Italian (Italy)
    • nb_NO Norwegian (Norway)
    • sv_SE Swedish (Sweden)
    • fi_FI Finnish (Finland)
    • da_DK Danish (Denmark)
    • is_IS Icelandic (Iceland)
    • hu_HU Hungarian (Hungary)
    • pl_PL Polish (Poland)
    • lv_LV Latvian (Latvia)
    • lt_LT Lithuanian (Lithuania)