diff --git addressfield.info addressfield.info
index 61fd73a..c5751a3 100644
--- addressfield.info
+++ addressfield.info
@@ -10,6 +10,7 @@ files[] = includes/addressfield_form_default.inc
 files[] = includes/addressfield_form_br.inc
 files[] = includes/addressfield_form_gb.inc
 files[] = includes/addressfield_form_us.inc
+files[] = includes/addressfield_form_es.inc
 
 ; Information added by drupal.org packaging script on January 1, 1970 - 00:00
 version = "7.x-1.x-dev"
diff --git addressfield.module addressfield.module
index 3b4abd6..68f90cd 100644
--- addressfield.module
+++ addressfield.module
@@ -576,6 +576,7 @@ function addressfield_default_mapping() {
     'default' => 'AddressFieldForm_default',
     'BR' => 'AddressFieldForm_br',
     'GB' => 'AddressFieldForm_gb',
+    'ES' => 'AddressFieldForm_es',
     'US' => 'AddressFieldForm_us',
     // TODO: complete the mapping.
   );
diff --git includes/addressfield_form_es.inc includes/addressfield_form_es.inc
new file mode 100644
index 0000000..434d477
--- /dev/null
+++ includes/addressfield_form_es.inc
@@ -0,0 +1,105 @@
+<?php
+// $Id: addressfield_form_br.inc,v 1.1 2010/11/20 02:43:24 rszrama Exp $
+
+/**
+ * Address handler for Spain.
+ */
+class AddressFieldForm_es implements AddressFieldForm {
+  public function form($address, $field, $instance, $langcode, $items, $delta, $element) {
+    $required = $delta == 0 && $instance['required'];
+
+    $form['thoroughfare'] = array(
+      '#title' => t('Address'),
+      '#type' => 'textfield',
+      '#required' => $required,
+      '#default_value' => $address['thoroughfare'],
+    );
+    $form['premise'] = array(
+      '#title' => t('Number'),
+      '#type' => 'textfield',
+      '#size' => 10,
+      '#default_value' => $address['premise'],
+    );
+    $form['sub_premise'] = array(
+      '#title' => t('Floor / Stair / Door'),
+      '#type' => 'textfield',
+      '#default_value' => $address['sub_premise'],
+    );
+    $form['administrative_area'] = array(
+      '#title' => t('State'),
+      '#type' => 'select',
+      '#default_value' => $address['administrative_area'],
+      '#required' => $required,
+      '#options' => array(
+        ''   => t('--'),
+        'C' => t('A Coruña'),
+        'VI' => t('Álava'),
+        'AB' => t('Albacete'),
+        'A' => t('Alicante'),
+        'AL' => t('Almería'),
+        'O' => t('Asturias'),
+        'AV' => t('Ávila'),
+        'BA' => t('Badajoz'),
+        'PM' => t('Baleares'),
+        'B' => t('Barcelona'),
+        'BU' => t('Burgos'),
+        'CC' => t('Cáceres'),
+        'CA' => t('Cádiz'),
+        'S' => t('Cantabria'),
+        'CS' => t('Castellón'),
+        'CE' => t('Ceuta'),
+        'CR' => t('Ciudad Real'),
+        'CO' => t('Córdoba'),
+        'CU' => t('Cuenca'),
+        'GI' => t('Girona'),
+        'GR' => t('Granada'),
+        'GU' => t('Guadalajara'),
+        'SS' => t('Guipúzcoa'),
+        'H' => t('Huelva'),
+        'HU' => t('Huesca'),
+        'J' => t('Jaén'),
+        'LO' => t('La Rioja'),
+        'GC' => t('Las Palmas'),
+        'LE' => t('León'),
+        'L' => t('Lleida'),
+        'LU' => t('Lugo'),
+        'M' => t('Madrid'),
+        'MA' => t('Málaga'),
+        'ML' => t('Melilla'),
+        'MU' => t('Murcia'),
+        'NA' => t('Navarra'),
+        'OR' => t('Ourense'),
+        'P' => t('Palencia'),
+        'PO' => t('Pontevedra'),
+        'SA' => t('Salamanca'),
+        'SF' => t('Santa Cruz de Tenerife'),
+        'SG' => t('Segovia'),
+        'SE' => t('Sevilla'),
+        'SO' => t('Soria'),
+        'T' => t('Tarragona'),
+        'TE' => t('Teruel'),
+        'TO' => t('Toledo'),
+        'V' => t('Valencia'),
+        'VA' => t('Valladolid'),
+        'BI' => t('Vizcaya'),
+        'ZA' => t('Zamora'),
+        'Z' => t('Zaragoza'),
+      ),
+    );
+    $form['postal_code'] = array(
+      '#title' => t('Postal code'),
+      '#type' => 'textfield',
+      '#size' => 10,
+      '#required' => $required,
+      '#default_value' => $address['postal_code'],
+    );
+    $form['locality'] = array(
+      '#title' => t('City'),
+      '#type' => 'textfield',
+      '#size' => 30,
+      '#required' => $required,
+      '#default_value' => $address['locality'],
+    );
+    return $form;
+  }
+}
