diff --git a/Projects/App/Project.swift b/Projects/App/Project.swift
index 26dfc010..ef75512a 100644
--- a/Projects/App/Project.swift
+++ b/Projects/App/Project.swift
@@ -18,6 +18,24 @@ let project = Project(
     ]
   ),
   targets: [
+    .init(
+      name: "WidgetExtension",
+      platform: .iOS,
+      product: .appExtension,
+      bundleId: "com.yapp.moneymong.WidgetExtension",
+      infoPlist: .extendingDefault(with: [
+        "CFBundleDisplayName": "$(PRODUCT_NAME)",
+        "NSExtension": [
+          "NSExtensionPointIdentifier": "com.apple.widgetkit-extension",
+        ],
+      ]),
+      sources: "WidgetExtension/Sources/**",
+      resources: "WidgetExtension/Resources/**",
+      entitlements: "WidgetExtension/Resources/WidgetExtension.entitlements",
+      dependencies: [
+        .project(target: "DesignSystem", path: .relativeToRoot("Projects/Shared/DesignSystem"))
+      ]
+    ),
     Target(
       name: "Moneymong",
       platform: .iOS,
@@ -63,7 +81,8 @@ let project = Project(
       entitlements: "Resources/App.entitlements",
       dependencies: [
         .project(target: "SignFeature", path: .relativeToRoot("Projects/Feature/Sign")),
-        .project(target: "MainFeature", path: .relativeToRoot("Projects/Feature/Main"))
+        .project(target: "MainFeature", path: .relativeToRoot("Projects/Feature/Main")),
+        .target(name: "WidgetExtension")
       ],
       settings: .settings(
         base: .init()
diff --git a/Projects/App/Resources/App.entitlements b/Projects/App/Resources/App.entitlements
index a812db50..4ea3fcaa 100644
--- a/Projects/App/Resources/App.entitlements
+++ b/Projects/App/Resources/App.entitlements
@@ -6,5 +6,9 @@
 	<array>
 		<string>Default</string>
 	</array>
+	<key>com.apple.security.application-groups</key>
+	<array>
+		<string>group.moneymong</string>
+	</array>
 </dict>
 </plist>
diff --git a/Projects/App/Sources/AppDelegate.swift b/Projects/App/Sources/AppDelegate.swift
index b7f683cd..159cabf7 100644
--- a/Projects/App/Sources/AppDelegate.swift
+++ b/Projects/App/Sources/AppDelegate.swift
@@ -11,7 +11,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
     _ application: UIApplication,
     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
   ) -> Bool {
-    //URLSessionProxyDelegate.enableAutomaticRegistration()
     FirebaseManager.shared.initSDK()
     KakaoAuthManager.shared.initSDK()
     return true
diff --git a/Projects/App/Sources/SceneDelegate.swift b/Projects/App/Sources/SceneDelegate.swift
index 385088eb..0f7927a0 100644
--- a/Projects/App/Sources/SceneDelegate.swift
+++ b/Projects/App/Sources/SceneDelegate.swift
@@ -19,11 +19,18 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
     
     self.appCoordinator = AppCoordinator(navigationController: navigationController)
     appCoordinator?.start(animated: false)
+    
+    self.scene(scene, openURLContexts: connectionOptions.urlContexts)
   }
 
   func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
     guard let url = URLContexts.first?.url else { return }
-    KakaoAuthManager.shared.openURL(url)
+    
+    if url.absoluteString.contains("widget://") {
+      DeepLinkManager.setDestination(url.absoluteString)
+    } else {
+      KakaoAuthManager.shared.openURL(url)
+    }
   }
 
   func sceneDidDisconnect(_ scene: UIScene) {}
diff --git a/Projects/App/WidgetExtension/Resources/WidgetExtension-Info.plist b/Projects/App/WidgetExtension/Resources/WidgetExtension-Info.plist
new file mode 100644
index 00000000..3cc95de1
--- /dev/null
+++ b/Projects/App/WidgetExtension/Resources/WidgetExtension-Info.plist
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
+	<key>CFBundleDisplayName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>XPC!</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+	<key>NSExtension</key>
+	<dict>
+		<key>NSExtensionPointIdentifier</key>
+		<string>com.apple.widgetkit-extension</string>
+	</dict>
+</dict>
+</plist>
diff --git a/Projects/App/Moneymong.entitlements b/Projects/App/WidgetExtension/Resources/WidgetExtension.entitlements
similarity index 70%
rename from Projects/App/Moneymong.entitlements
rename to Projects/App/WidgetExtension/Resources/WidgetExtension.entitlements
index a812db50..036c6e5e 100644
--- a/Projects/App/Moneymong.entitlements
+++ b/Projects/App/WidgetExtension/Resources/WidgetExtension.entitlements
@@ -2,9 +2,9 @@
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
-	<key>com.apple.developer.applesignin</key>
+	<key>com.apple.security.application-groups</key>
 	<array>
-		<string>Default</string>
+		<string>group.moneymong</string>
 	</array>
 </dict>
 </plist>
diff --git a/Projects/App/WidgetExtension/Sources/Model/AgencyEntry.swift b/Projects/App/WidgetExtension/Sources/Model/AgencyEntry.swift
new file mode 100644
index 00000000..a971d344
--- /dev/null
+++ b/Projects/App/WidgetExtension/Sources/Model/AgencyEntry.swift
@@ -0,0 +1,50 @@
+import WidgetKit
+
+struct AgencyEntry: TimelineEntry {
+  let date: Date
+  let name: String
+  let amount: Int
+}
+
+struct AgencyProvider: TimelineProvider {
+  func placeholder(in context: Context) -> AgencyEntry {
+    AgencyEntry(
+      date: Date(),
+      name: "머니몽 대학",
+      amount: 10000
+    )
+  }
+  
+  func getSnapshot(in context: Context, completion: @escaping (AgencyEntry) -> ()) {
+    let entry = AgencyEntry(
+      date: Date(),
+      name: "머니몽 대학",
+      amount: 10000
+    )
+    completion(entry)
+  }
+  
+  func getTimeline(in context: Context, completion: @escaping (Timeline<AgencyEntry>) -> ()) {
+    let entry: AgencyEntry
+    if let dic = UserDefaults(suiteName: "group.moneymong")?.dictionary(forKey: "test"),
+       let name = dic["name"] as? String,
+       let amount = dic["total"] as? Int {
+     
+      entry = AgencyEntry(
+        date: .now,
+        name: name,
+        amount: amount
+      )
+      
+    } else {
+      entry = AgencyEntry(
+        date: .now,
+        name: "",
+        amount: 0
+      )
+    }
+    let nextUpdate = Calendar.current.date(byAdding: .hour, value: 1, to: .now)
+    let timeline = Timeline(entries: [entry], policy: .after(nextUpdate!))
+    completion(timeline)
+  }
+}
diff --git a/Projects/App/WidgetExtension/Sources/Model/OCREntry.swift b/Projects/App/WidgetExtension/Sources/Model/OCREntry.swift
new file mode 100644
index 00000000..c9db6881
--- /dev/null
+++ b/Projects/App/WidgetExtension/Sources/Model/OCREntry.swift
@@ -0,0 +1,21 @@
+import WidgetKit
+
+struct OCREntry: TimelineEntry {
+  let date: Date
+}
+
+struct OCRProvider: TimelineProvider {
+  func placeholder(in context: Context) -> OCREntry {
+    OCREntry(date: Date())
+  }
+  
+  func getSnapshot(in context: Context, completion: @escaping (OCREntry) -> ()) {
+    let entry = OCREntry(date: Date())
+    completion(entry)
+  }
+  
+  func getTimeline(in context: Context, completion: @escaping (Timeline<OCREntry>) -> ()) {
+    let timeline = Timeline(entries: [OCREntry(date: .now)], policy: .never)
+    completion(timeline)
+  }
+}
diff --git a/Projects/App/WidgetExtension/Sources/Widgets/MainWidget.swift b/Projects/App/WidgetExtension/Sources/Widgets/MainWidget.swift
new file mode 100644
index 00000000..3c6b9b60
--- /dev/null
+++ b/Projects/App/WidgetExtension/Sources/Widgets/MainWidget.swift
@@ -0,0 +1,80 @@
+import WidgetKit
+import SwiftUI
+import DesignSystem
+
+struct MainWidget: Widget {
+  private let kind: String = "MainWidget"
+  
+  var body: some WidgetConfiguration {
+    StaticConfiguration(kind: kind, provider: AgencyProvider()) { entry in
+      MainWidgetEntryView(entry: entry)
+    }
+    .supportedFamilies([.systemMedium])
+    .configurationDisplayName("회비 내역 등록")
+    .description("등록할 회비 내역을 바로 입력할 수 있어요")
+  }
+}
+
+struct MainWidgetEntryView: View {
+  var entry: AgencyProvider.Entry
+  
+  
+  var body: some View {
+    VStack {
+      Link(destination: URL(string: "widget://CreateLedger")!) {
+        HStack(alignment: .center) {
+          Text("\(entry.name)에 오늘 사용한 금액 입력")
+            .bold()
+            .font(.system(size: 16))
+            .foregroundStyle(Color(uiColor: Colors.Gray._6))
+            .frame(height: 24)
+            .frame(maxWidth: .infinity)
+            .padding(.leading, 16)
+            .padding(.vertical, 18)
+          Image(uiImage: Images.mongCoin!)
+            .padding(.trailing, 16)
+        }
+        .background(Color.white)
+        .cornerRadius(12)
+      }
+      
+      Spacer()
+      HStack {
+        Link(destination: URL(string: "widget://OCR")!) {
+          HStack {
+            Spacer()
+            Text("영수증 스캔")
+              .bold()
+              .font(.system(size: 16))
+              .foregroundStyle(Color(uiColor: Colors.Gray._5))
+            Spacer()
+          }
+        }
+        
+        Divider()
+          .background(Color(uiColor: Colors.Gray._5))
+        Link(destination: URL(string: "widget://LedgerDetail")!) {
+          HStack {
+            Spacer()
+            Text("회비 내역 확인")
+              .bold()
+              .font(.system(size: 16))
+              .foregroundStyle(Color(uiColor: Colors.Gray._5))
+            Spacer()
+          }
+        }
+      }
+      .frame(height: 24)
+      Spacer()
+    }
+    .containerBackground(for: .widget) {
+      Color(uiColor: Colors.Gray._1)
+    }
+  }
+}
+
+#Preview(as: .systemMedium, widget: {
+  MainWidget()
+}, timeline: {
+  AgencyEntry(date: .now, name: "머니몽", amount: 1000)
+})
diff --git a/Projects/App/WidgetExtension/Sources/Widgets/OCRWidget.swift b/Projects/App/WidgetExtension/Sources/Widgets/OCRWidget.swift
new file mode 100644
index 00000000..1f14d728
--- /dev/null
+++ b/Projects/App/WidgetExtension/Sources/Widgets/OCRWidget.swift
@@ -0,0 +1,40 @@
+import WidgetKit
+import SwiftUI
+
+import DesignSystem
+
+struct OCRWidget: Widget {
+  private let kind: String = "OCRWidget"
+  
+  var body: some WidgetConfiguration {
+    StaticConfiguration(kind: kind, provider: OCRProvider()) { entry in
+      OCRWidgetEntryView()
+    }
+    .supportedFamilies([.systemSmall])
+    .configurationDisplayName("회비 내역 스캔")
+    .description("영수증 스캔으로 빠르게 회비 내역을 기록해보세요")
+  }
+}
+
+struct OCRWidgetEntryView: View {
+  var body: some View {
+    VStack {
+      if let image = Images.scanCircle {
+        Image(uiImage: image)
+          .resizable()
+          .frame(width: 80, height: 80)
+      }
+      
+      Spacer()
+
+      Text("영수증 스캔하기")
+        .foregroundColor(Color(uiColor: Colors.Gray._8))
+        .font(.system(size: 16, weight: .bold))
+    }
+    .padding(.vertical, 20)
+    .widgetURL(URL(string: "widget://OCR"))
+    .containerBackground(for: .widget) {
+      Color(uiColor: Colors.Gray._1)
+    }
+  }
+}
diff --git a/Projects/App/WidgetExtension/Sources/Widgets/SecondWidget.swift b/Projects/App/WidgetExtension/Sources/Widgets/SecondWidget.swift
new file mode 100644
index 00000000..a59bb96e
--- /dev/null
+++ b/Projects/App/WidgetExtension/Sources/Widgets/SecondWidget.swift
@@ -0,0 +1,83 @@
+import WidgetKit
+import SwiftUI
+
+import DesignSystem
+
+struct SecondWidget: Widget {
+  private let kind: String = "SecondWidget"
+  
+  var body: some WidgetConfiguration {
+    StaticConfiguration(kind: kind, provider: AgencyProvider()) { entry in
+      SecondWidgetEntryView(entry: entry)
+    }
+    .supportedFamilies([.systemMedium])
+    .configurationDisplayName("내 장부")
+    .description("장부에 돈이 얼마 남앗는지 바로 확인할 수 있어요")
+  }
+}
+
+struct SecondWidgetEntryView: View {
+  var entry: AgencyProvider.Entry
+  
+  var body: some View {
+    VStack {
+      HStack(alignment: .top, spacing: 0) {
+        VStack(alignment: .leading, spacing: 4) {
+          Text("\(entry.name)에 이만큼 남았어요")
+            .font(.system(size: 12, weight: .semibold))
+            .foregroundColor(Color(uiColor: Colors.Gray._6))
+            .frame(height: 18)
+            
+          Text("\(entry.amount)원")
+            .font(.system(size: 28, weight: .bold))
+            .foregroundColor(Color(uiColor: Colors.Gray._10))
+            .frame(height: 26)
+        }
+        
+        Spacer()
+        
+        Image(uiImage: Images.mongLedger!)
+          .resizable()
+          .aspectRatio(contentMode: .fit)
+          .frame(width: 98)
+          .offset(y: -10)
+      }
+
+      HStack(spacing: 10) {
+        Link(destination: URL(string: "widget://OCR")!) {
+          Text("영수증 스캔")
+            .font(.system(size: 12, weight: .bold))
+            .foregroundColor(Color(uiColor: Colors.White._1))
+            .frame(height: 18)
+            .frame(maxWidth: .infinity)
+            .padding(10)
+            .background(Color(uiColor: Colors.Blue._4))
+            .cornerRadius(10)
+        }
+        
+        Link(destination: URL(string: "widget://LedgerDetail")!) {
+          Text("회비 내역 확인")
+            .font(.system(size: 12, weight: .bold))
+            .foregroundColor(Color(uiColor: Colors.Blue._4))
+            .frame(height: 18)
+            .frame(maxWidth: .infinity)
+            .padding(10)
+            .background(Color(uiColor: Colors.Blue._1))
+            .cornerRadius(10)
+        }
+      }
+    }
+    .padding(.horizontal, 10)
+    .padding(.vertical, 20)
+    .containerBackground(for: .widget) {
+      Color(uiColor: Colors.Gray._1)
+    }
+  }
+}
+
+#Preview(as: .systemMedium) {
+  SecondWidget()
+} timeline: {
+  AgencyEntry(date: .now, name: "머니몽", amount: 100000)
+  AgencyEntry(date: .now, name: "머니몽2", amount: 120000)
+}
diff --git a/Projects/App/WidgetExtension/Sources/Widgets/Widgets.swift b/Projects/App/WidgetExtension/Sources/Widgets/Widgets.swift
new file mode 100644
index 00000000..78c42b15
--- /dev/null
+++ b/Projects/App/WidgetExtension/Sources/Widgets/Widgets.swift
@@ -0,0 +1,12 @@
+import SwiftUI
+import WidgetKit
+
+@main
+struct Widgets: WidgetBundle {
+  @WidgetBundleBuilder
+  var body: some Widget {
+    MainWidget()
+    SecondWidget()
+    OCRWidget()
+  }
+}
diff --git a/Projects/Core/Core/Sources/DeepLinkManager.swift b/Projects/Core/Core/Sources/DeepLinkManager.swift
new file mode 100644
index 00000000..500d9621
--- /dev/null
+++ b/Projects/Core/Core/Sources/DeepLinkManager.swift
@@ -0,0 +1,18 @@
+import Foundation
+
+public struct DeepLinkManager {
+  
+  public static var destination: String?
+  
+  // OCR, CreateLedger, LedgerDetail
+  public static func setDestination(_ urlString: String) {
+    let query = urlString.replacingOccurrences(of: "widget://", with: "")
+    destination = query
+    
+    NotificationCenter.default.post(name: .init("deeplink"), object: nil, userInfo: ["query": query])
+  }
+  
+  public static func clear() {
+    destination = nil
+  }
+}
diff --git a/Projects/Core/Core/Sources/Network/APIs/LedgerAPI/Repository/LedgerRepository.swift b/Projects/Core/Core/Sources/Network/APIs/LedgerAPI/Repository/LedgerRepository.swift
index e1e38b70..f2c42ed4 100644
--- a/Projects/Core/Core/Sources/Network/APIs/LedgerAPI/Repository/LedgerRepository.swift
+++ b/Projects/Core/Core/Sources/Network/APIs/LedgerAPI/Repository/LedgerRepository.swift
@@ -1,4 +1,5 @@
 import Foundation
+import WidgetKit
 
 public protocol LedgerRepositoryInterface {
   
@@ -128,7 +129,17 @@ public final class LedgerRepository: LedgerRepositoryInterface {
     } else {
       targetType = LedgerAPI.ledgerFilterList(id: id, param: request)
     }
-    return try await networkManager.request(target: targetType, of: LedgerListResponseDTO.self).toEntity
+    
+    let result = try await networkManager.request(target: targetType, of: LedgerListResponseDTO.self)
+    
+    let dic:[String: Any] = [
+      "name" : "머니몽 소속",
+      "total" : result.totalBalance
+    ]
+    
+    UserDefaults(suiteName: "group.moneymong")?.set(dic, forKey: "test")
+    WidgetCenter.shared.reloadAllTimelines()
+    return result.toEntity
   }
   
   public func fetchLedgerDetail(id: Int) async throws -> LedgerDetail {
diff --git a/Projects/Feature/Base/Sources/Coordinator/Coordinator.swift b/Projects/Feature/Base/Sources/Coordinator/Coordinator.swift
index 3431b030..de2dbe03 100644
--- a/Projects/Feature/Base/Sources/Coordinator/Coordinator.swift
+++ b/Projects/Feature/Base/Sources/Coordinator/Coordinator.swift
@@ -6,6 +6,7 @@ public enum Scene {
   case login // 로그인화면
   case ledger // 장부화면
   case createManualLedger(Int) // 운영비 등록화면
+  case createOCRLedger(Int) // OCR 스캔화면
   case agency // 소속화면
 }
 
diff --git a/Projects/Feature/Base/Sources/NSNotificationName+.swift b/Projects/Feature/Base/Sources/NSNotificationName+.swift
index 273bcc6d..5ac57fbb 100644
--- a/Projects/Feature/Base/Sources/NSNotificationName+.swift
+++ b/Projects/Feature/Base/Sources/NSNotificationName+.swift
@@ -3,4 +3,5 @@ import Foundation
 public extension NSNotification.Name {
   static let tabBarHidden = NSNotification.Name("tabBarHidden") // toggle Tab
   static let presentManualCreater = NSNotification.Name("presentManualCreater") // 동아리 운영비 등록화면 present
+  static let presentOCRCreater = NSNotification.Name("presentOCRCreater") // 동아리 운영비 OCR 스캔화면 present
 }
diff --git a/Projects/Feature/Ledger/Sources/Scene/Ledger/LedgerVC.swift b/Projects/Feature/Ledger/Sources/Scene/Ledger/LedgerVC.swift
index af2b113e..ca9de933 100644
--- a/Projects/Feature/Ledger/Sources/Scene/Ledger/LedgerVC.swift
+++ b/Projects/Feature/Ledger/Sources/Scene/Ledger/LedgerVC.swift
@@ -52,10 +52,6 @@ public final class LedgerVC: BaseVC, View {
     )
   }
   
-  public override func setupUI() {
-    super.setupUI()
-  }
-  
   public override func setupConstraints() {
     super.setupConstraints()
     view.addSubview(emptyView)
diff --git a/Projects/Feature/Ledger/Sources/Scene/Ledger/TabItems/Ledger/LedgerTabVC.swift b/Projects/Feature/Ledger/Sources/Scene/Ledger/TabItems/Ledger/LedgerTabVC.swift
index fbe2d141..b60bbf02 100644
--- a/Projects/Feature/Ledger/Sources/Scene/Ledger/TabItems/Ledger/LedgerTabVC.swift
+++ b/Projects/Feature/Ledger/Sources/Scene/Ledger/TabItems/Ledger/LedgerTabVC.swift
@@ -117,6 +117,14 @@ final class LedgerTabVC: BaseVC, View {
       }
       .disposed(by: disposeBag)
     
+    NotificationCenter.default.rx.notification(.presentOCRCreater)
+      .compactMap { $0.userInfo?["id"] as? Int }
+      .observe(on: MainScheduler.instance)
+      .bind(with: self) { owner, id in
+        owner.coordinator?.present(.createOCRLedger(id))
+      }
+      .disposed(by: disposeBag)
+    
     dateRangeView.rx.tapGesture
       .map { _ in Reactor.Action.didTapDateRangeView }
       .bind(to: reactor.action)
diff --git a/Projects/Feature/Main/Sources/MainDIContainer.swift b/Projects/Feature/Main/Sources/MainDIContainer.swift
index 60d515de..1ffeb99d 100644
--- a/Projects/Feature/Main/Sources/MainDIContainer.swift
+++ b/Projects/Feature/Main/Sources/MainDIContainer.swift
@@ -39,7 +39,8 @@ public final class MainDIContainer {
   }
 
   func mainTab(with coordinator: Coordinator) -> MainTapViewController {
-    let tabVC = MainTapViewController()
+    let tabVC = MainTapViewController(agencyID: localStorage.selectedAgency)
+    tabVC.coordinator = coordinator
     tabVC.setViewControllers(
       [agencyTab(with: coordinator),
        ledgerTab(with: coordinator),
diff --git a/Projects/Feature/Main/Sources/MainTabBarCoordinator.swift b/Projects/Feature/Main/Sources/MainTabBarCoordinator.swift
index 90362007..a4796ecd 100644
--- a/Projects/Feature/Main/Sources/MainTabBarCoordinator.swift
+++ b/Projects/Feature/Main/Sources/MainTabBarCoordinator.swift
@@ -32,6 +32,10 @@ public final class MainTabBarCoordinator: Coordinator {
     case let .createManualLedger(agencyID): // 장부 이동 &
       tabBarController?.selectedIndex = 1
       NotificationCenter.default.post(name: .presentManualCreater, object: nil, userInfo: ["id": agencyID])
+    case let .createOCRLedger(agencyID):
+      tabBarController?.selectedIndex = 1
+      NotificationCenter.default.post(name: .presentOCRCreater, object: nil, userInfo: ["id": agencyID])
+    
     case .agency: // 소속으로 이동
       tabBarController?.selectedIndex = 0
     }
diff --git a/Projects/Feature/Main/Sources/MainTapViewController.swift b/Projects/Feature/Main/Sources/MainTapViewController.swift
index d5fea6f5..4275c479 100644
--- a/Projects/Feature/Main/Sources/MainTapViewController.swift
+++ b/Projects/Feature/Main/Sources/MainTapViewController.swift
@@ -1,14 +1,18 @@
 import UIKit
 
 import BaseFeature
+import Core
 import DesignSystem
 
 import RxSwift
 
 public final class MainTapViewController: UITabBarController {
   private let disposeBag = DisposeBag()
+  weak var coordinator: Coordinator?
+  private let agencyID: Int?
 
-  public init() {
+  public init(agencyID: Int?) {
+    self.agencyID = agencyID
     super.init(nibName: nil, bundle: nil)
   }
   
@@ -26,6 +30,7 @@ public final class MainTapViewController: UITabBarController {
     
     setupTabBar()
     bind()
+    observeNotification()
   }
 
   private func setupTabBar() {
@@ -58,4 +63,30 @@ public final class MainTapViewController: UITabBarController {
       })
       .disposed(by: disposeBag)
   }
+  
+  private func observeNotification() {
+    NotificationCenter.default.rx
+      .notification(.init("deeplink"))
+      .compactMap { $0.userInfo?["query"] as? String }
+      .bind(with: self) { owner, query in
+        guard let agencyID = owner.agencyID else { return }
+        
+        switch query {
+        case "OCR":
+          owner.coordinator?.move(to: .createOCRLedger(agencyID))
+        case "CreateLedger":
+          owner.coordinator?.move(to: .createManualLedger(agencyID))
+        case "LedgerDetail":
+          owner.coordinator?.move(to: .ledger)
+        default: break
+        }
+        
+        DeepLinkManager.clear();
+      }
+      .disposed(by: disposeBag)
+    
+    if let destination = DeepLinkManager.destination {
+      NotificationCenter.default.post(name: .init("deeplink"), object: nil, userInfo: ["query": destination])
+    }
+  }
 }
diff --git a/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/Contents.json b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/Contents.json
new file mode 100644
index 00000000..367283bb
--- /dev/null
+++ b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "money mong coin_front view 1.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "money mong coin_front view 1@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "money mong coin_front view 1@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/money mong coin_front view 1.png b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/money mong coin_front view 1.png
new file mode 100644
index 00000000..0546b8c9
Binary files /dev/null and b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/money mong coin_front view 1.png differ
diff --git a/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/money mong coin_front view 1@2x.png b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/money mong coin_front view 1@2x.png
new file mode 100644
index 00000000..fe00aba6
Binary files /dev/null and b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/money mong coin_front view 1@2x.png differ
diff --git a/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/money mong coin_front view 1@3x.png b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/money mong coin_front view 1@3x.png
new file mode 100644
index 00000000..f4266c2b
Binary files /dev/null and b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/MoneyMong/mong.coin.imageset/money mong coin_front view 1@3x.png differ
diff --git a/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Contents.json b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Contents.json
new file mode 100644
index 00000000..22b0d085
--- /dev/null
+++ b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "Group 360156.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "Group 360156@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "Group 360156@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Group 360156.png b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Group 360156.png
new file mode 100644
index 00000000..9504583b
Binary files /dev/null and b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Group 360156.png differ
diff --git a/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Group 360156@2x.png b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Group 360156@2x.png
new file mode 100644
index 00000000..d7ef5787
Binary files /dev/null and b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Group 360156@2x.png differ
diff --git a/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Group 360156@3x.png b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Group 360156@3x.png
new file mode 100644
index 00000000..60eeed38
Binary files /dev/null and b/Projects/Shared/DesignSystem/Resources/Image/Icon.xcassets/OCR/scan.circle.gray.imageset/Group 360156@3x.png differ
diff --git a/Projects/Shared/DesignSystem/Sources/Utils/Images.swift b/Projects/Shared/DesignSystem/Sources/Utils/Images.swift
index 2ad0991b..0909bef6 100644
--- a/Projects/Shared/DesignSystem/Sources/Utils/Images.swift
+++ b/Projects/Shared/DesignSystem/Sources/Utils/Images.swift
@@ -87,5 +87,9 @@ public enum Images {
   public static let timeLineBlue = UIImage(named: "time.line.blue", in: Bundle.module, with: nil)
   
   public static let feedback = UIImage(named: "feedback", in: Bundle.module, with: nil)
+  
+  // Widget
+  public static let scanCircle = UIImage(named: "scan.circle.gray", in: Bundle.module, with: nil)
+  public static let mongCoin = UIImage(named: "mong.coin", in: Bundle.module, with: nil)
 }