diff --git a/lib/parse-result.js b/lib/parse-result.js
index 69d10a7..c54ac63 100644
--- a/lib/parse-result.js
+++ b/lib/parse-result.js
@@ -11,6 +11,36 @@ const translateRc = require('./translate-rc');
 const messageExtractor = require('./message-extractor');
 const patternRules = require('./pattern-rules');
 
+const priceRules = (
+    config.partner
+    && config.partner.price_rules
+    && Array.isArray(config.partner.price_rules)
+    && config.partner.price_rules.length
+    && config.partner.price_rules
+        .filter((rule) => rule.pattern && !rule.disable && !rule.disabled)
+        .map((rule) => ({
+            pattern: (typeof rule.pattern === 'string') ? new RegExp(rule.pattern) : rule.pattern,
+            idx: rule.idx,
+            disable: rule.disable || rule.disabled,
+            postprocessing: rule.postprocessing,
+        }))
+) || patternRules.price;
+
+const balanceRules = (
+    config.partner
+    && config.partner.balance_rules
+    && Array.isArray(config.partner.balance_rules)
+    && config.partner.balance_rules.length
+    && config.partner.balance_rules
+        .filter((rule) => rule.pattern && !rule.disable && !rule.disabled)
+        .map((rule) => ({
+            pattern: (typeof rule.pattern === 'string') ? new RegExp(rule.pattern) : rule.pattern,
+            idx: rule.idx,
+            disable: rule.disable || rule.disabled,
+            postprocessing: rule.postprocessing,
+        }))
+) || patternRules.balance;
+
 module.exports = (xid, trxIdFromCaller, xml, isCallback, remoteIp) => {
     logger.verbose(`${MODULE_NAME} 58547863: Processing XML message`, { xid, isCallback });
 
@@ -99,14 +129,14 @@ module.exports = (xid, trxIdFromCaller, xml, isCallback, remoteIp) => {
 
     const amount = Number(
         messageExtractor(
-            config.partner.price_rules || patternRules.price,
+            priceRules,
             messageFromResponse,
         ) || '',
     ) || null;
 
     const balance = Number(
         messageExtractor(
-            config.partner.balance_rules || patternRules.balance,
+            balanceRules,
             messageFromResponse,
         ) || '',
     ) || null;