Add Payment - Cospend

Add New Payment

Create a new shared expense or recurring payment

Payment Details

{#if formData.isRecurring}

Recurring Payment

{#if recurringData.frequency === 'custom'}

Cron format: minute hour day-of-month month day-of-week

Examples:

  • 0 9 * * * - Every day at 9:00 AM
  • 0 9 1 * * - Every 1st of the month at 9:00 AM
  • 0 9 * * 1 - Every Monday at 9:00 AM
  • 0 9 1,15 * * - 1st and 15th of every month at 9:00 AM
{#if cronError}
Invalid cron expression
{/if}
{/if}
Leave empty for indefinite recurring
{#if nextExecutionPreview}

Next Execution

{nextExecutionPreview}

{getFrequencyDescription(recurringData)}

{/if}
{/if}

Receipt Image

{#if imagePreview}
Receipt preview
{:else}
{/if}

Split Between Users

{#if predefinedMode}

Splitting between predefined users:

{#each users as user}
{user} {#if user === data.session?.user?.nickname} You {/if}
{/each}
{:else}
{#each users as user}
{user} {#if user !== data.session.user.nickname} {/if}
{/each}

Enter users to split with (one per line):

{/if} {#if predefinedMode} {#each data.predefinedUsers as user, i} {/each} {:else} {#each users as user, i} {/each} {/if}

Split Method

{#if formData.splitMethod === 'proportional'}

Custom Split Amounts

{#each users as user}
{/each}
{/if} {#if formData.splitMethod === 'personal_equal'}

Personal Amounts

Enter personal amounts for each user. The remainder will be split equally.

{#each users as user}
{/each} {#if formData.amount}
Total Personal: CHF {Object.values(personalAmounts).reduce((sum, val) => sum + (parseFloat(val) || 0), 0).toFixed(2)} Remainder to Split: CHF {Math.max(0, parseFloat(formData.amount) - Object.values(personalAmounts).reduce((sum, val) => sum + (parseFloat(val) || 0), 0)).toFixed(2)} {#if personalTotalError}
⚠️ Personal amounts exceed total payment amount!
{/if}
{/if}
{/if} {#if Object.keys(splitAmounts).length > 0}

Split Preview

{#each users as user}
{user}
0}> {#if splitAmounts[user] > 0} owes CHF {splitAmounts[user].toFixed(2)} {:else if splitAmounts[user] < 0} is owed CHF {Math.abs(splitAmounts[user]).toFixed(2)} {:else} owes CHF {splitAmounts[user].toFixed(2)} {/if}
{/each}
{/if}
{#if error}
{error}
{/if}
Cancel