---
title: "Create a Stripe Checkout session to top up the marketplace wallet"
method: POST
path: "/campaigns/payments/deposit-intent"
tags: ["Campaigns"]
---

# Create a Stripe Checkout session to top up the marketplace wallet

`POST /campaigns/payments/deposit-intent`

## Request

- Base URL: `https://api.reacherapp.com/public/v1`
- URL: `https://api.reacherapp.com/public/v1/campaigns/payments/deposit-intent`
- Auth: API key in header `x-api-key` and API key in header `x-shop-id`

Returns a Stripe Checkout `session_id` + `redirect_url`. Creating the intent does NOT move money — money moves only when the user completes the hosted checkout. `X-Dry-Run: true` validates the body without calling Stripe.

## Headers

- `Idempotency-Key` string, nullable
- `X-Dry-Run` string, nullable

## Request body

- CreateDepositIntentRequest: ``POST /public/v1/campaigns/payments/deposit-intent`` — return a Stripe Checkout session that the caller can redirect the user to in order to top up the shop's marketplace wallet. Creating the intent does NOT move any money; money moves only when the user completes the hosted Stripe flow and Stripe's webhook confirms the deposit. Public API never sees the webhook itself.
  - `amount` number, required: Deposit amount
  - `currency` string: ISO 4217 currency. The wallet's persisted currency overrides this for cross-currency safety.
  - `success_url` string, required: URL Stripe redirects to on completion. Must use a Reacher-controlled host (app.reacherapp.com, portal.reacherapp.com, staging.reacherapp.com) or localhost/127.0.0.1 for development.
  - `cancel_url` string, required

## Response `201`

Successful Response

- DepositIntentResponse: 201 response for ``POST /campaigns/payments/deposit-intent``.
  - `session_id` string, required: Stripe Checkout session ID.
  - `redirect_url` string, required: URL to redirect the user to in order to complete the deposit. No money moves until the user finishes Stripe's hosted checkout.

## Other responses

- `422`: Validation Error

## Changes

> 76 revisions in range; 1 not diffed.

- **2026-09-19** `291230805105`: 1 info
  - api operation id `create_deposit_intent_campaigns_payments_deposit_intent_post` removed and replaced with `campaign_payments_deposit_intent_create`

[Operation history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/campaigns/payments/deposit-intent/post.md)

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) - [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/reacherapp/apis/reacher-data-api/revisions/63ce74b30b5a?raw)
