diff --git a/src/app/(routes)/ledgers/[id]/transactions/create/page.tsx b/src/app/(routes)/ledgers/[id]/transactions/create/page.tsx
new file mode 100644
index 00000000..04faa5d4
--- /dev/null
+++ b/src/app/(routes)/ledgers/[id]/transactions/create/page.tsx
@@ -0,0 +1,205 @@
+'use client'
+
+import { Button } from '@/components/ui/button'
+import { Form } from '@/components/ui/form'
+import { LoadingButton } from '@/components/ui/loading-button'
+import { ArrowRight, Info } from 'lucide-react'
+import { useIntl } from 'react-intl'
+import { Stepper } from './stepper'
+import { PageFooter, PageFooterSection } from '@/components/page-footer'
+import Image from 'next/image'
+import {
+ OperationAccordion,
+ OperationEmptyAccordion
+} from './operation-accordion'
+import { OperationSourceField } from './operation-source-field'
+import { useTransactionForm } from './provider'
+import { StepperContent } from '@/components/transactions/primitives/stepper'
+import { MetadataAccordion } from './metadata-accordion'
+import ArrowRightCircle from '/public/svg/arrow-right-circle.svg'
+import { BasicInformationPaper } from './basic-information-paper'
+import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'
+import { useRouter } from 'next/navigation'
+import { useConfirmDialog } from '@/components/confirmation-dialog/use-confirm-dialog'
+import ConfirmationDialog from '@/components/confirmation-dialog'
+
+export default function CreateTransactionPage() {
+ const intl = useIntl()
+ const router = useRouter()
+
+ const {
+ form,
+ currentStep,
+ multipleSources,
+ values,
+ addSource,
+ addDestination,
+ handleReview
+ } = useTransactionForm()
+
+ const { handleDialogOpen, dialogProps } = useConfirmDialog({
+ onConfirm: () => router.push('/transactions')
+ })
+ console.log(form.getValues(), form.formState.errors)
+ return (
+ <>
+
+
+
+ >
+ )
+}
diff --git a/src/app/(routes)/ledgers/[id]/transactions/create/review/page.tsx b/src/app/(routes)/ledgers/[id]/transactions/create/review/page.tsx
new file mode 100644
index 00000000..1e33d7c8
--- /dev/null
+++ b/src/app/(routes)/ledgers/[id]/transactions/create/review/page.tsx
@@ -0,0 +1,229 @@
+'use client'
+
+import { SendHorizonal } from 'lucide-react'
+import { useTransactionForm } from '../provider'
+import { Stepper } from '../stepper'
+import { Separator } from '@/components/ui/separator'
+import { PageFooter, PageFooterSection } from '@/components/page-footer'
+import { Button } from '@/components/ui/button'
+import { LoadingButton } from '@/components/ui/loading-button'
+import { useIntl } from 'react-intl'
+import { useConfirmDialog } from '@/components/confirmation-dialog/use-confirm-dialog'
+import ConfirmationDialog from '@/components/confirmation-dialog'
+import { useParams, useRouter } from 'next/navigation'
+import {
+ TransactionReceipt,
+ TransactionReceiptDescription,
+ TransactionReceiptItem,
+ TransactionReceiptOperation,
+ TransactionReceiptSubjects,
+ TransactionReceiptTicket,
+ TransactionReceiptValue
+} from '@/components/transactions/primitives/transaction-receipt'
+import ArrowRightLeftCircle from '/public/svg/arrow-right-left-circle.svg'
+import Image from 'next/image'
+import { isNil } from 'lodash'
+import { useCreateTransaction } from '@/client/transactions'
+import { useOrganization } from '@/context/organization-provider/organization-provider-client'
+
+export default function CreateTransactionReviewPage() {
+ const intl = useIntl()
+ const router = useRouter()
+
+ const { id } = useParams<{ id: string }>()
+
+ const { currentOrganization } = useOrganization()
+
+ const { mutate: createTransaction, isPending: createLoading } =
+ useCreateTransaction({
+ organizationId: currentOrganization.id!,
+ ledgerId: id,
+ onSuccess: () => router.push('/transactions')
+ })
+
+ const { values, currentStep, handleBack } = useTransactionForm()
+
+ const { handleDialogOpen: handleCancelOpen, dialogProps: cancelDialogProps } =
+ useConfirmDialog({
+ onConfirm: () => router.push('/transactions')
+ })
+
+ const { handleDialogOpen: handleSubmitOpen, dialogProps: submitDialogProps } =
+ useConfirmDialog({
+ onConfirm: () => createTransaction(values)
+ })
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Manual
+ source.account)}
+ destinations={values.destination?.map((source) => source.account)}
+ />
+ {values.description && (
+
+ {values.description}
+
+ )}
+
+
+
+
+ {values.source?.map((source, index) => (
+
+ {source.account}
+
+ ))}
+
+ }
+ />
+
+ {values.destination?.map((destination, index) => (
+
+ {destination.account}
+
+ ))}
+
+ }
+ />
+
+
+ {values.source?.map((source, index) => (
+
+ ))}
+ {values.destination?.map((destination, index) => (
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+ iconPlacement="end"
+ loading={createLoading}
+ onClick={() => handleSubmitOpen('')}
+ >
+ {intl.formatMessage({
+ id: 'transactions.create.button',
+ defaultMessage: 'Create Transaction'
+ })}
+
+
+
+ >
+ )
+}
diff --git a/src/app/(routes)/transactions/create/page.tsx b/src/app/(routes)/transactions/create/page.tsx
deleted file mode 100644
index 7bed5a89..00000000
--- a/src/app/(routes)/transactions/create/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-export default function CreateTransactionPage() {
- return (
-
-
Create Transactions
-
- )
-}