diff --git a/modules/wps/commerce_paypal_wps.api.php b/modules/wps/commerce_paypal_wps.api.php
new file mode 100644
index 0000000..5ab6872
--- /dev/null
+++ b/modules/wps/commerce_paypal_wps.api.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Hook documentation for the PayPal WPS module.
+ */
+
+
+/**
+ * Allows modules to alter the data array that creates the PayPal WPS hidden
+ * form elements before building the WPS form.
+ *
+ * @param &$data
+ *   The data array used to create hidden form elements.
+ * @param $order
+ *   If available, the full order object the payment request is being submitted
+ *   for; otherwise NULL.
+ */
+function hook_commerce_paypal_wps_request_alter(&$data, $order) {
+  // No example.
+}
diff --git a/modules/wps/commerce_paypal_wps.module b/modules/wps/commerce_paypal_wps.module
index 1e6146d..38050be 100644
--- a/modules/wps/commerce_paypal_wps.module
+++ b/modules/wps/commerce_paypal_wps.module
@@ -317,6 +317,9 @@ function commerce_paypal_wps_order_form($form, &$form_state, $order, $settings)
     'os0_1' => commerce_line_items_quantity($wrapper->commerce_line_items, commerce_product_line_item_types()),
   );
 
+  // Allow modules to alter parameters of the API request.
+  drupal_alter('commerce_paypal_wps_order_form', $data, $order);
+
   $form['#action'] = commerce_paypal_wps_server_url($settings['server']);
 
   foreach ($data as $name => $value) {
