Drupal is a registered trademark of Dries Buytaert
Protected Pages 3.0.0 Major update available for module protected_pages (3.0.0). Commerce Core 3.3.8 Minor update available for module commerce (3.3.8). Layout Builder Reorder 2.0.1 Minor update available for module layout_builder_reorder (2.0.1). Ban 1.1.0 Minor update available for module ban (1.1.0). Field Formatter Range 2.0.0 Major update available for module field_formatter_range (2.0.0). Field Formatter Range 8.x-1.8 Minor update available for module field_formatter_range (8.x-1.8). UI Patterns (SDC in Drupal UI) 2.0.18 Minor update available for module ui_patterns (2.0.18). Varbase FAQs 9.2.1 Minor update available for module varbase_faqs (9.2.1). Search API Solr 4.3.11 Module search_api_solr updated after 14 months of inactivity (4.3.11). Provus Mega Menu Module provus_mega_menu crossed 1,000 active installs.

This module integrates Drupal Commerce with Escrow.com, allowing for secure transactions using Escrow Pay and Escrow Offer. It synchronizes payments and order statuses between Drupal and Escrow.com in real-time through webhook integration.

This module integrates Drupal Commerce with Escrow.com including the Escrow Pay [1] and the Escrow Offer [2].

  1. https://www.escrow.com/pay/docs
  2. https://www.escrow.com/offer/docs

Features

  • Both methods are implemented as offsite payment gateways.
  • Webhook integration for real time updates.
  • Payments in Drupal Commerce synchronized with Escrow.com.
  • Supports voids through the order management interface
  • Product variation bundle type EscrowItem with several escrow-specific fields.
  • Order and payment workflow synchronized via webhook integration for automated workflow.

Payment gateway configuration

Once you've installed the module, you must navigate to the Drupal Commerce payment gateway configuration screen to define a payment gateway configuration. This will require providing an API key, email of Escrow.com account holder and configuring the mode (Live vs. Test).

Order type configuration

Go to Commerce => Configuration => Order Types and edit a desired order type which you want to use with Escrow integration and under workflow choose Escrow Workflow.

Product variation configuration

Go to Commerce => Configuration => Product variation types and edit a desired product variation type which you want to use with Escrow integration and under traits choose Escrow Item.

Now that product variation type will get several Escrow specific fields.

  • Brokered: if you are brokering sale of this product between a seller and buyer.
  • Broker Fee percentage: specify the fee which you will charge for brokering service.
  • Broker Fee split: split the broke fee to a buyer or seller or equally to both sides.
  • Escrow Fee: split the escrow fee to buyer or seller or equally to both sides.
  • Escrow item type: defining the typo of goods to be sold via Escrow.com
  • Inspection period: how long the Escrow offer is valid, between 1 and 30 days.
  • Display Escrow fee information: you can during checkout show estimated fee to be charged on Escrow.com
  • Extra attributes fees: adds additional fee to be charged on Escrow.com
  • Single item: defines if the product variation is allowed only once to be sold.
  • In stock: a flag to determine if product is in stock, depends on Single item logic.

Webhook configuration

Go to Escrow.com and set webhook to https://yourwebsite.com/payment/webhook/escrow

Custom configuration / modifications.

You don't need to use the provided order and payment workflow. The provided product variation type Escrow item is a requirement to be used.

The automated order and payment states can be stopped via event subscriber \Drupal\commerce_escrow\Event\EscrowEvents::ESCROW_WEBHOOK and setStopWebhook method.

You can enrich or alter transaction payload via event subscriber \Drupal\commerce_escrow\Event\EscrowEvents::ESCROW_ORDER_PAYLOAD

The http client for communication with Escrow.com has all available methods for interacting with Escrow.com API. If you want to use it in your custom code, you can easily initiate it like this:

$client = new EscrowClient('api_key', 'account_email', 'test');
$payload = [
  'currency' = 'usd',
  ......
];
$client->createTransaction($payload);

Requirements

This module should be added to your codebase via Composer

composer require "drupal/commerce_escrow"

You must also have an Escrow account or developer access to the account you intend to configure for your integration.

You can sign up for one here.

There are no other requirements than Commerce Core 3

Activity

Total releases
5
First release
Aug 2025
Latest release
3 months ago
Releases (12 mo)
5 ▲ from 0
Maintenance
Active

Release Timeline

Releases

Version Type Release date
1.0.2 Stable Apr 6, 2026
1.0.1 Stable Aug 12, 2025
1.0.0 Stable Aug 8, 2025
1.0.x-dev Dev Aug 7, 2025
1.x-dev Dev Aug 7, 2025