---
title: "Upload Money"
method: POST
path: "/api/billing/upload"
tags: ["Billing"]
---

# Upload Money

`POST /api/billing/upload`

[ADMIN ONLY] Manually credit a user account.

SEC-004: This endpoint is restricted to admins only. Normal users credit
their balance via the Stripe checkout flow, which is verified by webhook.

## Request body

- MoneyUploadRequest
  - `amount_usd` number, required — Amount to upload in USD (max $10,000)
  - `payment_method_id` string, nullable — Stripe payment method ID
  - `target_user_id` string, nullable — User ID to credit (admin only). Defaults to admin's own account if omitted.
  - `idempotency_key` string, nullable — Caller-supplied idempotency key to prevent double-credits on retry

## Response `200`

Successful Response

- MoneyUploadResponse
  - `success` boolean
  - `message` string, nullable
  - `data` Transaction
    - `id` string, required
    - `type` 'money_upload' | 'free_trial' | 'refund' | 'adjustment', required — money_upload, free_trial, refund, adjustment
    - `amount_usd` number, required — Amount in USD
    - `description` string, nullable
    - `status` 'completed' | 'pending' | 'failed' | 'refunded', required — completed, pending, failed, refunded
    - `payment_provider` string, nullable
    - `payment_id` string, nullable
    - `payment_method_type` string, nullable — card, apple_pay, google_pay, link, etc.
    - `card_brand` string, nullable — visa, mastercard, amex, etc.
    - `card_last4` string, nullable — Last 4 digits of card
    - `receipt_url` string, nullable — Stripe receipt/invoice URL
    - `created_at` string, required
  - `new_balance` number, nullable

## Other responses

- `400` — Bad Request
- `422` — Validation Error
- `500` — Internal Server Error

---

[API](https://skmtc.net/compresr/apis/compresr-platform-api.md) · [All operations](https://skmtc.net/compresr/apis/compresr-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/compresr/compresr-platform-api/revisions/93ee959dfa51/schema)
