diff --git a/.gitignore b/.gitignore
index 789dadcf..608cfd81 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,8 +9,6 @@
 /test/tmp/
 /test/version_tmp/
 /tmp/
-.ruby-version
-.ruby-gemset
 
 # Used by dotenv library to load environment variables.
 .env
@@ -44,9 +42,9 @@ build-iPhoneSimulator/
 
 # for a library or gem, you might want to ignore these files since the code is
 # intended to run in multiple environments; otherwise, check them in:
-# Gemfile.lock
-# .ruby-version
-# .ruby-gemset
+Gemfile.lock
+.ruby-version
+.ruby-gemset
 
 # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
 .rvmrc
diff --git a/Gemfile.lock b/Gemfile.lock
index f9ee7bc7..d58391ff 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,7 +1,7 @@
 PATH
   remote: .
   specs:
-    xero-ruby (3.4.0)
+    xero-ruby (3.6.0)
       faraday (~> 1.0, >= 1.0.1)
       json (~> 2.1, >= 2.1.0)
       json-jwt (~> 1.5, >= 1.5.2)
@@ -9,51 +9,54 @@ PATH
 GEM
   remote: https://rubygems.org/
   specs:
-    activesupport (6.1.4.1)
+    activesupport (7.0.1)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
       tzinfo (~> 2.0)
-      zeitwerk (~> 2.3)
     aes_key_wrap (1.1.0)
-    ast (2.4.1)
+    ast (2.4.2)
     bindata (2.4.10)
     byebug (11.1.3)
     coderay (1.1.3)
     concurrent-ruby (1.1.9)
-    diff-lcs (1.4.4)
-    faraday (1.8.0)
+    diff-lcs (1.5.0)
+    faraday (1.9.3)
       faraday-em_http (~> 1.0)
       faraday-em_synchrony (~> 1.0)
       faraday-excon (~> 1.1)
-      faraday-httpclient (~> 1.0.1)
+      faraday-httpclient (~> 1.0)
+      faraday-multipart (~> 1.0)
       faraday-net_http (~> 1.0)
-      faraday-net_http_persistent (~> 1.1)
+      faraday-net_http_persistent (~> 1.0)
       faraday-patron (~> 1.0)
       faraday-rack (~> 1.0)
-      multipart-post (>= 1.2, < 3)
+      faraday-retry (~> 1.0)
       ruby2_keywords (>= 0.0.4)
     faraday-em_http (1.0.0)
     faraday-em_synchrony (1.0.0)
     faraday-excon (1.1.0)
     faraday-httpclient (1.0.1)
+    faraday-multipart (1.0.3)
+      multipart-post (>= 1.2, < 3)
     faraday-net_http (1.0.1)
     faraday-net_http_persistent (1.2.0)
     faraday-patron (1.0.0)
     faraday-rack (1.0.0)
-    i18n (1.8.10)
+    faraday-retry (1.0.3)
+    i18n (1.9.1)
       concurrent-ruby (~> 1.0)
     jaro_winkler (1.5.4)
-    json (2.5.1)
+    json (2.6.1)
     json-jwt (1.13.0)
       activesupport (>= 4.2)
       aes_key_wrap
       bindata
     method_source (1.0.0)
-    minitest (5.14.4)
+    minitest (5.15.0)
     multipart-post (2.1.1)
-    parallel (1.20.1)
-    parser (2.7.2.0)
+    parallel (1.21.0)
+    parser (3.1.0.0)
       ast (~> 2.4.1)
     pry (0.13.1)
       coderay (~> 1.1)
@@ -61,22 +64,23 @@ GEM
     pry-byebug (3.9.0)
       byebug (~> 11.0)
       pry (~> 0.13.0)
-    psych (3.2.1)
-    rainbow (3.0.0)
+    psych (4.0.3)
+      stringio
+    rainbow (3.1.1)
     rake (12.3.3)
     rspec (3.10.0)
       rspec-core (~> 3.10.0)
       rspec-expectations (~> 3.10.0)
       rspec-mocks (~> 3.10.0)
-    rspec-core (3.10.0)
+    rspec-core (3.10.2)
       rspec-support (~> 3.10.0)
-    rspec-expectations (3.10.0)
+    rspec-expectations (3.10.2)
       diff-lcs (>= 1.2.0, < 2.0)
       rspec-support (~> 3.10.0)
-    rspec-mocks (3.10.0)
+    rspec-mocks (3.10.3)
       diff-lcs (>= 1.2.0, < 2.0)
       rspec-support (~> 3.10.0)
-    rspec-support (3.10.0)
+    rspec-support (3.10.3)
     rubocop (0.66.0)
       jaro_winkler (~> 1.5.1)
       parallel (~> 1.10)
@@ -85,15 +89,16 @@ GEM
       rainbow (>= 2.2.2, < 4.0)
       ruby-progressbar (~> 1.7)
       unicode-display_width (>= 1.4.0, < 1.6)
-    ruby-progressbar (1.10.1)
+    ruby-progressbar (1.11.0)
     ruby2_keywords (0.0.5)
+    stringio (3.0.1)
     tzinfo (2.0.4)
       concurrent-ruby (~> 1.0)
     unicode-display_width (1.5.0)
-    zeitwerk (2.4.2)
 
 PLATFORMS
   ruby
+  x86_64-darwin-20
 
 DEPENDENCIES
   pry-byebug
@@ -103,4 +108,4 @@ DEPENDENCIES
   xero-ruby!
 
 BUNDLED WITH
-   2.2.26
+   2.2.3
diff --git a/docs/accounting/index.html b/docs/accounting/index.html
index 66c3d2cd..6e4f8b25 100644
--- a/docs/accounting/index.html
+++ b/docs/accounting/index.html
@@ -5984,7 +5984,7 @@
           <nav id="scrollingNav">
             <ul class="sidenav nav nav-list">
               <li class="nav-header" data-group="Accounting"><strong>SDK: </strong><span id='sdk-name'></span></li>
-              <li class="nav-header" data-group="Accounting"><strong>VSN: </strong>3.4.0</li>
+              <li class="nav-header" data-group="Accounting"><strong>VSN: </strong>3.6.0</li>
               <li class="nav-header" data-group="Accounting"><a href="#api-Accounting">Methods</a></li>
               <li data-group="Accounting" data-name="createAccount" class="">
                 <a href="#api-Accounting-createAccount">createAccount</a>
diff --git a/docs/app_store/Plan.md b/docs/app_store/Plan.md
index 7bf9d130..5bd34ddd 100644
--- a/docs/app_store/Plan.md
+++ b/docs/app_store/Plan.md
@@ -6,7 +6,7 @@ Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
 **id** | **String** | The unique identifier of the plan | 
 **name** | **String** | The name of the plan. It is used in the invoice line item description.  | 
-**status** | **String** | Status of the plan. Available statuses are ACTIVE, PENDING_ACTIVATION.  | 
+**status** | **String** | Status of the plan. Available statuses are ACTIVE, CANCELED, and PENDING_ACTIVATION.  | 
 **subscription_items** | [**Array&lt;SubscriptionItem&gt;**](SubscriptionItem.md) | List of the subscription items belonging to the plan. It does not include cancelled subscription items.  | 
 
 ## Code Sample
diff --git a/docs/app_store/SubscriptionItem.md b/docs/app_store/SubscriptionItem.md
index 026b8b7d..1e4f29ac 100644
--- a/docs/app_store/SubscriptionItem.md
+++ b/docs/app_store/SubscriptionItem.md
@@ -9,6 +9,7 @@ Name | Type | Description | Notes
 **price** | [**Price**](Price.md) |  | 
 **product** | [**Product**](Product.md) |  | 
 **start_date** | **DateTime** | Date the subscription started, or will start. Note: this could be in the future for downgrades or reduced number of seats that haven&#39;t taken effect yet.  | 
+**status** | **String** | Status of the subscription item. Available statuses are ACTIVE, CANCELED, and PENDING_ACTIVATION.  | 
 **test_mode** | **Boolean** | If the subscription is a test subscription | [optional] 
 
 ## Code Sample
@@ -21,6 +22,7 @@ instance = XeroRuby::AppStore::SubscriptionItem.new(end_date: null,
                                  price: null,
                                  product: null,
                                  start_date: null,
+                                 status: null,
                                  test_mode: null)
 ```
 
diff --git a/docs/app_store/index.html b/docs/app_store/index.html
index 54b1cb2f..9a2f3bf2 100644
--- a/docs/app_store/index.html
+++ b/docs/app_store/index.html
@@ -878,8 +878,8 @@
     },
     "status" : {
       "type" : "string",
-      "description" : "Status of the plan. Available statuses are ACTIVE,\nPENDING_ACTIVATION.\n",
-      "enum" : [ "ACTIVE", "PENDING_ACTIVATION" ]
+      "description" : "Status of the plan. Available statuses are ACTIVE, CANCELED, and\nPENDING_ACTIVATION.\n",
+      "enum" : [ "ACTIVE", "CANCELED", "PENDING_ACTIVATION" ]
     },
     "subscriptionItems" : {
       "type" : "array",
@@ -1002,7 +1002,8 @@
     },
     "status" : {
       "type" : "string",
-      "description" : "Status of the subscription. Available statuses are ACTIVE, CANCELED, and PAST_DUE."
+      "description" : "Status of the subscription. Available statuses are ACTIVE, CANCELED, and PAST_DUE.",
+      "enum" : [ "ACTIVE", "CANCELED", "PAST_DUE" ]
     },
     "testMode" : {
       "type" : "boolean",
@@ -1013,7 +1014,7 @@
 };
       defs["SubscriptionItem"] = {
   "title" : "",
-  "required" : [ "id", "price", "product", "startDate" ],
+  "required" : [ "id", "price", "product", "startDate", "status" ],
   "type" : "object",
   "properties" : {
     "endDate" : {
@@ -1037,6 +1038,11 @@
       "description" : "Date the subscription started, or will start. Note: this could be in\nthe future for downgrades or reduced number of seats that haven't taken effect yet.\n",
       "format" : "date-time"
     },
+    "status" : {
+      "type" : "string",
+      "description" : "Status of the subscription item. Available statuses are ACTIVE, CANCELED, and\nPENDING_ACTIVATION.\n",
+      "enum" : [ "ACTIVE", "CANCELED", "PENDING_ACTIVATION" ]
+    },
     "testMode" : {
       "type" : "boolean",
       "description" : "If the subscription is a test subscription"
@@ -1127,7 +1133,7 @@
           <nav id="scrollingNav">
             <ul class="sidenav nav nav-list">
               <li class="nav-header" data-group="AppStore"><strong>SDK: </strong><span id='sdk-name'></span></li>
-              <li class="nav-header" data-group="AppStore"><strong>VSN: </strong>3.4.0</li>
+              <li class="nav-header" data-group="AppStore"><strong>VSN: </strong>3.6.0</li>
               <li class="nav-header" data-group="AppStore"><a href="#api-AppStore">Methods</a></li>
               <li data-group="AppStore" data-name="getSubscription" class="">
                 <a href="#api-AppStore-getSubscription">getSubscription</a>
diff --git a/docs/assets/index.html b/docs/assets/index.html
index 75cee61a..c2f71ccd 100644
--- a/docs/assets/index.html
+++ b/docs/assets/index.html
@@ -1391,7 +1391,7 @@
           <nav id="scrollingNav">
             <ul class="sidenav nav nav-list">
               <li class="nav-header" data-group="Asset"><strong>SDK: </strong><span id='sdk-name'></span></li>
-              <li class="nav-header" data-group="Asset"><strong>VSN: </strong>3.4.0</li>
+              <li class="nav-header" data-group="Asset"><strong>VSN: </strong>3.6.0</li>
               <li class="nav-header" data-group="Asset"><a href="#api-Asset">Methods</a></li>
               <li data-group="Asset" data-name="createAsset" class="">
                 <a href="#api-Asset-createAsset">createAsset</a>
diff --git a/docs/files/index.html b/docs/files/index.html
index 61fa601c..15382d8e 100644
--- a/docs/files/index.html
+++ b/docs/files/index.html
@@ -1008,13 +1008,13 @@
   "title" : "",
   "type" : "string",
   "description" : "The Object Group that the object is in. These roughly correlate to the endpoints that can be used to retrieve the object via the core accounting API.",
-  "enum" : [ "Account", "BankTransaction", "Contact", "CreditNote", "Invoice", "Item", "ManualJournal", "Overpayment", "Payment", "Prepayment", "Receipt" ]
+  "enum" : [ "Account", "BankTransaction", "Contact", "CreditNote", "Invoice", "Item", "ManualJournal", "Overpayment", "Payment", "Prepayment", "Quote", "Receipt" ]
 };
       defs["ObjectType"] = {
   "title" : "",
   "type" : "string",
   "description" : "The Object Type",
-  "enum" : [ "Unknown", "Accpay", "AccPayCredit", "AccPayPayment", "AccRec", "AccRecCredit", "AccRecPayment", "Adjustment", "ApCreditPayment", "ApOverPayment", "ApOverPaymentPayment", "ApOverPaymentSourcePayment", "ApPrepayment", "ApPrepaymentPayment", "ApPrepaymentSourcePayment", "ArCreditPayment", "ArOverPayment", "ArOverpaymentPayment", "ArOverpaymentSourcePayment", "ArPrepayment", "ArPrepaymentPayment", "ArPrepaymentSourcePayment", "CashPaid", "CashRec", "ExpPayment", "ManJournal", "PurchaseOrder", "Receipt", "Transfer", "Account", "Contact", "Business", "Employee", "Person", "User", "Org", "FixedAsset", "PayRun", "PriceListItem", "Bank", "Current", "Equity", "Expense", "Fixed", "Liability", "Prepayment", "Revenue", "Sales", "Overheads", "Depreciatn", "OtherIncome", "DirectCosts", "Currliab", "Termliab", "NonCurrent" ]
+  "enum" : [ "Unknown", "Accpay", "AccPayCredit", "AccPayPayment", "AccRec", "AccRecCredit", "AccRecPayment", "Adjustment", "ApCreditPayment", "ApOverPayment", "ApOverPaymentPayment", "ApOverPaymentSourcePayment", "ApPrepayment", "ApPrepaymentPayment", "ApPrepaymentSourcePayment", "ArCreditPayment", "ArOverPayment", "ArOverpaymentPayment", "ArOverpaymentSourcePayment", "ArPrepayment", "ArPrepaymentPayment", "ArPrepaymentSourcePayment", "CashPaid", "CashRec", "ExpPayment", "ManJournal", "PurchaseOrder", "Receipt", "Transfer", "Account", "Contact", "Business", "Employee", "Person", "User", "Org", "FixedAsset", "PayRun", "PriceListItem", "Bank", "Current", "Equity", "Expense", "Fixed", "Liability", "Prepayment", "Revenue", "Sales", "Overheads", "Depreciatn", "OtherIncome", "DirectCosts", "Currliab", "Termliab", "NonCurrent", "SalesQuote" ]
 };
       defs["UploadObject"] = {
   "title" : "",
@@ -1155,7 +1155,7 @@
           <nav id="scrollingNav">
             <ul class="sidenav nav nav-list">
               <li class="nav-header" data-group="Files"><strong>SDK: </strong><span id='sdk-name'></span></li>
-              <li class="nav-header" data-group="Files"><strong>VSN: </strong>3.4.0</li>
+              <li class="nav-header" data-group="Files"><strong>VSN: </strong>3.6.0</li>
               <li class="nav-header" data-group="Files"><a href="#api-Files">Methods</a></li>
               <li data-group="Files" data-name="createFileAssociation" class="">
                 <a href="#api-Files-createFileAssociation">createFileAssociation</a>
diff --git a/docs/finance/index.html b/docs/finance/index.html
index 24160e59..618e0beb 100644
--- a/docs/finance/index.html
+++ b/docs/finance/index.html
@@ -2317,7 +2317,7 @@
           <nav id="scrollingNav">
             <ul class="sidenav nav nav-list">
               <li class="nav-header" data-group="Finance"><strong>SDK: </strong><span id='sdk-name'></span></li>
-              <li class="nav-header" data-group="Finance"><strong>VSN: </strong>3.4.0</li>
+              <li class="nav-header" data-group="Finance"><strong>VSN: </strong>3.6.0</li>
               <li class="nav-header" data-group="Finance"><a href="#api-Finance">Methods</a></li>
               <li data-group="Finance" data-name="getAccountingActivityAccountUsage" class="">
                 <a href="#api-Finance-getAccountingActivityAccountUsage">getAccountingActivityAccountUsage</a>
diff --git a/docs/payroll_au/AllowanceCategory.md b/docs/payroll_au/AllowanceCategory.md
new file mode 100644
index 00000000..09a56374
--- /dev/null
+++ b/docs/payroll_au/AllowanceCategory.md
@@ -0,0 +1,16 @@
+# XeroRuby::PayrollAu::AllowanceCategory
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+
+## Code Sample
+
+```ruby
+require 'XeroRuby::PayrollAu'
+
+instance = XeroRuby::PayrollAu::AllowanceCategory.new()
+```
+
+
diff --git a/docs/payroll_au/EarningsRate.md b/docs/payroll_au/EarningsRate.md
index 80853d15..e1011947 100644
--- a/docs/payroll_au/EarningsRate.md
+++ b/docs/payroll_au/EarningsRate.md
@@ -21,6 +21,7 @@ Name | Type | Description | Notes
 **updated_date_utc** | **DateTime** | Last modified timestamp | [optional] 
 **current_record** | **Boolean** | Is the current record | [optional] 
 **allowance_type** | [**AllowanceType**](AllowanceType.md) |  | [optional] 
+**allowance_category** | [**AllowanceCategory**](AllowanceCategory.md) |  | [optional] 
 
 ## Code Sample
 
@@ -43,7 +44,8 @@ instance = XeroRuby::PayrollAu::EarningsRate.new(name: PTO,
                                  employment_termination_payment_type: null,
                                  updated_date_utc: /Date(1583967733054+0000)/,
                                  current_record: true,
-                                 allowance_type: null)
+                                 allowance_type: null,
+                                 allowance_category: null)
 ```
 
 
diff --git a/docs/payroll_au/index.html b/docs/payroll_au/index.html
index 28d760d3..b4fd72c3 100644
--- a/docs/payroll_au/index.html
+++ b/docs/payroll_au/index.html
@@ -916,12 +916,18 @@
   "type" : "string",
   "description" : "See Account Types",
   "enum" : [ "BANK", "CURRENT", "CURRLIAB", "DEPRECIATN", "DIRECTCOSTS", "EQUITY", "EXPENSE", "FIXED", "INVENTORY", "LIABILITY", "NONCURRENT", "OTHERINCOME", "OVERHEADS", "PREPAYMENT", "REVENUE", "SALES", "TERMLIAB", "PAYGLIABILITY", "PAYG", "SUPERANNUATIONEXPENSE", "SUPERANNUATIONLIABILITY", "WAGESEXPENSE", "WAGESPAYABLELIABILITY" ]
+};
+      defs["AllowanceCategory"] = {
+  "title" : "",
+  "type" : "string",
+  "description" : "",
+  "enum" : [ "NONDEDUCTIBLE", "UNIFORM", "PRIVATEVEHICLE", "HOMEOFFICE", "TRANSPORT", "GENERAL", "OTHER" ]
 };
       defs["AllowanceType"] = {
   "title" : "",
   "type" : "string",
   "description" : "",
-  "enum" : [ "CAR", "TRANSPORT", "TRAVEL", "LAUNDRY", "MEALS", "JOBKEEPER", "OTHER" ]
+  "enum" : [ "CAR", "TRANSPORT", "LAUNDRY", "MEALS", "TRAVEL", "OTHER", "JOBKEEPER", "TOOLS", "TASKS", "QUALIFICATIONS" ]
 };
       defs["BankAccount"] = {
   "title" : "",
@@ -1222,6 +1228,9 @@
     },
     "AllowanceType" : {
       "$ref" : "#/components/schemas/AllowanceType"
+    },
+    "AllowanceCategory" : {
+      "$ref" : "#/components/schemas/AllowanceCategory"
     }
   },
   "description" : ""
@@ -3245,7 +3254,7 @@
           <nav id="scrollingNav">
             <ul class="sidenav nav nav-list">
               <li class="nav-header" data-group="PayrollAu"><strong>SDK: </strong><span id='sdk-name'></span></li>
-              <li class="nav-header" data-group="PayrollAu"><strong>VSN: </strong>3.4.0</li>
+              <li class="nav-header" data-group="PayrollAu"><strong>VSN: </strong>3.6.0</li>
               <li class="nav-header" data-group="PayrollAu"><a href="#api-PayrollAu">Methods</a></li>
               <li data-group="PayrollAu" data-name="createEmployee" class="">
                 <a href="#api-PayrollAu-createEmployee">createEmployee</a>
diff --git a/docs/payroll_nz/index.html b/docs/payroll_nz/index.html
index c5cdf45d..7b237825 100644
--- a/docs/payroll_nz/index.html
+++ b/docs/payroll_nz/index.html
@@ -3838,7 +3838,7 @@
           <nav id="scrollingNav">
             <ul class="sidenav nav nav-list">
               <li class="nav-header" data-group="PayrollNz"><strong>SDK: </strong><span id='sdk-name'></span></li>
-              <li class="nav-header" data-group="PayrollNz"><strong>VSN: </strong>3.4.0</li>
+              <li class="nav-header" data-group="PayrollNz"><strong>VSN: </strong>3.6.0</li>
               <li class="nav-header" data-group="PayrollNz"><a href="#api-PayrollNz">Methods</a></li>
               <li data-group="PayrollNz" data-name="approveTimesheet" class="">
                 <a href="#api-PayrollNz-approveTimesheet">approveTimesheet</a>
diff --git a/docs/payroll_uk/index.html b/docs/payroll_uk/index.html
index 949db86d..df9c7534 100644
--- a/docs/payroll_uk/index.html
+++ b/docs/payroll_uk/index.html
@@ -3506,7 +3506,7 @@
           <nav id="scrollingNav">
             <ul class="sidenav nav nav-list">
               <li class="nav-header" data-group="PayrollUk"><strong>SDK: </strong><span id='sdk-name'></span></li>
-              <li class="nav-header" data-group="PayrollUk"><strong>VSN: </strong>3.4.0</li>
+              <li class="nav-header" data-group="PayrollUk"><strong>VSN: </strong>3.6.0</li>
               <li class="nav-header" data-group="PayrollUk"><a href="#api-PayrollUk">Methods</a></li>
               <li data-group="PayrollUk" data-name="approveTimesheet" class="">
                 <a href="#api-PayrollUk-approveTimesheet">approveTimesheet</a>
diff --git a/docs/projects/index.html b/docs/projects/index.html
index de73ee10..11dc5a6d 100644
--- a/docs/projects/index.html
+++ b/docs/projects/index.html
@@ -1468,7 +1468,7 @@
           <nav id="scrollingNav">
             <ul class="sidenav nav nav-list">
               <li class="nav-header" data-group="Project"><strong>SDK: </strong><span id='sdk-name'></span></li>
-              <li class="nav-header" data-group="Project"><strong>VSN: </strong>3.4.0</li>
+              <li class="nav-header" data-group="Project"><strong>VSN: </strong>3.6.0</li>
               <li class="nav-header" data-group="Project"><a href="#api-Project">Methods</a></li>
               <li data-group="Project" data-name="createProject" class="">
                 <a href="#api-Project-createProject">createProject</a>
diff --git a/lib/xero-ruby.rb b/lib/xero-ruby.rb
index 779c126c..a5f6994e 100644
--- a/lib/xero-ruby.rb
+++ b/lib/xero-ruby.rb
@@ -259,6 +259,7 @@
 require 'xero-ruby/models/payroll_au/api_exception'
 require 'xero-ruby/models/payroll_au/account'
 require 'xero-ruby/models/payroll_au/account_type'
+require 'xero-ruby/models/payroll_au/allowance_category'
 require 'xero-ruby/models/payroll_au/allowance_type'
 require 'xero-ruby/models/payroll_au/bank_account'
 require 'xero-ruby/models/payroll_au/calendar_type'
diff --git a/lib/xero-ruby/api_client.rb b/lib/xero-ruby/api_client.rb
index 1482d2c6..7cd762e4 100644
--- a/lib/xero-ruby/api_client.rb
+++ b/lib/xero-ruby/api_client.rb
@@ -188,7 +188,7 @@ def validate_tokens(token_set)
     end
 
     def validate_state(params)
-      if params[:state] != @state
+      if params['state'] != @state
         raise StandardError.new "WARNING: @config.state: #{@state} and OAuth callback state: #{params['state']} do not match!"
       end
       return true
diff --git a/lib/xero-ruby/models/accounting/account.rb b/lib/xero-ruby/models/accounting/account.rb
index 83fe6adc..b454f197 100644
--- a/lib/xero-ruby/models/accounting/account.rb
+++ b/lib/xero-ruby/models/accounting/account.rb
@@ -33,20 +33,20 @@ class Account
     
     # Accounts with a status of ACTIVE can be updated to ARCHIVED. See Account Status Codes
     attr_accessor :status
-    ACTIVE = "ACTIVE".freeze
-    ARCHIVED = "ARCHIVED".freeze
-    DELETED = "DELETED".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    ARCHIVED ||= "ARCHIVED".freeze
+    DELETED ||= "DELETED".freeze
     
     # Description of the Account. Valid for all types of accounts except bank accounts (max length = 4000)
     attr_accessor :description
     
     # For bank accounts only. See Bank Account types
     attr_accessor :bank_account_type
-    BANK = "BANK".freeze
-    CREDITCARD = "CREDITCARD".freeze
-    PAYPAL = "PAYPAL".freeze
-    NONE = "NONE".freeze
-    EMPTY = "".freeze
+    BANK ||= "BANK".freeze
+    CREDITCARD ||= "CREDITCARD".freeze
+    PAYPAL ||= "PAYPAL".freeze
+    NONE ||= "NONE".freeze
+    EMPTY ||= "".freeze
     
 
     attr_accessor :currency_code
@@ -62,35 +62,35 @@ class Account
     
     # See Account Class Types
     attr_accessor :_class
-    ASSET = "ASSET".freeze
-    EQUITY = "EQUITY".freeze
-    EXPENSE = "EXPENSE".freeze
-    LIABILITY = "LIABILITY".freeze
-    REVENUE = "REVENUE".freeze
+    ASSET ||= "ASSET".freeze
+    EQUITY ||= "EQUITY".freeze
+    EXPENSE ||= "EXPENSE".freeze
+    LIABILITY ||= "LIABILITY".freeze
+    REVENUE ||= "REVENUE".freeze
     
     # If this is a system account then this element is returned. See System Account types. Note that non-system accounts may have this element set as either “” or null.
     attr_accessor :system_account
-    DEBTORS = "DEBTORS".freeze
-    CREDITORS = "CREDITORS".freeze
-    BANKCURRENCYGAIN = "BANKCURRENCYGAIN".freeze
-    GST = "GST".freeze
-    GSTONIMPORTS = "GSTONIMPORTS".freeze
-    HISTORICAL = "HISTORICAL".freeze
-    REALISEDCURRENCYGAIN = "REALISEDCURRENCYGAIN".freeze
-    RETAINEDEARNINGS = "RETAINEDEARNINGS".freeze
-    ROUNDING = "ROUNDING".freeze
-    TRACKINGTRANSFERS = "TRACKINGTRANSFERS".freeze
-    UNPAIDEXPCLM = "UNPAIDEXPCLM".freeze
-    UNREALISEDCURRENCYGAIN = "UNREALISEDCURRENCYGAIN".freeze
-    WAGEPAYABLES = "WAGEPAYABLES".freeze
-    CISASSETS = "CISASSETS".freeze
-    CISASSET = "CISASSET".freeze
-    CISLABOUR = "CISLABOUR".freeze
-    CISLABOUREXPENSE = "CISLABOUREXPENSE".freeze
-    CISLABOURINCOME = "CISLABOURINCOME".freeze
-    CISLIABILITY = "CISLIABILITY".freeze
-    CISMATERIALS = "CISMATERIALS".freeze
-    # EMPTY = "".freeze
+    DEBTORS ||= "DEBTORS".freeze
+    CREDITORS ||= "CREDITORS".freeze
+    BANKCURRENCYGAIN ||= "BANKCURRENCYGAIN".freeze
+    GST ||= "GST".freeze
+    GSTONIMPORTS ||= "GSTONIMPORTS".freeze
+    HISTORICAL ||= "HISTORICAL".freeze
+    REALISEDCURRENCYGAIN ||= "REALISEDCURRENCYGAIN".freeze
+    RETAINEDEARNINGS ||= "RETAINEDEARNINGS".freeze
+    ROUNDING ||= "ROUNDING".freeze
+    TRACKINGTRANSFERS ||= "TRACKINGTRANSFERS".freeze
+    UNPAIDEXPCLM ||= "UNPAIDEXPCLM".freeze
+    UNREALISEDCURRENCYGAIN ||= "UNREALISEDCURRENCYGAIN".freeze
+    WAGEPAYABLES ||= "WAGEPAYABLES".freeze
+    CISASSETS ||= "CISASSETS".freeze
+    CISASSET ||= "CISASSET".freeze
+    CISLABOUR ||= "CISLABOUR".freeze
+    CISLABOUREXPENSE ||= "CISLABOUREXPENSE".freeze
+    CISLABOURINCOME ||= "CISLABOURINCOME".freeze
+    CISLIABILITY ||= "CISLIABILITY".freeze
+    CISMATERIALS ||= "CISMATERIALS".freeze
+    EMPTY ||= "".freeze
     
     # Shown if set
     attr_accessor :reporting_code
diff --git a/lib/xero-ruby/models/accounting/account_type.rb b/lib/xero-ruby/models/accounting/account_type.rb
index 0c5d29c6..ca1473a4 100644
--- a/lib/xero-ruby/models/accounting/account_type.rb
+++ b/lib/xero-ruby/models/accounting/account_type.rb
@@ -14,28 +14,28 @@
 
 module XeroRuby::Accounting
   class AccountType
-    BANK = "BANK".freeze
-    CURRENT = "CURRENT".freeze
-    CURRLIAB = "CURRLIAB".freeze
-    DEPRECIATN = "DEPRECIATN".freeze
-    DIRECTCOSTS = "DIRECTCOSTS".freeze
-    EQUITY = "EQUITY".freeze
-    EXPENSE = "EXPENSE".freeze
-    FIXED = "FIXED".freeze
-    INVENTORY = "INVENTORY".freeze
-    LIABILITY = "LIABILITY".freeze
-    NONCURRENT = "NONCURRENT".freeze
-    OTHERINCOME = "OTHERINCOME".freeze
-    OVERHEADS = "OVERHEADS".freeze
-    PREPAYMENT = "PREPAYMENT".freeze
-    REVENUE = "REVENUE".freeze
-    SALES = "SALES".freeze
-    TERMLIAB = "TERMLIAB".freeze
-    PAYGLIABILITY = "PAYGLIABILITY".freeze
-    PAYG = "PAYG".freeze
-    SUPERANNUATIONEXPENSE = "SUPERANNUATIONEXPENSE".freeze
-    SUPERANNUATIONLIABILITY = "SUPERANNUATIONLIABILITY".freeze
-    WAGESEXPENSE = "WAGESEXPENSE".freeze
+    BANK ||= "BANK".freeze
+    CURRENT ||= "CURRENT".freeze
+    CURRLIAB ||= "CURRLIAB".freeze
+    DEPRECIATN ||= "DEPRECIATN".freeze
+    DIRECTCOSTS ||= "DIRECTCOSTS".freeze
+    EQUITY ||= "EQUITY".freeze
+    EXPENSE ||= "EXPENSE".freeze
+    FIXED ||= "FIXED".freeze
+    INVENTORY ||= "INVENTORY".freeze
+    LIABILITY ||= "LIABILITY".freeze
+    NONCURRENT ||= "NONCURRENT".freeze
+    OTHERINCOME ||= "OTHERINCOME".freeze
+    OVERHEADS ||= "OVERHEADS".freeze
+    PREPAYMENT ||= "PREPAYMENT".freeze
+    REVENUE ||= "REVENUE".freeze
+    SALES ||= "SALES".freeze
+    TERMLIAB ||= "TERMLIAB".freeze
+    PAYGLIABILITY ||= "PAYGLIABILITY".freeze
+    PAYG ||= "PAYG".freeze
+    SUPERANNUATIONEXPENSE ||= "SUPERANNUATIONEXPENSE".freeze
+    SUPERANNUATIONLIABILITY ||= "SUPERANNUATIONLIABILITY".freeze
+    WAGESEXPENSE ||= "WAGESEXPENSE".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/accounting/action.rb b/lib/xero-ruby/models/accounting/action.rb
index aa89f3b6..60f84824 100644
--- a/lib/xero-ruby/models/accounting/action.rb
+++ b/lib/xero-ruby/models/accounting/action.rb
@@ -21,8 +21,8 @@ class Action
     
     # Status of the action for this organisation
     attr_accessor :status
-    ALLOWED = "ALLOWED".freeze
-    NOT_ALLOWED = "NOT-ALLOWED".freeze
+    ALLOWED ||= "ALLOWED".freeze
+    NOT_ALLOWED ||= "NOT-ALLOWED".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/accounting/address.rb b/lib/xero-ruby/models/accounting/address.rb
index 91f1b820..2461943c 100644
--- a/lib/xero-ruby/models/accounting/address.rb
+++ b/lib/xero-ruby/models/accounting/address.rb
@@ -18,8 +18,8 @@ module XeroRuby::Accounting
   class Address
     # define the type of address
     attr_accessor :address_type
-    POBOX = "POBOX".freeze
-    STREET = "STREET".freeze
+    POBOX ||= "POBOX".freeze
+    STREET ||= "STREET".freeze
     
     # max length = 500
     attr_accessor :address_line1
diff --git a/lib/xero-ruby/models/accounting/address_for_organisation.rb b/lib/xero-ruby/models/accounting/address_for_organisation.rb
index c95b3d5f..88267601 100644
--- a/lib/xero-ruby/models/accounting/address_for_organisation.rb
+++ b/lib/xero-ruby/models/accounting/address_for_organisation.rb
@@ -18,9 +18,9 @@ module XeroRuby::Accounting
   class AddressForOrganisation
     # define the type of address
     attr_accessor :address_type
-    POBOX = "POBOX".freeze
-    STREET = "STREET".freeze
-    DELIVERY = "DELIVERY".freeze
+    POBOX ||= "POBOX".freeze
+    STREET ||= "STREET".freeze
+    DELIVERY ||= "DELIVERY".freeze
     
     # max length = 500
     attr_accessor :address_line1
diff --git a/lib/xero-ruby/models/accounting/bank_transaction.rb b/lib/xero-ruby/models/accounting/bank_transaction.rb
index 61bd637e..cd8dd61c 100644
--- a/lib/xero-ruby/models/accounting/bank_transaction.rb
+++ b/lib/xero-ruby/models/accounting/bank_transaction.rb
@@ -18,14 +18,14 @@ module XeroRuby::Accounting
   class BankTransaction
     # See Bank Transaction Types
     attr_accessor :type
-    RECEIVE = "RECEIVE".freeze
-    RECEIVE_OVERPAYMENT = "RECEIVE-OVERPAYMENT".freeze
-    RECEIVE_PREPAYMENT = "RECEIVE-PREPAYMENT".freeze
-    SPEND = "SPEND".freeze
-    SPEND_OVERPAYMENT = "SPEND-OVERPAYMENT".freeze
-    SPEND_PREPAYMENT = "SPEND-PREPAYMENT".freeze
-    RECEIVE_TRANSFER = "RECEIVE-TRANSFER".freeze
-    SPEND_TRANSFER = "SPEND-TRANSFER".freeze
+    RECEIVE ||= "RECEIVE".freeze
+    RECEIVE_OVERPAYMENT ||= "RECEIVE-OVERPAYMENT".freeze
+    RECEIVE_PREPAYMENT ||= "RECEIVE-PREPAYMENT".freeze
+    SPEND ||= "SPEND".freeze
+    SPEND_OVERPAYMENT ||= "SPEND-OVERPAYMENT".freeze
+    SPEND_PREPAYMENT ||= "SPEND-PREPAYMENT".freeze
+    RECEIVE_TRANSFER ||= "RECEIVE-TRANSFER".freeze
+    SPEND_TRANSFER ||= "SPEND-TRANSFER".freeze
     
 
     attr_accessor :contact
@@ -56,9 +56,9 @@ class BankTransaction
     
     # See Bank Transaction Status Codes
     attr_accessor :status
-    AUTHORISED = "AUTHORISED".freeze
-    DELETED = "DELETED".freeze
-    VOIDED = "VOIDED".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    DELETED ||= "DELETED".freeze
+    VOIDED ||= "VOIDED".freeze
     
 
     attr_accessor :line_amount_types
diff --git a/lib/xero-ruby/models/accounting/batch_payment.rb b/lib/xero-ruby/models/accounting/batch_payment.rb
index 4111936a..54147fb8 100644
--- a/lib/xero-ruby/models/accounting/batch_payment.rb
+++ b/lib/xero-ruby/models/accounting/batch_payment.rb
@@ -51,13 +51,13 @@ class BatchPayment
     
     # PAYBATCH for bill payments or RECBATCH for sales invoice payments (read-only)
     attr_accessor :type
-    PAYBATCH = "PAYBATCH".freeze
-    RECBATCH = "RECBATCH".freeze
+    PAYBATCH ||= "PAYBATCH".freeze
+    RECBATCH ||= "RECBATCH".freeze
     
     # AUTHORISED or DELETED (read-only). New batch payments will have a status of AUTHORISED. It is not possible to delete batch payments via the API.
     attr_accessor :status
-    AUTHORISED = "AUTHORISED".freeze
-    DELETED = "DELETED".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    DELETED ||= "DELETED".freeze
     
     # The total of the payments that make up the batch (read-only)
     attr_accessor :total_amount
diff --git a/lib/xero-ruby/models/accounting/branding_theme.rb b/lib/xero-ruby/models/accounting/branding_theme.rb
index c571a1d5..7104e8af 100644
--- a/lib/xero-ruby/models/accounting/branding_theme.rb
+++ b/lib/xero-ruby/models/accounting/branding_theme.rb
@@ -27,7 +27,7 @@ class BrandingTheme
     
     # Always INVOICE
     attr_accessor :type
-    INVOICE = "INVOICE".freeze
+    INVOICE ||= "INVOICE".freeze
     
     # Integer – ranked order of branding theme. The default branding theme has a value of 0
     attr_accessor :sort_order
diff --git a/lib/xero-ruby/models/accounting/budget.rb b/lib/xero-ruby/models/accounting/budget.rb
index dd60e312..f8923a1e 100644
--- a/lib/xero-ruby/models/accounting/budget.rb
+++ b/lib/xero-ruby/models/accounting/budget.rb
@@ -21,8 +21,8 @@ class Budget
     
     # Type of Budget. OVERALL or TRACKING
     attr_accessor :type
-    OVERALL = "OVERALL".freeze
-    TRACKING = "TRACKING".freeze
+    OVERALL ||= "OVERALL".freeze
+    TRACKING ||= "TRACKING".freeze
     
     # The Budget description
     attr_accessor :description
diff --git a/lib/xero-ruby/models/accounting/contact.rb b/lib/xero-ruby/models/accounting/contact.rb
index 68853708..cc4ebe93 100644
--- a/lib/xero-ruby/models/accounting/contact.rb
+++ b/lib/xero-ruby/models/accounting/contact.rb
@@ -30,9 +30,9 @@ class Contact
     
     # Current status of a contact – see contact status types
     attr_accessor :contact_status
-    ACTIVE = "ACTIVE".freeze
-    ARCHIVED = "ARCHIVED".freeze
-    GDPRREQUEST = "GDPRREQUEST".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    ARCHIVED ||= "ARCHIVED".freeze
+    GDPRREQUEST ||= "GDPRREQUEST".freeze
     
     # Full name of contact/organisation (max length = 255)
     attr_accessor :name
@@ -81,15 +81,15 @@ class Contact
     
     # The default sales line amount type for a contact. Only available when summaryOnly parameter or paging is used, or when fetch by ContactId or ContactNumber.
     attr_accessor :sales_default_line_amount_type
-    INCLUSIVE = "INCLUSIVE".freeze
-    EXCLUSIVE = "EXCLUSIVE".freeze
-    # NONE = "NONE".freeze
+    INCLUSIVE ||= "INCLUSIVE".freeze
+    EXCLUSIVE ||= "EXCLUSIVE".freeze
+    NONE ||= "NONE".freeze
     
     # The default purchases line amount type for a contact Only available when summaryOnly parameter or paging is used, or when fetch by ContactId or ContactNumber.
     attr_accessor :purchases_default_line_amount_type
-    # INCLUSIVE = "INCLUSIVE".freeze
-    # EXCLUSIVE = "EXCLUSIVE".freeze
-    # NONE = "NONE".freeze
+    INCLUSIVE ||= "INCLUSIVE".freeze
+    EXCLUSIVE ||= "EXCLUSIVE".freeze
+    NONE ||= "NONE".freeze
     
 
     attr_accessor :default_currency
diff --git a/lib/xero-ruby/models/accounting/contact_group.rb b/lib/xero-ruby/models/accounting/contact_group.rb
index 020ce686..7008352d 100644
--- a/lib/xero-ruby/models/accounting/contact_group.rb
+++ b/lib/xero-ruby/models/accounting/contact_group.rb
@@ -21,8 +21,8 @@ class ContactGroup
     
     # The Status of a contact group. To delete a contact group update the status to DELETED. Only contact groups with a status of ACTIVE are returned on GETs.
     attr_accessor :status
-    ACTIVE = "ACTIVE".freeze
-    DELETED = "DELETED".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    DELETED ||= "DELETED".freeze
     
     # The Xero identifier for an contact group – specified as a string following the endpoint name. e.g. /297c2dc5-cc47-4afd-8ec8-74990b8761e9
     attr_accessor :contact_group_id
diff --git a/lib/xero-ruby/models/accounting/country_code.rb b/lib/xero-ruby/models/accounting/country_code.rb
index 8b3cfd67..6f6fb186 100644
--- a/lib/xero-ruby/models/accounting/country_code.rb
+++ b/lib/xero-ruby/models/accounting/country_code.rb
@@ -14,246 +14,246 @@
 
 module XeroRuby::Accounting
   class CountryCode
-    AD = "AD".freeze
-    AE = "AE".freeze
-    AF = "AF".freeze
-    AG = "AG".freeze
-    AI = "AI".freeze
-    AL = "AL".freeze
-    AM = "AM".freeze
-    AN = "AN".freeze
-    AO = "AO".freeze
-    AQ = "AQ".freeze
-    AR = "AR".freeze
-    AS = "AS".freeze
-    AT = "AT".freeze
-    AU = "AU".freeze
-    AW = "AW".freeze
-    AZ = "AZ".freeze
-    BA = "BA".freeze
-    BB = "BB".freeze
-    BD = "BD".freeze
-    BE = "BE".freeze
-    BF = "BF".freeze
-    BG = "BG".freeze
-    BH = "BH".freeze
-    BI = "BI".freeze
-    BJ = "BJ".freeze
-    BL = "BL".freeze
-    BM = "BM".freeze
-    BN = "BN".freeze
-    BO = "BO".freeze
-    BR = "BR".freeze
-    BS = "BS".freeze
-    BT = "BT".freeze
-    BW = "BW".freeze
-    BY = "BY".freeze
-    BZ = "BZ".freeze
-    CA = "CA".freeze
-    CC = "CC".freeze
-    CD = "CD".freeze
-    CF = "CF".freeze
-    CG = "CG".freeze
-    CH = "CH".freeze
-    CI = "CI".freeze
-    CK = "CK".freeze
-    CL = "CL".freeze
-    CM = "CM".freeze
-    CN = "CN".freeze
-    CO = "CO".freeze
-    CR = "CR".freeze
-    CU = "CU".freeze
-    CV = "CV".freeze
-    CW = "CW".freeze
-    CX = "CX".freeze
-    CY = "CY".freeze
-    CZ = "CZ".freeze
-    DE = "DE".freeze
-    DJ = "DJ".freeze
-    DK = "DK".freeze
-    DM = "DM".freeze
-    DO = "DO".freeze
-    DZ = "DZ".freeze
-    EC = "EC".freeze
-    EE = "EE".freeze
-    EG = "EG".freeze
-    EH = "EH".freeze
-    ER = "ER".freeze
-    ES = "ES".freeze
-    ET = "ET".freeze
-    FI = "FI".freeze
-    FJ = "FJ".freeze
-    FK = "FK".freeze
-    FM = "FM".freeze
-    FO = "FO".freeze
-    FR = "FR".freeze
-    GA = "GA".freeze
-    GB = "GB".freeze
-    GD = "GD".freeze
-    GE = "GE".freeze
-    GG = "GG".freeze
-    GH = "GH".freeze
-    GI = "GI".freeze
-    GL = "GL".freeze
-    GM = "GM".freeze
-    GN = "GN".freeze
-    GQ = "GQ".freeze
-    GR = "GR".freeze
-    GT = "GT".freeze
-    GU = "GU".freeze
-    GW = "GW".freeze
-    GY = "GY".freeze
-    HK = "HK".freeze
-    HN = "HN".freeze
-    HR = "HR".freeze
-    HT = "HT".freeze
-    HU = "HU".freeze
-    ID = "ID".freeze
-    IE = "IE".freeze
-    IL = "IL".freeze
-    IM = "IM".freeze
-    IN = "IN".freeze
-    IO = "IO".freeze
-    IQ = "IQ".freeze
-    IR = "IR".freeze
-    IS = "IS".freeze
-    IT = "IT".freeze
-    JE = "JE".freeze
-    JM = "JM".freeze
-    JO = "JO".freeze
-    JP = "JP".freeze
-    KE = "KE".freeze
-    KG = "KG".freeze
-    KH = "KH".freeze
-    KI = "KI".freeze
-    KM = "KM".freeze
-    KN = "KN".freeze
-    KP = "KP".freeze
-    KR = "KR".freeze
-    KW = "KW".freeze
-    KY = "KY".freeze
-    KZ = "KZ".freeze
-    LA = "LA".freeze
-    LB = "LB".freeze
-    LC = "LC".freeze
-    LI = "LI".freeze
-    LK = "LK".freeze
-    LR = "LR".freeze
-    LS = "LS".freeze
-    LT = "LT".freeze
-    LU = "LU".freeze
-    LV = "LV".freeze
-    LY = "LY".freeze
-    MA = "MA".freeze
-    MC = "MC".freeze
-    MD = "MD".freeze
-    ME = "ME".freeze
-    MF = "MF".freeze
-    MG = "MG".freeze
-    MH = "MH".freeze
-    MK = "MK".freeze
-    ML = "ML".freeze
-    MM = "MM".freeze
-    MN = "MN".freeze
-    MO = "MO".freeze
-    MP = "MP".freeze
-    MR = "MR".freeze
-    MS = "MS".freeze
-    MT = "MT".freeze
-    MU = "MU".freeze
-    MV = "MV".freeze
-    MW = "MW".freeze
-    MX = "MX".freeze
-    MY = "MY".freeze
-    MZ = "MZ".freeze
-    NA = "NA".freeze
-    NC = "NC".freeze
-    NE = "NE".freeze
-    NG = "NG".freeze
-    NI = "NI".freeze
-    NL = "NL".freeze
-    NO = "NO".freeze
-    NP = "NP".freeze
-    NR = "NR".freeze
-    NU = "NU".freeze
-    NZ = "NZ".freeze
-    OM = "OM".freeze
-    PA = "PA".freeze
-    PE = "PE".freeze
-    PF = "PF".freeze
-    PG = "PG".freeze
-    PH = "PH".freeze
-    PK = "PK".freeze
-    PL = "PL".freeze
-    PM = "PM".freeze
-    PN = "PN".freeze
-    PR = "PR".freeze
-    PS = "PS".freeze
-    PT = "PT".freeze
-    PW = "PW".freeze
-    PY = "PY".freeze
-    QA = "QA".freeze
-    RE = "RE".freeze
-    RO = "RO".freeze
-    RS = "RS".freeze
-    RU = "RU".freeze
-    RW = "RW".freeze
-    SA = "SA".freeze
-    SB = "SB".freeze
-    SC = "SC".freeze
-    SD = "SD".freeze
-    SE = "SE".freeze
-    SG = "SG".freeze
-    SH = "SH".freeze
-    SI = "SI".freeze
-    SJ = "SJ".freeze
-    SK = "SK".freeze
-    SL = "SL".freeze
-    SM = "SM".freeze
-    SN = "SN".freeze
-    SO = "SO".freeze
-    SR = "SR".freeze
-    SS = "SS".freeze
-    ST = "ST".freeze
-    SV = "SV".freeze
-    SX = "SX".freeze
-    SY = "SY".freeze
-    SZ = "SZ".freeze
-    TC = "TC".freeze
-    TD = "TD".freeze
-    TG = "TG".freeze
-    TH = "TH".freeze
-    TJ = "TJ".freeze
-    TK = "TK".freeze
-    TL = "TL".freeze
-    TM = "TM".freeze
-    TN = "TN".freeze
-    TO = "TO".freeze
-    TR = "TR".freeze
-    TT = "TT".freeze
-    TV = "TV".freeze
-    TW = "TW".freeze
-    TZ = "TZ".freeze
-    UA = "UA".freeze
-    UG = "UG".freeze
-    US = "US".freeze
-    UY = "UY".freeze
-    UZ = "UZ".freeze
-    VA = "VA".freeze
-    VC = "VC".freeze
-    VE = "VE".freeze
-    VG = "VG".freeze
-    VI = "VI".freeze
-    VN = "VN".freeze
-    VU = "VU".freeze
-    WF = "WF".freeze
-    WS = "WS".freeze
-    XK = "XK".freeze
-    YE = "YE".freeze
-    YT = "YT".freeze
-    ZA = "ZA".freeze
-    ZM = "ZM".freeze
-    ZW = "ZW".freeze
+    AD ||= "AD".freeze
+    AE ||= "AE".freeze
+    AF ||= "AF".freeze
+    AG ||= "AG".freeze
+    AI ||= "AI".freeze
+    AL ||= "AL".freeze
+    AM ||= "AM".freeze
+    AN ||= "AN".freeze
+    AO ||= "AO".freeze
+    AQ ||= "AQ".freeze
+    AR ||= "AR".freeze
+    AS ||= "AS".freeze
+    AT ||= "AT".freeze
+    AU ||= "AU".freeze
+    AW ||= "AW".freeze
+    AZ ||= "AZ".freeze
+    BA ||= "BA".freeze
+    BB ||= "BB".freeze
+    BD ||= "BD".freeze
+    BE ||= "BE".freeze
+    BF ||= "BF".freeze
+    BG ||= "BG".freeze
+    BH ||= "BH".freeze
+    BI ||= "BI".freeze
+    BJ ||= "BJ".freeze
+    BL ||= "BL".freeze
+    BM ||= "BM".freeze
+    BN ||= "BN".freeze
+    BO ||= "BO".freeze
+    BR ||= "BR".freeze
+    BS ||= "BS".freeze
+    BT ||= "BT".freeze
+    BW ||= "BW".freeze
+    BY ||= "BY".freeze
+    BZ ||= "BZ".freeze
+    CA ||= "CA".freeze
+    CC ||= "CC".freeze
+    CD ||= "CD".freeze
+    CF ||= "CF".freeze
+    CG ||= "CG".freeze
+    CH ||= "CH".freeze
+    CI ||= "CI".freeze
+    CK ||= "CK".freeze
+    CL ||= "CL".freeze
+    CM ||= "CM".freeze
+    CN ||= "CN".freeze
+    CO ||= "CO".freeze
+    CR ||= "CR".freeze
+    CU ||= "CU".freeze
+    CV ||= "CV".freeze
+    CW ||= "CW".freeze
+    CX ||= "CX".freeze
+    CY ||= "CY".freeze
+    CZ ||= "CZ".freeze
+    DE ||= "DE".freeze
+    DJ ||= "DJ".freeze
+    DK ||= "DK".freeze
+    DM ||= "DM".freeze
+    DO ||= "DO".freeze
+    DZ ||= "DZ".freeze
+    EC ||= "EC".freeze
+    EE ||= "EE".freeze
+    EG ||= "EG".freeze
+    EH ||= "EH".freeze
+    ER ||= "ER".freeze
+    ES ||= "ES".freeze
+    ET ||= "ET".freeze
+    FI ||= "FI".freeze
+    FJ ||= "FJ".freeze
+    FK ||= "FK".freeze
+    FM ||= "FM".freeze
+    FO ||= "FO".freeze
+    FR ||= "FR".freeze
+    GA ||= "GA".freeze
+    GB ||= "GB".freeze
+    GD ||= "GD".freeze
+    GE ||= "GE".freeze
+    GG ||= "GG".freeze
+    GH ||= "GH".freeze
+    GI ||= "GI".freeze
+    GL ||= "GL".freeze
+    GM ||= "GM".freeze
+    GN ||= "GN".freeze
+    GQ ||= "GQ".freeze
+    GR ||= "GR".freeze
+    GT ||= "GT".freeze
+    GU ||= "GU".freeze
+    GW ||= "GW".freeze
+    GY ||= "GY".freeze
+    HK ||= "HK".freeze
+    HN ||= "HN".freeze
+    HR ||= "HR".freeze
+    HT ||= "HT".freeze
+    HU ||= "HU".freeze
+    ID ||= "ID".freeze
+    IE ||= "IE".freeze
+    IL ||= "IL".freeze
+    IM ||= "IM".freeze
+    IN ||= "IN".freeze
+    IO ||= "IO".freeze
+    IQ ||= "IQ".freeze
+    IR ||= "IR".freeze
+    IS ||= "IS".freeze
+    IT ||= "IT".freeze
+    JE ||= "JE".freeze
+    JM ||= "JM".freeze
+    JO ||= "JO".freeze
+    JP ||= "JP".freeze
+    KE ||= "KE".freeze
+    KG ||= "KG".freeze
+    KH ||= "KH".freeze
+    KI ||= "KI".freeze
+    KM ||= "KM".freeze
+    KN ||= "KN".freeze
+    KP ||= "KP".freeze
+    KR ||= "KR".freeze
+    KW ||= "KW".freeze
+    KY ||= "KY".freeze
+    KZ ||= "KZ".freeze
+    LA ||= "LA".freeze
+    LB ||= "LB".freeze
+    LC ||= "LC".freeze
+    LI ||= "LI".freeze
+    LK ||= "LK".freeze
+    LR ||= "LR".freeze
+    LS ||= "LS".freeze
+    LT ||= "LT".freeze
+    LU ||= "LU".freeze
+    LV ||= "LV".freeze
+    LY ||= "LY".freeze
+    MA ||= "MA".freeze
+    MC ||= "MC".freeze
+    MD ||= "MD".freeze
+    ME ||= "ME".freeze
+    MF ||= "MF".freeze
+    MG ||= "MG".freeze
+    MH ||= "MH".freeze
+    MK ||= "MK".freeze
+    ML ||= "ML".freeze
+    MM ||= "MM".freeze
+    MN ||= "MN".freeze
+    MO ||= "MO".freeze
+    MP ||= "MP".freeze
+    MR ||= "MR".freeze
+    MS ||= "MS".freeze
+    MT ||= "MT".freeze
+    MU ||= "MU".freeze
+    MV ||= "MV".freeze
+    MW ||= "MW".freeze
+    MX ||= "MX".freeze
+    MY ||= "MY".freeze
+    MZ ||= "MZ".freeze
+    NA ||= "NA".freeze
+    NC ||= "NC".freeze
+    NE ||= "NE".freeze
+    NG ||= "NG".freeze
+    NI ||= "NI".freeze
+    NL ||= "NL".freeze
+    NO ||= "NO".freeze
+    NP ||= "NP".freeze
+    NR ||= "NR".freeze
+    NU ||= "NU".freeze
+    NZ ||= "NZ".freeze
+    OM ||= "OM".freeze
+    PA ||= "PA".freeze
+    PE ||= "PE".freeze
+    PF ||= "PF".freeze
+    PG ||= "PG".freeze
+    PH ||= "PH".freeze
+    PK ||= "PK".freeze
+    PL ||= "PL".freeze
+    PM ||= "PM".freeze
+    PN ||= "PN".freeze
+    PR ||= "PR".freeze
+    PS ||= "PS".freeze
+    PT ||= "PT".freeze
+    PW ||= "PW".freeze
+    PY ||= "PY".freeze
+    QA ||= "QA".freeze
+    RE ||= "RE".freeze
+    RO ||= "RO".freeze
+    RS ||= "RS".freeze
+    RU ||= "RU".freeze
+    RW ||= "RW".freeze
+    SA ||= "SA".freeze
+    SB ||= "SB".freeze
+    SC ||= "SC".freeze
+    SD ||= "SD".freeze
+    SE ||= "SE".freeze
+    SG ||= "SG".freeze
+    SH ||= "SH".freeze
+    SI ||= "SI".freeze
+    SJ ||= "SJ".freeze
+    SK ||= "SK".freeze
+    SL ||= "SL".freeze
+    SM ||= "SM".freeze
+    SN ||= "SN".freeze
+    SO ||= "SO".freeze
+    SR ||= "SR".freeze
+    SS ||= "SS".freeze
+    ST ||= "ST".freeze
+    SV ||= "SV".freeze
+    SX ||= "SX".freeze
+    SY ||= "SY".freeze
+    SZ ||= "SZ".freeze
+    TC ||= "TC".freeze
+    TD ||= "TD".freeze
+    TG ||= "TG".freeze
+    TH ||= "TH".freeze
+    TJ ||= "TJ".freeze
+    TK ||= "TK".freeze
+    TL ||= "TL".freeze
+    TM ||= "TM".freeze
+    TN ||= "TN".freeze
+    TO ||= "TO".freeze
+    TR ||= "TR".freeze
+    TT ||= "TT".freeze
+    TV ||= "TV".freeze
+    TW ||= "TW".freeze
+    TZ ||= "TZ".freeze
+    UA ||= "UA".freeze
+    UG ||= "UG".freeze
+    US ||= "US".freeze
+    UY ||= "UY".freeze
+    UZ ||= "UZ".freeze
+    VA ||= "VA".freeze
+    VC ||= "VC".freeze
+    VE ||= "VE".freeze
+    VG ||= "VG".freeze
+    VI ||= "VI".freeze
+    VN ||= "VN".freeze
+    VU ||= "VU".freeze
+    WF ||= "WF".freeze
+    WS ||= "WS".freeze
+    XK ||= "XK".freeze
+    YE ||= "YE".freeze
+    YT ||= "YT".freeze
+    ZA ||= "ZA".freeze
+    ZM ||= "ZM".freeze
+    ZW ||= "ZW".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/accounting/credit_note.rb b/lib/xero-ruby/models/accounting/credit_note.rb
index 466c3379..69e865e5 100644
--- a/lib/xero-ruby/models/accounting/credit_note.rb
+++ b/lib/xero-ruby/models/accounting/credit_note.rb
@@ -18,8 +18,8 @@ module XeroRuby::Accounting
   class CreditNote
     # See Credit Note Types
     attr_accessor :type
-    ACCPAYCREDIT = "ACCPAYCREDIT".freeze
-    ACCRECCREDIT = "ACCRECCREDIT".freeze
+    ACCPAYCREDIT ||= "ACCPAYCREDIT".freeze
+    ACCRECCREDIT ||= "ACCRECCREDIT".freeze
     
 
     attr_accessor :contact
@@ -32,12 +32,12 @@ class CreditNote
     
     # See Credit Note Status Codes
     attr_accessor :status
-    DRAFT = "DRAFT".freeze
-    SUBMITTED = "SUBMITTED".freeze
-    DELETED = "DELETED".freeze
-    AUTHORISED = "AUTHORISED".freeze
-    PAID = "PAID".freeze
-    VOIDED = "VOIDED".freeze
+    DRAFT ||= "DRAFT".freeze
+    SUBMITTED ||= "SUBMITTED".freeze
+    DELETED ||= "DELETED".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    PAID ||= "PAID".freeze
+    VOIDED ||= "VOIDED".freeze
     
 
     attr_accessor :line_amount_types
diff --git a/lib/xero-ruby/models/accounting/currency_code.rb b/lib/xero-ruby/models/accounting/currency_code.rb
index 4360ccb8..14c68636 100644
--- a/lib/xero-ruby/models/accounting/currency_code.rb
+++ b/lib/xero-ruby/models/accounting/currency_code.rb
@@ -14,172 +14,172 @@
 
 module XeroRuby::Accounting
   class CurrencyCode
-    AED = "AED".freeze
-    AFN = "AFN".freeze
-    ALL = "ALL".freeze
-    AMD = "AMD".freeze
-    ANG = "ANG".freeze
-    AOA = "AOA".freeze
-    ARS = "ARS".freeze
-    AUD = "AUD".freeze
-    AWG = "AWG".freeze
-    AZN = "AZN".freeze
-    BAM = "BAM".freeze
-    BBD = "BBD".freeze
-    BDT = "BDT".freeze
-    BGN = "BGN".freeze
-    BHD = "BHD".freeze
-    BIF = "BIF".freeze
-    BMD = "BMD".freeze
-    BND = "BND".freeze
-    BOB = "BOB".freeze
-    BRL = "BRL".freeze
-    BSD = "BSD".freeze
-    BTN = "BTN".freeze
-    BWP = "BWP".freeze
-    BYN = "BYN".freeze
-    BYR = "BYR".freeze
-    BZD = "BZD".freeze
-    CAD = "CAD".freeze
-    CDF = "CDF".freeze
-    CHF = "CHF".freeze
-    CLP = "CLP".freeze
-    CNY = "CNY".freeze
-    COP = "COP".freeze
-    CRC = "CRC".freeze
-    CUC = "CUC".freeze
-    CUP = "CUP".freeze
-    CVE = "CVE".freeze
-    CZK = "CZK".freeze
-    DJF = "DJF".freeze
-    DKK = "DKK".freeze
-    DOP = "DOP".freeze
-    DZD = "DZD".freeze
-    EGP = "EGP".freeze
-    ERN = "ERN".freeze
-    ETB = "ETB".freeze
-    EUR = "EUR".freeze
-    FJD = "FJD".freeze
-    FKP = "FKP".freeze
-    GBP = "GBP".freeze
-    GEL = "GEL".freeze
-    GGP = "GGP".freeze
-    GHS = "GHS".freeze
-    GIP = "GIP".freeze
-    GMD = "GMD".freeze
-    GNF = "GNF".freeze
-    GTQ = "GTQ".freeze
-    GYD = "GYD".freeze
-    HKD = "HKD".freeze
-    HNL = "HNL".freeze
-    HRK = "HRK".freeze
-    HTG = "HTG".freeze
-    HUF = "HUF".freeze
-    IDR = "IDR".freeze
-    ILS = "ILS".freeze
-    IMP = "IMP".freeze
-    INR = "INR".freeze
-    IQD = "IQD".freeze
-    IRR = "IRR".freeze
-    ISK = "ISK".freeze
-    JEP = "JEP".freeze
-    JMD = "JMD".freeze
-    JOD = "JOD".freeze
-    JPY = "JPY".freeze
-    KES = "KES".freeze
-    KGS = "KGS".freeze
-    KHR = "KHR".freeze
-    KMF = "KMF".freeze
-    KPW = "KPW".freeze
-    KRW = "KRW".freeze
-    KWD = "KWD".freeze
-    KYD = "KYD".freeze
-    KZT = "KZT".freeze
-    LAK = "LAK".freeze
-    LBP = "LBP".freeze
-    LKR = "LKR".freeze
-    LRD = "LRD".freeze
-    LSL = "LSL".freeze
-    LTL = "LTL".freeze
-    LYD = "LYD".freeze
-    MAD = "MAD".freeze
-    MDL = "MDL".freeze
-    MGA = "MGA".freeze
-    MKD = "MKD".freeze
-    MMK = "MMK".freeze
-    MNT = "MNT".freeze
-    MOP = "MOP".freeze
-    MRU = "MRU".freeze
-    MUR = "MUR".freeze
-    MVR = "MVR".freeze
-    MWK = "MWK".freeze
-    MXN = "MXN".freeze
-    MYR = "MYR".freeze
-    MZN = "MZN".freeze
-    NAD = "NAD".freeze
-    NGN = "NGN".freeze
-    NIO = "NIO".freeze
-    NOK = "NOK".freeze
-    NPR = "NPR".freeze
-    NZD = "NZD".freeze
-    OMR = "OMR".freeze
-    PAB = "PAB".freeze
-    PEN = "PEN".freeze
-    PGK = "PGK".freeze
-    PHP = "PHP".freeze
-    PKR = "PKR".freeze
-    PLN = "PLN".freeze
-    PYG = "PYG".freeze
-    QAR = "QAR".freeze
-    RON = "RON".freeze
-    RSD = "RSD".freeze
-    RUB = "RUB".freeze
-    RWF = "RWF".freeze
-    SAR = "SAR".freeze
-    SBD = "SBD".freeze
-    SCR = "SCR".freeze
-    SDG = "SDG".freeze
-    SEK = "SEK".freeze
-    SGD = "SGD".freeze
-    SHP = "SHP".freeze
-    SLL = "SLL".freeze
-    SOS = "SOS".freeze
-    SPL = "SPL".freeze
-    SRD = "SRD".freeze
-    STN = "STN".freeze
-    SVC = "SVC".freeze
-    SYP = "SYP".freeze
-    SZL = "SZL".freeze
-    THB = "THB".freeze
-    TJS = "TJS".freeze
-    TMT = "TMT".freeze
-    TND = "TND".freeze
-    TOP = "TOP".freeze
-    TRY_LIRA = "TRY".freeze
-    TTD = "TTD".freeze
-    TVD = "TVD".freeze
-    TWD = "TWD".freeze
-    TZS = "TZS".freeze
-    UAH = "UAH".freeze
-    UGX = "UGX".freeze
-    USD = "USD".freeze
-    UYU = "UYU".freeze
-    UZS = "UZS".freeze
-    VEF = "VEF".freeze
-    VND = "VND".freeze
-    VUV = "VUV".freeze
-    WST = "WST".freeze
-    XAF = "XAF".freeze
-    XCD = "XCD".freeze
-    XDR = "XDR".freeze
-    XOF = "XOF".freeze
-    XPF = "XPF".freeze
-    YER = "YER".freeze
-    ZAR = "ZAR".freeze
-    ZMW = "ZMW".freeze
-    ZMK = "ZMK".freeze
-    ZWD = "ZWD".freeze
-    EMPTY_CURRENCY = "".freeze
+    AED ||= "AED".freeze
+    AFN ||= "AFN".freeze
+    ALL ||= "ALL".freeze
+    AMD ||= "AMD".freeze
+    ANG ||= "ANG".freeze
+    AOA ||= "AOA".freeze
+    ARS ||= "ARS".freeze
+    AUD ||= "AUD".freeze
+    AWG ||= "AWG".freeze
+    AZN ||= "AZN".freeze
+    BAM ||= "BAM".freeze
+    BBD ||= "BBD".freeze
+    BDT ||= "BDT".freeze
+    BGN ||= "BGN".freeze
+    BHD ||= "BHD".freeze
+    BIF ||= "BIF".freeze
+    BMD ||= "BMD".freeze
+    BND ||= "BND".freeze
+    BOB ||= "BOB".freeze
+    BRL ||= "BRL".freeze
+    BSD ||= "BSD".freeze
+    BTN ||= "BTN".freeze
+    BWP ||= "BWP".freeze
+    BYN ||= "BYN".freeze
+    BYR ||= "BYR".freeze
+    BZD ||= "BZD".freeze
+    CAD ||= "CAD".freeze
+    CDF ||= "CDF".freeze
+    CHF ||= "CHF".freeze
+    CLP ||= "CLP".freeze
+    CNY ||= "CNY".freeze
+    COP ||= "COP".freeze
+    CRC ||= "CRC".freeze
+    CUC ||= "CUC".freeze
+    CUP ||= "CUP".freeze
+    CVE ||= "CVE".freeze
+    CZK ||= "CZK".freeze
+    DJF ||= "DJF".freeze
+    DKK ||= "DKK".freeze
+    DOP ||= "DOP".freeze
+    DZD ||= "DZD".freeze
+    EGP ||= "EGP".freeze
+    ERN ||= "ERN".freeze
+    ETB ||= "ETB".freeze
+    EUR ||= "EUR".freeze
+    FJD ||= "FJD".freeze
+    FKP ||= "FKP".freeze
+    GBP ||= "GBP".freeze
+    GEL ||= "GEL".freeze
+    GGP ||= "GGP".freeze
+    GHS ||= "GHS".freeze
+    GIP ||= "GIP".freeze
+    GMD ||= "GMD".freeze
+    GNF ||= "GNF".freeze
+    GTQ ||= "GTQ".freeze
+    GYD ||= "GYD".freeze
+    HKD ||= "HKD".freeze
+    HNL ||= "HNL".freeze
+    HRK ||= "HRK".freeze
+    HTG ||= "HTG".freeze
+    HUF ||= "HUF".freeze
+    IDR ||= "IDR".freeze
+    ILS ||= "ILS".freeze
+    IMP ||= "IMP".freeze
+    INR ||= "INR".freeze
+    IQD ||= "IQD".freeze
+    IRR ||= "IRR".freeze
+    ISK ||= "ISK".freeze
+    JEP ||= "JEP".freeze
+    JMD ||= "JMD".freeze
+    JOD ||= "JOD".freeze
+    JPY ||= "JPY".freeze
+    KES ||= "KES".freeze
+    KGS ||= "KGS".freeze
+    KHR ||= "KHR".freeze
+    KMF ||= "KMF".freeze
+    KPW ||= "KPW".freeze
+    KRW ||= "KRW".freeze
+    KWD ||= "KWD".freeze
+    KYD ||= "KYD".freeze
+    KZT ||= "KZT".freeze
+    LAK ||= "LAK".freeze
+    LBP ||= "LBP".freeze
+    LKR ||= "LKR".freeze
+    LRD ||= "LRD".freeze
+    LSL ||= "LSL".freeze
+    LTL ||= "LTL".freeze
+    LYD ||= "LYD".freeze
+    MAD ||= "MAD".freeze
+    MDL ||= "MDL".freeze
+    MGA ||= "MGA".freeze
+    MKD ||= "MKD".freeze
+    MMK ||= "MMK".freeze
+    MNT ||= "MNT".freeze
+    MOP ||= "MOP".freeze
+    MRU ||= "MRU".freeze
+    MUR ||= "MUR".freeze
+    MVR ||= "MVR".freeze
+    MWK ||= "MWK".freeze
+    MXN ||= "MXN".freeze
+    MYR ||= "MYR".freeze
+    MZN ||= "MZN".freeze
+    NAD ||= "NAD".freeze
+    NGN ||= "NGN".freeze
+    NIO ||= "NIO".freeze
+    NOK ||= "NOK".freeze
+    NPR ||= "NPR".freeze
+    NZD ||= "NZD".freeze
+    OMR ||= "OMR".freeze
+    PAB ||= "PAB".freeze
+    PEN ||= "PEN".freeze
+    PGK ||= "PGK".freeze
+    PHP ||= "PHP".freeze
+    PKR ||= "PKR".freeze
+    PLN ||= "PLN".freeze
+    PYG ||= "PYG".freeze
+    QAR ||= "QAR".freeze
+    RON ||= "RON".freeze
+    RSD ||= "RSD".freeze
+    RUB ||= "RUB".freeze
+    RWF ||= "RWF".freeze
+    SAR ||= "SAR".freeze
+    SBD ||= "SBD".freeze
+    SCR ||= "SCR".freeze
+    SDG ||= "SDG".freeze
+    SEK ||= "SEK".freeze
+    SGD ||= "SGD".freeze
+    SHP ||= "SHP".freeze
+    SLL ||= "SLL".freeze
+    SOS ||= "SOS".freeze
+    SPL ||= "SPL".freeze
+    SRD ||= "SRD".freeze
+    STN ||= "STN".freeze
+    SVC ||= "SVC".freeze
+    SYP ||= "SYP".freeze
+    SZL ||= "SZL".freeze
+    THB ||= "THB".freeze
+    TJS ||= "TJS".freeze
+    TMT ||= "TMT".freeze
+    TND ||= "TND".freeze
+    TOP ||= "TOP".freeze
+    TRY_LIRA ||= "TRY".freeze
+    TTD ||= "TTD".freeze
+    TVD ||= "TVD".freeze
+    TWD ||= "TWD".freeze
+    TZS ||= "TZS".freeze
+    UAH ||= "UAH".freeze
+    UGX ||= "UGX".freeze
+    USD ||= "USD".freeze
+    UYU ||= "UYU".freeze
+    UZS ||= "UZS".freeze
+    VEF ||= "VEF".freeze
+    VND ||= "VND".freeze
+    VUV ||= "VUV".freeze
+    WST ||= "WST".freeze
+    XAF ||= "XAF".freeze
+    XCD ||= "XCD".freeze
+    XDR ||= "XDR".freeze
+    XOF ||= "XOF".freeze
+    XPF ||= "XPF".freeze
+    YER ||= "YER".freeze
+    ZAR ||= "ZAR".freeze
+    ZMW ||= "ZMW".freeze
+    ZMK ||= "ZMK".freeze
+    ZWD ||= "ZWD".freeze
+    EMPTY_CURRENCY ||= "".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/accounting/employee.rb b/lib/xero-ruby/models/accounting/employee.rb
index 2ed7a691..a7cd9cfb 100644
--- a/lib/xero-ruby/models/accounting/employee.rb
+++ b/lib/xero-ruby/models/accounting/employee.rb
@@ -21,10 +21,10 @@ class Employee
     
     # Current status of an employee – see contact status types
     attr_accessor :status
-    ACTIVE = "ACTIVE".freeze
-    ARCHIVED = "ARCHIVED".freeze
-    GDPRREQUEST = "GDPRREQUEST".freeze
-    DELETED = "DELETED".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    ARCHIVED ||= "ARCHIVED".freeze
+    GDPRREQUEST ||= "GDPRREQUEST".freeze
+    DELETED ||= "DELETED".freeze
     
     # First name of an employee (max length = 255)
     attr_accessor :first_name
diff --git a/lib/xero-ruby/models/accounting/expense_claim.rb b/lib/xero-ruby/models/accounting/expense_claim.rb
index 482e247b..4fa9b262 100644
--- a/lib/xero-ruby/models/accounting/expense_claim.rb
+++ b/lib/xero-ruby/models/accounting/expense_claim.rb
@@ -21,11 +21,11 @@ class ExpenseClaim
     
     # Current status of an expense claim – see status types
     attr_accessor :status
-    SUBMITTED = "SUBMITTED".freeze
-    AUTHORISED = "AUTHORISED".freeze
-    PAID = "PAID".freeze
-    VOIDED = "VOIDED".freeze
-    DELETED = "DELETED".freeze
+    SUBMITTED ||= "SUBMITTED".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    PAID ||= "PAID".freeze
+    VOIDED ||= "VOIDED".freeze
+    DELETED ||= "DELETED".freeze
     
     # See Payments
     attr_accessor :payments
diff --git a/lib/xero-ruby/models/accounting/external_link.rb b/lib/xero-ruby/models/accounting/external_link.rb
index 1e02ff21..0ebe3911 100644
--- a/lib/xero-ruby/models/accounting/external_link.rb
+++ b/lib/xero-ruby/models/accounting/external_link.rb
@@ -18,11 +18,11 @@ module XeroRuby::Accounting
   class ExternalLink
     # See External link types
     attr_accessor :link_type
-    FACEBOOK = "Facebook".freeze
-    GOOGLE_PLUS = "GooglePlus".freeze
-    LINKED_IN = "LinkedIn".freeze
-    TWITTER = "Twitter".freeze
-    WEBSITE = "Website".freeze
+    FACEBOOK ||= "Facebook".freeze
+    GOOGLE_PLUS ||= "GooglePlus".freeze
+    LINKED_IN ||= "LinkedIn".freeze
+    TWITTER ||= "Twitter".freeze
+    WEBSITE ||= "Website".freeze
     
     # URL for service e.g. http://twitter.com/xeroapi
     attr_accessor :url
diff --git a/lib/xero-ruby/models/accounting/invoice.rb b/lib/xero-ruby/models/accounting/invoice.rb
index 78073933..0c46aa69 100644
--- a/lib/xero-ruby/models/accounting/invoice.rb
+++ b/lib/xero-ruby/models/accounting/invoice.rb
@@ -18,14 +18,14 @@ module XeroRuby::Accounting
   class Invoice
     # See Invoice Types
     attr_accessor :type
-    ACCPAY = "ACCPAY".freeze
-    ACCPAYCREDIT = "ACCPAYCREDIT".freeze
-    APOVERPAYMENT = "APOVERPAYMENT".freeze
-    APPREPAYMENT = "APPREPAYMENT".freeze
-    ACCREC = "ACCREC".freeze
-    ACCRECCREDIT = "ACCRECCREDIT".freeze
-    AROVERPAYMENT = "AROVERPAYMENT".freeze
-    ARPREPAYMENT = "ARPREPAYMENT".freeze
+    ACCPAY ||= "ACCPAY".freeze
+    ACCPAYCREDIT ||= "ACCPAYCREDIT".freeze
+    APOVERPAYMENT ||= "APOVERPAYMENT".freeze
+    APPREPAYMENT ||= "APPREPAYMENT".freeze
+    ACCREC ||= "ACCREC".freeze
+    ACCRECCREDIT ||= "ACCRECCREDIT".freeze
+    AROVERPAYMENT ||= "AROVERPAYMENT".freeze
+    ARPREPAYMENT ||= "ARPREPAYMENT".freeze
     
 
     attr_accessor :contact
@@ -62,12 +62,12 @@ class Invoice
     
     # See Invoice Status Codes
     attr_accessor :status
-    DRAFT = "DRAFT".freeze
-    SUBMITTED = "SUBMITTED".freeze
-    DELETED = "DELETED".freeze
-    AUTHORISED = "AUTHORISED".freeze
-    PAID = "PAID".freeze
-    VOIDED = "VOIDED".freeze
+    DRAFT ||= "DRAFT".freeze
+    SUBMITTED ||= "SUBMITTED".freeze
+    DELETED ||= "DELETED".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    PAID ||= "PAID".freeze
+    VOIDED ||= "VOIDED".freeze
     
     # Boolean to set whether the invoice in the Xero app should be marked as “sent”. This can be set only on invoices that have been approved
     attr_accessor :sent_to_contact
diff --git a/lib/xero-ruby/models/accounting/journal.rb b/lib/xero-ruby/models/accounting/journal.rb
index f51157ac..c426c441 100644
--- a/lib/xero-ruby/models/accounting/journal.rb
+++ b/lib/xero-ruby/models/accounting/journal.rb
@@ -36,31 +36,31 @@ class Journal
     
     # The journal source type. The type of transaction that created the journal
     attr_accessor :source_type
-    ACCREC = "ACCREC".freeze
-    ACCPAY = "ACCPAY".freeze
-    ACCRECCREDIT = "ACCRECCREDIT".freeze
-    ACCPAYCREDIT = "ACCPAYCREDIT".freeze
-    ACCRECPAYMENT = "ACCRECPAYMENT".freeze
-    ACCPAYPAYMENT = "ACCPAYPAYMENT".freeze
-    ARCREDITPAYMENT = "ARCREDITPAYMENT".freeze
-    APCREDITPAYMENT = "APCREDITPAYMENT".freeze
-    CASHREC = "CASHREC".freeze
-    CASHPAID = "CASHPAID".freeze
-    TRANSFER = "TRANSFER".freeze
-    ARPREPAYMENT = "ARPREPAYMENT".freeze
-    APPREPAYMENT = "APPREPAYMENT".freeze
-    AROVERPAYMENT = "AROVERPAYMENT".freeze
-    APOVERPAYMENT = "APOVERPAYMENT".freeze
-    EXPCLAIM = "EXPCLAIM".freeze
-    EXPPAYMENT = "EXPPAYMENT".freeze
-    MANJOURNAL = "MANJOURNAL".freeze
-    PAYSLIP = "PAYSLIP".freeze
-    WAGEPAYABLE = "WAGEPAYABLE".freeze
-    INTEGRATEDPAYROLLPE = "INTEGRATEDPAYROLLPE".freeze
-    INTEGRATEDPAYROLLPT = "INTEGRATEDPAYROLLPT".freeze
-    EXTERNALSPENDMONEY = "EXTERNALSPENDMONEY".freeze
-    INTEGRATEDPAYROLLPTPAYMENT = "INTEGRATEDPAYROLLPTPAYMENT".freeze
-    INTEGRATEDPAYROLLCN = "INTEGRATEDPAYROLLCN".freeze
+    ACCREC ||= "ACCREC".freeze
+    ACCPAY ||= "ACCPAY".freeze
+    ACCRECCREDIT ||= "ACCRECCREDIT".freeze
+    ACCPAYCREDIT ||= "ACCPAYCREDIT".freeze
+    ACCRECPAYMENT ||= "ACCRECPAYMENT".freeze
+    ACCPAYPAYMENT ||= "ACCPAYPAYMENT".freeze
+    ARCREDITPAYMENT ||= "ARCREDITPAYMENT".freeze
+    APCREDITPAYMENT ||= "APCREDITPAYMENT".freeze
+    CASHREC ||= "CASHREC".freeze
+    CASHPAID ||= "CASHPAID".freeze
+    TRANSFER ||= "TRANSFER".freeze
+    ARPREPAYMENT ||= "ARPREPAYMENT".freeze
+    APPREPAYMENT ||= "APPREPAYMENT".freeze
+    AROVERPAYMENT ||= "AROVERPAYMENT".freeze
+    APOVERPAYMENT ||= "APOVERPAYMENT".freeze
+    EXPCLAIM ||= "EXPCLAIM".freeze
+    EXPPAYMENT ||= "EXPPAYMENT".freeze
+    MANJOURNAL ||= "MANJOURNAL".freeze
+    PAYSLIP ||= "PAYSLIP".freeze
+    WAGEPAYABLE ||= "WAGEPAYABLE".freeze
+    INTEGRATEDPAYROLLPE ||= "INTEGRATEDPAYROLLPE".freeze
+    INTEGRATEDPAYROLLPT ||= "INTEGRATEDPAYROLLPT".freeze
+    EXTERNALSPENDMONEY ||= "EXTERNALSPENDMONEY".freeze
+    INTEGRATEDPAYROLLPTPAYMENT ||= "INTEGRATEDPAYROLLPTPAYMENT".freeze
+    INTEGRATEDPAYROLLCN ||= "INTEGRATEDPAYROLLCN".freeze
     
     # See JournalLines
     attr_accessor :journal_lines
diff --git a/lib/xero-ruby/models/accounting/line_amount_types.rb b/lib/xero-ruby/models/accounting/line_amount_types.rb
index eba8724c..0a85bc72 100644
--- a/lib/xero-ruby/models/accounting/line_amount_types.rb
+++ b/lib/xero-ruby/models/accounting/line_amount_types.rb
@@ -14,9 +14,9 @@
 
 module XeroRuby::Accounting
   class LineAmountTypes
-    EXCLUSIVE = "Exclusive".freeze
-    INCLUSIVE = "Inclusive".freeze
-    NO_TAX = "NoTax".freeze
+    EXCLUSIVE ||= "Exclusive".freeze
+    INCLUSIVE ||= "Inclusive".freeze
+    NO_TAX ||= "NoTax".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/accounting/linked_transaction.rb b/lib/xero-ruby/models/accounting/linked_transaction.rb
index 37f43232..890d465f 100644
--- a/lib/xero-ruby/models/accounting/linked_transaction.rb
+++ b/lib/xero-ruby/models/accounting/linked_transaction.rb
@@ -36,23 +36,23 @@ class LinkedTransaction
     
     # Filter by the combination of ContactID and Status. Get all the linked transactions that have been assigned to a particular customer and have a particular status e.g. GET /LinkedTransactions?ContactID=4bb34b03-3378-4bb2-a0ed-6345abf3224e&Status=APPROVED.
     attr_accessor :status
-    APPROVED = "APPROVED".freeze
-    DRAFT = "DRAFT".freeze
-    ONDRAFT = "ONDRAFT".freeze
-    BILLED = "BILLED".freeze
-    VOIDED = "VOIDED".freeze
+    APPROVED ||= "APPROVED".freeze
+    DRAFT ||= "DRAFT".freeze
+    ONDRAFT ||= "ONDRAFT".freeze
+    BILLED ||= "BILLED".freeze
+    VOIDED ||= "VOIDED".freeze
     
     # This will always be BILLABLEEXPENSE. More types may be added in future.
     attr_accessor :type
-    BILLABLEEXPENSE = "BILLABLEEXPENSE".freeze
+    BILLABLEEXPENSE ||= "BILLABLEEXPENSE".freeze
     
     # The last modified date in UTC format
     attr_accessor :updated_date_utc
     
     # The Type of the source tranasction. This will be ACCPAY if the linked transaction was created from an invoice and SPEND if it was created from a bank transaction.
     attr_accessor :source_transaction_type_code
-    ACCPAY = "ACCPAY".freeze
-    SPEND = "SPEND".freeze
+    ACCPAY ||= "ACCPAY".freeze
+    SPEND ||= "SPEND".freeze
     
     # Displays array of validation error messages from the API
     attr_accessor :validation_errors
diff --git a/lib/xero-ruby/models/accounting/manual_journal.rb b/lib/xero-ruby/models/accounting/manual_journal.rb
index 674ca823..2becb10d 100644
--- a/lib/xero-ruby/models/accounting/manual_journal.rb
+++ b/lib/xero-ruby/models/accounting/manual_journal.rb
@@ -30,11 +30,11 @@ class ManualJournal
     
     # See Manual Journal Status Codes
     attr_accessor :status
-    DRAFT = "DRAFT".freeze
-    POSTED = "POSTED".freeze
-    DELETED = "DELETED".freeze
-    VOIDED = "VOIDED".freeze
-    ARCHIVED = "ARCHIVED".freeze
+    DRAFT ||= "DRAFT".freeze
+    POSTED ||= "POSTED".freeze
+    DELETED ||= "DELETED".freeze
+    VOIDED ||= "VOIDED".freeze
+    ARCHIVED ||= "ARCHIVED".freeze
     
     # Url link to a source document – shown as “Go to [appName]” in the Xero app
     attr_accessor :url
diff --git a/lib/xero-ruby/models/accounting/organisation.rb b/lib/xero-ruby/models/accounting/organisation.rb
index f38c9e3a..025ce54a 100644
--- a/lib/xero-ruby/models/accounting/organisation.rb
+++ b/lib/xero-ruby/models/accounting/organisation.rb
@@ -33,31 +33,31 @@ class Organisation
     
     # See Version Types
     attr_accessor :version
-    AU = "AU".freeze
-    NZ = "NZ".freeze
-    GLOBAL = "GLOBAL".freeze
-    UK = "UK".freeze
-    US = "US".freeze
-    AUONRAMP = "AUONRAMP".freeze
-    NZONRAMP = "NZONRAMP".freeze
-    GLOBALONRAMP = "GLOBALONRAMP".freeze
-    UKONRAMP = "UKONRAMP".freeze
-    USONRAMP = "USONRAMP".freeze
+    AU ||= "AU".freeze
+    NZ ||= "NZ".freeze
+    GLOBAL ||= "GLOBAL".freeze
+    UK ||= "UK".freeze
+    US ||= "US".freeze
+    AUONRAMP ||= "AUONRAMP".freeze
+    NZONRAMP ||= "NZONRAMP".freeze
+    GLOBALONRAMP ||= "GLOBALONRAMP".freeze
+    UKONRAMP ||= "UKONRAMP".freeze
+    USONRAMP ||= "USONRAMP".freeze
     
     # Organisation Type
     attr_accessor :organisation_type
-    ACCOUNTING_PRACTICE = "ACCOUNTING_PRACTICE".freeze
-    COMPANY = "COMPANY".freeze
-    CHARITY = "CHARITY".freeze
-    CLUB_OR_SOCIETY = "CLUB_OR_SOCIETY".freeze
-    LOOK_THROUGH_COMPANY = "LOOK_THROUGH_COMPANY".freeze
-    NOT_FOR_PROFIT = "NOT_FOR_PROFIT".freeze
-    PARTNERSHIP = "PARTNERSHIP".freeze
-    S_CORPORATION = "S_CORPORATION".freeze
-    SELF_MANAGED_SUPERANNUATION_FUND = "SELF_MANAGED_SUPERANNUATION_FUND".freeze
-    SOLE_TRADER = "SOLE_TRADER".freeze
-    SUPERANNUATION_FUND = "SUPERANNUATION_FUND".freeze
-    TRUST = "TRUST".freeze
+    ACCOUNTING_PRACTICE ||= "ACCOUNTING_PRACTICE".freeze
+    COMPANY ||= "COMPANY".freeze
+    CHARITY ||= "CHARITY".freeze
+    CLUB_OR_SOCIETY ||= "CLUB_OR_SOCIETY".freeze
+    LOOK_THROUGH_COMPANY ||= "LOOK_THROUGH_COMPANY".freeze
+    NOT_FOR_PROFIT ||= "NOT_FOR_PROFIT".freeze
+    PARTNERSHIP ||= "PARTNERSHIP".freeze
+    S_CORPORATION ||= "S_CORPORATION".freeze
+    SELF_MANAGED_SUPERANNUATION_FUND ||= "SELF_MANAGED_SUPERANNUATION_FUND".freeze
+    SOLE_TRADER ||= "SOLE_TRADER".freeze
+    SUPERANNUATION_FUND ||= "SUPERANNUATION_FUND".freeze
+    TRUST ||= "TRUST".freeze
     
 
     attr_accessor :base_currency
@@ -88,32 +88,32 @@ class Organisation
     
     # The accounting basis used for tax returns. See Sales Tax Basis
     attr_accessor :sales_tax_basis
-    PAYMENTS = "PAYMENTS".freeze
-    INVOICE = "INVOICE".freeze
-    NONE = "NONE".freeze
-    CASH = "CASH".freeze
-    ACCRUAL = "ACCRUAL".freeze
-    FLATRATECASH = "FLATRATECASH".freeze
-    FLATRATEACCRUAL = "FLATRATEACCRUAL".freeze
-    ACCRUALS = "ACCRUALS".freeze
+    PAYMENTS ||= "PAYMENTS".freeze
+    INVOICE ||= "INVOICE".freeze
+    NONE ||= "NONE".freeze
+    CASH ||= "CASH".freeze
+    ACCRUAL ||= "ACCRUAL".freeze
+    FLATRATECASH ||= "FLATRATECASH".freeze
+    FLATRATEACCRUAL ||= "FLATRATEACCRUAL".freeze
+    ACCRUALS ||= "ACCRUALS".freeze
     
     # The frequency with which tax returns are processed. See Sales Tax Period
     attr_accessor :sales_tax_period
-    MONTHLY = "MONTHLY".freeze
-    QUARTERLY1 = "QUARTERLY1".freeze
-    QUARTERLY2 = "QUARTERLY2".freeze
-    QUARTERLY3 = "QUARTERLY3".freeze
-    ANNUALLY = "ANNUALLY".freeze
-    ONEMONTHS = "ONEMONTHS".freeze
-    TWOMONTHS = "TWOMONTHS".freeze
-    SIXMONTHS = "SIXMONTHS".freeze
-    N1_MONTHLY = "1MONTHLY".freeze
-    N2_MONTHLY = "2MONTHLY".freeze
-    N3_MONTHLY = "3MONTHLY".freeze
-    N6_MONTHLY = "6MONTHLY".freeze
-    QUARTERLY = "QUARTERLY".freeze
-    YEARLY = "YEARLY".freeze
-    # NONE = "NONE".freeze
+    MONTHLY ||= "MONTHLY".freeze
+    QUARTERLY1 ||= "QUARTERLY1".freeze
+    QUARTERLY2 ||= "QUARTERLY2".freeze
+    QUARTERLY3 ||= "QUARTERLY3".freeze
+    ANNUALLY ||= "ANNUALLY".freeze
+    ONEMONTHS ||= "ONEMONTHS".freeze
+    TWOMONTHS ||= "TWOMONTHS".freeze
+    SIXMONTHS ||= "SIXMONTHS".freeze
+    N1_MONTHLY ||= "1MONTHLY".freeze
+    N2_MONTHLY ||= "2MONTHLY".freeze
+    N3_MONTHLY ||= "3MONTHLY".freeze
+    N6_MONTHLY ||= "6MONTHLY".freeze
+    QUARTERLY ||= "QUARTERLY".freeze
+    YEARLY ||= "YEARLY".freeze
+    NONE ||= "NONE".freeze
     
     # The default for LineAmountTypes on sales transactions
     attr_accessor :default_sales_tax
@@ -135,40 +135,40 @@ class Organisation
     
     # Organisation Entity Type
     attr_accessor :organisation_entity_type
-    # ACCOUNTING_PRACTICE = "ACCOUNTING_PRACTICE".freeze
-    # COMPANY = "COMPANY".freeze
-    # CHARITY = "CHARITY".freeze
-    # CLUB_OR_SOCIETY = "CLUB_OR_SOCIETY".freeze
-    # LOOK_THROUGH_COMPANY = "LOOK_THROUGH_COMPANY".freeze
-    # NOT_FOR_PROFIT = "NOT_FOR_PROFIT".freeze
-    # PARTNERSHIP = "PARTNERSHIP".freeze
-    # S_CORPORATION = "S_CORPORATION".freeze
-    # SELF_MANAGED_SUPERANNUATION_FUND = "SELF_MANAGED_SUPERANNUATION_FUND".freeze
-    # SOLE_TRADER = "SOLE_TRADER".freeze
-    # SUPERANNUATION_FUND = "SUPERANNUATION_FUND".freeze
-    # TRUST = "TRUST".freeze
+    ACCOUNTING_PRACTICE ||= "ACCOUNTING_PRACTICE".freeze
+    COMPANY ||= "COMPANY".freeze
+    CHARITY ||= "CHARITY".freeze
+    CLUB_OR_SOCIETY ||= "CLUB_OR_SOCIETY".freeze
+    LOOK_THROUGH_COMPANY ||= "LOOK_THROUGH_COMPANY".freeze
+    NOT_FOR_PROFIT ||= "NOT_FOR_PROFIT".freeze
+    PARTNERSHIP ||= "PARTNERSHIP".freeze
+    S_CORPORATION ||= "S_CORPORATION".freeze
+    SELF_MANAGED_SUPERANNUATION_FUND ||= "SELF_MANAGED_SUPERANNUATION_FUND".freeze
+    SOLE_TRADER ||= "SOLE_TRADER".freeze
+    SUPERANNUATION_FUND ||= "SUPERANNUATION_FUND".freeze
+    TRUST ||= "TRUST".freeze
     
     # A unique identifier for the organisation. Potential uses.
     attr_accessor :short_code
     
     # Organisation Classes describe which plan the Xero organisation is on (e.g. DEMO, TRIAL, PREMIUM)
     attr_accessor :_class
-    DEMO = "DEMO".freeze
-    TRIAL = "TRIAL".freeze
-    STARTER = "STARTER".freeze
-    STANDARD = "STANDARD".freeze
-    PREMIUM = "PREMIUM".freeze
-    PREMIUM_20 = "PREMIUM_20".freeze
-    PREMIUM_50 = "PREMIUM_50".freeze
-    PREMIUM_100 = "PREMIUM_100".freeze
-    LEDGER = "LEDGER".freeze
-    GST_CASHBOOK = "GST_CASHBOOK".freeze
-    NON_GST_CASHBOOK = "NON_GST_CASHBOOK".freeze
+    DEMO ||= "DEMO".freeze
+    TRIAL ||= "TRIAL".freeze
+    STARTER ||= "STARTER".freeze
+    STANDARD ||= "STANDARD".freeze
+    PREMIUM ||= "PREMIUM".freeze
+    PREMIUM_20 ||= "PREMIUM_20".freeze
+    PREMIUM_50 ||= "PREMIUM_50".freeze
+    PREMIUM_100 ||= "PREMIUM_100".freeze
+    LEDGER ||= "LEDGER".freeze
+    GST_CASHBOOK ||= "GST_CASHBOOK".freeze
+    NON_GST_CASHBOOK ||= "NON_GST_CASHBOOK".freeze
     
     # BUSINESS or PARTNER. Partner edition organisations are sold exclusively through accounting partners and have restricted functionality (e.g. no access to invoicing)
     attr_accessor :edition
-    BUSINESS = "BUSINESS".freeze
-    PARTNER = "PARTNER".freeze
+    BUSINESS ||= "BUSINESS".freeze
+    PARTNER ||= "PARTNER".freeze
     
     # Description of business type as defined in Organisation settings
     attr_accessor :line_of_business
diff --git a/lib/xero-ruby/models/accounting/overpayment.rb b/lib/xero-ruby/models/accounting/overpayment.rb
index bc33dc29..378b7abd 100644
--- a/lib/xero-ruby/models/accounting/overpayment.rb
+++ b/lib/xero-ruby/models/accounting/overpayment.rb
@@ -18,9 +18,9 @@ module XeroRuby::Accounting
   class Overpayment
     # See Overpayment Types
     attr_accessor :type
-    RECEIVE_OVERPAYMENT = "RECEIVE-OVERPAYMENT".freeze
-    SPEND_OVERPAYMENT = "SPEND-OVERPAYMENT".freeze
-    AROVERPAYMENT = "AROVERPAYMENT".freeze
+    RECEIVE_OVERPAYMENT ||= "RECEIVE-OVERPAYMENT".freeze
+    SPEND_OVERPAYMENT ||= "SPEND-OVERPAYMENT".freeze
+    AROVERPAYMENT ||= "AROVERPAYMENT".freeze
     
 
     attr_accessor :contact
@@ -30,9 +30,9 @@ class Overpayment
     
     # See Overpayment Status Codes
     attr_accessor :status
-    AUTHORISED = "AUTHORISED".freeze
-    PAID = "PAID".freeze
-    VOIDED = "VOIDED".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    PAID ||= "PAID".freeze
+    VOIDED ||= "VOIDED".freeze
     
 
     attr_accessor :line_amount_types
diff --git a/lib/xero-ruby/models/accounting/payment.rb b/lib/xero-ruby/models/accounting/payment.rb
index 4edd9f90..4692ea00 100644
--- a/lib/xero-ruby/models/accounting/payment.rb
+++ b/lib/xero-ruby/models/accounting/payment.rb
@@ -60,19 +60,19 @@ class Payment
     
     # The status of the payment.
     attr_accessor :status
-    AUTHORISED = "AUTHORISED".freeze
-    DELETED = "DELETED".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    DELETED ||= "DELETED".freeze
     
     # See Payment Types.
     attr_accessor :payment_type
-    ACCRECPAYMENT = "ACCRECPAYMENT".freeze
-    ACCPAYPAYMENT = "ACCPAYPAYMENT".freeze
-    ARCREDITPAYMENT = "ARCREDITPAYMENT".freeze
-    APCREDITPAYMENT = "APCREDITPAYMENT".freeze
-    AROVERPAYMENTPAYMENT = "AROVERPAYMENTPAYMENT".freeze
-    ARPREPAYMENTPAYMENT = "ARPREPAYMENTPAYMENT".freeze
-    APPREPAYMENTPAYMENT = "APPREPAYMENTPAYMENT".freeze
-    APOVERPAYMENTPAYMENT = "APOVERPAYMENTPAYMENT".freeze
+    ACCRECPAYMENT ||= "ACCRECPAYMENT".freeze
+    ACCPAYPAYMENT ||= "ACCPAYPAYMENT".freeze
+    ARCREDITPAYMENT ||= "ARCREDITPAYMENT".freeze
+    APCREDITPAYMENT ||= "APCREDITPAYMENT".freeze
+    AROVERPAYMENTPAYMENT ||= "AROVERPAYMENTPAYMENT".freeze
+    ARPREPAYMENTPAYMENT ||= "ARPREPAYMENTPAYMENT".freeze
+    APPREPAYMENTPAYMENT ||= "APPREPAYMENTPAYMENT".freeze
+    APOVERPAYMENTPAYMENT ||= "APOVERPAYMENTPAYMENT".freeze
     
     # UTC timestamp of last update to the payment
     attr_accessor :updated_date_utc
diff --git a/lib/xero-ruby/models/accounting/payment_term_type.rb b/lib/xero-ruby/models/accounting/payment_term_type.rb
index ea29affe..a2606af5 100644
--- a/lib/xero-ruby/models/accounting/payment_term_type.rb
+++ b/lib/xero-ruby/models/accounting/payment_term_type.rb
@@ -14,10 +14,10 @@
 
 module XeroRuby::Accounting
   class PaymentTermType
-    DAYSAFTERBILLDATE = "DAYSAFTERBILLDATE".freeze
-    DAYSAFTERBILLMONTH = "DAYSAFTERBILLMONTH".freeze
-    OFCURRENTMONTH = "OFCURRENTMONTH".freeze
-    OFFOLLOWINGMONTH = "OFFOLLOWINGMONTH".freeze
+    DAYSAFTERBILLDATE ||= "DAYSAFTERBILLDATE".freeze
+    DAYSAFTERBILLMONTH ||= "DAYSAFTERBILLMONTH".freeze
+    OFCURRENTMONTH ||= "OFCURRENTMONTH".freeze
+    OFFOLLOWINGMONTH ||= "OFFOLLOWINGMONTH".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/accounting/phone.rb b/lib/xero-ruby/models/accounting/phone.rb
index b3277995..45557efd 100644
--- a/lib/xero-ruby/models/accounting/phone.rb
+++ b/lib/xero-ruby/models/accounting/phone.rb
@@ -18,11 +18,11 @@ module XeroRuby::Accounting
   class Phone
 
     attr_accessor :phone_type
-    DEFAULT = "DEFAULT".freeze
-    DDI = "DDI".freeze
-    MOBILE = "MOBILE".freeze
-    FAX = "FAX".freeze
-    OFFICE = "OFFICE".freeze
+    DEFAULT ||= "DEFAULT".freeze
+    DDI ||= "DDI".freeze
+    MOBILE ||= "MOBILE".freeze
+    FAX ||= "FAX".freeze
+    OFFICE ||= "OFFICE".freeze
     
     # max length = 50
     attr_accessor :phone_number
diff --git a/lib/xero-ruby/models/accounting/prepayment.rb b/lib/xero-ruby/models/accounting/prepayment.rb
index 5cf7025a..f8e3c30a 100644
--- a/lib/xero-ruby/models/accounting/prepayment.rb
+++ b/lib/xero-ruby/models/accounting/prepayment.rb
@@ -18,10 +18,10 @@ module XeroRuby::Accounting
   class Prepayment
     # See Prepayment Types
     attr_accessor :type
-    RECEIVE_PREPAYMENT = "RECEIVE-PREPAYMENT".freeze
-    SPEND_PREPAYMENT = "SPEND-PREPAYMENT".freeze
-    ARPREPAYMENT = "ARPREPAYMENT".freeze
-    APPREPAYMENT = "APPREPAYMENT".freeze
+    RECEIVE_PREPAYMENT ||= "RECEIVE-PREPAYMENT".freeze
+    SPEND_PREPAYMENT ||= "SPEND-PREPAYMENT".freeze
+    ARPREPAYMENT ||= "ARPREPAYMENT".freeze
+    APPREPAYMENT ||= "APPREPAYMENT".freeze
     
 
     attr_accessor :contact
@@ -31,9 +31,9 @@ class Prepayment
     
     # See Prepayment Status Codes
     attr_accessor :status
-    AUTHORISED = "AUTHORISED".freeze
-    PAID = "PAID".freeze
-    VOIDED = "VOIDED".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    PAID ||= "PAID".freeze
+    VOIDED ||= "VOIDED".freeze
     
 
     attr_accessor :line_amount_types
diff --git a/lib/xero-ruby/models/accounting/purchase_order.rb b/lib/xero-ruby/models/accounting/purchase_order.rb
index 1d36a690..404654b7 100644
--- a/lib/xero-ruby/models/accounting/purchase_order.rb
+++ b/lib/xero-ruby/models/accounting/purchase_order.rb
@@ -45,11 +45,11 @@ class PurchaseOrder
     
     # See Purchase Order Status Codes
     attr_accessor :status
-    DRAFT = "DRAFT".freeze
-    SUBMITTED = "SUBMITTED".freeze
-    AUTHORISED = "AUTHORISED".freeze
-    BILLED = "BILLED".freeze
-    DELETED = "DELETED".freeze
+    DRAFT ||= "DRAFT".freeze
+    SUBMITTED ||= "SUBMITTED".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    BILLED ||= "BILLED".freeze
+    DELETED ||= "DELETED".freeze
     
     # Boolean to set whether the purchase order should be marked as “sent”. This can be set only on purchase orders that have been approved or billed
     attr_accessor :sent_to_contact
diff --git a/lib/xero-ruby/models/accounting/quote_line_amount_types.rb b/lib/xero-ruby/models/accounting/quote_line_amount_types.rb
index 1d5a18c1..9d56e9c8 100644
--- a/lib/xero-ruby/models/accounting/quote_line_amount_types.rb
+++ b/lib/xero-ruby/models/accounting/quote_line_amount_types.rb
@@ -14,9 +14,9 @@
 
 module XeroRuby::Accounting
   class QuoteLineAmountTypes
-    EXCLUSIVE = "EXCLUSIVE".freeze
-    INCLUSIVE = "INCLUSIVE".freeze
-    NOTAX = "NOTAX".freeze
+    EXCLUSIVE ||= "EXCLUSIVE".freeze
+    INCLUSIVE ||= "INCLUSIVE".freeze
+    NOTAX ||= "NOTAX".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/accounting/quote_status_codes.rb b/lib/xero-ruby/models/accounting/quote_status_codes.rb
index 6150840c..0cee3956 100644
--- a/lib/xero-ruby/models/accounting/quote_status_codes.rb
+++ b/lib/xero-ruby/models/accounting/quote_status_codes.rb
@@ -14,12 +14,12 @@
 
 module XeroRuby::Accounting
   class QuoteStatusCodes
-    DRAFT = "DRAFT".freeze
-    SENT = "SENT".freeze
-    DECLINED = "DECLINED".freeze
-    ACCEPTED = "ACCEPTED".freeze
-    INVOICED = "INVOICED".freeze
-    DELETED = "DELETED".freeze
+    DRAFT ||= "DRAFT".freeze
+    SENT ||= "SENT".freeze
+    DECLINED ||= "DECLINED".freeze
+    ACCEPTED ||= "ACCEPTED".freeze
+    INVOICED ||= "INVOICED".freeze
+    DELETED ||= "DELETED".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/accounting/receipt.rb b/lib/xero-ruby/models/accounting/receipt.rb
index c944f0f2..4a6c19e4 100644
--- a/lib/xero-ruby/models/accounting/receipt.rb
+++ b/lib/xero-ruby/models/accounting/receipt.rb
@@ -48,11 +48,11 @@ class Receipt
     
     # Current status of receipt – see status types
     attr_accessor :status
-    DRAFT = "DRAFT".freeze
-    SUBMITTED = "SUBMITTED".freeze
-    AUTHORISED = "AUTHORISED".freeze
-    DECLINED = "DECLINED".freeze
-    VOIDED = "VOIDED".freeze
+    DRAFT ||= "DRAFT".freeze
+    SUBMITTED ||= "SUBMITTED".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    DECLINED ||= "DECLINED".freeze
+    VOIDED ||= "VOIDED".freeze
     
     # Xero generated sequence number for receipt in current claim for a given user
     attr_accessor :receipt_number
diff --git a/lib/xero-ruby/models/accounting/repeating_invoice.rb b/lib/xero-ruby/models/accounting/repeating_invoice.rb
index fcdf08c6..626de51c 100644
--- a/lib/xero-ruby/models/accounting/repeating_invoice.rb
+++ b/lib/xero-ruby/models/accounting/repeating_invoice.rb
@@ -18,8 +18,8 @@ module XeroRuby::Accounting
   class RepeatingInvoice
     # See Invoice Types
     attr_accessor :type
-    ACCPAY = "ACCPAY".freeze
-    ACCREC = "ACCREC".freeze
+    ACCPAY ||= "ACCPAY".freeze
+    ACCREC ||= "ACCREC".freeze
     
 
     attr_accessor :contact
@@ -44,9 +44,9 @@ class RepeatingInvoice
     
     # One of the following - DRAFT or AUTHORISED – See Invoice Status Codes
     attr_accessor :status
-    DRAFT = "DRAFT".freeze
-    AUTHORISED = "AUTHORISED".freeze
-    DELETED = "DELETED".freeze
+    DRAFT ||= "DRAFT".freeze
+    AUTHORISED ||= "AUTHORISED".freeze
+    DELETED ||= "DELETED".freeze
     
     # Total of invoice excluding taxes
     attr_accessor :sub_total
diff --git a/lib/xero-ruby/models/accounting/report.rb b/lib/xero-ruby/models/accounting/report.rb
index 06676e00..f202fa6a 100644
--- a/lib/xero-ruby/models/accounting/report.rb
+++ b/lib/xero-ruby/models/accounting/report.rb
@@ -21,7 +21,7 @@ class Report
     
     # See Prepayment Types
     attr_accessor :report_type
-    AGED_PAYABLES_BY_CONTACT = "AgedPayablesByContact".freeze
+    AGED_PAYABLES_BY_CONTACT ||= "AgedPayablesByContact".freeze
     
     # See Prepayment Types
     attr_accessor :report_title
diff --git a/lib/xero-ruby/models/accounting/row_type.rb b/lib/xero-ruby/models/accounting/row_type.rb
index 4a2b5cf4..be6966ba 100644
--- a/lib/xero-ruby/models/accounting/row_type.rb
+++ b/lib/xero-ruby/models/accounting/row_type.rb
@@ -14,10 +14,10 @@
 
 module XeroRuby::Accounting
   class RowType
-    HEADER = "Header".freeze
-    SECTION = "Section".freeze
-    ROW = "Row".freeze
-    SUMMARY_ROW = "SummaryRow".freeze
+    HEADER ||= "Header".freeze
+    SECTION ||= "Section".freeze
+    ROW ||= "Row".freeze
+    SUMMARY_ROW ||= "SummaryRow".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/accounting/schedule.rb b/lib/xero-ruby/models/accounting/schedule.rb
index d21a5a5f..e3ae3b76 100644
--- a/lib/xero-ruby/models/accounting/schedule.rb
+++ b/lib/xero-ruby/models/accounting/schedule.rb
@@ -21,20 +21,20 @@ class Schedule
     
     # One of the following - WEEKLY or MONTHLY
     attr_accessor :unit
-    WEEKLY = "WEEKLY".freeze
-    MONTHLY = "MONTHLY".freeze
+    WEEKLY ||= "WEEKLY".freeze
+    MONTHLY ||= "MONTHLY".freeze
     
     # Integer used with due date type e.g 20 (of following month), 31 (of current month)
     attr_accessor :due_date
     
     # the payment terms
     attr_accessor :due_date_type
-    DAYSAFTERBILLDATE = "DAYSAFTERBILLDATE".freeze
-    DAYSAFTERBILLMONTH = "DAYSAFTERBILLMONTH".freeze
-    DAYSAFTERINVOICEDATE = "DAYSAFTERINVOICEDATE".freeze
-    DAYSAFTERINVOICEMONTH = "DAYSAFTERINVOICEMONTH".freeze
-    OFCURRENTMONTH = "OFCURRENTMONTH".freeze
-    OFFOLLOWINGMONTH = "OFFOLLOWINGMONTH".freeze
+    DAYSAFTERBILLDATE ||= "DAYSAFTERBILLDATE".freeze
+    DAYSAFTERBILLMONTH ||= "DAYSAFTERBILLMONTH".freeze
+    DAYSAFTERINVOICEDATE ||= "DAYSAFTERINVOICEDATE".freeze
+    DAYSAFTERINVOICEMONTH ||= "DAYSAFTERINVOICEMONTH".freeze
+    OFCURRENTMONTH ||= "OFCURRENTMONTH".freeze
+    OFFOLLOWINGMONTH ||= "OFFOLLOWINGMONTH".freeze
     
     # Date the first invoice of the current version of the repeating schedule was generated (changes when repeating invoice is edited)
     attr_accessor :start_date
diff --git a/lib/xero-ruby/models/accounting/tax_rate.rb b/lib/xero-ruby/models/accounting/tax_rate.rb
index 6c316220..2b7c94a9 100644
--- a/lib/xero-ruby/models/accounting/tax_rate.rb
+++ b/lib/xero-ruby/models/accounting/tax_rate.rb
@@ -27,87 +27,87 @@ class TaxRate
     
     # See Status Codes
     attr_accessor :status
-    ACTIVE = "ACTIVE".freeze
-    DELETED = "DELETED".freeze
-    ARCHIVED = "ARCHIVED".freeze
-    PENDING = "PENDING".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    DELETED ||= "DELETED".freeze
+    ARCHIVED ||= "ARCHIVED".freeze
+    PENDING ||= "PENDING".freeze
     
     # See ReportTaxTypes
     attr_accessor :report_tax_type
-    AVALARA = "AVALARA".freeze
-    BASEXCLUDED = "BASEXCLUDED".freeze
-    CAPITALSALESOUTPUT = "CAPITALSALESOUTPUT".freeze
-    CAPITALEXPENSESINPUT = "CAPITALEXPENSESINPUT".freeze
-    ECOUTPUT = "ECOUTPUT".freeze
-    ECOUTPUTSERVICES = "ECOUTPUTSERVICES".freeze
-    ECINPUT = "ECINPUT".freeze
-    ECACQUISITIONS = "ECACQUISITIONS".freeze
-    EXEMPTEXPENSES = "EXEMPTEXPENSES".freeze
-    EXEMPTINPUT = "EXEMPTINPUT".freeze
-    EXEMPTOUTPUT = "EXEMPTOUTPUT".freeze
-    GSTONIMPORTS = "GSTONIMPORTS".freeze
-    INPUT = "INPUT".freeze
-    INPUTTAXED = "INPUTTAXED".freeze
-    MOSSSALES = "MOSSSALES".freeze
-    NONE = "NONE".freeze
-    NONEOUTPUT = "NONEOUTPUT".freeze
-    OUTPUT = "OUTPUT".freeze
-    PURCHASESINPUT = "PURCHASESINPUT".freeze
-    SALESOUTPUT = "SALESOUTPUT".freeze
-    EXEMPTCAPITAL = "EXEMPTCAPITAL".freeze
-    EXEMPTEXPORT = "EXEMPTEXPORT".freeze
-    CAPITALEXINPUT = "CAPITALEXINPUT".freeze
-    GSTONCAPIMPORTS = "GSTONCAPIMPORTS".freeze
-    GSTONCAPITALIMPORTS = "GSTONCAPITALIMPORTS".freeze
-    REVERSECHARGES = "REVERSECHARGES".freeze
-    PAYMENTS = "PAYMENTS".freeze
-    INVOICE = "INVOICE".freeze
-    CASH = "CASH".freeze
-    ACCRUAL = "ACCRUAL".freeze
-    FLATRATECASH = "FLATRATECASH".freeze
-    FLATRATEACCRUAL = "FLATRATEACCRUAL".freeze
-    ACCRUALS = "ACCRUALS".freeze
-    TXCA = "TXCA".freeze
-    SRCAS = "SRCAS".freeze
-    DSOUTPUT = "DSOUTPUT".freeze
-    BLINPUT2 = "BLINPUT2".freeze
-    EPINPUT = "EPINPUT".freeze
-    IMINPUT2 = "IMINPUT2".freeze
-    MEINPUT = "MEINPUT".freeze
-    IGDSINPUT2 = "IGDSINPUT2".freeze
-    ESN33_OUTPUT = "ESN33OUTPUT".freeze
-    OPINPUT = "OPINPUT".freeze
-    OSOUTPUT = "OSOUTPUT".freeze
-    TXN33_INPUT = "TXN33INPUT".freeze
-    TXESSINPUT = "TXESSINPUT".freeze
-    TXREINPUT = "TXREINPUT".freeze
-    TXPETINPUT = "TXPETINPUT".freeze
-    NRINPUT = "NRINPUT".freeze
-    ES33_OUTPUT = "ES33OUTPUT".freeze
-    ZERORATEDINPUT = "ZERORATEDINPUT".freeze
-    ZERORATEDOUTPUT = "ZERORATEDOUTPUT".freeze
-    DRCHARGESUPPLY = "DRCHARGESUPPLY".freeze
-    DRCHARGE = "DRCHARGE".freeze
-    CAPINPUT = "CAPINPUT".freeze
-    CAPIMPORTS = "CAPIMPORTS".freeze
-    IMINPUT = "IMINPUT".freeze
-    INPUT2 = "INPUT2".freeze
-    CIUINPUT = "CIUINPUT".freeze
-    SRINPUT = "SRINPUT".freeze
-    OUTPUT2 = "OUTPUT2".freeze
-    SROUTPUT = "SROUTPUT".freeze
-    CAPOUTPUT = "CAPOUTPUT".freeze
-    SROUTPUT2 = "SROUTPUT2".freeze
-    CIUOUTPUT = "CIUOUTPUT".freeze
-    ZROUTPUT = "ZROUTPUT".freeze
-    ZREXPORT = "ZREXPORT".freeze
-    ACC28_PLUS = "ACC28PLUS".freeze
-    ACCUPTO28 = "ACCUPTO28".freeze
-    OTHEROUTPUT = "OTHEROUTPUT".freeze
-    SHOUTPUT = "SHOUTPUT".freeze
-    ZRINPUT = "ZRINPUT".freeze
-    BADDEBT = "BADDEBT".freeze
-    OTHERINPUT = "OTHERINPUT".freeze
+    AVALARA ||= "AVALARA".freeze
+    BASEXCLUDED ||= "BASEXCLUDED".freeze
+    CAPITALSALESOUTPUT ||= "CAPITALSALESOUTPUT".freeze
+    CAPITALEXPENSESINPUT ||= "CAPITALEXPENSESINPUT".freeze
+    ECOUTPUT ||= "ECOUTPUT".freeze
+    ECOUTPUTSERVICES ||= "ECOUTPUTSERVICES".freeze
+    ECINPUT ||= "ECINPUT".freeze
+    ECACQUISITIONS ||= "ECACQUISITIONS".freeze
+    EXEMPTEXPENSES ||= "EXEMPTEXPENSES".freeze
+    EXEMPTINPUT ||= "EXEMPTINPUT".freeze
+    EXEMPTOUTPUT ||= "EXEMPTOUTPUT".freeze
+    GSTONIMPORTS ||= "GSTONIMPORTS".freeze
+    INPUT ||= "INPUT".freeze
+    INPUTTAXED ||= "INPUTTAXED".freeze
+    MOSSSALES ||= "MOSSSALES".freeze
+    NONE ||= "NONE".freeze
+    NONEOUTPUT ||= "NONEOUTPUT".freeze
+    OUTPUT ||= "OUTPUT".freeze
+    PURCHASESINPUT ||= "PURCHASESINPUT".freeze
+    SALESOUTPUT ||= "SALESOUTPUT".freeze
+    EXEMPTCAPITAL ||= "EXEMPTCAPITAL".freeze
+    EXEMPTEXPORT ||= "EXEMPTEXPORT".freeze
+    CAPITALEXINPUT ||= "CAPITALEXINPUT".freeze
+    GSTONCAPIMPORTS ||= "GSTONCAPIMPORTS".freeze
+    GSTONCAPITALIMPORTS ||= "GSTONCAPITALIMPORTS".freeze
+    REVERSECHARGES ||= "REVERSECHARGES".freeze
+    PAYMENTS ||= "PAYMENTS".freeze
+    INVOICE ||= "INVOICE".freeze
+    CASH ||= "CASH".freeze
+    ACCRUAL ||= "ACCRUAL".freeze
+    FLATRATECASH ||= "FLATRATECASH".freeze
+    FLATRATEACCRUAL ||= "FLATRATEACCRUAL".freeze
+    ACCRUALS ||= "ACCRUALS".freeze
+    TXCA ||= "TXCA".freeze
+    SRCAS ||= "SRCAS".freeze
+    DSOUTPUT ||= "DSOUTPUT".freeze
+    BLINPUT2 ||= "BLINPUT2".freeze
+    EPINPUT ||= "EPINPUT".freeze
+    IMINPUT2 ||= "IMINPUT2".freeze
+    MEINPUT ||= "MEINPUT".freeze
+    IGDSINPUT2 ||= "IGDSINPUT2".freeze
+    ESN33_OUTPUT ||= "ESN33OUTPUT".freeze
+    OPINPUT ||= "OPINPUT".freeze
+    OSOUTPUT ||= "OSOUTPUT".freeze
+    TXN33_INPUT ||= "TXN33INPUT".freeze
+    TXESSINPUT ||= "TXESSINPUT".freeze
+    TXREINPUT ||= "TXREINPUT".freeze
+    TXPETINPUT ||= "TXPETINPUT".freeze
+    NRINPUT ||= "NRINPUT".freeze
+    ES33_OUTPUT ||= "ES33OUTPUT".freeze
+    ZERORATEDINPUT ||= "ZERORATEDINPUT".freeze
+    ZERORATEDOUTPUT ||= "ZERORATEDOUTPUT".freeze
+    DRCHARGESUPPLY ||= "DRCHARGESUPPLY".freeze
+    DRCHARGE ||= "DRCHARGE".freeze
+    CAPINPUT ||= "CAPINPUT".freeze
+    CAPIMPORTS ||= "CAPIMPORTS".freeze
+    IMINPUT ||= "IMINPUT".freeze
+    INPUT2 ||= "INPUT2".freeze
+    CIUINPUT ||= "CIUINPUT".freeze
+    SRINPUT ||= "SRINPUT".freeze
+    OUTPUT2 ||= "OUTPUT2".freeze
+    SROUTPUT ||= "SROUTPUT".freeze
+    CAPOUTPUT ||= "CAPOUTPUT".freeze
+    SROUTPUT2 ||= "SROUTPUT2".freeze
+    CIUOUTPUT ||= "CIUOUTPUT".freeze
+    ZROUTPUT ||= "ZROUTPUT".freeze
+    ZREXPORT ||= "ZREXPORT".freeze
+    ACC28_PLUS ||= "ACC28PLUS".freeze
+    ACCUPTO28 ||= "ACCUPTO28".freeze
+    OTHEROUTPUT ||= "OTHEROUTPUT".freeze
+    SHOUTPUT ||= "SHOUTPUT".freeze
+    ZRINPUT ||= "ZRINPUT".freeze
+    BADDEBT ||= "BADDEBT".freeze
+    OTHERINPUT ||= "OTHERINPUT".freeze
     
     # Boolean to describe if tax rate can be used for asset accounts i.e.  true,false
     attr_accessor :can_apply_to_assets
diff --git a/lib/xero-ruby/models/accounting/tax_type.rb b/lib/xero-ruby/models/accounting/tax_type.rb
index a6cb877a..3cc0d058 100644
--- a/lib/xero-ruby/models/accounting/tax_type.rb
+++ b/lib/xero-ruby/models/accounting/tax_type.rb
@@ -14,65 +14,65 @@
 
 module XeroRuby::Accounting
   class TaxType
-    OUTPUT = "OUTPUT".freeze
-    INPUT = "INPUT".freeze
-    CAPEXINPUT = "CAPEXINPUT".freeze
-    EXEMPTEXPORT = "EXEMPTEXPORT".freeze
-    EXEMPTEXPENSES = "EXEMPTEXPENSES".freeze
-    EXEMPTCAPITAL = "EXEMPTCAPITAL".freeze
-    EXEMPTOUTPUT = "EXEMPTOUTPUT".freeze
-    INPUTTAXED = "INPUTTAXED".freeze
-    BASEXCLUDED = "BASEXCLUDED".freeze
-    GSTONCAPIMPORTS = "GSTONCAPIMPORTS".freeze
-    GSTONIMPORTS = "GSTONIMPORTS".freeze
-    NONE = "NONE".freeze
-    INPUT2 = "INPUT2".freeze
-    ZERORATED = "ZERORATED".freeze
-    OUTPUT2 = "OUTPUT2".freeze
-    CAPEXINPUT2 = "CAPEXINPUT2".freeze
-    CAPEXOUTPUT = "CAPEXOUTPUT".freeze
-    CAPEXOUTPUT2 = "CAPEXOUTPUT2".freeze
-    CAPEXSRINPUT = "CAPEXSRINPUT".freeze
-    CAPEXSROUTPUT = "CAPEXSROUTPUT".freeze
-    ECACQUISITIONS = "ECACQUISITIONS".freeze
-    ECZRINPUT = "ECZRINPUT".freeze
-    ECZROUTPUT = "ECZROUTPUT".freeze
-    ECZROUTPUTSERVICES = "ECZROUTPUTSERVICES".freeze
-    EXEMPTINPUT = "EXEMPTINPUT".freeze
-    REVERSECHARGES = "REVERSECHARGES".freeze
-    RRINPUT = "RRINPUT".freeze
-    RROUTPUT = "RROUTPUT".freeze
-    SRINPUT = "SRINPUT".freeze
-    SROUTPUT = "SROUTPUT".freeze
-    ZERORATEDINPUT = "ZERORATEDINPUT".freeze
-    ZERORATEDOUTPUT = "ZERORATEDOUTPUT".freeze
-    BLINPUT = "BLINPUT".freeze
-    DSOUTPUT = "DSOUTPUT".freeze
-    EPINPUT = "EPINPUT".freeze
-    ES33_OUTPUT = "ES33OUTPUT".freeze
-    ESN33_OUTPUT = "ESN33OUTPUT".freeze
-    IGDSINPUT2 = "IGDSINPUT2".freeze
-    IMINPUT2 = "IMINPUT2".freeze
-    MEINPUT = "MEINPUT".freeze
-    NRINPUT = "NRINPUT".freeze
-    OPINPUT = "OPINPUT".freeze
-    OSOUTPUT = "OSOUTPUT".freeze
-    TXESSINPUT = "TXESSINPUT".freeze
-    TXN33_INPUT = "TXN33INPUT".freeze
-    TXPETINPUT = "TXPETINPUT".freeze
-    TXREINPUT = "TXREINPUT".freeze
-    INPUT3 = "INPUT3".freeze
-    INPUT4 = "INPUT4".freeze
-    OUTPUT3 = "OUTPUT3".freeze
-    OUTPUT4 = "OUTPUT4".freeze
-    SROUTPUT2 = "SROUTPUT2".freeze
-    TXCA = "TXCA".freeze
-    SRCAS = "SRCAS".freeze
-    BLINPUT2 = "BLINPUT2".freeze
-    DRCHARGESUPPLY20 = "DRCHARGESUPPLY20".freeze
-    DRCHARGE20 = "DRCHARGE20".freeze
-    DRCHARGESUPPLY5 = "DRCHARGESUPPLY5".freeze
-    DRCHARGE5 = "DRCHARGE5".freeze
+    OUTPUT ||= "OUTPUT".freeze
+    INPUT ||= "INPUT".freeze
+    CAPEXINPUT ||= "CAPEXINPUT".freeze
+    EXEMPTEXPORT ||= "EXEMPTEXPORT".freeze
+    EXEMPTEXPENSES ||= "EXEMPTEXPENSES".freeze
+    EXEMPTCAPITAL ||= "EXEMPTCAPITAL".freeze
+    EXEMPTOUTPUT ||= "EXEMPTOUTPUT".freeze
+    INPUTTAXED ||= "INPUTTAXED".freeze
+    BASEXCLUDED ||= "BASEXCLUDED".freeze
+    GSTONCAPIMPORTS ||= "GSTONCAPIMPORTS".freeze
+    GSTONIMPORTS ||= "GSTONIMPORTS".freeze
+    NONE ||= "NONE".freeze
+    INPUT2 ||= "INPUT2".freeze
+    ZERORATED ||= "ZERORATED".freeze
+    OUTPUT2 ||= "OUTPUT2".freeze
+    CAPEXINPUT2 ||= "CAPEXINPUT2".freeze
+    CAPEXOUTPUT ||= "CAPEXOUTPUT".freeze
+    CAPEXOUTPUT2 ||= "CAPEXOUTPUT2".freeze
+    CAPEXSRINPUT ||= "CAPEXSRINPUT".freeze
+    CAPEXSROUTPUT ||= "CAPEXSROUTPUT".freeze
+    ECACQUISITIONS ||= "ECACQUISITIONS".freeze
+    ECZRINPUT ||= "ECZRINPUT".freeze
+    ECZROUTPUT ||= "ECZROUTPUT".freeze
+    ECZROUTPUTSERVICES ||= "ECZROUTPUTSERVICES".freeze
+    EXEMPTINPUT ||= "EXEMPTINPUT".freeze
+    REVERSECHARGES ||= "REVERSECHARGES".freeze
+    RRINPUT ||= "RRINPUT".freeze
+    RROUTPUT ||= "RROUTPUT".freeze
+    SRINPUT ||= "SRINPUT".freeze
+    SROUTPUT ||= "SROUTPUT".freeze
+    ZERORATEDINPUT ||= "ZERORATEDINPUT".freeze
+    ZERORATEDOUTPUT ||= "ZERORATEDOUTPUT".freeze
+    BLINPUT ||= "BLINPUT".freeze
+    DSOUTPUT ||= "DSOUTPUT".freeze
+    EPINPUT ||= "EPINPUT".freeze
+    ES33_OUTPUT ||= "ES33OUTPUT".freeze
+    ESN33_OUTPUT ||= "ESN33OUTPUT".freeze
+    IGDSINPUT2 ||= "IGDSINPUT2".freeze
+    IMINPUT2 ||= "IMINPUT2".freeze
+    MEINPUT ||= "MEINPUT".freeze
+    NRINPUT ||= "NRINPUT".freeze
+    OPINPUT ||= "OPINPUT".freeze
+    OSOUTPUT ||= "OSOUTPUT".freeze
+    TXESSINPUT ||= "TXESSINPUT".freeze
+    TXN33_INPUT ||= "TXN33INPUT".freeze
+    TXPETINPUT ||= "TXPETINPUT".freeze
+    TXREINPUT ||= "TXREINPUT".freeze
+    INPUT3 ||= "INPUT3".freeze
+    INPUT4 ||= "INPUT4".freeze
+    OUTPUT3 ||= "OUTPUT3".freeze
+    OUTPUT4 ||= "OUTPUT4".freeze
+    SROUTPUT2 ||= "SROUTPUT2".freeze
+    TXCA ||= "TXCA".freeze
+    SRCAS ||= "SRCAS".freeze
+    BLINPUT2 ||= "BLINPUT2".freeze
+    DRCHARGESUPPLY20 ||= "DRCHARGESUPPLY20".freeze
+    DRCHARGE20 ||= "DRCHARGE20".freeze
+    DRCHARGESUPPLY5 ||= "DRCHARGESUPPLY5".freeze
+    DRCHARGE5 ||= "DRCHARGE5".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/accounting/time_zone.rb b/lib/xero-ruby/models/accounting/time_zone.rb
index a1e4fd15..8e07572b 100644
--- a/lib/xero-ruby/models/accounting/time_zone.rb
+++ b/lib/xero-ruby/models/accounting/time_zone.rb
@@ -14,115 +14,115 @@
 
 module XeroRuby::Accounting
   class TimeZone
-    MOROCCOSTANDARDTIME = "MOROCCOSTANDARDTIME".freeze
-    UTC = "UTC".freeze
-    GMTSTANDARDTIME = "GMTSTANDARDTIME".freeze
-    GREENWICHSTANDARDTIME = "GREENWICHSTANDARDTIME".freeze
-    WEUROPESTANDARDTIME = "WEUROPESTANDARDTIME".freeze
-    CENTRALEUROPESTANDARDTIME = "CENTRALEUROPESTANDARDTIME".freeze
-    ROMANCESTANDARDTIME = "ROMANCESTANDARDTIME".freeze
-    CENTRALEUROPEANSTANDARDTIME = "CENTRALEUROPEANSTANDARDTIME".freeze
-    WCENTRALAFRICASTANDARDTIME = "WCENTRALAFRICASTANDARDTIME".freeze
-    NAMIBIASTANDARDTIME = "NAMIBIASTANDARDTIME".freeze
-    JORDANSTANDARDTIME = "JORDANSTANDARDTIME".freeze
-    GTBSTANDARDTIME = "GTBSTANDARDTIME".freeze
-    MIDDLEEASTSTANDARDTIME = "MIDDLEEASTSTANDARDTIME".freeze
-    EGYPTSTANDARDTIME = "EGYPTSTANDARDTIME".freeze
-    SYRIASTANDARDTIME = "SYRIASTANDARDTIME".freeze
-    EEUROPESTANDARDTIME = "EEUROPESTANDARDTIME".freeze
-    SOUTHAFRICASTANDARDTIME = "SOUTHAFRICASTANDARDTIME".freeze
-    FLESTANDARDTIME = "FLESTANDARDTIME".freeze
-    TURKEYSTANDARDTIME = "TURKEYSTANDARDTIME".freeze
-    ISRAELSTANDARDTIME = "ISRAELSTANDARDTIME".freeze
-    KALININGRADSTANDARDTIME = "KALININGRADSTANDARDTIME".freeze
-    LIBYASTANDARDTIME = "LIBYASTANDARDTIME".freeze
-    ARABICSTANDARDTIME = "ARABICSTANDARDTIME".freeze
-    ARABSTANDARDTIME = "ARABSTANDARDTIME".freeze
-    BELARUSSTANDARDTIME = "BELARUSSTANDARDTIME".freeze
-    RUSSIANSTANDARDTIME = "RUSSIANSTANDARDTIME".freeze
-    EAFRICASTANDARDTIME = "EAFRICASTANDARDTIME".freeze
-    IRANSTANDARDTIME = "IRANSTANDARDTIME".freeze
-    ARABIANSTANDARDTIME = "ARABIANSTANDARDTIME".freeze
-    AZERBAIJANSTANDARDTIME = "AZERBAIJANSTANDARDTIME".freeze
-    RUSSIATIMEZONE3 = "RUSSIATIMEZONE3".freeze
-    MAURITIUSSTANDARDTIME = "MAURITIUSSTANDARDTIME".freeze
-    GEORGIANSTANDARDTIME = "GEORGIANSTANDARDTIME".freeze
-    CAUCASUSSTANDARDTIME = "CAUCASUSSTANDARDTIME".freeze
-    AFGHANISTANSTANDARDTIME = "AFGHANISTANSTANDARDTIME".freeze
-    WESTASIASTANDARDTIME = "WESTASIASTANDARDTIME".freeze
-    EKATERINBURGSTANDARDTIME = "EKATERINBURGSTANDARDTIME".freeze
-    PAKISTANSTANDARDTIME = "PAKISTANSTANDARDTIME".freeze
-    INDIASTANDARDTIME = "INDIASTANDARDTIME".freeze
-    SRILANKASTANDARDTIME = "SRILANKASTANDARDTIME".freeze
-    NEPALSTANDARDTIME = "NEPALSTANDARDTIME".freeze
-    CENTRALASIASTANDARDTIME = "CENTRALASIASTANDARDTIME".freeze
-    BANGLADESHSTANDARDTIME = "BANGLADESHSTANDARDTIME".freeze
-    NCENTRALASIASTANDARDTIME = "NCENTRALASIASTANDARDTIME".freeze
-    MYANMARSTANDARDTIME = "MYANMARSTANDARDTIME".freeze
-    SEASIASTANDARDTIME = "SEASIASTANDARDTIME".freeze
-    NORTHASIASTANDARDTIME = "NORTHASIASTANDARDTIME".freeze
-    CHINASTANDARDTIME = "CHINASTANDARDTIME".freeze
-    NORTHASIAEASTSTANDARDTIME = "NORTHASIAEASTSTANDARDTIME".freeze
-    SINGAPORESTANDARDTIME = "SINGAPORESTANDARDTIME".freeze
-    WAUSTRALIASTANDARDTIME = "WAUSTRALIASTANDARDTIME".freeze
-    TAIPEISTANDARDTIME = "TAIPEISTANDARDTIME".freeze
-    ULAANBAATARSTANDARDTIME = "ULAANBAATARSTANDARDTIME".freeze
-    TOKYOSTANDARDTIME = "TOKYOSTANDARDTIME".freeze
-    KOREASTANDARDTIME = "KOREASTANDARDTIME".freeze
-    YAKUTSKSTANDARDTIME = "YAKUTSKSTANDARDTIME".freeze
-    CENAUSTRALIASTANDARDTIME = "CENAUSTRALIASTANDARDTIME".freeze
-    AUSCENTRALSTANDARDTIME = "AUSCENTRALSTANDARDTIME".freeze
-    EAUSTRALIASTANDARDTIME = "EAUSTRALIASTANDARDTIME".freeze
-    AUSEASTERNSTANDARDTIME = "AUSEASTERNSTANDARDTIME".freeze
-    WESTPACIFICSTANDARDTIME = "WESTPACIFICSTANDARDTIME".freeze
-    TASMANIASTANDARDTIME = "TASMANIASTANDARDTIME".freeze
-    MAGADANSTANDARDTIME = "MAGADANSTANDARDTIME".freeze
-    VLADIVOSTOKSTANDARDTIME = "VLADIVOSTOKSTANDARDTIME".freeze
-    RUSSIATIMEZONE10 = "RUSSIATIMEZONE10".freeze
-    CENTRALPACIFICSTANDARDTIME = "CENTRALPACIFICSTANDARDTIME".freeze
-    RUSSIATIMEZONE11 = "RUSSIATIMEZONE11".freeze
-    NEWZEALANDSTANDARDTIME = "NEWZEALANDSTANDARDTIME".freeze
-    UTC12 = "UTC+12".freeze
-    UTC13 = "UTC+13".freeze
-    FIJISTANDARDTIME = "FIJISTANDARDTIME".freeze
-    KAMCHATKASTANDARDTIME = "KAMCHATKASTANDARDTIME".freeze
-    TONGASTANDARDTIME = "TONGASTANDARDTIME".freeze
-    SAMOASTANDARDTIME = "SAMOASTANDARDTIME".freeze
-    LINEISLANDSSTANDARDTIME = "LINEISLANDSSTANDARDTIME".freeze
-    AZORESSTANDARDTIME = "AZORESSTANDARDTIME".freeze
-    CAPEVERDESTANDARDTIME = "CAPEVERDESTANDARDTIME".freeze
-    UTC02 = "UTC02".freeze
-    MIDATLANTICSTANDARDTIME = "MIDATLANTICSTANDARDTIME".freeze
-    ESOUTHAMERICASTANDARDTIME = "ESOUTHAMERICASTANDARDTIME".freeze
-    ARGENTINASTANDARDTIME = "ARGENTINASTANDARDTIME".freeze
-    SAEASTERNSTANDARDTIME = "SAEASTERNSTANDARDTIME".freeze
-    GREENLANDSTANDARDTIME = "GREENLANDSTANDARDTIME".freeze
-    MONTEVIDEOSTANDARDTIME = "MONTEVIDEOSTANDARDTIME".freeze
-    BAHIASTANDARDTIME = "BAHIASTANDARDTIME".freeze
-    NEWFOUNDLANDSTANDARDTIME = "NEWFOUNDLANDSTANDARDTIME".freeze
-    PARAGUAYSTANDARDTIME = "PARAGUAYSTANDARDTIME".freeze
-    ATLANTICSTANDARDTIME = "ATLANTICSTANDARDTIME".freeze
-    CENTRALBRAZILIANSTANDARDTIME = "CENTRALBRAZILIANSTANDARDTIME".freeze
-    SAWESTERNSTANDARDTIME = "SAWESTERNSTANDARDTIME".freeze
-    PACIFICSASTANDARDTIME = "PACIFICSASTANDARDTIME".freeze
-    VENEZUELASTANDARDTIME = "VENEZUELASTANDARDTIME".freeze
-    SAPACIFICSTANDARDTIME = "SAPACIFICSTANDARDTIME".freeze
-    EASTERNSTANDARDTIME = "EASTERNSTANDARDTIME".freeze
-    USEASTERNSTANDARDTIME = "USEASTERNSTANDARDTIME".freeze
-    CENTRALAMERICASTANDARDTIME = "CENTRALAMERICASTANDARDTIME".freeze
-    CENTRALSTANDARDTIME = "CENTRALSTANDARDTIME".freeze
-    CENTRALSTANDARDTIME_MEXICO = "CENTRALSTANDARDTIME(MEXICO)".freeze
-    CANADACENTRALSTANDARDTIME = "CANADACENTRALSTANDARDTIME".freeze
-    USMOUNTAINSTANDARDTIME = "USMOUNTAINSTANDARDTIME".freeze
-    MOUNTAINSTANDARDTIME_MEXICO = "MOUNTAINSTANDARDTIME(MEXICO)".freeze
-    MOUNTAINSTANDARDTIME = "MOUNTAINSTANDARDTIME".freeze
-    PACIFICSTANDARDTIME_MEXICO = "PACIFICSTANDARDTIME(MEXICO)".freeze
-    PACIFICSTANDARDTIME = "PACIFICSTANDARDTIME".freeze
-    ALASKANSTANDARDTIME = "ALASKANSTANDARDTIME".freeze
-    HAWAIIANSTANDARDTIME = "HAWAIIANSTANDARDTIME".freeze
-    UTC11 = "UTC11".freeze
-    DATELINESTANDARDTIME = "DATELINESTANDARDTIME".freeze
-    EASTERISLANDSTANDARDTIME = "EASTERISLANDSTANDARDTIME".freeze
+    MOROCCOSTANDARDTIME ||= "MOROCCOSTANDARDTIME".freeze
+    UTC ||= "UTC".freeze
+    GMTSTANDARDTIME ||= "GMTSTANDARDTIME".freeze
+    GREENWICHSTANDARDTIME ||= "GREENWICHSTANDARDTIME".freeze
+    WEUROPESTANDARDTIME ||= "WEUROPESTANDARDTIME".freeze
+    CENTRALEUROPESTANDARDTIME ||= "CENTRALEUROPESTANDARDTIME".freeze
+    ROMANCESTANDARDTIME ||= "ROMANCESTANDARDTIME".freeze
+    CENTRALEUROPEANSTANDARDTIME ||= "CENTRALEUROPEANSTANDARDTIME".freeze
+    WCENTRALAFRICASTANDARDTIME ||= "WCENTRALAFRICASTANDARDTIME".freeze
+    NAMIBIASTANDARDTIME ||= "NAMIBIASTANDARDTIME".freeze
+    JORDANSTANDARDTIME ||= "JORDANSTANDARDTIME".freeze
+    GTBSTANDARDTIME ||= "GTBSTANDARDTIME".freeze
+    MIDDLEEASTSTANDARDTIME ||= "MIDDLEEASTSTANDARDTIME".freeze
+    EGYPTSTANDARDTIME ||= "EGYPTSTANDARDTIME".freeze
+    SYRIASTANDARDTIME ||= "SYRIASTANDARDTIME".freeze
+    EEUROPESTANDARDTIME ||= "EEUROPESTANDARDTIME".freeze
+    SOUTHAFRICASTANDARDTIME ||= "SOUTHAFRICASTANDARDTIME".freeze
+    FLESTANDARDTIME ||= "FLESTANDARDTIME".freeze
+    TURKEYSTANDARDTIME ||= "TURKEYSTANDARDTIME".freeze
+    ISRAELSTANDARDTIME ||= "ISRAELSTANDARDTIME".freeze
+    KALININGRADSTANDARDTIME ||= "KALININGRADSTANDARDTIME".freeze
+    LIBYASTANDARDTIME ||= "LIBYASTANDARDTIME".freeze
+    ARABICSTANDARDTIME ||= "ARABICSTANDARDTIME".freeze
+    ARABSTANDARDTIME ||= "ARABSTANDARDTIME".freeze
+    BELARUSSTANDARDTIME ||= "BELARUSSTANDARDTIME".freeze
+    RUSSIANSTANDARDTIME ||= "RUSSIANSTANDARDTIME".freeze
+    EAFRICASTANDARDTIME ||= "EAFRICASTANDARDTIME".freeze
+    IRANSTANDARDTIME ||= "IRANSTANDARDTIME".freeze
+    ARABIANSTANDARDTIME ||= "ARABIANSTANDARDTIME".freeze
+    AZERBAIJANSTANDARDTIME ||= "AZERBAIJANSTANDARDTIME".freeze
+    RUSSIATIMEZONE3 ||= "RUSSIATIMEZONE3".freeze
+    MAURITIUSSTANDARDTIME ||= "MAURITIUSSTANDARDTIME".freeze
+    GEORGIANSTANDARDTIME ||= "GEORGIANSTANDARDTIME".freeze
+    CAUCASUSSTANDARDTIME ||= "CAUCASUSSTANDARDTIME".freeze
+    AFGHANISTANSTANDARDTIME ||= "AFGHANISTANSTANDARDTIME".freeze
+    WESTASIASTANDARDTIME ||= "WESTASIASTANDARDTIME".freeze
+    EKATERINBURGSTANDARDTIME ||= "EKATERINBURGSTANDARDTIME".freeze
+    PAKISTANSTANDARDTIME ||= "PAKISTANSTANDARDTIME".freeze
+    INDIASTANDARDTIME ||= "INDIASTANDARDTIME".freeze
+    SRILANKASTANDARDTIME ||= "SRILANKASTANDARDTIME".freeze
+    NEPALSTANDARDTIME ||= "NEPALSTANDARDTIME".freeze
+    CENTRALASIASTANDARDTIME ||= "CENTRALASIASTANDARDTIME".freeze
+    BANGLADESHSTANDARDTIME ||= "BANGLADESHSTANDARDTIME".freeze
+    NCENTRALASIASTANDARDTIME ||= "NCENTRALASIASTANDARDTIME".freeze
+    MYANMARSTANDARDTIME ||= "MYANMARSTANDARDTIME".freeze
+    SEASIASTANDARDTIME ||= "SEASIASTANDARDTIME".freeze
+    NORTHASIASTANDARDTIME ||= "NORTHASIASTANDARDTIME".freeze
+    CHINASTANDARDTIME ||= "CHINASTANDARDTIME".freeze
+    NORTHASIAEASTSTANDARDTIME ||= "NORTHASIAEASTSTANDARDTIME".freeze
+    SINGAPORESTANDARDTIME ||= "SINGAPORESTANDARDTIME".freeze
+    WAUSTRALIASTANDARDTIME ||= "WAUSTRALIASTANDARDTIME".freeze
+    TAIPEISTANDARDTIME ||= "TAIPEISTANDARDTIME".freeze
+    ULAANBAATARSTANDARDTIME ||= "ULAANBAATARSTANDARDTIME".freeze
+    TOKYOSTANDARDTIME ||= "TOKYOSTANDARDTIME".freeze
+    KOREASTANDARDTIME ||= "KOREASTANDARDTIME".freeze
+    YAKUTSKSTANDARDTIME ||= "YAKUTSKSTANDARDTIME".freeze
+    CENAUSTRALIASTANDARDTIME ||= "CENAUSTRALIASTANDARDTIME".freeze
+    AUSCENTRALSTANDARDTIME ||= "AUSCENTRALSTANDARDTIME".freeze
+    EAUSTRALIASTANDARDTIME ||= "EAUSTRALIASTANDARDTIME".freeze
+    AUSEASTERNSTANDARDTIME ||= "AUSEASTERNSTANDARDTIME".freeze
+    WESTPACIFICSTANDARDTIME ||= "WESTPACIFICSTANDARDTIME".freeze
+    TASMANIASTANDARDTIME ||= "TASMANIASTANDARDTIME".freeze
+    MAGADANSTANDARDTIME ||= "MAGADANSTANDARDTIME".freeze
+    VLADIVOSTOKSTANDARDTIME ||= "VLADIVOSTOKSTANDARDTIME".freeze
+    RUSSIATIMEZONE10 ||= "RUSSIATIMEZONE10".freeze
+    CENTRALPACIFICSTANDARDTIME ||= "CENTRALPACIFICSTANDARDTIME".freeze
+    RUSSIATIMEZONE11 ||= "RUSSIATIMEZONE11".freeze
+    NEWZEALANDSTANDARDTIME ||= "NEWZEALANDSTANDARDTIME".freeze
+    UTC12 ||= "UTC+12".freeze
+    UTC13 ||= "UTC+13".freeze
+    FIJISTANDARDTIME ||= "FIJISTANDARDTIME".freeze
+    KAMCHATKASTANDARDTIME ||= "KAMCHATKASTANDARDTIME".freeze
+    TONGASTANDARDTIME ||= "TONGASTANDARDTIME".freeze
+    SAMOASTANDARDTIME ||= "SAMOASTANDARDTIME".freeze
+    LINEISLANDSSTANDARDTIME ||= "LINEISLANDSSTANDARDTIME".freeze
+    AZORESSTANDARDTIME ||= "AZORESSTANDARDTIME".freeze
+    CAPEVERDESTANDARDTIME ||= "CAPEVERDESTANDARDTIME".freeze
+    UTC02 ||= "UTC02".freeze
+    MIDATLANTICSTANDARDTIME ||= "MIDATLANTICSTANDARDTIME".freeze
+    ESOUTHAMERICASTANDARDTIME ||= "ESOUTHAMERICASTANDARDTIME".freeze
+    ARGENTINASTANDARDTIME ||= "ARGENTINASTANDARDTIME".freeze
+    SAEASTERNSTANDARDTIME ||= "SAEASTERNSTANDARDTIME".freeze
+    GREENLANDSTANDARDTIME ||= "GREENLANDSTANDARDTIME".freeze
+    MONTEVIDEOSTANDARDTIME ||= "MONTEVIDEOSTANDARDTIME".freeze
+    BAHIASTANDARDTIME ||= "BAHIASTANDARDTIME".freeze
+    NEWFOUNDLANDSTANDARDTIME ||= "NEWFOUNDLANDSTANDARDTIME".freeze
+    PARAGUAYSTANDARDTIME ||= "PARAGUAYSTANDARDTIME".freeze
+    ATLANTICSTANDARDTIME ||= "ATLANTICSTANDARDTIME".freeze
+    CENTRALBRAZILIANSTANDARDTIME ||= "CENTRALBRAZILIANSTANDARDTIME".freeze
+    SAWESTERNSTANDARDTIME ||= "SAWESTERNSTANDARDTIME".freeze
+    PACIFICSASTANDARDTIME ||= "PACIFICSASTANDARDTIME".freeze
+    VENEZUELASTANDARDTIME ||= "VENEZUELASTANDARDTIME".freeze
+    SAPACIFICSTANDARDTIME ||= "SAPACIFICSTANDARDTIME".freeze
+    EASTERNSTANDARDTIME ||= "EASTERNSTANDARDTIME".freeze
+    USEASTERNSTANDARDTIME ||= "USEASTERNSTANDARDTIME".freeze
+    CENTRALAMERICASTANDARDTIME ||= "CENTRALAMERICASTANDARDTIME".freeze
+    CENTRALSTANDARDTIME ||= "CENTRALSTANDARDTIME".freeze
+    CENTRALSTANDARDTIME_MEXICO ||= "CENTRALSTANDARDTIME(MEXICO)".freeze
+    CANADACENTRALSTANDARDTIME ||= "CANADACENTRALSTANDARDTIME".freeze
+    USMOUNTAINSTANDARDTIME ||= "USMOUNTAINSTANDARDTIME".freeze
+    MOUNTAINSTANDARDTIME_MEXICO ||= "MOUNTAINSTANDARDTIME(MEXICO)".freeze
+    MOUNTAINSTANDARDTIME ||= "MOUNTAINSTANDARDTIME".freeze
+    PACIFICSTANDARDTIME_MEXICO ||= "PACIFICSTANDARDTIME(MEXICO)".freeze
+    PACIFICSTANDARDTIME ||= "PACIFICSTANDARDTIME".freeze
+    ALASKANSTANDARDTIME ||= "ALASKANSTANDARDTIME".freeze
+    HAWAIIANSTANDARDTIME ||= "HAWAIIANSTANDARDTIME".freeze
+    UTC11 ||= "UTC11".freeze
+    DATELINESTANDARDTIME ||= "DATELINESTANDARDTIME".freeze
+    EASTERISLANDSTANDARDTIME ||= "EASTERISLANDSTANDARDTIME".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/accounting/tracking_category.rb b/lib/xero-ruby/models/accounting/tracking_category.rb
index f18864cf..b6dcbc7d 100644
--- a/lib/xero-ruby/models/accounting/tracking_category.rb
+++ b/lib/xero-ruby/models/accounting/tracking_category.rb
@@ -30,9 +30,9 @@ class TrackingCategory
     
     # The status of a tracking category
     attr_accessor :status
-    ACTIVE = "ACTIVE".freeze
-    ARCHIVED = "ARCHIVED".freeze
-    DELETED = "DELETED".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    ARCHIVED ||= "ARCHIVED".freeze
+    DELETED ||= "DELETED".freeze
     
     # See Tracking Options
     attr_accessor :options
diff --git a/lib/xero-ruby/models/accounting/tracking_option.rb b/lib/xero-ruby/models/accounting/tracking_option.rb
index dab74e24..41546b94 100644
--- a/lib/xero-ruby/models/accounting/tracking_option.rb
+++ b/lib/xero-ruby/models/accounting/tracking_option.rb
@@ -24,9 +24,9 @@ class TrackingOption
     
     # The status of a tracking option
     attr_accessor :status
-    ACTIVE = "ACTIVE".freeze
-    ARCHIVED = "ARCHIVED".freeze
-    DELETED = "DELETED".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    ARCHIVED ||= "ARCHIVED".freeze
+    DELETED ||= "DELETED".freeze
     
     # Filter by a tracking category e.g. 297c2dc5-cc47-4afd-8ec8-74990b8761e9
     attr_accessor :tracking_category_id
diff --git a/lib/xero-ruby/models/accounting/user.rb b/lib/xero-ruby/models/accounting/user.rb
index 929e8d69..ba5b5aba 100644
--- a/lib/xero-ruby/models/accounting/user.rb
+++ b/lib/xero-ruby/models/accounting/user.rb
@@ -36,13 +36,13 @@ class User
     
     # User role that defines permissions in Xero and via API (READONLY, INVOICEONLY, STANDARD, FINANCIALADVISER, etc)
     attr_accessor :organisation_role
-    READONLY = "READONLY".freeze
-    INVOICEONLY = "INVOICEONLY".freeze
-    STANDARD = "STANDARD".freeze
-    FINANCIALADVISER = "FINANCIALADVISER".freeze
-    MANAGEDCLIENT = "MANAGEDCLIENT".freeze
-    CASHBOOKCLIENT = "CASHBOOKCLIENT".freeze
-    UNKNOWN = "UNKNOWN".freeze
+    READONLY ||= "READONLY".freeze
+    INVOICEONLY ||= "INVOICEONLY".freeze
+    STANDARD ||= "STANDARD".freeze
+    FINANCIALADVISER ||= "FINANCIALADVISER".freeze
+    MANAGEDCLIENT ||= "MANAGEDCLIENT".freeze
+    CASHBOOKCLIENT ||= "CASHBOOKCLIENT".freeze
+    UNKNOWN ||= "UNKNOWN".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/app_store/plan.rb b/lib/xero-ruby/models/app_store/plan.rb
index 9e81ea7e..b0f06f02 100644
--- a/lib/xero-ruby/models/app_store/plan.rb
+++ b/lib/xero-ruby/models/app_store/plan.rb
@@ -22,10 +22,11 @@ class Plan
     # The name of the plan. It is used in the invoice line item description. 
     attr_accessor :name
     
-    # Status of the plan. Available statuses are ACTIVE, PENDING_ACTIVATION. 
+    # Status of the plan. Available statuses are ACTIVE, CANCELED, and PENDING_ACTIVATION. 
     attr_accessor :status
-    ACTIVE = "ACTIVE".freeze
-    PENDING_ACTIVATION = "PENDING_ACTIVATION".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    CANCELED ||= "CANCELED".freeze
+    PENDING_ACTIVATION ||= "PENDING_ACTIVATION".freeze
     
     # List of the subscription items belonging to the plan. It does not include cancelled subscription items. 
     attr_accessor :subscription_items
@@ -135,7 +136,7 @@ def valid?
       return false if @id.nil?
       return false if @name.nil?
       return false if @status.nil?
-      status_validator = EnumAttributeValidator.new('String', ["ACTIVE", "PENDING_ACTIVATION"])
+      status_validator = EnumAttributeValidator.new('String', ["ACTIVE", "CANCELED", "PENDING_ACTIVATION"])
       return false unless status_validator.valid?(@status)
       return false if @subscription_items.nil?
       true
@@ -144,7 +145,7 @@ def valid?
     # Custom attribute writer method checking allowed values (enum).
     # @param [Object] status Object to be assigned
     def status=(status)
-      validator = EnumAttributeValidator.new('String', ["ACTIVE", "PENDING_ACTIVATION"])
+      validator = EnumAttributeValidator.new('String', ["ACTIVE", "CANCELED", "PENDING_ACTIVATION"])
       unless validator.valid?(status)
         fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
       end
diff --git a/lib/xero-ruby/models/app_store/product.rb b/lib/xero-ruby/models/app_store/product.rb
index 9bd7d35b..4d98d744 100644
--- a/lib/xero-ruby/models/app_store/product.rb
+++ b/lib/xero-ruby/models/app_store/product.rb
@@ -24,8 +24,8 @@ class Product
     
     # The pricing model of the product: * FIXED: Customers are charged a fixed amount for each billing period * PER_SEAT: Customers are charged based on the number of units they purchase 
     attr_accessor :type
-    FIXED = "FIXED".freeze
-    PER_SEAT = "PER_SEAT".freeze
+    FIXED ||= "FIXED".freeze
+    PER_SEAT ||= "PER_SEAT".freeze
     
     # The unit of the per seat product. e.g. \"user\", \"organisation\", \"SMS\", etc
     attr_accessor :seat_unit
diff --git a/lib/xero-ruby/models/app_store/subscription.rb b/lib/xero-ruby/models/app_store/subscription.rb
index d206d0ff..d0467be9 100644
--- a/lib/xero-ruby/models/app_store/subscription.rb
+++ b/lib/xero-ruby/models/app_store/subscription.rb
@@ -36,10 +36,35 @@ class Subscription
     
     # Status of the subscription. Available statuses are ACTIVE, CANCELED, and PAST_DUE.
     attr_accessor :status
+    ACTIVE ||= "ACTIVE".freeze
+    CANCELED ||= "CANCELED".freeze
+    PAST_DUE ||= "PAST_DUE".freeze
     
     # Boolean used to indicate if the subscription is in test mode
     attr_accessor :test_mode
     
+    class EnumAttributeValidator
+      attr_reader :datatype
+      attr_reader :allowable_values
+
+      def initialize(datatype, allowable_values)
+        @allowable_values = allowable_values.map do |value|
+          case datatype.to_s
+          when /Integer/i
+            value.to_i
+          when /Float/i
+            value.to_f
+          else
+            value
+          end
+        end
+      end
+
+      def valid?(value)
+        !value || allowable_values.include?(value)
+      end
+    end
+
     # Attribute mapping from ruby-style variable name to JSON key.
     def self.attribute_map
       {
@@ -158,9 +183,21 @@ def valid?
       return false if @plans.nil?
       return false if @start_date.nil?
       return false if @status.nil?
+      status_validator = EnumAttributeValidator.new('String', ["ACTIVE", "CANCELED", "PAST_DUE"])
+      return false unless status_validator.valid?(@status)
       true
     end
 
+    # Custom attribute writer method checking allowed values (enum).
+    # @param [Object] status Object to be assigned
+    def status=(status)
+      validator = EnumAttributeValidator.new('String', ["ACTIVE", "CANCELED", "PAST_DUE"])
+      unless validator.valid?(status)
+        fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
+      end
+      @status = status
+    end
+
     # Checks equality by comparing each attribute.
     # @param [Object] Object to be compared
     def ==(o)
diff --git a/lib/xero-ruby/models/app_store/subscription_item.rb b/lib/xero-ruby/models/app_store/subscription_item.rb
index d30a9c88..96ac4809 100644
--- a/lib/xero-ruby/models/app_store/subscription_item.rb
+++ b/lib/xero-ruby/models/app_store/subscription_item.rb
@@ -31,9 +31,37 @@ class SubscriptionItem
     # Date the subscription started, or will start. Note: this could be in the future for downgrades or reduced number of seats that haven't taken effect yet. 
     attr_accessor :start_date
     
+    # Status of the subscription item. Available statuses are ACTIVE, CANCELED, and PENDING_ACTIVATION. 
+    attr_accessor :status
+    ACTIVE ||= "ACTIVE".freeze
+    CANCELED ||= "CANCELED".freeze
+    PENDING_ACTIVATION ||= "PENDING_ACTIVATION".freeze
+    
     # If the subscription is a test subscription
     attr_accessor :test_mode
     
+    class EnumAttributeValidator
+      attr_reader :datatype
+      attr_reader :allowable_values
+
+      def initialize(datatype, allowable_values)
+        @allowable_values = allowable_values.map do |value|
+          case datatype.to_s
+          when /Integer/i
+            value.to_i
+          when /Float/i
+            value.to_f
+          else
+            value
+          end
+        end
+      end
+
+      def valid?(value)
+        !value || allowable_values.include?(value)
+      end
+    end
+
     # Attribute mapping from ruby-style variable name to JSON key.
     def self.attribute_map
       {
@@ -42,6 +70,7 @@ def self.attribute_map
         :'price' => :'price',
         :'product' => :'product',
         :'start_date' => :'startDate',
+        :'status' => :'status',
         :'test_mode' => :'testMode'
       }
     end
@@ -54,6 +83,7 @@ def self.openapi_types
         :'price' => :'Price',
         :'product' => :'Product',
         :'start_date' => :'DateTime',
+        :'status' => :'String',
         :'test_mode' => :'Boolean'
       }
     end
@@ -93,6 +123,10 @@ def initialize(attributes = {})
         self.start_date = attributes[:'start_date']
       end
 
+      if attributes.key?(:'status')
+        self.status = attributes[:'status']
+      end
+
       if attributes.key?(:'test_mode')
         self.test_mode = attributes[:'test_mode']
       end
@@ -118,6 +152,10 @@ def list_invalid_properties
         invalid_properties.push('invalid value for "start_date", start_date cannot be nil.')
       end
 
+      if @status.nil?
+        invalid_properties.push('invalid value for "status", status cannot be nil.')
+      end
+
       invalid_properties
     end
 
@@ -128,9 +166,22 @@ def valid?
       return false if @price.nil?
       return false if @product.nil?
       return false if @start_date.nil?
+      return false if @status.nil?
+      status_validator = EnumAttributeValidator.new('String', ["ACTIVE", "CANCELED", "PENDING_ACTIVATION"])
+      return false unless status_validator.valid?(@status)
       true
     end
 
+    # Custom attribute writer method checking allowed values (enum).
+    # @param [Object] status Object to be assigned
+    def status=(status)
+      validator = EnumAttributeValidator.new('String', ["ACTIVE", "CANCELED", "PENDING_ACTIVATION"])
+      unless validator.valid?(status)
+        fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
+      end
+      @status = status
+    end
+
     # Checks equality by comparing each attribute.
     # @param [Object] Object to be compared
     def ==(o)
@@ -141,6 +192,7 @@ def ==(o)
           price == o.price &&
           product == o.product &&
           start_date == o.start_date &&
+          status == o.status &&
           test_mode == o.test_mode
     end
 
@@ -153,7 +205,7 @@ def eql?(o)
     # Calculates hash code according to all attributes.
     # @return [Integer] Hash code
     def hash
-      [end_date, id, price, product, start_date, test_mode].hash
+      [end_date, id, price, product, start_date, status, test_mode].hash
     end
 
     # Builds the object from hash
diff --git a/lib/xero-ruby/models/assets/asset_status.rb b/lib/xero-ruby/models/assets/asset_status.rb
index c685888a..002c4bc2 100644
--- a/lib/xero-ruby/models/assets/asset_status.rb
+++ b/lib/xero-ruby/models/assets/asset_status.rb
@@ -14,9 +14,9 @@
 
 module XeroRuby::Assets
   class AssetStatus
-    DRAFT = "Draft".freeze
-    REGISTERED = "Registered".freeze
-    DISPOSED = "Disposed".freeze
+    DRAFT ||= "Draft".freeze
+    REGISTERED ||= "Registered".freeze
+    DISPOSED ||= "Disposed".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/assets/asset_status_query_param.rb b/lib/xero-ruby/models/assets/asset_status_query_param.rb
index 49d5bea2..c751d12f 100644
--- a/lib/xero-ruby/models/assets/asset_status_query_param.rb
+++ b/lib/xero-ruby/models/assets/asset_status_query_param.rb
@@ -14,9 +14,9 @@
 
 module XeroRuby::Assets
   class AssetStatusQueryParam
-    DRAFT = "DRAFT".freeze
-    REGISTERED = "REGISTERED".freeze
-    DISPOSED = "DISPOSED".freeze
+    DRAFT ||= "DRAFT".freeze
+    REGISTERED ||= "REGISTERED".freeze
+    DISPOSED ||= "DISPOSED".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/assets/book_depreciation_setting.rb b/lib/xero-ruby/models/assets/book_depreciation_setting.rb
index cd87699c..9bd12f4f 100644
--- a/lib/xero-ruby/models/assets/book_depreciation_setting.rb
+++ b/lib/xero-ruby/models/assets/book_depreciation_setting.rb
@@ -18,17 +18,17 @@ module XeroRuby::Assets
   class BookDepreciationSetting
     # The method of depreciation applied to this asset. See Depreciation Methods
     attr_accessor :depreciation_method
-    NO_DEPRECIATION = "NoDepreciation".freeze
-    STRAIGHT_LINE = "StraightLine".freeze
-    DIMINISHING_VALUE100 = "DiminishingValue100".freeze
-    DIMINISHING_VALUE150 = "DiminishingValue150".freeze
-    DIMINISHING_VALUE200 = "DiminishingValue200".freeze
-    FULL_DEPRECIATION = "FullDepreciation".freeze
+    NO_DEPRECIATION ||= "NoDepreciation".freeze
+    STRAIGHT_LINE ||= "StraightLine".freeze
+    DIMINISHING_VALUE100 ||= "DiminishingValue100".freeze
+    DIMINISHING_VALUE150 ||= "DiminishingValue150".freeze
+    DIMINISHING_VALUE200 ||= "DiminishingValue200".freeze
+    FULL_DEPRECIATION ||= "FullDepreciation".freeze
     
     # The method of averaging applied to this asset. See Averaging Methods
     attr_accessor :averaging_method
-    FULL_MONTH = "FullMonth".freeze
-    ACTUAL_DAYS = "ActualDays".freeze
+    FULL_MONTH ||= "FullMonth".freeze
+    ACTUAL_DAYS ||= "ActualDays".freeze
     
     # The rate of depreciation (e.g. 0.05)
     attr_accessor :depreciation_rate
@@ -38,9 +38,9 @@ class BookDepreciationSetting
     
     # See Depreciation Calculation Methods
     attr_accessor :depreciation_calculation_method
-    RATE = "Rate".freeze
-    LIFE = "Life".freeze
-    NONE = "None".freeze
+    RATE ||= "Rate".freeze
+    LIFE ||= "Life".freeze
+    NONE ||= "None".freeze
     
     # Unique Xero identifier for the depreciable object
     attr_accessor :depreciable_object_id
diff --git a/lib/xero-ruby/models/files/object_group.rb b/lib/xero-ruby/models/files/object_group.rb
index 9ca86ead..5df114da 100644
--- a/lib/xero-ruby/models/files/object_group.rb
+++ b/lib/xero-ruby/models/files/object_group.rb
@@ -14,17 +14,18 @@
 
 module XeroRuby::Files
   class ObjectGroup
-    ACCOUNT = "Account".freeze
-    BANK_TRANSACTION = "BankTransaction".freeze
-    CONTACT = "Contact".freeze
-    CREDIT_NOTE = "CreditNote".freeze
-    INVOICE = "Invoice".freeze
-    ITEM = "Item".freeze
-    MANUAL_JOURNAL = "ManualJournal".freeze
-    OVERPAYMENT = "Overpayment".freeze
-    PAYMENT = "Payment".freeze
-    PREPAYMENT = "Prepayment".freeze
-    RECEIPT = "Receipt".freeze
+    ACCOUNT ||= "Account".freeze
+    BANK_TRANSACTION ||= "BankTransaction".freeze
+    CONTACT ||= "Contact".freeze
+    CREDIT_NOTE ||= "CreditNote".freeze
+    INVOICE ||= "Invoice".freeze
+    ITEM ||= "Item".freeze
+    MANUAL_JOURNAL ||= "ManualJournal".freeze
+    OVERPAYMENT ||= "Overpayment".freeze
+    PAYMENT ||= "Payment".freeze
+    PREPAYMENT ||= "Prepayment".freeze
+    QUOTE ||= "Quote".freeze
+    RECEIPT ||= "Receipt".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/files/object_type.rb b/lib/xero-ruby/models/files/object_type.rb
index 17750598..f8d62cfc 100644
--- a/lib/xero-ruby/models/files/object_type.rb
+++ b/lib/xero-ruby/models/files/object_type.rb
@@ -14,61 +14,62 @@
 
 module XeroRuby::Files
   class ObjectType
-    UNKNOWN = "Unknown".freeze
-    ACCPAY = "Accpay".freeze
-    ACC_PAY_CREDIT = "AccPayCredit".freeze
-    ACC_PAY_PAYMENT = "AccPayPayment".freeze
-    ACC_REC = "AccRec".freeze
-    ACC_REC_CREDIT = "AccRecCredit".freeze
-    ACC_REC_PAYMENT = "AccRecPayment".freeze
-    ADJUSTMENT = "Adjustment".freeze
-    AP_CREDIT_PAYMENT = "ApCreditPayment".freeze
-    AP_OVER_PAYMENT = "ApOverPayment".freeze
-    AP_OVER_PAYMENT_PAYMENT = "ApOverPaymentPayment".freeze
-    AP_OVER_PAYMENT_SOURCE_PAYMENT = "ApOverPaymentSourcePayment".freeze
-    AP_PREPAYMENT = "ApPrepayment".freeze
-    AP_PREPAYMENT_PAYMENT = "ApPrepaymentPayment".freeze
-    AP_PREPAYMENT_SOURCE_PAYMENT = "ApPrepaymentSourcePayment".freeze
-    AR_CREDIT_PAYMENT = "ArCreditPayment".freeze
-    AR_OVER_PAYMENT = "ArOverPayment".freeze
-    AR_OVERPAYMENT_PAYMENT = "ArOverpaymentPayment".freeze
-    AR_OVERPAYMENT_SOURCE_PAYMENT = "ArOverpaymentSourcePayment".freeze
-    AR_PREPAYMENT = "ArPrepayment".freeze
-    AR_PREPAYMENT_PAYMENT = "ArPrepaymentPayment".freeze
-    AR_PREPAYMENT_SOURCE_PAYMENT = "ArPrepaymentSourcePayment".freeze
-    CASH_PAID = "CashPaid".freeze
-    CASH_REC = "CashRec".freeze
-    EXP_PAYMENT = "ExpPayment".freeze
-    MAN_JOURNAL = "ManJournal".freeze
-    PURCHASE_ORDER = "PurchaseOrder".freeze
-    RECEIPT = "Receipt".freeze
-    TRANSFER = "Transfer".freeze
-    ACCOUNT = "Account".freeze
-    CONTACT = "Contact".freeze
-    BUSINESS = "Business".freeze
-    EMPLOYEE = "Employee".freeze
-    PERSON = "Person".freeze
-    USER = "User".freeze
-    ORG = "Org".freeze
-    FIXED_ASSET = "FixedAsset".freeze
-    PAY_RUN = "PayRun".freeze
-    PRICE_LIST_ITEM = "PriceListItem".freeze
-    BANK = "Bank".freeze
-    CURRENT = "Current".freeze
-    EQUITY = "Equity".freeze
-    EXPENSE = "Expense".freeze
-    FIXED = "Fixed".freeze
-    LIABILITY = "Liability".freeze
-    PREPAYMENT = "Prepayment".freeze
-    REVENUE = "Revenue".freeze
-    SALES = "Sales".freeze
-    OVERHEADS = "Overheads".freeze
-    DEPRECIATN = "Depreciatn".freeze
-    OTHER_INCOME = "OtherIncome".freeze
-    DIRECT_COSTS = "DirectCosts".freeze
-    CURRLIAB = "Currliab".freeze
-    TERMLIAB = "Termliab".freeze
-    NON_CURRENT = "NonCurrent".freeze
+    UNKNOWN ||= "Unknown".freeze
+    ACCPAY ||= "Accpay".freeze
+    ACC_PAY_CREDIT ||= "AccPayCredit".freeze
+    ACC_PAY_PAYMENT ||= "AccPayPayment".freeze
+    ACC_REC ||= "AccRec".freeze
+    ACC_REC_CREDIT ||= "AccRecCredit".freeze
+    ACC_REC_PAYMENT ||= "AccRecPayment".freeze
+    ADJUSTMENT ||= "Adjustment".freeze
+    AP_CREDIT_PAYMENT ||= "ApCreditPayment".freeze
+    AP_OVER_PAYMENT ||= "ApOverPayment".freeze
+    AP_OVER_PAYMENT_PAYMENT ||= "ApOverPaymentPayment".freeze
+    AP_OVER_PAYMENT_SOURCE_PAYMENT ||= "ApOverPaymentSourcePayment".freeze
+    AP_PREPAYMENT ||= "ApPrepayment".freeze
+    AP_PREPAYMENT_PAYMENT ||= "ApPrepaymentPayment".freeze
+    AP_PREPAYMENT_SOURCE_PAYMENT ||= "ApPrepaymentSourcePayment".freeze
+    AR_CREDIT_PAYMENT ||= "ArCreditPayment".freeze
+    AR_OVER_PAYMENT ||= "ArOverPayment".freeze
+    AR_OVERPAYMENT_PAYMENT ||= "ArOverpaymentPayment".freeze
+    AR_OVERPAYMENT_SOURCE_PAYMENT ||= "ArOverpaymentSourcePayment".freeze
+    AR_PREPAYMENT ||= "ArPrepayment".freeze
+    AR_PREPAYMENT_PAYMENT ||= "ArPrepaymentPayment".freeze
+    AR_PREPAYMENT_SOURCE_PAYMENT ||= "ArPrepaymentSourcePayment".freeze
+    CASH_PAID ||= "CashPaid".freeze
+    CASH_REC ||= "CashRec".freeze
+    EXP_PAYMENT ||= "ExpPayment".freeze
+    MAN_JOURNAL ||= "ManJournal".freeze
+    PURCHASE_ORDER ||= "PurchaseOrder".freeze
+    RECEIPT ||= "Receipt".freeze
+    TRANSFER ||= "Transfer".freeze
+    ACCOUNT ||= "Account".freeze
+    CONTACT ||= "Contact".freeze
+    BUSINESS ||= "Business".freeze
+    EMPLOYEE ||= "Employee".freeze
+    PERSON ||= "Person".freeze
+    USER ||= "User".freeze
+    ORG ||= "Org".freeze
+    FIXED_ASSET ||= "FixedAsset".freeze
+    PAY_RUN ||= "PayRun".freeze
+    PRICE_LIST_ITEM ||= "PriceListItem".freeze
+    BANK ||= "Bank".freeze
+    CURRENT ||= "Current".freeze
+    EQUITY ||= "Equity".freeze
+    EXPENSE ||= "Expense".freeze
+    FIXED ||= "Fixed".freeze
+    LIABILITY ||= "Liability".freeze
+    PREPAYMENT ||= "Prepayment".freeze
+    REVENUE ||= "Revenue".freeze
+    SALES ||= "Sales".freeze
+    OVERHEADS ||= "Overheads".freeze
+    DEPRECIATN ||= "Depreciatn".freeze
+    OTHER_INCOME ||= "OtherIncome".freeze
+    DIRECT_COSTS ||= "DirectCosts".freeze
+    CURRLIAB ||= "Currliab".freeze
+    TERMLIAB ||= "Termliab".freeze
+    NON_CURRENT ||= "NonCurrent".freeze
+    SALES_QUOTE ||= "SalesQuote".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/finance/problem_type.rb b/lib/xero-ruby/models/finance/problem_type.rb
index d91fb28a..644d870c 100644
--- a/lib/xero-ruby/models/finance/problem_type.rb
+++ b/lib/xero-ruby/models/finance/problem_type.rb
@@ -14,11 +14,11 @@
 
 module XeroRuby::Finance
   class ProblemType
-    NOT_SET = "NotSet".freeze
-    INVALID_REQUEST = "invalid-request".freeze
-    INVALID_APPLICATION = "invalid-application".freeze
-    SERVICE_UNAVAILABLE = "service-unavailable".freeze
-    INTERNAL_ERROR = "internal-error".freeze
+    NOT_SET ||= "NotSet".freeze
+    INVALID_REQUEST ||= "invalid-request".freeze
+    INVALID_APPLICATION ||= "invalid-application".freeze
+    SERVICE_UNAVAILABLE ||= "service-unavailable".freeze
+    INTERNAL_ERROR ||= "internal-error".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/account_type.rb b/lib/xero-ruby/models/payroll_au/account_type.rb
index 13d001c1..58de64ac 100644
--- a/lib/xero-ruby/models/payroll_au/account_type.rb
+++ b/lib/xero-ruby/models/payroll_au/account_type.rb
@@ -14,29 +14,29 @@
 
 module XeroRuby::PayrollAu
   class AccountType
-    BANK = "BANK".freeze
-    CURRENT = "CURRENT".freeze
-    CURRLIAB = "CURRLIAB".freeze
-    DEPRECIATN = "DEPRECIATN".freeze
-    DIRECTCOSTS = "DIRECTCOSTS".freeze
-    EQUITY = "EQUITY".freeze
-    EXPENSE = "EXPENSE".freeze
-    FIXED = "FIXED".freeze
-    INVENTORY = "INVENTORY".freeze
-    LIABILITY = "LIABILITY".freeze
-    NONCURRENT = "NONCURRENT".freeze
-    OTHERINCOME = "OTHERINCOME".freeze
-    OVERHEADS = "OVERHEADS".freeze
-    PREPAYMENT = "PREPAYMENT".freeze
-    REVENUE = "REVENUE".freeze
-    SALES = "SALES".freeze
-    TERMLIAB = "TERMLIAB".freeze
-    PAYGLIABILITY = "PAYGLIABILITY".freeze
-    PAYG = "PAYG".freeze
-    SUPERANNUATIONEXPENSE = "SUPERANNUATIONEXPENSE".freeze
-    SUPERANNUATIONLIABILITY = "SUPERANNUATIONLIABILITY".freeze
-    WAGESEXPENSE = "WAGESEXPENSE".freeze
-    WAGESPAYABLELIABILITY = "WAGESPAYABLELIABILITY".freeze
+    BANK ||= "BANK".freeze
+    CURRENT ||= "CURRENT".freeze
+    CURRLIAB ||= "CURRLIAB".freeze
+    DEPRECIATN ||= "DEPRECIATN".freeze
+    DIRECTCOSTS ||= "DIRECTCOSTS".freeze
+    EQUITY ||= "EQUITY".freeze
+    EXPENSE ||= "EXPENSE".freeze
+    FIXED ||= "FIXED".freeze
+    INVENTORY ||= "INVENTORY".freeze
+    LIABILITY ||= "LIABILITY".freeze
+    NONCURRENT ||= "NONCURRENT".freeze
+    OTHERINCOME ||= "OTHERINCOME".freeze
+    OVERHEADS ||= "OVERHEADS".freeze
+    PREPAYMENT ||= "PREPAYMENT".freeze
+    REVENUE ||= "REVENUE".freeze
+    SALES ||= "SALES".freeze
+    TERMLIAB ||= "TERMLIAB".freeze
+    PAYGLIABILITY ||= "PAYGLIABILITY".freeze
+    PAYG ||= "PAYG".freeze
+    SUPERANNUATIONEXPENSE ||= "SUPERANNUATIONEXPENSE".freeze
+    SUPERANNUATIONLIABILITY ||= "SUPERANNUATIONLIABILITY".freeze
+    WAGESEXPENSE ||= "WAGESEXPENSE".freeze
+    WAGESPAYABLELIABILITY ||= "WAGESPAYABLELIABILITY".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/allowance_category.rb b/lib/xero-ruby/models/payroll_au/allowance_category.rb
new file mode 100644
index 00000000..d80c49b5
--- /dev/null
+++ b/lib/xero-ruby/models/payroll_au/allowance_category.rb
@@ -0,0 +1,41 @@
+=begin
+#Xero Payroll AU API
+
+#This is the Xero Payroll API for orgs in Australia region.
+
+Contact: api@xero.com
+Generated by: https://openapi-generator.tech
+OpenAPI Generator version: 4.3.1
+
+=end
+
+require 'time'
+require 'date'
+
+module XeroRuby::PayrollAu
+  class AllowanceCategory
+    NONDEDUCTIBLE ||= "NONDEDUCTIBLE".freeze
+    UNIFORM ||= "UNIFORM".freeze
+    PRIVATEVEHICLE ||= "PRIVATEVEHICLE".freeze
+    HOMEOFFICE ||= "HOMEOFFICE".freeze
+    TRANSPORT ||= "TRANSPORT".freeze
+    GENERAL ||= "GENERAL".freeze
+    OTHER ||= "OTHER".freeze
+
+    # Builds the enum from string
+    # @param [String] The enum value in the form of the string
+    # @return [String] The enum value
+    def self.build_from_hash(value)
+      new.build_from_hash(value)
+    end
+
+    # Builds the enum from string
+    # @param [String] The enum value in the form of the string
+    # @return [String] The enum value
+    def build_from_hash(value)
+      constantValues = AllowanceCategory.constants.select { |c| AllowanceCategory::const_get(c) == value }
+      raise "Invalid ENUM value #{value} for class #AllowanceCategory" if constantValues.empty?
+      value
+    end
+  end
+end
diff --git a/lib/xero-ruby/models/payroll_au/allowance_type.rb b/lib/xero-ruby/models/payroll_au/allowance_type.rb
index 46fcdcd0..87f4a3e2 100644
--- a/lib/xero-ruby/models/payroll_au/allowance_type.rb
+++ b/lib/xero-ruby/models/payroll_au/allowance_type.rb
@@ -14,13 +14,16 @@
 
 module XeroRuby::PayrollAu
   class AllowanceType
-    CAR = "CAR".freeze
-    TRANSPORT = "TRANSPORT".freeze
-    TRAVEL = "TRAVEL".freeze
-    LAUNDRY = "LAUNDRY".freeze
-    MEALS = "MEALS".freeze
-    JOBKEEPER = "JOBKEEPER".freeze
-    OTHER = "OTHER".freeze
+    CAR ||= "CAR".freeze
+    TRANSPORT ||= "TRANSPORT".freeze
+    LAUNDRY ||= "LAUNDRY".freeze
+    MEALS ||= "MEALS".freeze
+    TRAVEL ||= "TRAVEL".freeze
+    OTHER ||= "OTHER".freeze
+    JOBKEEPER ||= "JOBKEEPER".freeze
+    TOOLS ||= "TOOLS".freeze
+    TASKS ||= "TASKS".freeze
+    QUALIFICATIONS ||= "QUALIFICATIONS".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/calendar_type.rb b/lib/xero-ruby/models/payroll_au/calendar_type.rb
index b6de11b4..e3381787 100644
--- a/lib/xero-ruby/models/payroll_au/calendar_type.rb
+++ b/lib/xero-ruby/models/payroll_au/calendar_type.rb
@@ -14,12 +14,12 @@
 
 module XeroRuby::PayrollAu
   class CalendarType
-    WEEKLY = "WEEKLY".freeze
-    FORTNIGHTLY = "FORTNIGHTLY".freeze
-    FOURWEEKLY = "FOURWEEKLY".freeze
-    MONTHLY = "MONTHLY".freeze
-    TWICEMONTHLY = "TWICEMONTHLY".freeze
-    QUARTERLY = "QUARTERLY".freeze
+    WEEKLY ||= "WEEKLY".freeze
+    FORTNIGHTLY ||= "FORTNIGHTLY".freeze
+    FOURWEEKLY ||= "FOURWEEKLY".freeze
+    MONTHLY ||= "MONTHLY".freeze
+    TWICEMONTHLY ||= "TWICEMONTHLY".freeze
+    QUARTERLY ||= "QUARTERLY".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/deduction_type.rb b/lib/xero-ruby/models/payroll_au/deduction_type.rb
index 7a5160f5..ec8cfe01 100644
--- a/lib/xero-ruby/models/payroll_au/deduction_type.rb
+++ b/lib/xero-ruby/models/payroll_au/deduction_type.rb
@@ -39,9 +39,9 @@ class DeductionType
     
 
     attr_accessor :deduction_category
-    NONE = "NONE".freeze
-    UNIONFEES = "UNIONFEES".freeze
-    WORKPLACEGIVING = "WORKPLACEGIVING".freeze
+    NONE ||= "NONE".freeze
+    UNIONFEES ||= "UNIONFEES".freeze
+    WORKPLACEGIVING ||= "WORKPLACEGIVING".freeze
     
     # Is the current record
     attr_accessor :current_record
diff --git a/lib/xero-ruby/models/payroll_au/deduction_type_calculation_type.rb b/lib/xero-ruby/models/payroll_au/deduction_type_calculation_type.rb
index 29d33039..0af56965 100644
--- a/lib/xero-ruby/models/payroll_au/deduction_type_calculation_type.rb
+++ b/lib/xero-ruby/models/payroll_au/deduction_type_calculation_type.rb
@@ -14,9 +14,9 @@
 
 module XeroRuby::PayrollAu
   class DeductionTypeCalculationType
-    FIXEDAMOUNT = "FIXEDAMOUNT".freeze
-    PRETAX = "PRETAX".freeze
-    POSTTAX = "POSTTAX".freeze
+    FIXEDAMOUNT ||= "FIXEDAMOUNT".freeze
+    PRETAX ||= "PRETAX".freeze
+    POSTTAX ||= "POSTTAX".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/earnings_rate.rb b/lib/xero-ruby/models/payroll_au/earnings_rate.rb
index 3421e52c..e40238c1 100644
--- a/lib/xero-ruby/models/payroll_au/earnings_rate.rb
+++ b/lib/xero-ruby/models/payroll_au/earnings_rate.rb
@@ -67,6 +67,9 @@ class EarningsRate
 
     attr_accessor :allowance_type
     
+
+    attr_accessor :allowance_category
+    
     # Attribute mapping from ruby-style variable name to JSON key.
     def self.attribute_map
       {
@@ -86,7 +89,8 @@ def self.attribute_map
         :'employment_termination_payment_type' => :'EmploymentTerminationPaymentType',
         :'updated_date_utc' => :'UpdatedDateUTC',
         :'current_record' => :'CurrentRecord',
-        :'allowance_type' => :'AllowanceType'
+        :'allowance_type' => :'AllowanceType',
+        :'allowance_category' => :'AllowanceCategory'
       }
     end
 
@@ -109,7 +113,8 @@ def self.openapi_types
         :'employment_termination_payment_type' => :'EmploymentTerminationPaymentType',
         :'updated_date_utc' => :'DateTime',
         :'current_record' => :'Boolean',
-        :'allowance_type' => :'AllowanceType'
+        :'allowance_type' => :'AllowanceType',
+        :'allowance_category' => :'AllowanceCategory'
       }
     end
 
@@ -195,6 +200,10 @@ def initialize(attributes = {})
       if attributes.key?(:'allowance_type')
         self.allowance_type = attributes[:'allowance_type']
       end
+
+      if attributes.key?(:'allowance_category')
+        self.allowance_category = attributes[:'allowance_category']
+      end
     end
 
     # Show invalid properties with the reasons. Usually used together with valid?
@@ -261,7 +270,8 @@ def ==(o)
           employment_termination_payment_type == o.employment_termination_payment_type &&
           updated_date_utc == o.updated_date_utc &&
           current_record == o.current_record &&
-          allowance_type == o.allowance_type
+          allowance_type == o.allowance_type &&
+          allowance_category == o.allowance_category
     end
 
     # @see the `==` method
@@ -273,7 +283,7 @@ def eql?(o)
     # Calculates hash code according to all attributes.
     # @return [Integer] Hash code
     def hash
-      [name, account_code, type_of_units, is_exempt_from_tax, is_exempt_from_super, is_reportable_as_w1, earnings_type, earnings_rate_id, rate_type, rate_per_unit, multiplier, accrue_leave, amount, employment_termination_payment_type, updated_date_utc, current_record, allowance_type].hash
+      [name, account_code, type_of_units, is_exempt_from_tax, is_exempt_from_super, is_reportable_as_w1, earnings_type, earnings_rate_id, rate_type, rate_per_unit, multiplier, accrue_leave, amount, employment_termination_payment_type, updated_date_utc, current_record, allowance_type, allowance_category].hash
     end
 
     # Builds the object from hash
diff --git a/lib/xero-ruby/models/payroll_au/earnings_rate_calculation_type.rb b/lib/xero-ruby/models/payroll_au/earnings_rate_calculation_type.rb
index 6247634d..315da62b 100644
--- a/lib/xero-ruby/models/payroll_au/earnings_rate_calculation_type.rb
+++ b/lib/xero-ruby/models/payroll_au/earnings_rate_calculation_type.rb
@@ -14,9 +14,9 @@
 
 module XeroRuby::PayrollAu
   class EarningsRateCalculationType
-    USEEARNINGSRATE = "USEEARNINGSRATE".freeze
-    ENTEREARNINGSRATE = "ENTEREARNINGSRATE".freeze
-    ANNUALSALARY = "ANNUALSALARY".freeze
+    USEEARNINGSRATE ||= "USEEARNINGSRATE".freeze
+    ENTEREARNINGSRATE ||= "ENTEREARNINGSRATE".freeze
+    ANNUALSALARY ||= "ANNUALSALARY".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/earnings_type.rb b/lib/xero-ruby/models/payroll_au/earnings_type.rb
index 0d8d730c..d916617e 100644
--- a/lib/xero-ruby/models/payroll_au/earnings_type.rb
+++ b/lib/xero-ruby/models/payroll_au/earnings_type.rb
@@ -14,18 +14,18 @@
 
 module XeroRuby::PayrollAu
   class EarningsType
-    FIXED = "FIXED".freeze
-    ORDINARYTIMEEARNINGS = "ORDINARYTIMEEARNINGS".freeze
-    OVERTIMEEARNINGS = "OVERTIMEEARNINGS".freeze
-    ALLOWANCE = "ALLOWANCE".freeze
-    LUMPSUMD = "LUMPSUMD".freeze
-    EMPLOYMENTTERMINATIONPAYMENT = "EMPLOYMENTTERMINATIONPAYMENT".freeze
-    LUMPSUMA = "LUMPSUMA".freeze
-    LUMPSUMB = "LUMPSUMB".freeze
-    BONUSESANDCOMMISSIONS = "BONUSESANDCOMMISSIONS".freeze
-    LUMPSUME = "LUMPSUME".freeze
-    LUMPSUMW = "LUMPSUMW".freeze
-    DIRECTORSFEES = "DIRECTORSFEES".freeze
+    FIXED ||= "FIXED".freeze
+    ORDINARYTIMEEARNINGS ||= "ORDINARYTIMEEARNINGS".freeze
+    OVERTIMEEARNINGS ||= "OVERTIMEEARNINGS".freeze
+    ALLOWANCE ||= "ALLOWANCE".freeze
+    LUMPSUMD ||= "LUMPSUMD".freeze
+    EMPLOYMENTTERMINATIONPAYMENT ||= "EMPLOYMENTTERMINATIONPAYMENT".freeze
+    LUMPSUMA ||= "LUMPSUMA".freeze
+    LUMPSUMB ||= "LUMPSUMB".freeze
+    BONUSESANDCOMMISSIONS ||= "BONUSESANDCOMMISSIONS".freeze
+    LUMPSUME ||= "LUMPSUME".freeze
+    LUMPSUMW ||= "LUMPSUMW".freeze
+    DIRECTORSFEES ||= "DIRECTORSFEES".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/employee.rb b/lib/xero-ruby/models/payroll_au/employee.rb
index 0b333f0b..af0191a2 100644
--- a/lib/xero-ruby/models/payroll_au/employee.rb
+++ b/lib/xero-ruby/models/payroll_au/employee.rb
@@ -42,10 +42,10 @@ class Employee
     
     # The employee’s gender. See Employee Gender
     attr_accessor :gender
-    N = "N".freeze
-    M = "M".freeze
-    F = "F".freeze
-    I = "I".freeze
+    N ||= "N".freeze
+    M ||= "M".freeze
+    F ||= "F".freeze
+    I ||= "I".freeze
     
     # Employee phone number
     attr_accessor :phone
@@ -85,13 +85,13 @@ class Employee
     
     # * `V` Voluntary cessation - An employee resignation, retirement, domestic or pressing necessity or abandonment of employment * `I` Ill health - An employee resignation due to medical condition that prevents the continuation of employment, such as for illness, ill-health, medical unfitness or total permanent disability * `D` Deceased - The death of an employee * `R` Redundancy - An employer-initiated termination of employment due to a genuine redundancy or approved early retirement scheme * `F` Dismissal - An employer-initiated termination of employment due to dismissal, inability to perform the required work, misconduct or inefficiency * `C` Contract cessation - The natural conclusion of a limited employment relationship due to contract/engagement duration or task completion, seasonal work completion, or to cease casuals that are no longer required * `T` Transfer - The administrative arrangements performed to transfer employees across payroll systems, move them temporarily to another employer (machinery of government for public servants), transfer of business, move them to outsourcing arrangements or other such technical activities. 
     attr_accessor :termination_reason
-    V = "V".freeze
-    # I = "I".freeze
-    D = "D".freeze
-    R = "R".freeze
-    # F = "F".freeze
-    C = "C".freeze
-    T = "T".freeze
+    V ||= "V".freeze
+    I ||= "I".freeze
+    D ||= "D".freeze
+    R ||= "R".freeze
+    F ||= "F".freeze
+    C ||= "C".freeze
+    T ||= "T".freeze
     
 
     attr_accessor :bank_accounts
diff --git a/lib/xero-ruby/models/payroll_au/employee_status.rb b/lib/xero-ruby/models/payroll_au/employee_status.rb
index 892adfd9..c3d143de 100644
--- a/lib/xero-ruby/models/payroll_au/employee_status.rb
+++ b/lib/xero-ruby/models/payroll_au/employee_status.rb
@@ -14,8 +14,8 @@
 
 module XeroRuby::PayrollAu
   class EmployeeStatus
-    ACTIVE = "ACTIVE".freeze
-    TERMINATED = "TERMINATED".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    TERMINATED ||= "TERMINATED".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/employment_basis.rb b/lib/xero-ruby/models/payroll_au/employment_basis.rb
index e30350fc..58398453 100644
--- a/lib/xero-ruby/models/payroll_au/employment_basis.rb
+++ b/lib/xero-ruby/models/payroll_au/employment_basis.rb
@@ -14,11 +14,11 @@
 
 module XeroRuby::PayrollAu
   class EmploymentBasis
-    FULLTIME = "FULLTIME".freeze
-    PARTTIME = "PARTTIME".freeze
-    CASUAL = "CASUAL".freeze
-    LABOURHIRE = "LABOURHIRE".freeze
-    SUPERINCOMESTREAM = "SUPERINCOMESTREAM".freeze
+    FULLTIME ||= "FULLTIME".freeze
+    PARTTIME ||= "PARTTIME".freeze
+    CASUAL ||= "CASUAL".freeze
+    LABOURHIRE ||= "LABOURHIRE".freeze
+    SUPERINCOMESTREAM ||= "SUPERINCOMESTREAM".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/employment_termination_payment_type.rb b/lib/xero-ruby/models/payroll_au/employment_termination_payment_type.rb
index 95470e36..f005c46d 100644
--- a/lib/xero-ruby/models/payroll_au/employment_termination_payment_type.rb
+++ b/lib/xero-ruby/models/payroll_au/employment_termination_payment_type.rb
@@ -14,8 +14,8 @@
 
 module XeroRuby::PayrollAu
   class EmploymentTerminationPaymentType
-    O = "O".freeze
-    R = "R".freeze
+    O ||= "O".freeze
+    R ||= "R".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/entitlement_final_pay_payout_type.rb b/lib/xero-ruby/models/payroll_au/entitlement_final_pay_payout_type.rb
index 12be65e8..5370f5c4 100644
--- a/lib/xero-ruby/models/payroll_au/entitlement_final_pay_payout_type.rb
+++ b/lib/xero-ruby/models/payroll_au/entitlement_final_pay_payout_type.rb
@@ -14,8 +14,8 @@
 
 module XeroRuby::PayrollAu
   class EntitlementFinalPayPayoutType
-    NOTPAIDOUT = "NOTPAIDOUT".freeze
-    PAIDOUT = "PAIDOUT".freeze
+    NOTPAIDOUT ||= "NOTPAIDOUT".freeze
+    PAIDOUT ||= "PAIDOUT".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/leave_line_calculation_type.rb b/lib/xero-ruby/models/payroll_au/leave_line_calculation_type.rb
index 32787978..dbb35038 100644
--- a/lib/xero-ruby/models/payroll_au/leave_line_calculation_type.rb
+++ b/lib/xero-ruby/models/payroll_au/leave_line_calculation_type.rb
@@ -14,11 +14,11 @@
 
 module XeroRuby::PayrollAu
   class LeaveLineCalculationType
-    NOCALCULATIONREQUIRED = "NOCALCULATIONREQUIRED".freeze
-    FIXEDAMOUNTEACHPERIOD = "FIXEDAMOUNTEACHPERIOD".freeze
-    ENTERRATEINPAYTEMPLATE = "ENTERRATEINPAYTEMPLATE".freeze
-    BASEDONORDINARYEARNINGS = "BASEDONORDINARYEARNINGS".freeze
-    EMPTY = "".freeze
+    NOCALCULATIONREQUIRED ||= "NOCALCULATIONREQUIRED".freeze
+    FIXEDAMOUNTEACHPERIOD ||= "FIXEDAMOUNTEACHPERIOD".freeze
+    ENTERRATEINPAYTEMPLATE ||= "ENTERRATEINPAYTEMPLATE".freeze
+    BASEDONORDINARYEARNINGS ||= "BASEDONORDINARYEARNINGS".freeze
+    EMPTY ||= "".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/leave_period_status.rb b/lib/xero-ruby/models/payroll_au/leave_period_status.rb
index b0fb8726..40e88553 100644
--- a/lib/xero-ruby/models/payroll_au/leave_period_status.rb
+++ b/lib/xero-ruby/models/payroll_au/leave_period_status.rb
@@ -14,8 +14,8 @@
 
 module XeroRuby::PayrollAu
   class LeavePeriodStatus
-    SCHEDULED = "SCHEDULED".freeze
-    PROCESSED = "PROCESSED".freeze
+    SCHEDULED ||= "SCHEDULED".freeze
+    PROCESSED ||= "PROCESSED".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/leave_type_contribution_type.rb b/lib/xero-ruby/models/payroll_au/leave_type_contribution_type.rb
index 53945b09..cb1ba269 100644
--- a/lib/xero-ruby/models/payroll_au/leave_type_contribution_type.rb
+++ b/lib/xero-ruby/models/payroll_au/leave_type_contribution_type.rb
@@ -14,10 +14,10 @@
 
 module XeroRuby::PayrollAu
   class LeaveTypeContributionType
-    SGC = "SGC".freeze
-    SALARYSACRIFICE = "SALARYSACRIFICE".freeze
-    EMPLOYERADDITIONAL = "EMPLOYERADDITIONAL".freeze
-    EMPLOYEE = "EMPLOYEE".freeze
+    SGC ||= "SGC".freeze
+    SALARYSACRIFICE ||= "SALARYSACRIFICE".freeze
+    EMPLOYERADDITIONAL ||= "EMPLOYERADDITIONAL".freeze
+    EMPLOYEE ||= "EMPLOYEE".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/manual_tax_type.rb b/lib/xero-ruby/models/payroll_au/manual_tax_type.rb
index e14e78eb..223552ac 100644
--- a/lib/xero-ruby/models/payroll_au/manual_tax_type.rb
+++ b/lib/xero-ruby/models/payroll_au/manual_tax_type.rb
@@ -14,12 +14,12 @@
 
 module XeroRuby::PayrollAu
   class ManualTaxType
-    PAYGMANUAL = "PAYGMANUAL".freeze
-    ETPOMANUAL = "ETPOMANUAL".freeze
-    ETPRMANUAL = "ETPRMANUAL".freeze
-    SCHEDULE5_MANUAL = "SCHEDULE5MANUAL".freeze
-    SCHEDULE5_STSLMANUAL = "SCHEDULE5STSLMANUAL".freeze
-    SCHEDULE4_MANUAL = "SCHEDULE4MANUAL".freeze
+    PAYGMANUAL ||= "PAYGMANUAL".freeze
+    ETPOMANUAL ||= "ETPOMANUAL".freeze
+    ETPRMANUAL ||= "ETPRMANUAL".freeze
+    SCHEDULE5_MANUAL ||= "SCHEDULE5MANUAL".freeze
+    SCHEDULE5_STSLMANUAL ||= "SCHEDULE5STSLMANUAL".freeze
+    SCHEDULE4_MANUAL ||= "SCHEDULE4MANUAL".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/pay_run_status.rb b/lib/xero-ruby/models/payroll_au/pay_run_status.rb
index f5c4e069..25c55eab 100644
--- a/lib/xero-ruby/models/payroll_au/pay_run_status.rb
+++ b/lib/xero-ruby/models/payroll_au/pay_run_status.rb
@@ -14,8 +14,8 @@
 
 module XeroRuby::PayrollAu
   class PayRunStatus
-    DRAFT = "DRAFT".freeze
-    POSTED = "POSTED".freeze
+    DRAFT ||= "DRAFT".freeze
+    POSTED ||= "POSTED".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/payment_frequency_type.rb b/lib/xero-ruby/models/payroll_au/payment_frequency_type.rb
index 27bcd712..1ad37d22 100644
--- a/lib/xero-ruby/models/payroll_au/payment_frequency_type.rb
+++ b/lib/xero-ruby/models/payroll_au/payment_frequency_type.rb
@@ -14,13 +14,13 @@
 
 module XeroRuby::PayrollAu
   class PaymentFrequencyType
-    WEEKLY = "WEEKLY".freeze
-    MONTHLY = "MONTHLY".freeze
-    FORTNIGHTLY = "FORTNIGHTLY".freeze
-    QUARTERLY = "QUARTERLY".freeze
-    TWICEMONTHLY = "TWICEMONTHLY".freeze
-    FOURWEEKLY = "FOURWEEKLY".freeze
-    YEARLY = "YEARLY".freeze
+    WEEKLY ||= "WEEKLY".freeze
+    MONTHLY ||= "MONTHLY".freeze
+    FORTNIGHTLY ||= "FORTNIGHTLY".freeze
+    QUARTERLY ||= "QUARTERLY".freeze
+    TWICEMONTHLY ||= "TWICEMONTHLY".freeze
+    FOURWEEKLY ||= "FOURWEEKLY".freeze
+    YEARLY ||= "YEARLY".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/rate_type.rb b/lib/xero-ruby/models/payroll_au/rate_type.rb
index c963d829..57f0b043 100644
--- a/lib/xero-ruby/models/payroll_au/rate_type.rb
+++ b/lib/xero-ruby/models/payroll_au/rate_type.rb
@@ -14,9 +14,9 @@
 
 module XeroRuby::PayrollAu
   class RateType
-    FIXEDAMOUNT = "FIXEDAMOUNT".freeze
-    MULTIPLE = "MULTIPLE".freeze
-    RATEPERUNIT = "RATEPERUNIT".freeze
+    FIXEDAMOUNT ||= "FIXEDAMOUNT".freeze
+    MULTIPLE ||= "MULTIPLE".freeze
+    RATEPERUNIT ||= "RATEPERUNIT".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/residency_status.rb b/lib/xero-ruby/models/payroll_au/residency_status.rb
index c5ecb589..8b9a0693 100644
--- a/lib/xero-ruby/models/payroll_au/residency_status.rb
+++ b/lib/xero-ruby/models/payroll_au/residency_status.rb
@@ -14,9 +14,9 @@
 
 module XeroRuby::PayrollAu
   class ResidencyStatus
-    AUSTRALIANRESIDENT = "AUSTRALIANRESIDENT".freeze
-    FOREIGNRESIDENT = "FOREIGNRESIDENT".freeze
-    WORKINGHOLIDAYMAKER = "WORKINGHOLIDAYMAKER".freeze
+    AUSTRALIANRESIDENT ||= "AUSTRALIANRESIDENT".freeze
+    FOREIGNRESIDENT ||= "FOREIGNRESIDENT".freeze
+    WORKINGHOLIDAYMAKER ||= "WORKINGHOLIDAYMAKER".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/state.rb b/lib/xero-ruby/models/payroll_au/state.rb
index 6457ad0d..a3b4c065 100644
--- a/lib/xero-ruby/models/payroll_au/state.rb
+++ b/lib/xero-ruby/models/payroll_au/state.rb
@@ -14,14 +14,14 @@
 
 module XeroRuby::PayrollAu
   class State
-    ACT = "ACT".freeze
-    NSW = "NSW".freeze
-    NT = "NT".freeze
-    QLD = "QLD".freeze
-    SA = "SA".freeze
-    TAS = "TAS".freeze
-    VIC = "VIC".freeze
-    WA = "WA".freeze
+    ACT ||= "ACT".freeze
+    NSW ||= "NSW".freeze
+    NT ||= "NT".freeze
+    QLD ||= "QLD".freeze
+    SA ||= "SA".freeze
+    TAS ||= "TAS".freeze
+    VIC ||= "VIC".freeze
+    WA ||= "WA".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/super_fund_type.rb b/lib/xero-ruby/models/payroll_au/super_fund_type.rb
index 56a2cc3d..50ad43b6 100644
--- a/lib/xero-ruby/models/payroll_au/super_fund_type.rb
+++ b/lib/xero-ruby/models/payroll_au/super_fund_type.rb
@@ -14,8 +14,8 @@
 
 module XeroRuby::PayrollAu
   class SuperFundType
-    REGULATED = "REGULATED".freeze
-    SMSF = "SMSF".freeze
+    REGULATED ||= "REGULATED".freeze
+    SMSF ||= "SMSF".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/superannuation_calculation_type.rb b/lib/xero-ruby/models/payroll_au/superannuation_calculation_type.rb
index 736cf3f2..fca870bb 100644
--- a/lib/xero-ruby/models/payroll_au/superannuation_calculation_type.rb
+++ b/lib/xero-ruby/models/payroll_au/superannuation_calculation_type.rb
@@ -14,9 +14,9 @@
 
 module XeroRuby::PayrollAu
   class SuperannuationCalculationType
-    FIXEDAMOUNT = "FIXEDAMOUNT".freeze
-    PERCENTAGEOFEARNINGS = "PERCENTAGEOFEARNINGS".freeze
-    STATUTORY = "STATUTORY".freeze
+    FIXEDAMOUNT ||= "FIXEDAMOUNT".freeze
+    PERCENTAGEOFEARNINGS ||= "PERCENTAGEOFEARNINGS".freeze
+    STATUTORY ||= "STATUTORY".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/superannuation_contribution_type.rb b/lib/xero-ruby/models/payroll_au/superannuation_contribution_type.rb
index 8252646c..e1dad732 100644
--- a/lib/xero-ruby/models/payroll_au/superannuation_contribution_type.rb
+++ b/lib/xero-ruby/models/payroll_au/superannuation_contribution_type.rb
@@ -14,10 +14,10 @@
 
 module XeroRuby::PayrollAu
   class SuperannuationContributionType
-    SGC = "SGC".freeze
-    SALARYSACRIFICE = "SALARYSACRIFICE".freeze
-    EMPLOYERADDITIONAL = "EMPLOYERADDITIONAL".freeze
-    EMPLOYEE = "EMPLOYEE".freeze
+    SGC ||= "SGC".freeze
+    SALARYSACRIFICE ||= "SALARYSACRIFICE".freeze
+    EMPLOYERADDITIONAL ||= "EMPLOYERADDITIONAL".freeze
+    EMPLOYEE ||= "EMPLOYEE".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/tfn_exemption_type.rb b/lib/xero-ruby/models/payroll_au/tfn_exemption_type.rb
index 7fd780fa..deac84e9 100644
--- a/lib/xero-ruby/models/payroll_au/tfn_exemption_type.rb
+++ b/lib/xero-ruby/models/payroll_au/tfn_exemption_type.rb
@@ -14,10 +14,10 @@
 
 module XeroRuby::PayrollAu
   class TFNExemptionType
-    NOTQUOTED = "NOTQUOTED".freeze
-    PENDING = "PENDING".freeze
-    PENSIONER = "PENSIONER".freeze
-    UNDER18 = "UNDER18".freeze
+    NOTQUOTED ||= "NOTQUOTED".freeze
+    PENDING ||= "PENDING".freeze
+    PENSIONER ||= "PENSIONER".freeze
+    UNDER18 ||= "UNDER18".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_au/timesheet_status.rb b/lib/xero-ruby/models/payroll_au/timesheet_status.rb
index 7850d8b5..fc327175 100644
--- a/lib/xero-ruby/models/payroll_au/timesheet_status.rb
+++ b/lib/xero-ruby/models/payroll_au/timesheet_status.rb
@@ -14,11 +14,11 @@
 
 module XeroRuby::PayrollAu
   class TimesheetStatus
-    DRAFT = "DRAFT".freeze
-    PROCESSED = "PROCESSED".freeze
-    APPROVED = "APPROVED".freeze
-    REJECTED = "REJECTED".freeze
-    REQUESTED = "REQUESTED".freeze
+    DRAFT ||= "DRAFT".freeze
+    PROCESSED ||= "PROCESSED".freeze
+    APPROVED ||= "APPROVED".freeze
+    REJECTED ||= "REJECTED".freeze
+    REQUESTED ||= "REQUESTED".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_nz/account.rb b/lib/xero-ruby/models/payroll_nz/account.rb
index b0a9810a..faf82d62 100644
--- a/lib/xero-ruby/models/payroll_nz/account.rb
+++ b/lib/xero-ruby/models/payroll_nz/account.rb
@@ -21,10 +21,10 @@ class Account
     
     # The assigned AccountType
     attr_accessor :type
-    PAYELIABILITY = "PAYELIABILITY".freeze
-    WAGESPAYABLE = "WAGESPAYABLE".freeze
-    WAGESEXPENSE = "WAGESEXPENSE".freeze
-    BANK = "BANK".freeze
+    PAYELIABILITY ||= "PAYELIABILITY".freeze
+    WAGESPAYABLE ||= "WAGESPAYABLE".freeze
+    WAGESEXPENSE ||= "WAGESEXPENSE".freeze
+    BANK ||= "BANK".freeze
     
     # A unique 3 digit number for each Account
     attr_accessor :code
diff --git a/lib/xero-ruby/models/payroll_nz/bank_account.rb b/lib/xero-ruby/models/payroll_nz/bank_account.rb
index 865a508e..007417c5 100644
--- a/lib/xero-ruby/models/payroll_nz/bank_account.rb
+++ b/lib/xero-ruby/models/payroll_nz/bank_account.rb
@@ -39,8 +39,8 @@ class BankAccount
     
     # Calculation type for the transaction can be 'Fixed Amount' or 'Balance'
     attr_accessor :calculation_type
-    FIXED_AMOUNT = "FixedAmount".freeze
-    BALANCE = "Balance".freeze
+    FIXED_AMOUNT ||= "FixedAmount".freeze
+    BALANCE ||= "Balance".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/payroll_nz/benefit.rb b/lib/xero-ruby/models/payroll_nz/benefit.rb
index ceeb8e33..8e8ca905 100644
--- a/lib/xero-ruby/models/payroll_nz/benefit.rb
+++ b/lib/xero-ruby/models/payroll_nz/benefit.rb
@@ -24,9 +24,9 @@ class Benefit
     
     # Superannuations Category type
     attr_accessor :category
-    KIWI_SAVER = "KiwiSaver".freeze
-    COMPLYING_FUND = "ComplyingFund".freeze
-    OTHER = "Other".freeze
+    KIWI_SAVER ||= "KiwiSaver".freeze
+    COMPLYING_FUND ||= "ComplyingFund".freeze
+    OTHER ||= "Other".freeze
     
     # Xero identifier for Liability Account
     attr_accessor :liability_account_id
@@ -36,8 +36,8 @@ class Benefit
     
     # Calculation Type of the superannuation either FixedAmount or PercentageOfTaxableEarnings
     attr_accessor :calculation_type_nz
-    FIXED_AMOUNT = "FixedAmount".freeze
-    PERCENTAGE_OF_TAXABLE_EARNINGS = "PercentageOfTaxableEarnings".freeze
+    FIXED_AMOUNT ||= "FixedAmount".freeze
+    PERCENTAGE_OF_TAXABLE_EARNINGS ||= "PercentageOfTaxableEarnings".freeze
     
     # Standard amount of the superannuation
     attr_accessor :standard_amount
diff --git a/lib/xero-ruby/models/payroll_nz/calendar_type.rb b/lib/xero-ruby/models/payroll_nz/calendar_type.rb
index 1e99b823..55a48606 100644
--- a/lib/xero-ruby/models/payroll_nz/calendar_type.rb
+++ b/lib/xero-ruby/models/payroll_nz/calendar_type.rb
@@ -14,13 +14,13 @@
 
 module XeroRuby::PayrollNz
   class CalendarType
-    WEEKLY = "Weekly".freeze
-    FORTNIGHTLY = "Fortnightly".freeze
-    FOUR_WEEKLY = "FourWeekly".freeze
-    MONTHLY = "Monthly".freeze
-    ANNUAL = "Annual".freeze
-    QUARTERLY = "Quarterly".freeze
-    TWICE_MONTHLY = "TwiceMonthly".freeze
+    WEEKLY ||= "Weekly".freeze
+    FORTNIGHTLY ||= "Fortnightly".freeze
+    FOUR_WEEKLY ||= "FourWeekly".freeze
+    MONTHLY ||= "Monthly".freeze
+    ANNUAL ||= "Annual".freeze
+    QUARTERLY ||= "Quarterly".freeze
+    TWICE_MONTHLY ||= "TwiceMonthly".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_nz/deduction.rb b/lib/xero-ruby/models/payroll_nz/deduction.rb
index 783c997c..d2d91681 100644
--- a/lib/xero-ruby/models/payroll_nz/deduction.rb
+++ b/lib/xero-ruby/models/payroll_nz/deduction.rb
@@ -24,10 +24,10 @@ class Deduction
     
     # Deduction Category type
     attr_accessor :deduction_category
-    PAYROLL_GIVING = "PayrollGiving".freeze
-    KIWI_SAVER_VOLUNTARY_CONTRIBUTIONS = "KiwiSaverVoluntaryContributions".freeze
-    SUPERANNUATION = "Superannuation".freeze
-    NZ_OTHER = "NzOther".freeze
+    PAYROLL_GIVING ||= "PayrollGiving".freeze
+    KIWI_SAVER_VOLUNTARY_CONTRIBUTIONS ||= "KiwiSaverVoluntaryContributions".freeze
+    SUPERANNUATION ||= "Superannuation".freeze
+    NZ_OTHER ||= "NzOther".freeze
     
     # Xero identifier for Liability Account
     attr_accessor :liability_account_id
diff --git a/lib/xero-ruby/models/payroll_nz/earnings_rate.rb b/lib/xero-ruby/models/payroll_nz/earnings_rate.rb
index 51489a15..70c5eab9 100644
--- a/lib/xero-ruby/models/payroll_nz/earnings_rate.rb
+++ b/lib/xero-ruby/models/payroll_nz/earnings_rate.rb
@@ -24,27 +24,27 @@ class EarningsRate
     
     # Indicates how an employee will be paid when taking this type of earning
     attr_accessor :earnings_type
-    ALLOWANCE = "Allowance".freeze
-    BACKPAY = "Backpay".freeze
-    BONUS = "Bonus".freeze
-    COMMISSION = "Commission".freeze
-    DISCRETIONARY_PAYMENTS = "DiscretionaryPayments".freeze
-    HOLIDAY_PAY = "HolidayPay".freeze
-    LUMP_SUM = "LumpSum".freeze
-    OTHER_EARNINGS = "OtherEarnings".freeze
-    OTHER_GROSS_EARNINGS = "OtherGrossEarnings".freeze
-    OVERTIME_EARNINGS = "OvertimeEarnings".freeze
-    REGULAR_EARNINGS = "RegularEarnings".freeze
-    SALARY_SACRIFICE_FOR_KIWI_SAVER = "SalarySacrificeForKiwiSaver".freeze
-    TIPS_DIRECT = "Tips(Direct)".freeze
-    TIPS_NON_DIRECT = "Tips(Non-Direct)".freeze
-    WITHHOLDING_INCOME = "WithholdingIncome".freeze
+    ALLOWANCE ||= "Allowance".freeze
+    BACKPAY ||= "Backpay".freeze
+    BONUS ||= "Bonus".freeze
+    COMMISSION ||= "Commission".freeze
+    DISCRETIONARY_PAYMENTS ||= "DiscretionaryPayments".freeze
+    HOLIDAY_PAY ||= "HolidayPay".freeze
+    LUMP_SUM ||= "LumpSum".freeze
+    OTHER_EARNINGS ||= "OtherEarnings".freeze
+    OTHER_GROSS_EARNINGS ||= "OtherGrossEarnings".freeze
+    OVERTIME_EARNINGS ||= "OvertimeEarnings".freeze
+    REGULAR_EARNINGS ||= "RegularEarnings".freeze
+    SALARY_SACRIFICE_FOR_KIWI_SAVER ||= "SalarySacrificeForKiwiSaver".freeze
+    TIPS_DIRECT ||= "Tips(Direct)".freeze
+    TIPS_NON_DIRECT ||= "Tips(Non-Direct)".freeze
+    WITHHOLDING_INCOME ||= "WithholdingIncome".freeze
     
     # Indicates the type of the earning rate
     attr_accessor :rate_type
-    RATE_PER_UNIT = "RatePerUnit".freeze
-    MULTIPLE_OF_ORDINARY_EARNINGS_RATE = "MultipleOfOrdinaryEarningsRate".freeze
-    FIXED_AMOUNT = "FixedAmount".freeze
+    RATE_PER_UNIT ||= "RatePerUnit".freeze
+    MULTIPLE_OF_ORDINARY_EARNINGS_RATE ||= "MultipleOfOrdinaryEarningsRate".freeze
+    FIXED_AMOUNT ||= "FixedAmount".freeze
     
     # The type of units used to record earnings
     attr_accessor :type_of_units
diff --git a/lib/xero-ruby/models/payroll_nz/employee.rb b/lib/xero-ruby/models/payroll_nz/employee.rb
index eaf5de0c..3adc2442 100644
--- a/lib/xero-ruby/models/payroll_nz/employee.rb
+++ b/lib/xero-ruby/models/payroll_nz/employee.rb
@@ -39,8 +39,8 @@ class Employee
     
     # The employee’s gender
     attr_accessor :gender
-    M = "M".freeze
-    F = "F".freeze
+    M ||= "M".freeze
+    F ||= "F".freeze
     
     # Employee phone number
     attr_accessor :phone_number
diff --git a/lib/xero-ruby/models/payroll_nz/employee_leave_type.rb b/lib/xero-ruby/models/payroll_nz/employee_leave_type.rb
index 35868e65..ce73a60d 100644
--- a/lib/xero-ruby/models/payroll_nz/employee_leave_type.rb
+++ b/lib/xero-ruby/models/payroll_nz/employee_leave_type.rb
@@ -21,10 +21,10 @@ class EmployeeLeaveType
     
     # The schedule of accrual
     attr_accessor :schedule_of_accrual
-    ANNUALLY_AFTER6_MONTHS = "AnnuallyAfter6Months".freeze
-    ON_ANNIVERSARY_DATE = "OnAnniversaryDate".freeze
-    PERCENTAGE_OF_GROSS_EARNINGS = "PercentageOfGrossEarnings".freeze
-    NO_ACCRUALS = "NoAccruals".freeze
+    ANNUALLY_AFTER6_MONTHS ||= "AnnuallyAfter6Months".freeze
+    ON_ANNIVERSARY_DATE ||= "OnAnniversaryDate".freeze
+    PERCENTAGE_OF_GROSS_EARNINGS ||= "PercentageOfGrossEarnings".freeze
+    NO_ACCRUALS ||= "NoAccruals".freeze
     
     # The number of hours accrued for the leave annually. This is 0 when the scheduleOfAccrual chosen is \"OnHourWorked\"
     attr_accessor :hours_accrued_annually
diff --git a/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance.rb b/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance.rb
index ee38a91f..7427f8cd 100644
--- a/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance.rb
+++ b/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance.rb
@@ -18,18 +18,18 @@ module XeroRuby::PayrollNz
   class EmployeeStatutoryLeaveBalance
     # The type of statutory leave
     attr_accessor :leave_type
-    SICK = "Sick".freeze
-    ADOPTION = "Adoption".freeze
-    MATERNITY = "Maternity".freeze
-    PATERNITY = "Paternity".freeze
-    SHAREDPARENTAL = "Sharedparental".freeze
+    SICK ||= "Sick".freeze
+    ADOPTION ||= "Adoption".freeze
+    MATERNITY ||= "Maternity".freeze
+    PATERNITY ||= "Paternity".freeze
+    SHAREDPARENTAL ||= "Sharedparental".freeze
     
     # The balance remaining for the corresponding leave type as of specified date.
     attr_accessor :balance_remaining
     
     # The units will be \"Hours\"
     attr_accessor :units
-    HOURS = "Hours".freeze
+    HOURS ||= "Hours".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_summary.rb b/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_summary.rb
index a7889063..d44c7428 100644
--- a/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_summary.rb
+++ b/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_summary.rb
@@ -24,11 +24,11 @@ class EmployeeStatutoryLeaveSummary
     
     # The category of statutory leave
     attr_accessor :type
-    SICK = "Sick".freeze
-    ADOPTION = "Adoption".freeze
-    MATERNITY = "Maternity".freeze
-    PATERNITY = "Paternity".freeze
-    SHAREDPARENTAL = "Sharedparental".freeze
+    SICK ||= "Sick".freeze
+    ADOPTION ||= "Adoption".freeze
+    MATERNITY ||= "Maternity".freeze
+    PATERNITY ||= "Paternity".freeze
+    SHAREDPARENTAL ||= "Sharedparental".freeze
     
     # The date when the leave starts
     attr_accessor :start_date
@@ -41,9 +41,9 @@ class EmployeeStatutoryLeaveSummary
     
     # The status of the leave
     attr_accessor :status
-    PENDING = "Pending".freeze
-    IN_PROGRESS = "In-Progress".freeze
-    COMPLETED = "Completed".freeze
+    PENDING ||= "Pending".freeze
+    IN_PROGRESS ||= "In-Progress".freeze
+    COMPLETED ||= "Completed".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/payroll_nz/employee_tax.rb b/lib/xero-ruby/models/payroll_nz/employee_tax.rb
index 735f505e..595f192f 100644
--- a/lib/xero-ruby/models/payroll_nz/employee_tax.rb
+++ b/lib/xero-ruby/models/payroll_nz/employee_tax.rb
@@ -39,11 +39,11 @@ class EmployeeTax
     
     # Contribution Option which can be 'MakeContributions' 'OptOut', 'OnAContributionsHoliday', 'OnASavingsSuspension', 'NotCurrentlyAKiwiSaverMember' for employees without a KiwiSaver membership
     attr_accessor :kiwi_saver_contributions
-    MAKE_CONTRIBUTIONS = "MakeContributions".freeze
-    OPT_OUT = "OptOut".freeze
-    ON_A_CONTRIBUTIONS_HOLIDAY = "OnAContributionsHoliday".freeze
-    ON_A_SAVINGS_SUSPENSION = "OnASavingsSuspension".freeze
-    NOT_CURRENTLY_A_KIWI_SAVER_MEMBER = "NotCurrentlyAKiwiSaverMember".freeze
+    MAKE_CONTRIBUTIONS ||= "MakeContributions".freeze
+    OPT_OUT ||= "OptOut".freeze
+    ON_A_CONTRIBUTIONS_HOLIDAY ||= "OnAContributionsHoliday".freeze
+    ON_A_SAVINGS_SUSPENSION ||= "OnASavingsSuspension".freeze
+    NOT_CURRENTLY_A_KIWI_SAVER_MEMBER ||= "NotCurrentlyAKiwiSaverMember".freeze
     
     # Employee Contribution percentage.
     attr_accessor :kiwi_saver_employee_contribution_rate_percentage
diff --git a/lib/xero-ruby/models/payroll_nz/leave_period.rb b/lib/xero-ruby/models/payroll_nz/leave_period.rb
index 5f686e91..0fad5ba1 100644
--- a/lib/xero-ruby/models/payroll_nz/leave_period.rb
+++ b/lib/xero-ruby/models/payroll_nz/leave_period.rb
@@ -27,8 +27,8 @@ class LeavePeriod
     
     # Period Status
     attr_accessor :period_status
-    APPROVED = "Approved".freeze
-    COMPLETED = "Completed".freeze
+    APPROVED ||= "Approved".freeze
+    COMPLETED ||= "Completed".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/payroll_nz/pay_run.rb b/lib/xero-ruby/models/payroll_nz/pay_run.rb
index 0b3d6787..c9ce6c2b 100644
--- a/lib/xero-ruby/models/payroll_nz/pay_run.rb
+++ b/lib/xero-ruby/models/payroll_nz/pay_run.rb
@@ -39,14 +39,14 @@ class PayRun
     
     # Pay run status
     attr_accessor :pay_run_status
-    DRAFT = "Draft".freeze
-    POSTED = "Posted".freeze
+    DRAFT ||= "Draft".freeze
+    POSTED ||= "Posted".freeze
     
     # Pay run type
     attr_accessor :pay_run_type
-    SCHEDULED = "Scheduled".freeze
-    UNSCHEDULED = "Unscheduled".freeze
-    EARLIER_YEAR_UPDATE = "EarlierYearUpdate".freeze
+    SCHEDULED ||= "Scheduled".freeze
+    UNSCHEDULED ||= "Unscheduled".freeze
+    EARLIER_YEAR_UPDATE ||= "EarlierYearUpdate".freeze
     
 
     attr_accessor :calendar_type
diff --git a/lib/xero-ruby/models/payroll_nz/pay_slip.rb b/lib/xero-ruby/models/payroll_nz/pay_slip.rb
index 9feb4fbb..6deeeb6c 100644
--- a/lib/xero-ruby/models/payroll_nz/pay_slip.rb
+++ b/lib/xero-ruby/models/payroll_nz/pay_slip.rb
@@ -66,9 +66,9 @@ class PaySlip
     
     # The payment method code
     attr_accessor :payment_method
-    CHEQUE = "Cheque".freeze
-    ELECTRONICALLY = "Electronically".freeze
-    MANUAL = "Manual".freeze
+    CHEQUE ||= "Cheque".freeze
+    ELECTRONICALLY ||= "Electronically".freeze
+    MANUAL ||= "Manual".freeze
     
 
     attr_accessor :earnings_lines
diff --git a/lib/xero-ruby/models/payroll_nz/payment_method.rb b/lib/xero-ruby/models/payroll_nz/payment_method.rb
index 703b8d78..a58edc5f 100644
--- a/lib/xero-ruby/models/payroll_nz/payment_method.rb
+++ b/lib/xero-ruby/models/payroll_nz/payment_method.rb
@@ -18,9 +18,9 @@ module XeroRuby::PayrollNz
   class PaymentMethod
     # The payment method code
     attr_accessor :payment_method
-    CHEQUE = "Cheque".freeze
-    ELECTRONICALLY = "Electronically".freeze
-    MANUAL = "Manual".freeze
+    CHEQUE ||= "Cheque".freeze
+    ELECTRONICALLY ||= "Electronically".freeze
+    MANUAL ||= "Manual".freeze
     
 
     attr_accessor :bank_accounts
diff --git a/lib/xero-ruby/models/payroll_nz/reimbursement.rb b/lib/xero-ruby/models/payroll_nz/reimbursement.rb
index 1a8a6d2a..60354b2b 100644
--- a/lib/xero-ruby/models/payroll_nz/reimbursement.rb
+++ b/lib/xero-ruby/models/payroll_nz/reimbursement.rb
@@ -30,23 +30,23 @@ class Reimbursement
     
     # See Reimbursement Categories
     attr_accessor :reimbursement_category
-    GST = "GST".freeze
-    NO_GST = "NoGST".freeze
-    GST_INCLUSIVE = "GSTInclusive".freeze
+    GST ||= "GST".freeze
+    NO_GST ||= "NoGST".freeze
+    GST_INCLUSIVE ||= "GSTInclusive".freeze
     
     # See Calculation Types
     attr_accessor :calculation_type
-    UNKNOWN = "Unknown".freeze
-    FIXED_AMOUNT = "FixedAmount".freeze
-    RATE_PER_UNIT = "RatePerUnit".freeze
+    UNKNOWN ||= "Unknown".freeze
+    FIXED_AMOUNT ||= "FixedAmount".freeze
+    RATE_PER_UNIT ||= "RatePerUnit".freeze
     
     # Optional Fixed Rate Amount. Applicable when calculation type is Fixed Amount
     attr_accessor :standard_amount
     
     # Optional Type Of Units. Applicable when calculation type is Rate Per Unit
     attr_accessor :standard_type_of_units
-    HOURS = "Hours".freeze
-    KM = "km".freeze
+    HOURS ||= "Hours".freeze
+    KM ||= "km".freeze
     
     # Optional Rate Per Unit. Applicable when calculation type is Rate Per Unit
     attr_accessor :standard_rate_per_unit
diff --git a/lib/xero-ruby/models/payroll_nz/salary_and_wage.rb b/lib/xero-ruby/models/payroll_nz/salary_and_wage.rb
index 6aeaff4e..f38f52ee 100644
--- a/lib/xero-ruby/models/payroll_nz/salary_and_wage.rb
+++ b/lib/xero-ruby/models/payroll_nz/salary_and_wage.rb
@@ -42,14 +42,14 @@ class SalaryAndWage
     
     # The current status of the corresponding salary and wages
     attr_accessor :status
-    ACTIVE = "Active".freeze
-    PENDING = "Pending".freeze
-    HISTORY = "History".freeze
+    ACTIVE ||= "Active".freeze
+    PENDING ||= "Pending".freeze
+    HISTORY ||= "History".freeze
     
     # The type of the payment of the corresponding salary and wages
     attr_accessor :payment_type
-    SALARY = "Salary".freeze
-    HOURLY = "Hourly".freeze
+    SALARY ||= "Salary".freeze
+    HOURLY ||= "Hourly".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/payroll_nz/statutory_deduction_category.rb b/lib/xero-ruby/models/payroll_nz/statutory_deduction_category.rb
index 2d410e9b..a0404f4d 100644
--- a/lib/xero-ruby/models/payroll_nz/statutory_deduction_category.rb
+++ b/lib/xero-ruby/models/payroll_nz/statutory_deduction_category.rb
@@ -14,17 +14,17 @@
 
 module XeroRuby::PayrollNz
   class StatutoryDeductionCategory
-    PRIORITY_ORDER = "PriorityOrder".freeze
-    NON_PRIORITY_ORDER = "NonPriorityOrder".freeze
-    TABLE_BASED = "TableBased".freeze
-    CHILD_SUPPORT = "ChildSupport".freeze
-    COURT_FINES = "CourtFines".freeze
-    INLAND_REVENUE_ARREARS = "InlandRevenueArrears".freeze
-    MSD_REPAYMENTS = "MsdRepayments".freeze
-    STUDENT_LOAN = "StudentLoan".freeze
-    ADDITIONAL_STUDENT_LOAN = "AdditionalStudentLoan".freeze
-    VOLUNTARY_STUDENT_LOAN = "VoluntaryStudentLoan".freeze
-    KIWI_SAVER = "KiwiSaver".freeze
+    PRIORITY_ORDER ||= "PriorityOrder".freeze
+    NON_PRIORITY_ORDER ||= "NonPriorityOrder".freeze
+    TABLE_BASED ||= "TableBased".freeze
+    CHILD_SUPPORT ||= "ChildSupport".freeze
+    COURT_FINES ||= "CourtFines".freeze
+    INLAND_REVENUE_ARREARS ||= "InlandRevenueArrears".freeze
+    MSD_REPAYMENTS ||= "MsdRepayments".freeze
+    STUDENT_LOAN ||= "StudentLoan".freeze
+    ADDITIONAL_STUDENT_LOAN ||= "AdditionalStudentLoan".freeze
+    VOLUNTARY_STUDENT_LOAN ||= "VoluntaryStudentLoan".freeze
+    KIWI_SAVER ||= "KiwiSaver".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_nz/tax_code.rb b/lib/xero-ruby/models/payroll_nz/tax_code.rb
index dd2edb58..10016f0a 100644
--- a/lib/xero-ruby/models/payroll_nz/tax_code.rb
+++ b/lib/xero-ruby/models/payroll_nz/tax_code.rb
@@ -14,25 +14,25 @@
 
 module XeroRuby::PayrollNz
   class TaxCode
-    ND = "ND".freeze
-    M = "M".freeze
-    ME = "ME".freeze
-    MSL = "MSL".freeze
-    MESL = "MESL".freeze
-    SB = "SB".freeze
-    S = "S".freeze
-    SH = "SH".freeze
-    ST = "ST".freeze
-    SBSL = "SBSL".freeze
-    SSL = "SSL".freeze
-    SHSL = "SHSL".freeze
-    STSL = "STSL".freeze
-    WT = "WT".freeze
-    CAE = "CAE".freeze
-    EDW = "EDW".freeze
-    NSW = "NSW".freeze
-    STC = "STC".freeze
-    STCSL = "STCSL".freeze
+    ND ||= "ND".freeze
+    M ||= "M".freeze
+    ME ||= "ME".freeze
+    MSL ||= "MSL".freeze
+    MESL ||= "MESL".freeze
+    SB ||= "SB".freeze
+    S ||= "S".freeze
+    SH ||= "SH".freeze
+    ST ||= "ST".freeze
+    SBSL ||= "SBSL".freeze
+    SSL ||= "SSL".freeze
+    SHSL ||= "SHSL".freeze
+    STSL ||= "STSL".freeze
+    WT ||= "WT".freeze
+    CAE ||= "CAE".freeze
+    EDW ||= "EDW".freeze
+    NSW ||= "NSW".freeze
+    STC ||= "STC".freeze
+    STCSL ||= "STCSL".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_nz/tax_settings.rb b/lib/xero-ruby/models/payroll_nz/tax_settings.rb
index 09db137a..2f0c59a1 100644
--- a/lib/xero-ruby/models/payroll_nz/tax_settings.rb
+++ b/lib/xero-ruby/models/payroll_nz/tax_settings.rb
@@ -21,8 +21,8 @@ class TaxSettings
     
     # The type of period (\"weeks\" or \"months\")
     attr_accessor :period_type
-    WEEKS = "weeks".freeze
-    MONTHS = "months".freeze
+    WEEKS ||= "weeks".freeze
+    MONTHS ||= "months".freeze
     
 
     attr_accessor :tax_code
diff --git a/lib/xero-ruby/models/payroll_nz/timesheet.rb b/lib/xero-ruby/models/payroll_nz/timesheet.rb
index 72dd6a76..8031882f 100644
--- a/lib/xero-ruby/models/payroll_nz/timesheet.rb
+++ b/lib/xero-ruby/models/payroll_nz/timesheet.rb
@@ -33,10 +33,10 @@ class Timesheet
     
     # Status of the timesheet
     attr_accessor :status
-    DRAFT = "Draft".freeze
-    APPROVED = "Approved".freeze
-    COMPLETED = "Completed".freeze
-    REQUESTED = "Requested".freeze
+    DRAFT ||= "Draft".freeze
+    APPROVED ||= "Approved".freeze
+    COMPLETED ||= "Completed".freeze
+    REQUESTED ||= "Requested".freeze
     
     # The Total Hours of the Timesheet
     attr_accessor :total_hours
diff --git a/lib/xero-ruby/models/payroll_uk/account.rb b/lib/xero-ruby/models/payroll_uk/account.rb
index 747413ec..14dafb68 100644
--- a/lib/xero-ruby/models/payroll_uk/account.rb
+++ b/lib/xero-ruby/models/payroll_uk/account.rb
@@ -21,13 +21,13 @@ class Account
     
     # The assigned AccountType
     attr_accessor :type
-    BANK = "BANK".freeze
-    EMPLOYERSNIC = "EMPLOYERSNIC".freeze
-    NICLIABILITY = "NICLIABILITY".freeze
-    PAYEECONTRIBUTION = "PAYEECONTRIBUTION".freeze
-    PAYELIABILITY = "PAYELIABILITY".freeze
-    WAGESPAYABLE = "WAGESPAYABLE".freeze
-    WAGESEXPENSE = "WAGESEXPENSE".freeze
+    BANK ||= "BANK".freeze
+    EMPLOYERSNIC ||= "EMPLOYERSNIC".freeze
+    NICLIABILITY ||= "NICLIABILITY".freeze
+    PAYEECONTRIBUTION ||= "PAYEECONTRIBUTION".freeze
+    PAYELIABILITY ||= "PAYELIABILITY".freeze
+    WAGESPAYABLE ||= "WAGESPAYABLE".freeze
+    WAGESEXPENSE ||= "WAGESEXPENSE".freeze
     
     # A unique 3 digit number for each Account
     attr_accessor :code
diff --git a/lib/xero-ruby/models/payroll_uk/benefit.rb b/lib/xero-ruby/models/payroll_uk/benefit.rb
index c6dc0ec6..0fa290a0 100644
--- a/lib/xero-ruby/models/payroll_uk/benefit.rb
+++ b/lib/xero-ruby/models/payroll_uk/benefit.rb
@@ -24,8 +24,8 @@ class Benefit
     
     # Category type of the employer pension
     attr_accessor :category
-    STAKEHOLDER_PENSION = "StakeholderPension".freeze
-    OTHER = "Other".freeze
+    STAKEHOLDER_PENSION ||= "StakeholderPension".freeze
+    OTHER ||= "Other".freeze
     
     # Xero identifier for Liability Account
     attr_accessor :liability_account_id
@@ -41,8 +41,8 @@ class Benefit
     
     # Calculation Type of the employer pension (FixedAmount or PercentageOfGross).
     attr_accessor :calculation_type
-    FIXED_AMOUNT = "FixedAmount".freeze
-    PERCENTAGE_OF_GROSS = "PercentageOfGross".freeze
+    FIXED_AMOUNT ||= "FixedAmount".freeze
+    PERCENTAGE_OF_GROSS ||= "PercentageOfGross".freeze
     
     # Identifier of a record is active or not.
     attr_accessor :current_record
diff --git a/lib/xero-ruby/models/payroll_uk/deduction.rb b/lib/xero-ruby/models/payroll_uk/deduction.rb
index 055aa28b..3314c808 100644
--- a/lib/xero-ruby/models/payroll_uk/deduction.rb
+++ b/lib/xero-ruby/models/payroll_uk/deduction.rb
@@ -24,16 +24,16 @@ class Deduction
     
     # Deduction Category type
     attr_accessor :deduction_category
-    CAPITAL_CONTRIBUTIONS = "CapitalContributions".freeze
-    CHILD_CARE_VOUCHER = "ChildCareVoucher".freeze
-    MAKING_GOOD = "MakingGood".freeze
-    POSTGRADUATE_LOAN_DEDUCTIONS = "PostgraduateLoanDeductions".freeze
-    PRIVATE_USE_PAYMENTS = "PrivateUsePayments".freeze
-    SALARY_SACRIFICE = "SalarySacrifice".freeze
-    STAKEHOLDER_PENSION = "StakeholderPension".freeze
-    STAKEHOLDER_PENSION_POST_TAX = "StakeholderPensionPostTax".freeze
-    STUDENT_LOAN_DEDUCTIONS = "StudentLoanDeductions".freeze
-    UK_OTHER = "UkOther".freeze
+    CAPITAL_CONTRIBUTIONS ||= "CapitalContributions".freeze
+    CHILD_CARE_VOUCHER ||= "ChildCareVoucher".freeze
+    MAKING_GOOD ||= "MakingGood".freeze
+    POSTGRADUATE_LOAN_DEDUCTIONS ||= "PostgraduateLoanDeductions".freeze
+    PRIVATE_USE_PAYMENTS ||= "PrivateUsePayments".freeze
+    SALARY_SACRIFICE ||= "SalarySacrifice".freeze
+    STAKEHOLDER_PENSION ||= "StakeholderPension".freeze
+    STAKEHOLDER_PENSION_POST_TAX ||= "StakeholderPensionPostTax".freeze
+    STUDENT_LOAN_DEDUCTIONS ||= "StudentLoanDeductions".freeze
+    UK_OTHER ||= "UkOther".freeze
     
     # Xero identifier for Liability Account
     attr_accessor :liability_account_id
@@ -52,8 +52,8 @@ class Deduction
     
     # determine the calculation type whether fixed amount or percentage of gross
     attr_accessor :calculation_type
-    FIXED_AMOUNT = "FixedAmount".freeze
-    PERCENTAGE_OF_GROSS = "PercentageOfGross".freeze
+    FIXED_AMOUNT ||= "FixedAmount".freeze
+    PERCENTAGE_OF_GROSS ||= "PercentageOfGross".freeze
     
     # Percentage of gross
     attr_accessor :percentage
diff --git a/lib/xero-ruby/models/payroll_uk/earnings_rate.rb b/lib/xero-ruby/models/payroll_uk/earnings_rate.rb
index 85de7b97..41a64cd0 100644
--- a/lib/xero-ruby/models/payroll_uk/earnings_rate.rb
+++ b/lib/xero-ruby/models/payroll_uk/earnings_rate.rb
@@ -24,35 +24,35 @@ class EarningsRate
     
     # Indicates how an employee will be paid when taking this type of earning
     attr_accessor :earnings_type
-    ALLOWANCE = "Allowance".freeze
-    BACKPAY = "Backpay".freeze
-    BONUS = "Bonus".freeze
-    COMMISSION = "Commission".freeze
-    LUMP_SUM = "LumpSum".freeze
-    OTHER_EARNINGS = "OtherEarnings".freeze
-    OVERTIME_EARNINGS = "OvertimeEarnings".freeze
-    REGULAR_EARNINGS = "RegularEarnings".freeze
-    STATUTORY_ADOPTION_PAY = "StatutoryAdoptionPay".freeze
-    STATUTORY_ADOPTION_PAY_NON_PENSIONABLE = "StatutoryAdoptionPayNonPensionable".freeze
-    STATUTORY_BEREAVEMENT_PAY = "StatutoryBereavementPay".freeze
-    STATUTORY_MATERNITY_PAY = "StatutoryMaternityPay".freeze
-    STATUTORY_MATERNITY_PAY_NON_PENSIONABLE = "StatutoryMaternityPayNonPensionable".freeze
-    STATUTORY_PATERNITY_PAY = "StatutoryPaternityPay".freeze
-    STATUTORY_PATERNITY_PAY_NON_PENSIONABLE = "StatutoryPaternityPayNonPensionable".freeze
-    STATUTORY_PARENTAL_BEREAVEMENT_PAY_NON_PENSIONABLE = "StatutoryParentalBereavementPayNonPensionable".freeze
-    STATUTORY_SHARED_PARENTAL_PAY = "StatutorySharedParentalPay".freeze
-    STATUTORY_SHARED_PARENTAL_PAY_NON_PENSIONABLE = "StatutorySharedParentalPayNonPensionable".freeze
-    STATUTORY_SICK_PAY = "StatutorySickPay".freeze
-    STATUTORY_SICK_PAY_NON_PENSIONABLE = "StatutorySickPayNonPensionable".freeze
-    TIPS_NON_DIRECT = "TipsNonDirect".freeze
-    TIPS_DIRECT = "TipsDirect".freeze
-    TERMINATION_PAY = "TerminationPay".freeze
+    ALLOWANCE ||= "Allowance".freeze
+    BACKPAY ||= "Backpay".freeze
+    BONUS ||= "Bonus".freeze
+    COMMISSION ||= "Commission".freeze
+    LUMP_SUM ||= "LumpSum".freeze
+    OTHER_EARNINGS ||= "OtherEarnings".freeze
+    OVERTIME_EARNINGS ||= "OvertimeEarnings".freeze
+    REGULAR_EARNINGS ||= "RegularEarnings".freeze
+    STATUTORY_ADOPTION_PAY ||= "StatutoryAdoptionPay".freeze
+    STATUTORY_ADOPTION_PAY_NON_PENSIONABLE ||= "StatutoryAdoptionPayNonPensionable".freeze
+    STATUTORY_BEREAVEMENT_PAY ||= "StatutoryBereavementPay".freeze
+    STATUTORY_MATERNITY_PAY ||= "StatutoryMaternityPay".freeze
+    STATUTORY_MATERNITY_PAY_NON_PENSIONABLE ||= "StatutoryMaternityPayNonPensionable".freeze
+    STATUTORY_PATERNITY_PAY ||= "StatutoryPaternityPay".freeze
+    STATUTORY_PATERNITY_PAY_NON_PENSIONABLE ||= "StatutoryPaternityPayNonPensionable".freeze
+    STATUTORY_PARENTAL_BEREAVEMENT_PAY_NON_PENSIONABLE ||= "StatutoryParentalBereavementPayNonPensionable".freeze
+    STATUTORY_SHARED_PARENTAL_PAY ||= "StatutorySharedParentalPay".freeze
+    STATUTORY_SHARED_PARENTAL_PAY_NON_PENSIONABLE ||= "StatutorySharedParentalPayNonPensionable".freeze
+    STATUTORY_SICK_PAY ||= "StatutorySickPay".freeze
+    STATUTORY_SICK_PAY_NON_PENSIONABLE ||= "StatutorySickPayNonPensionable".freeze
+    TIPS_NON_DIRECT ||= "TipsNonDirect".freeze
+    TIPS_DIRECT ||= "TipsDirect".freeze
+    TERMINATION_PAY ||= "TerminationPay".freeze
     
     # Indicates the type of the earning rate
     attr_accessor :rate_type
-    RATE_PER_UNIT = "RatePerUnit".freeze
-    MULTIPLE_OF_ORDINARY_EARNINGS_RATE = "MultipleOfOrdinaryEarningsRate".freeze
-    FIXED_AMOUNT = "FixedAmount".freeze
+    RATE_PER_UNIT ||= "RatePerUnit".freeze
+    MULTIPLE_OF_ORDINARY_EARNINGS_RATE ||= "MultipleOfOrdinaryEarningsRate".freeze
+    FIXED_AMOUNT ||= "FixedAmount".freeze
     
     # The type of units used to record earnings
     attr_accessor :type_of_units
diff --git a/lib/xero-ruby/models/payroll_uk/employee.rb b/lib/xero-ruby/models/payroll_uk/employee.rb
index fe97b099..af4d221f 100644
--- a/lib/xero-ruby/models/payroll_uk/employee.rb
+++ b/lib/xero-ruby/models/payroll_uk/employee.rb
@@ -39,8 +39,8 @@ class Employee
     
     # The employee’s gender
     attr_accessor :gender
-    M = "M".freeze
-    F = "F".freeze
+    M ||= "M".freeze
+    F ||= "F".freeze
     
     # Employee phone number
     attr_accessor :phone_number
diff --git a/lib/xero-ruby/models/payroll_uk/employee_leave_type.rb b/lib/xero-ruby/models/payroll_uk/employee_leave_type.rb
index ed44f0f9..d3c60d04 100644
--- a/lib/xero-ruby/models/payroll_uk/employee_leave_type.rb
+++ b/lib/xero-ruby/models/payroll_uk/employee_leave_type.rb
@@ -21,10 +21,10 @@ class EmployeeLeaveType
     
     # The schedule of accrual
     attr_accessor :schedule_of_accrual
-    BEGINNING_OF_CALENDAR_YEAR = "BeginningOfCalendarYear".freeze
-    ON_ANNIVERSARY_DATE = "OnAnniversaryDate".freeze
-    EACH_PAY_PERIOD = "EachPayPeriod".freeze
-    ON_HOUR_WORKED = "OnHourWorked".freeze
+    BEGINNING_OF_CALENDAR_YEAR ||= "BeginningOfCalendarYear".freeze
+    ON_ANNIVERSARY_DATE ||= "OnAnniversaryDate".freeze
+    EACH_PAY_PERIOD ||= "EachPayPeriod".freeze
+    ON_HOUR_WORKED ||= "OnHourWorked".freeze
     
     # The number of hours accrued for the leave annually. This is 0 when the scheduleOfAccrual chosen is \"OnHourWorked\"
     attr_accessor :hours_accrued_annually
diff --git a/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance.rb b/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance.rb
index 82410f33..7264d768 100644
--- a/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance.rb
+++ b/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance.rb
@@ -18,18 +18,18 @@ module XeroRuby::PayrollUk
   class EmployeeStatutoryLeaveBalance
     # The type of statutory leave
     attr_accessor :leave_type
-    SICK = "Sick".freeze
-    ADOPTION = "Adoption".freeze
-    MATERNITY = "Maternity".freeze
-    PATERNITY = "Paternity".freeze
-    SHAREDPARENTAL = "Sharedparental".freeze
+    SICK ||= "Sick".freeze
+    ADOPTION ||= "Adoption".freeze
+    MATERNITY ||= "Maternity".freeze
+    PATERNITY ||= "Paternity".freeze
+    SHAREDPARENTAL ||= "Sharedparental".freeze
     
     # The balance remaining for the corresponding leave type as of specified date.
     attr_accessor :balance_remaining
     
     # The units will be \"Hours\"
     attr_accessor :units
-    HOURS = "Hours".freeze
+    HOURS ||= "Hours".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_summary.rb b/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_summary.rb
index 5d182fe5..443aa720 100644
--- a/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_summary.rb
+++ b/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_summary.rb
@@ -24,11 +24,11 @@ class EmployeeStatutoryLeaveSummary
     
     # The category of statutory leave
     attr_accessor :type
-    SICK = "Sick".freeze
-    ADOPTION = "Adoption".freeze
-    MATERNITY = "Maternity".freeze
-    PATERNITY = "Paternity".freeze
-    SHAREDPARENTAL = "Sharedparental".freeze
+    SICK ||= "Sick".freeze
+    ADOPTION ||= "Adoption".freeze
+    MATERNITY ||= "Maternity".freeze
+    PATERNITY ||= "Paternity".freeze
+    SHAREDPARENTAL ||= "Sharedparental".freeze
     
     # The date when the leave starts
     attr_accessor :start_date
@@ -41,9 +41,9 @@ class EmployeeStatutoryLeaveSummary
     
     # The status of the leave
     attr_accessor :status
-    PENDING = "Pending".freeze
-    IN_PROGRESS = "In-Progress".freeze
-    COMPLETED = "Completed".freeze
+    PENDING ||= "Pending".freeze
+    IN_PROGRESS ||= "In-Progress".freeze
+    COMPLETED ||= "Completed".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/payroll_uk/employment.rb b/lib/xero-ruby/models/payroll_uk/employment.rb
index e555a9db..59661bf4 100644
--- a/lib/xero-ruby/models/payroll_uk/employment.rb
+++ b/lib/xero-ruby/models/payroll_uk/employment.rb
@@ -27,14 +27,14 @@ class Employment
     
     # The NI Category of the employee
     attr_accessor :ni_category
-    A = "A".freeze
-    B = "B".freeze
-    C = "C".freeze
-    H = "H".freeze
-    J = "J".freeze
-    M = "M".freeze
-    Z = "Z".freeze
-    X = "X".freeze
+    A ||= "A".freeze
+    B ||= "B".freeze
+    C ||= "C".freeze
+    H ||= "H".freeze
+    J ||= "J".freeze
+    M ||= "M".freeze
+    Z ||= "Z".freeze
+    X ||= "X".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/payroll_uk/leave_period.rb b/lib/xero-ruby/models/payroll_uk/leave_period.rb
index 6161edb9..bd909ea7 100644
--- a/lib/xero-ruby/models/payroll_uk/leave_period.rb
+++ b/lib/xero-ruby/models/payroll_uk/leave_period.rb
@@ -27,8 +27,8 @@ class LeavePeriod
     
     # Period Status
     attr_accessor :period_status
-    APPROVED = "Approved".freeze
-    COMPLETED = "Completed".freeze
+    APPROVED ||= "Approved".freeze
+    COMPLETED ||= "Completed".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/payroll_uk/pay_run.rb b/lib/xero-ruby/models/payroll_uk/pay_run.rb
index 1d05602a..6b31b32b 100644
--- a/lib/xero-ruby/models/payroll_uk/pay_run.rb
+++ b/lib/xero-ruby/models/payroll_uk/pay_run.rb
@@ -39,23 +39,23 @@ class PayRun
     
     # Pay run status
     attr_accessor :pay_run_status
-    DRAFT = "Draft".freeze
-    POSTED = "Posted".freeze
+    DRAFT ||= "Draft".freeze
+    POSTED ||= "Posted".freeze
     
     # Pay run type
     attr_accessor :pay_run_type
-    SCHEDULED = "Scheduled".freeze
-    UNSCHEDULED = "Unscheduled".freeze
-    EARLIER_YEAR_UPDATE = "EarlierYearUpdate".freeze
+    SCHEDULED ||= "Scheduled".freeze
+    UNSCHEDULED ||= "Unscheduled".freeze
+    EARLIER_YEAR_UPDATE ||= "EarlierYearUpdate".freeze
     
     # Calendar type of the pay run
     attr_accessor :calendar_type
-    WEEKLY = "Weekly".freeze
-    FORTNIGHTLY = "Fortnightly".freeze
-    FOUR_WEEKLY = "FourWeekly".freeze
-    MONTHLY = "Monthly".freeze
-    ANNUAL = "Annual".freeze
-    QUARTERLY = "Quarterly".freeze
+    WEEKLY ||= "Weekly".freeze
+    FORTNIGHTLY ||= "Fortnightly".freeze
+    FOUR_WEEKLY ||= "FourWeekly".freeze
+    MONTHLY ||= "Monthly".freeze
+    ANNUAL ||= "Annual".freeze
+    QUARTERLY ||= "Quarterly".freeze
     
     # Posted date time of the pay run
     attr_accessor :posted_date_time
diff --git a/lib/xero-ruby/models/payroll_uk/pay_run_calendar.rb b/lib/xero-ruby/models/payroll_uk/pay_run_calendar.rb
index f2050ab6..42b2729b 100644
--- a/lib/xero-ruby/models/payroll_uk/pay_run_calendar.rb
+++ b/lib/xero-ruby/models/payroll_uk/pay_run_calendar.rb
@@ -24,12 +24,12 @@ class PayRunCalendar
     
     # Type of the calendar
     attr_accessor :calendar_type
-    WEEKLY = "Weekly".freeze
-    FORTNIGHTLY = "Fortnightly".freeze
-    FOUR_WEEKLY = "FourWeekly".freeze
-    MONTHLY = "Monthly".freeze
-    ANNUAL = "Annual".freeze
-    QUARTERLY = "Quarterly".freeze
+    WEEKLY ||= "Weekly".freeze
+    FORTNIGHTLY ||= "Fortnightly".freeze
+    FOUR_WEEKLY ||= "FourWeekly".freeze
+    MONTHLY ||= "Monthly".freeze
+    ANNUAL ||= "Annual".freeze
+    QUARTERLY ||= "Quarterly".freeze
     
     # Period start date of the calendar
     attr_accessor :period_start_date
diff --git a/lib/xero-ruby/models/payroll_uk/payment_method.rb b/lib/xero-ruby/models/payroll_uk/payment_method.rb
index 4f9387ee..645e4378 100644
--- a/lib/xero-ruby/models/payroll_uk/payment_method.rb
+++ b/lib/xero-ruby/models/payroll_uk/payment_method.rb
@@ -18,9 +18,9 @@ module XeroRuby::PayrollUk
   class PaymentMethod
     # The payment method code
     attr_accessor :payment_method
-    CHEQUE = "Cheque".freeze
-    ELECTRONICALLY = "Electronically".freeze
-    MANUAL = "Manual".freeze
+    CHEQUE ||= "Cheque".freeze
+    ELECTRONICALLY ||= "Electronically".freeze
+    MANUAL ||= "Manual".freeze
     
 
     attr_accessor :bank_accounts
diff --git a/lib/xero-ruby/models/payroll_uk/payslip.rb b/lib/xero-ruby/models/payroll_uk/payslip.rb
index 00b52947..20701283 100644
--- a/lib/xero-ruby/models/payroll_uk/payslip.rb
+++ b/lib/xero-ruby/models/payroll_uk/payslip.rb
@@ -66,9 +66,9 @@ class Payslip
     
     # The payment method code
     attr_accessor :payment_method
-    CHEQUE = "Cheque".freeze
-    ELECTRONICALLY = "Electronically".freeze
-    MANUAL = "Manual".freeze
+    CHEQUE ||= "Cheque".freeze
+    ELECTRONICALLY ||= "Electronically".freeze
+    MANUAL ||= "Manual".freeze
     
 
     attr_accessor :earnings_lines
diff --git a/lib/xero-ruby/models/payroll_uk/salary_and_wage.rb b/lib/xero-ruby/models/payroll_uk/salary_and_wage.rb
index b7ac6b0a..fa1b458d 100644
--- a/lib/xero-ruby/models/payroll_uk/salary_and_wage.rb
+++ b/lib/xero-ruby/models/payroll_uk/salary_and_wage.rb
@@ -39,14 +39,14 @@ class SalaryAndWage
     
     # The current status of the corresponding salary and wages
     attr_accessor :status
-    ACTIVE = "Active".freeze
-    PENDING = "Pending".freeze
-    HISTORY = "History".freeze
+    ACTIVE ||= "Active".freeze
+    PENDING ||= "Pending".freeze
+    HISTORY ||= "History".freeze
     
     # The type of the payment of the corresponding salary and wages
     attr_accessor :payment_type
-    SALARY = "Salary".freeze
-    HOURLY = "Hourly".freeze
+    SALARY ||= "Salary".freeze
+    HOURLY ||= "Hourly".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/payroll_uk/statutory_deduction_category.rb b/lib/xero-ruby/models/payroll_uk/statutory_deduction_category.rb
index 04375e44..32962f74 100644
--- a/lib/xero-ruby/models/payroll_uk/statutory_deduction_category.rb
+++ b/lib/xero-ruby/models/payroll_uk/statutory_deduction_category.rb
@@ -14,20 +14,20 @@
 
 module XeroRuby::PayrollUk
   class StatutoryDeductionCategory
-    ADDITIONAL_STUDENT_LOAN = "AdditionalStudentLoan".freeze
-    CHILD_SUPPORT = "ChildSupport".freeze
-    COURT_FINES = "CourtFines".freeze
-    CREDITOR = "Creditor".freeze
-    FEDERAL_LEVY = "FederalLevy".freeze
-    INLAND_REVENUE_ARREARS = "InlandRevenueArrears".freeze
-    KIWI_SAVER = "KiwiSaver".freeze
-    MSD_REPAYMENTS = "MsdRepayments".freeze
-    NON_PRIORITY_ORDER = "NonPriorityOrder".freeze
-    PRIORITY_ORDER = "PriorityOrder".freeze
-    TABLE_BASED = "TableBased".freeze
-    STUDENT_LOAN = "StudentLoan".freeze
-    VOLUNTARY_STUDENT_LOAN = "VoluntaryStudentLoan".freeze
-    US_CHILD_SUPPORT = "USChildSupport".freeze
+    ADDITIONAL_STUDENT_LOAN ||= "AdditionalStudentLoan".freeze
+    CHILD_SUPPORT ||= "ChildSupport".freeze
+    COURT_FINES ||= "CourtFines".freeze
+    CREDITOR ||= "Creditor".freeze
+    FEDERAL_LEVY ||= "FederalLevy".freeze
+    INLAND_REVENUE_ARREARS ||= "InlandRevenueArrears".freeze
+    KIWI_SAVER ||= "KiwiSaver".freeze
+    MSD_REPAYMENTS ||= "MsdRepayments".freeze
+    NON_PRIORITY_ORDER ||= "NonPriorityOrder".freeze
+    PRIORITY_ORDER ||= "PriorityOrder".freeze
+    TABLE_BASED ||= "TableBased".freeze
+    STUDENT_LOAN ||= "StudentLoan".freeze
+    VOLUNTARY_STUDENT_LOAN ||= "VoluntaryStudentLoan".freeze
+    US_CHILD_SUPPORT ||= "USChildSupport".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/payroll_uk/timesheet.rb b/lib/xero-ruby/models/payroll_uk/timesheet.rb
index 3693c375..b3305584 100644
--- a/lib/xero-ruby/models/payroll_uk/timesheet.rb
+++ b/lib/xero-ruby/models/payroll_uk/timesheet.rb
@@ -33,9 +33,9 @@ class Timesheet
     
     # Status of the timesheet
     attr_accessor :status
-    DRAFT = "Draft".freeze
-    APPROVED = "Approved".freeze
-    COMPLETED = "Completed".freeze
+    DRAFT ||= "Draft".freeze
+    APPROVED ||= "Approved".freeze
+    COMPLETED ||= "Completed".freeze
     
     # The Total Hours of the Timesheet
     attr_accessor :total_hours
diff --git a/lib/xero-ruby/models/projects/charge_type.rb b/lib/xero-ruby/models/projects/charge_type.rb
index ca169fdd..ae263c99 100644
--- a/lib/xero-ruby/models/projects/charge_type.rb
+++ b/lib/xero-ruby/models/projects/charge_type.rb
@@ -14,9 +14,9 @@
 
 module XeroRuby::Projects
   class ChargeType
-    TIME = "TIME".freeze
-    FIXED = "FIXED".freeze
-    NON_CHARGEABLE = "NON_CHARGEABLE".freeze
+    TIME ||= "TIME".freeze
+    FIXED ||= "FIXED".freeze
+    NON_CHARGEABLE ||= "NON_CHARGEABLE".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/projects/currency_code.rb b/lib/xero-ruby/models/projects/currency_code.rb
index 795e3005..32e96f82 100644
--- a/lib/xero-ruby/models/projects/currency_code.rb
+++ b/lib/xero-ruby/models/projects/currency_code.rb
@@ -14,170 +14,170 @@
 
 module XeroRuby::Projects
   class CurrencyCode
-    AED = "AED".freeze
-    AFN = "AFN".freeze
-    ALL = "ALL".freeze
-    AMD = "AMD".freeze
-    ANG = "ANG".freeze
-    AOA = "AOA".freeze
-    ARS = "ARS".freeze
-    AUD = "AUD".freeze
-    AWG = "AWG".freeze
-    AZN = "AZN".freeze
-    BAM = "BAM".freeze
-    BBD = "BBD".freeze
-    BDT = "BDT".freeze
-    BGN = "BGN".freeze
-    BHD = "BHD".freeze
-    BIF = "BIF".freeze
-    BMD = "BMD".freeze
-    BND = "BND".freeze
-    BOB = "BOB".freeze
-    BRL = "BRL".freeze
-    BSD = "BSD".freeze
-    BTN = "BTN".freeze
-    BWP = "BWP".freeze
-    BYN = "BYN".freeze
-    BZD = "BZD".freeze
-    CAD = "CAD".freeze
-    CDF = "CDF".freeze
-    CHF = "CHF".freeze
-    CLP = "CLP".freeze
-    CNY = "CNY".freeze
-    COP = "COP".freeze
-    CRC = "CRC".freeze
-    CUC = "CUC".freeze
-    CUP = "CUP".freeze
-    CVE = "CVE".freeze
-    CZK = "CZK".freeze
-    DJF = "DJF".freeze
-    DKK = "DKK".freeze
-    DOP = "DOP".freeze
-    DZD = "DZD".freeze
-    EGP = "EGP".freeze
-    ERN = "ERN".freeze
-    ETB = "ETB".freeze
-    EUR = "EUR".freeze
-    FJD = "FJD".freeze
-    FKP = "FKP".freeze
-    GBP = "GBP".freeze
-    GEL = "GEL".freeze
-    GGP = "GGP".freeze
-    GHS = "GHS".freeze
-    GIP = "GIP".freeze
-    GMD = "GMD".freeze
-    GNF = "GNF".freeze
-    GTQ = "GTQ".freeze
-    GYD = "GYD".freeze
-    HKD = "HKD".freeze
-    HNL = "HNL".freeze
-    HRK = "HRK".freeze
-    HTG = "HTG".freeze
-    HUF = "HUF".freeze
-    IDR = "IDR".freeze
-    ILS = "ILS".freeze
-    IMP = "IMP".freeze
-    INR = "INR".freeze
-    IQD = "IQD".freeze
-    IRR = "IRR".freeze
-    ISK = "ISK".freeze
-    JEP = "JEP".freeze
-    JMD = "JMD".freeze
-    JOD = "JOD".freeze
-    JPY = "JPY".freeze
-    KES = "KES".freeze
-    KGS = "KGS".freeze
-    KHR = "KHR".freeze
-    KMF = "KMF".freeze
-    KPW = "KPW".freeze
-    KRW = "KRW".freeze
-    KWD = "KWD".freeze
-    KYD = "KYD".freeze
-    KZT = "KZT".freeze
-    LAK = "LAK".freeze
-    LBP = "LBP".freeze
-    LKR = "LKR".freeze
-    LRD = "LRD".freeze
-    LSL = "LSL".freeze
-    LYD = "LYD".freeze
-    MAD = "MAD".freeze
-    MDL = "MDL".freeze
-    MGA = "MGA".freeze
-    MKD = "MKD".freeze
-    MMK = "MMK".freeze
-    MNT = "MNT".freeze
-    MOP = "MOP".freeze
-    MRU = "MRU".freeze
-    MUR = "MUR".freeze
-    MVR = "MVR".freeze
-    MWK = "MWK".freeze
-    MXN = "MXN".freeze
-    MYR = "MYR".freeze
-    MZN = "MZN".freeze
-    NAD = "NAD".freeze
-    NGN = "NGN".freeze
-    NIO = "NIO".freeze
-    NOK = "NOK".freeze
-    NPR = "NPR".freeze
-    NZD = "NZD".freeze
-    OMR = "OMR".freeze
-    PAB = "PAB".freeze
-    PEN = "PEN".freeze
-    PGK = "PGK".freeze
-    PHP = "PHP".freeze
-    PKR = "PKR".freeze
-    PLN = "PLN".freeze
-    PYG = "PYG".freeze
-    QAR = "QAR".freeze
-    RON = "RON".freeze
-    RSD = "RSD".freeze
-    RUB = "RUB".freeze
-    RWF = "RWF".freeze
-    SAR = "SAR".freeze
-    SBD = "SBD".freeze
-    SCR = "SCR".freeze
-    SDG = "SDG".freeze
-    SEK = "SEK".freeze
-    SGD = "SGD".freeze
-    SHP = "SHP".freeze
-    SLL = "SLL".freeze
-    SOS = "SOS".freeze
-    SPL = "SPL".freeze
-    SRD = "SRD".freeze
-    STN = "STN".freeze
-    SVC = "SVC".freeze
-    SYP = "SYP".freeze
-    SZL = "SZL".freeze
-    THB = "THB".freeze
-    TJS = "TJS".freeze
-    TMT = "TMT".freeze
-    TND = "TND".freeze
-    TOP = "TOP".freeze
-    TRY = "TRY".freeze
-    TTD = "TTD".freeze
-    TVD = "TVD".freeze
-    TWD = "TWD".freeze
-    TZS = "TZS".freeze
-    UAH = "UAH".freeze
-    UGX = "UGX".freeze
-    USD = "USD".freeze
-    UYU = "UYU".freeze
-    UZS = "UZS".freeze
-    VEF = "VEF".freeze
-    VND = "VND".freeze
-    VUV = "VUV".freeze
-    WST = "WST".freeze
-    XAF = "XAF".freeze
-    XCD = "XCD".freeze
-    XDR = "XDR".freeze
-    XOF = "XOF".freeze
-    XPF = "XPF".freeze
-    YER = "YER".freeze
-    ZAR = "ZAR".freeze
-    ZMW = "ZMW".freeze
-    ZMK = "ZMK".freeze
-    ZWD = "ZWD".freeze
-    EMPTY = "".freeze
+    AED ||= "AED".freeze
+    AFN ||= "AFN".freeze
+    ALL ||= "ALL".freeze
+    AMD ||= "AMD".freeze
+    ANG ||= "ANG".freeze
+    AOA ||= "AOA".freeze
+    ARS ||= "ARS".freeze
+    AUD ||= "AUD".freeze
+    AWG ||= "AWG".freeze
+    AZN ||= "AZN".freeze
+    BAM ||= "BAM".freeze
+    BBD ||= "BBD".freeze
+    BDT ||= "BDT".freeze
+    BGN ||= "BGN".freeze
+    BHD ||= "BHD".freeze
+    BIF ||= "BIF".freeze
+    BMD ||= "BMD".freeze
+    BND ||= "BND".freeze
+    BOB ||= "BOB".freeze
+    BRL ||= "BRL".freeze
+    BSD ||= "BSD".freeze
+    BTN ||= "BTN".freeze
+    BWP ||= "BWP".freeze
+    BYN ||= "BYN".freeze
+    BZD ||= "BZD".freeze
+    CAD ||= "CAD".freeze
+    CDF ||= "CDF".freeze
+    CHF ||= "CHF".freeze
+    CLP ||= "CLP".freeze
+    CNY ||= "CNY".freeze
+    COP ||= "COP".freeze
+    CRC ||= "CRC".freeze
+    CUC ||= "CUC".freeze
+    CUP ||= "CUP".freeze
+    CVE ||= "CVE".freeze
+    CZK ||= "CZK".freeze
+    DJF ||= "DJF".freeze
+    DKK ||= "DKK".freeze
+    DOP ||= "DOP".freeze
+    DZD ||= "DZD".freeze
+    EGP ||= "EGP".freeze
+    ERN ||= "ERN".freeze
+    ETB ||= "ETB".freeze
+    EUR ||= "EUR".freeze
+    FJD ||= "FJD".freeze
+    FKP ||= "FKP".freeze
+    GBP ||= "GBP".freeze
+    GEL ||= "GEL".freeze
+    GGP ||= "GGP".freeze
+    GHS ||= "GHS".freeze
+    GIP ||= "GIP".freeze
+    GMD ||= "GMD".freeze
+    GNF ||= "GNF".freeze
+    GTQ ||= "GTQ".freeze
+    GYD ||= "GYD".freeze
+    HKD ||= "HKD".freeze
+    HNL ||= "HNL".freeze
+    HRK ||= "HRK".freeze
+    HTG ||= "HTG".freeze
+    HUF ||= "HUF".freeze
+    IDR ||= "IDR".freeze
+    ILS ||= "ILS".freeze
+    IMP ||= "IMP".freeze
+    INR ||= "INR".freeze
+    IQD ||= "IQD".freeze
+    IRR ||= "IRR".freeze
+    ISK ||= "ISK".freeze
+    JEP ||= "JEP".freeze
+    JMD ||= "JMD".freeze
+    JOD ||= "JOD".freeze
+    JPY ||= "JPY".freeze
+    KES ||= "KES".freeze
+    KGS ||= "KGS".freeze
+    KHR ||= "KHR".freeze
+    KMF ||= "KMF".freeze
+    KPW ||= "KPW".freeze
+    KRW ||= "KRW".freeze
+    KWD ||= "KWD".freeze
+    KYD ||= "KYD".freeze
+    KZT ||= "KZT".freeze
+    LAK ||= "LAK".freeze
+    LBP ||= "LBP".freeze
+    LKR ||= "LKR".freeze
+    LRD ||= "LRD".freeze
+    LSL ||= "LSL".freeze
+    LYD ||= "LYD".freeze
+    MAD ||= "MAD".freeze
+    MDL ||= "MDL".freeze
+    MGA ||= "MGA".freeze
+    MKD ||= "MKD".freeze
+    MMK ||= "MMK".freeze
+    MNT ||= "MNT".freeze
+    MOP ||= "MOP".freeze
+    MRU ||= "MRU".freeze
+    MUR ||= "MUR".freeze
+    MVR ||= "MVR".freeze
+    MWK ||= "MWK".freeze
+    MXN ||= "MXN".freeze
+    MYR ||= "MYR".freeze
+    MZN ||= "MZN".freeze
+    NAD ||= "NAD".freeze
+    NGN ||= "NGN".freeze
+    NIO ||= "NIO".freeze
+    NOK ||= "NOK".freeze
+    NPR ||= "NPR".freeze
+    NZD ||= "NZD".freeze
+    OMR ||= "OMR".freeze
+    PAB ||= "PAB".freeze
+    PEN ||= "PEN".freeze
+    PGK ||= "PGK".freeze
+    PHP ||= "PHP".freeze
+    PKR ||= "PKR".freeze
+    PLN ||= "PLN".freeze
+    PYG ||= "PYG".freeze
+    QAR ||= "QAR".freeze
+    RON ||= "RON".freeze
+    RSD ||= "RSD".freeze
+    RUB ||= "RUB".freeze
+    RWF ||= "RWF".freeze
+    SAR ||= "SAR".freeze
+    SBD ||= "SBD".freeze
+    SCR ||= "SCR".freeze
+    SDG ||= "SDG".freeze
+    SEK ||= "SEK".freeze
+    SGD ||= "SGD".freeze
+    SHP ||= "SHP".freeze
+    SLL ||= "SLL".freeze
+    SOS ||= "SOS".freeze
+    SPL ||= "SPL".freeze
+    SRD ||= "SRD".freeze
+    STN ||= "STN".freeze
+    SVC ||= "SVC".freeze
+    SYP ||= "SYP".freeze
+    SZL ||= "SZL".freeze
+    THB ||= "THB".freeze
+    TJS ||= "TJS".freeze
+    TMT ||= "TMT".freeze
+    TND ||= "TND".freeze
+    TOP ||= "TOP".freeze
+    TRY ||= "TRY".freeze
+    TTD ||= "TTD".freeze
+    TVD ||= "TVD".freeze
+    TWD ||= "TWD".freeze
+    TZS ||= "TZS".freeze
+    UAH ||= "UAH".freeze
+    UGX ||= "UGX".freeze
+    USD ||= "USD".freeze
+    UYU ||= "UYU".freeze
+    UZS ||= "UZS".freeze
+    VEF ||= "VEF".freeze
+    VND ||= "VND".freeze
+    VUV ||= "VUV".freeze
+    WST ||= "WST".freeze
+    XAF ||= "XAF".freeze
+    XCD ||= "XCD".freeze
+    XDR ||= "XDR".freeze
+    XOF ||= "XOF".freeze
+    XPF ||= "XPF".freeze
+    YER ||= "YER".freeze
+    ZAR ||= "ZAR".freeze
+    ZMW ||= "ZMW".freeze
+    ZMK ||= "ZMK".freeze
+    ZWD ||= "ZWD".freeze
+    EMPTY ||= "".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/projects/project_status.rb b/lib/xero-ruby/models/projects/project_status.rb
index 774b0f89..8e124bc6 100644
--- a/lib/xero-ruby/models/projects/project_status.rb
+++ b/lib/xero-ruby/models/projects/project_status.rb
@@ -14,8 +14,8 @@
 
 module XeroRuby::Projects
   class ProjectStatus
-    INPROGRESS = "INPROGRESS".freeze
-    CLOSED = "CLOSED".freeze
+    INPROGRESS ||= "INPROGRESS".freeze
+    CLOSED ||= "CLOSED".freeze
 
     # Builds the enum from string
     # @param [String] The enum value in the form of the string
diff --git a/lib/xero-ruby/models/projects/task.rb b/lib/xero-ruby/models/projects/task.rb
index b0e3d95d..802af9b1 100644
--- a/lib/xero-ruby/models/projects/task.rb
+++ b/lib/xero-ruby/models/projects/task.rb
@@ -60,9 +60,9 @@ class Task
     
     # Status of the task. When a task of ChargeType is `FIXED` and the rate amount is invoiced the status will be set to `INVOICED` and can't be modified. A task with ChargeType of `TIME` or `NON_CHARGEABLE` cannot have a status of `INVOICED`. A `LOCKED` state indicates that the task is currently changing state (for example being invoiced) and can't be modified.
     attr_accessor :status
-    ACTIVE = "ACTIVE".freeze
-    INVOICED = "INVOICED".freeze
-    LOCKED = "LOCKED".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    INVOICED ||= "INVOICED".freeze
+    LOCKED ||= "LOCKED".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/models/projects/time_entry.rb b/lib/xero-ruby/models/projects/time_entry.rb
index b85a61bb..bee5896e 100644
--- a/lib/xero-ruby/models/projects/time_entry.rb
+++ b/lib/xero-ruby/models/projects/time_entry.rb
@@ -42,9 +42,9 @@ class TimeEntry
     
     # Status of the time entry. By default a time entry is created with status of `ACTIVE`. A `LOCKED` state indicates that the time entry is currently changing state (for example being invoiced). Updates are not allowed when in this state. It will have a status of INVOICED once it is invoiced.
     attr_accessor :status
-    ACTIVE = "ACTIVE".freeze
-    LOCKED = "LOCKED".freeze
-    INVOICED = "INVOICED".freeze
+    ACTIVE ||= "ACTIVE".freeze
+    LOCKED ||= "LOCKED".freeze
+    INVOICED ||= "INVOICED".freeze
     
     class EnumAttributeValidator
       attr_reader :datatype
diff --git a/lib/xero-ruby/version.rb b/lib/xero-ruby/version.rb
index 0e9787fb..86c22da3 100644
--- a/lib/xero-ruby/version.rb
+++ b/lib/xero-ruby/version.rb
@@ -3,13 +3,13 @@
 
 #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 
-# Contact: api@xero.com
-# Generated by: https://openapi-generator.tech
-# OpenAPI Generator version: 4.3.1
+Contact: api@xero.com
+Generated by: https://openapi-generator.tech
+OpenAPI Generator version: 4.3.1
 
-# The version of the XeroOpenAPI document: 2.17.2
+The version of the XeroOpenAPI document: 2.17.4
 =end
 
 module XeroRuby
-  VERSION = '3.5.0'
-end
\ No newline at end of file
+  VERSION = '3.6.0'
+end