Transaction operations beyond SEPA: cash operations (Viacash), instant top-ups, intra-customer transfers, prepaid accounts, partner remittances, reference account payouts, and transfer requests.
Summary
Functions
Cancels a cash operation. Only possible for PENDING or CREATED status.
Triggers CASH_OPERATION_STATUS_CHANGED webhook.
Cancels an instant top-up.
Initiates a payout to a business's reference account.
Creates a cash operation barcode for in/out at Viacash retailers.
Creates a credit clearing transaction.
Creates a debit clearing transaction.
Creates an instant top-up via card acquirer (e.g. Stripe).
Transfers funds between a person's main and sub-account. Does not require a change request.
Creates a partner remittance (requires change request).
Initiates a payout to a person's reference account. Requires a change request / 2FA.
Initiates a reference account payout by account ID (generic).
Creates a reservation and transfer request atomically.
Deletes a stored top-up payment method.
Executes a transfer request (can be partial; remaining amount stays reserved).
Retrieves a specific cash operation.
Retrieves a specific instant top-up.
Retrieves a partner remittance.
Lists cash operations for an account.
Lists clearing profiles.
Lists instant top-ups for an account.
Lists all partner remittances.
Lists saved instant top-up payment methods for a person.
Pays out from a prepaid card.
Tops up a prepaid card from a pooling account.
Transfers between EMONEY_PREPAID_POOLING and EMONEY_PARKING accounts.
Refunds a partner remittance. Status must be COMPLETED. Triggers a BOOKING webhook on success.
Resolves (releases) a transfer request reservation.
Sandbox only. Manually sets a cash operation status for testing.
Functions
@spec cancel_cash_operation(String.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Cancels a cash operation. Only possible for PENDING or CREATED status.
Triggers CASH_OPERATION_STATUS_CHANGED webhook.
@spec cancel_instant_top_up(String.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Cancels an instant top-up.
@spec create_business_reference_payout(String.t(), String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Initiates a payout to a business's reference account.
@spec create_cash_operation(String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Creates a cash operation barcode for in/out at Viacash retailers.
- Requires a change request
- Only one active operation per type per person
operation_type:"CASH_IN"|"CASH_OUT"
Examples
{:ok, op} = Solaris.Banking.Transactions.create_cash_operation("cacc_123", %{
operation_type: "CASH_IN",
amount: 50_000,
currency: "EUR"
})
@spec create_clearing_credit(String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Creates a credit clearing transaction.
@spec create_clearing_debit(String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Creates a debit clearing transaction.
@spec create_instant_top_up(String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Creates an instant top-up via card acquirer (e.g. Stripe).
Returns a client_secret for use with Stripe PaymentIntent.
Examples
{:ok, top_up} = Solaris.Banking.Transactions.create_instant_top_up("cacc_123", %{
amount: 10_000,
currency: "EUR",
payment_method_id: "pm_card_visa"
})
# Use top_up["client_secret"] with Stripe.js to confirm
@spec create_intra_customer_transfer( map(), keyword() ) :: {:ok, map()} | {:error, Solaris.Error.t()}
Transfers funds between a person's main and sub-account. Does not require a change request.
Examples
{:ok, tx} = Solaris.Banking.Transactions.create_intra_customer_transfer(%{
sender_account_id: "cacc_main",
receiver_account_id: "cacc_sub",
amount: 5_000,
currency: "EUR",
reference: "Internal move"
})
@spec create_partner_remittance( map(), keyword() ) :: {:ok, map()} | {:error, Solaris.Error.t()}
Creates a partner remittance (requires change request).
Examples
{:ok, remittance} = Solaris.Banking.Transactions.create_partner_remittance(%{
account_id: "cacc_123",
amount: 10_000,
currency: "EUR",
description: "Payout"
})
@spec create_person_reference_payout(String.t(), String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Initiates a payout to a person's reference account. Requires a change request / 2FA.
Examples
{:ok, payout} = Solaris.Banking.Transactions.create_person_reference_payout(
"cper_123",
"cacc_456",
%{
amount: 20_000,
currency: "EUR",
reference: "Withdrawal"
}
)
@spec create_reference_payout(String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Initiates a reference account payout by account ID (generic).
@spec create_transfer_request( map(), keyword() ) :: {:ok, map()} | {:error, Solaris.Error.t()}
Creates a reservation and transfer request atomically.
Examples
{:ok, request} = Solaris.Banking.Transactions.create_transfer_request(%{
account_id: "cacc_123",
amount: 10_000,
currency: "EUR"
})
@spec delete_top_up_payment_method(String.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Deletes a stored top-up payment method.
@spec execute_transfer_request(String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Executes a transfer request (can be partial; remaining amount stays reserved).
@spec get_cash_operation(String.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Retrieves a specific cash operation.
@spec get_instant_top_up(String.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Retrieves a specific instant top-up.
@spec get_partner_remittance( String.t(), keyword() ) :: {:ok, map()} | {:error, Solaris.Error.t()}
Retrieves a partner remittance.
@spec list_cash_operations( String.t(), keyword() ) :: {:ok, [map()]} | {:error, Solaris.Error.t()}
Lists cash operations for an account.
@spec list_clearing_profiles(keyword()) :: {:ok, [map()]} | {:error, Solaris.Error.t()}
Lists clearing profiles.
@spec list_instant_top_ups( String.t(), keyword() ) :: {:ok, [map()]} | {:error, Solaris.Error.t()}
Lists instant top-ups for an account.
@spec list_partner_remittances(keyword()) :: {:ok, [map()]} | {:error, Solaris.Error.t()}
Lists all partner remittances.
@spec list_top_up_payment_methods( String.t(), keyword() ) :: {:ok, [map()]} | {:error, Solaris.Error.t()}
Lists saved instant top-up payment methods for a person.
@spec prepaid_pay_out(String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Pays out from a prepaid card.
@spec prepaid_top_up(String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Tops up a prepaid card from a pooling account.
@spec prepaid_transfer(String.t(), map(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Transfers between EMONEY_PREPAID_POOLING and EMONEY_PARKING accounts.
@spec refund_partner_remittance( String.t(), keyword() ) :: {:ok, map()} | {:error, Solaris.Error.t()}
Refunds a partner remittance. Status must be COMPLETED. Triggers a BOOKING webhook on success.
@spec resolve_transfer_request( String.t(), keyword() ) :: {:ok, map()} | {:error, Solaris.Error.t()}
Resolves (releases) a transfer request reservation.
@spec sandbox_set_cash_operation_status(String.t(), String.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Solaris.Error.t()}
Sandbox only. Manually sets a cash operation status for testing.
status: "PAID" | "CANCELED" | "EXPIRED"