---
title: "Create a Top-Up"
method: POST
path: "/v1/persons/{person_id}/accounts/{account_id}/topups"
tags: ["Instant Top-Ups"]
---

# Create a Top-Up

`POST /v1/persons/{person_id}/accounts/{account_id}/topups`

Creates a Top-Up for the person's account specified in the request URL.
Calling this endpoint will begin the payment process with Solaris and its
acquiring partner (e.g., Stripe).<br> Note that you must provide the
returned `client_secret` to the Acquirer's SDK (e.g., the Stripe
`PaymentIntent`).

## Path parameters

- `person_id` string, required
- `account_id` string, required

## Request body

- object
  - `amount` object, required
    - `value` integer — The amount of the Top-Up, in Euro cents.
    - `currency` 'EUR' — The currency of the Top-Up. Only `EUR` is supported.
  - `payment_method_id` string

## Response `201`

The Top-Up was successfully created.

- Topup
  - `id` string, required — Unique ID of the Top-Up.
  - `amount` MoneyBase, required
    - `value` integer — The amount in Euro cents.
    - `currency` 'EUR' — The currency of the Top-Up.
  - `acquirer_error_code` string, nullable — Error code forwarded by the Acquirer's API (in case there was an error on the Acquirer's end).
  - `acquirer_decline_code` string, nullable — If the Acquirer declines the Top-Up, then this property will contain the decline code forwarded by the Acquirer's API.
  - `cancellation_reason` 'abandoned' | 'duplicate' | 'fraudulent' | 'requested_by_customer', nullable — The reason why the Top-Up was cancelled. Only present if the `status` is 'CANCELLED'.
  - `decline_reason` string, nullable — The reason why the Top-Up was declined. Usually present if the `status` is 'DECLINED' due to a technical issue.
  - `client_secret` string — The client secret key provided by the Acquirer's API for use in their frontend SDK.
  - `status` 'ACCEPTED' | 'CONFIRMED' | 'EXECUTED' | 'DECLINED' | 'CANCELLED', required — The current status of the Top-Up.
  - `instruction_id` string, nullable — Instruction ID of the Solaris credit transfer transaction.

## Other responses

- `400` — There was an error on the client side.
- `403` — You are not authorized to perform this action.
- `404` — The model could not be found.
- `500` — Internal server error.

---

[API](https://skmtc.net/solarisgroup/apis/transactions.md) · [All operations](https://skmtc.net/solarisgroup/apis/transactions/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/solarisgroup/transactions/revisions/8df83424e244/schema)
