diff --git a/CHANGELOG.md b/CHANGELOG.md
index c67a134..32ca72b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
+### [0.13.0](https://github.com/useElven/core/releases/tag/v0.13.0) (2023-12-03)
+- add useScDeploy hook for smart contract deployments - check [docs](https://www.useElven.com/docs/sdk-reference.html#usescdeploy()) for more informations
+
 ### [0.12.0](https://github.com/useElven/core/releases/tag/v0.12.0) (2023-11-30)
-- add useSignMessage hook - check [docs](https://www.useElven.com) for more informations
+- add useSignMessage hook - check [docs](https://www.useElven.com/docs/sdk-reference.html#usesignmessage()) for more informations
 - min Node version is 18
 - update dependencies
 
diff --git a/package-lock.json b/package-lock.json
index 02c2c53..2c3f343 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "@useelven/core",
-  "version": "0.12.0",
+  "version": "0.13.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "@useelven/core",
-      "version": "0.12.0",
+      "version": "0.13.0",
       "license": "MIT",
       "dependencies": {
         "@multiversx/sdk-core": "12.15.0",
@@ -22,12 +22,12 @@
       },
       "devDependencies": {
         "@types/lodash.clonedeep": "4.5.9",
-        "@types/node": "20.10.1",
-        "@types/react": "18.2.39",
+        "@types/node": "20.10.2",
+        "@types/react": "18.2.41",
         "@typescript-eslint/eslint-plugin": "6.13.1",
         "@typescript-eslint/parser": "6.13.1",
-        "eslint": "8.54.0",
-        "eslint-config-prettier": "9.0.0",
+        "eslint": "8.55.0",
+        "eslint-config-prettier": "9.1.0",
         "eslint-plugin-prettier": "5.0.1",
         "eslint-plugin-react": "7.33.2",
         "eslint-plugin-react-hooks": "4.6.0",
@@ -429,9 +429,9 @@
       }
     },
     "node_modules/@eslint/eslintrc": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz",
-      "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==",
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+      "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
       "dev": true,
       "dependencies": {
         "ajv": "^6.12.4",
@@ -452,9 +452,9 @@
       }
     },
     "node_modules/@eslint/js": {
-      "version": "8.54.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz",
-      "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==",
+      "version": "8.55.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz",
+      "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==",
       "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -1543,9 +1543,9 @@
       }
     },
     "node_modules/@types/node": {
-      "version": "20.10.1",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.1.tgz",
-      "integrity": "sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==",
+      "version": "20.10.2",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz",
+      "integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==",
       "dependencies": {
         "undici-types": "~5.26.4"
       }
@@ -1557,9 +1557,9 @@
       "devOptional": true
     },
     "node_modules/@types/react": {
-      "version": "18.2.39",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.39.tgz",
-      "integrity": "sha512-Oiw+ppED6IremMInLV4HXGbfbG6GyziY3kqAwJYOR0PNbkYDmLWQA3a95EhdSmamsvbkJN96ZNN+YD+fGjzSBA==",
+      "version": "18.2.41",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.41.tgz",
+      "integrity": "sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw==",
       "devOptional": true,
       "dependencies": {
         "@types/prop-types": "*",
@@ -3076,15 +3076,15 @@
       }
     },
     "node_modules/eslint": {
-      "version": "8.54.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz",
-      "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==",
+      "version": "8.55.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz",
+      "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==",
       "dev": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/regexpp": "^4.6.1",
-        "@eslint/eslintrc": "^2.1.3",
-        "@eslint/js": "8.54.0",
+        "@eslint/eslintrc": "^2.1.4",
+        "@eslint/js": "8.55.0",
         "@humanwhocodes/config-array": "^0.11.13",
         "@humanwhocodes/module-importer": "^1.0.1",
         "@nodelib/fs.walk": "^1.2.8",
@@ -3131,9 +3131,9 @@
       }
     },
     "node_modules/eslint-config-prettier": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
-      "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==",
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
+      "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
       "dev": true,
       "bin": {
         "eslint-config-prettier": "bin/cli.js"
diff --git a/package.json b/package.json
index ba452da..ad79c1e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@useelven/core",
-  "version": "0.12.0",
+  "version": "0.13.0",
   "description": "Core React hooks for MultiversX DApps",
   "license": "MIT",
   "author": "Julian Ćwirko <julian.io>",
@@ -78,12 +78,12 @@
   },
   "devDependencies": {
     "@types/lodash.clonedeep": "4.5.9",
-    "@types/node": "20.10.1",
-    "@types/react": "18.2.39",
+    "@types/node": "20.10.2",
+    "@types/react": "18.2.41",
     "@typescript-eslint/eslint-plugin": "6.13.1",
     "@typescript-eslint/parser": "6.13.1",
-    "eslint": "8.54.0",
-    "eslint-config-prettier": "9.0.0",
+    "eslint": "8.55.0",
+    "eslint-config-prettier": "9.1.0",
     "eslint-plugin-prettier": "5.0.1",
     "eslint-plugin-react": "7.33.2",
     "eslint-plugin-react-hooks": "4.6.0",
diff --git a/src/hooks/useScDeploy.tsx b/src/hooks/useScDeploy.tsx
new file mode 100644
index 0000000..23323fd
--- /dev/null
+++ b/src/hooks/useScDeploy.tsx
@@ -0,0 +1,91 @@
+import {
+  Address,
+  Code,
+  SmartContract,
+  CodeMetadata,
+  TypedValue,
+} from '@multiversx/sdk-core';
+import { useTransaction, TransactionArgs } from './useTransaction';
+import { useAccount } from './useAccount';
+import { useConfig } from './useConfig';
+import { errorParse } from '../utils/errorParse';
+import { useState } from 'react';
+
+export interface ScDeployHookProps {
+  webWalletRedirectUrl?: TransactionArgs['webWalletRedirectUrl'];
+  cb?: TransactionArgs['cb'];
+}
+
+export interface ScDeployArgs {
+  source: Buffer | string;
+  gasLimit?: number;
+  codeMetadata?: [boolean, boolean, boolean, boolean];
+  initArguments?: TypedValue[];
+}
+
+export const useScDeploy = (
+  { webWalletRedirectUrl, cb }: ScDeployHookProps = {
+    webWalletRedirectUrl: undefined,
+    cb: undefined,
+  }
+) => {
+  const [scAddress, setScAddress] = useState<string>();
+  const { address: accountAddress, nonce } = useAccount();
+  const { shortId } = useConfig();
+
+  const { triggerTx, pending, transaction, txResult, error } = useTransaction({
+    webWalletRedirectUrl,
+    cb,
+  });
+
+  const deploy = async ({
+    source,
+    gasLimit = 10_000_000,
+    codeMetadata = [true, false, false, false],
+    initArguments = [],
+  }: ScDeployArgs) => {
+    try {
+      let code: Code;
+
+      if (Buffer.isBuffer(source)) {
+        code = Code.fromBuffer(source);
+      } else {
+        const response = await fetch(source);
+        const bytes = await response.arrayBuffer();
+        code = Code.fromBuffer(Buffer.from(bytes));
+      }
+
+      const smartContract = new SmartContract();
+      const tx = smartContract.deploy({
+        deployer: new Address(accountAddress),
+        code,
+        codeMetadata: new CodeMetadata(...codeMetadata),
+        initArguments,
+        gasLimit,
+        chainID: shortId || 'D',
+      });
+
+      setScAddress(
+        SmartContract.computeAddress(
+          new Address(accountAddress),
+          nonce
+        ).bech32()
+      );
+
+      tx.setNonce(nonce);
+
+      triggerTx({ tx });
+    } catch (e) {
+      throw new Error(errorParse(e));
+    }
+  };
+
+  return {
+    deploy,
+    pending,
+    transaction,
+    txResult,
+    scAddress,
+    error,
+  };
+};
diff --git a/src/index.tsx b/src/index.tsx
index 45a0fa6..722cea8 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -16,6 +16,7 @@ export * from './hooks/useNetwork';
 export * from './hooks/useTokenTransfer';
 export * from './hooks/useMultiTokenTransfer';
 export * from './hooks/useSignMessage';
+export * from './hooks/useScDeploy';
 export { useApiCall } from './hooks/useApiCall';
 export { useScQuery } from './hooks/useScQuery';