FlowAlp

API Subscription

July 30, 2026

Crea, recupera, aggiorna e annulla le subscription FlowAlp Pay via API, con intervalli di fatturazione ricorrente, durata del periodo e IVA.

Una Subscription è un accordo di fatturazione ricorrente gestito da FlowAlp Pay: la piattaforma addebita il metodo di pagamento salvato del cliente a ogni intervallo di pagamento. Gli endpoint qui sotto creano una subscription per un contatto esistente, la consultano, ne modificano l'importo e la annullano. Se invece vuoi far partire l'abbonamento dal checkout ospitato, crea un Gateway con i parametri subscriptionState, subscriptionInterval, subscriptionPeriod e subscriptionCancellationInterval — il concetto è spiegato in Abbonamenti e pagamenti ricorrenti.

La Subscription API è usata in produzione, ma parte del suo comportamento documentato è ancora in evoluzione. Se un campo risponde diversamente da quanto descritto qui, considera autorevole la response reale dell'API e contatta il supporto prima di farci affidamento.

Creare una Subscription

POSThttps://api.pay.flowalp.com/v1.16/Subscription/v1.14 · v1.15 · v1.16

Tutti i parametri di intervallo usano stringhe di durata ISO 8601 nel formato del DateInterval di PHP — ad esempio P1D (un giorno), P1W (una settimana), P1M (un mese) o P1Y (un anno).

Parametri della request

ParametroTipoDescrizione
instancestring (obbligatorio)Query parameter: nome della tua instance (tenant).
userIdstring (obbligatorio)ID del contatto da addebitare. Lo ricevi nel webhook della transazione del pagamento iniziale.
pspstring (obbligatorio)ID numerico del payment provider da usare per l'addebito. Puoi trovarlo con l'endpoint dei payment provider.
amountstring (obbligatorio)Importo addebitato a ogni intervallo, come valore numerico in unità minori (1490 = CHF 14.90).
currencystring (obbligatorio)Codice valuta ISO del pagamento, ad esempio CHF.
purposestring (obbligatorio)Che cosa sta pagando il cliente.
paymentIntervalstring (obbligatorio)Frequenza dell'addebito, ad es. P1M per la fatturazione mensile.
periodstring (obbligatorio)Durata complessiva della subscription, ad es. P1Y.
cancellationIntervalstring (obbligatorio)Preavviso di disdetta, ad es. P1M.
referenceIdstringIl tuo riferimento interno; viene restituito nelle notifiche webhook per abbinare la subscription ai tuoi dati.
vatRatestringAliquota IVA come valore percentuale.
Creare una subscriptionbash
curl -X POST "https://api.pay.flowalp.com/v1.16/Subscription/?instance=<tenant>" \
  -H "x-api-key: <api-secret>" \
  -H "Content-Type: application/json" \
  -d '{
    "userId": "12",
    "psp": "4",
    "amount": "1490",
    "currency": "CHF",
    "purpose": "Streaming plan",
    "paymentInterval": "P1M",
    "period": "P1Y",
    "cancellationInterval": "P1M",
    "referenceId": "PLAN-2026-042"
  }'
Creare una subscription (SDK PHP)PHP
<?php
use FlowAlpPay\FlowAlpPay;
use FlowAlpPay\Models\Request\Subscription;

$client = new FlowAlpPay(
    getenv('FLOWALP_TENANT'),
    getenv('FLOWALP_API_SECRET'),
    FlowAlpPay::DEFAULT_COMMUNICATION_HANDLER,
    'pay.flowalp.com',
    '1.16'
);

$subscription = new Subscription();
$subscription->setUserId(12);
$subscription->setPsp(4);
$subscription->setAmount(1490);
$subscription->setCurrency('CHF');
$subscription->setPurpose('Streaming plan');
$subscription->setPaymentInterval('P1M');
$subscription->setPeriod('P1Y');
$subscription->setCancellationInterval('P1M');

try {
    $response = $client->create($subscription);
    echo $response->getId();
} catch (Exception $e) {
    error_log('Subscription create failed: ' . $e->getMessage());
}

Recuperare una Subscription

GEThttps://api.pay.flowalp.com/v1.16/Subscription/{id}/v1.14 · v1.15 · v1.16
ParametroTipoDescrizione
idinteger (obbligatorio)Path parameter: ID della subscription da recuperare.
instancestring (obbligatorio)Query parameter: nome della tua instance (tenant).
Recuperare una subscriptionbash
curl "https://api.pay.flowalp.com/v1.16/Subscription/84/?instance=<tenant>" \
  -H "x-api-key: <api-secret>"

Elencare le Subscription

GEThttps://api.pay.flowalp.com/v1.16/Subscription/v1.14 · v1.15 · v1.16
ParametroTipoDescrizione
instancestring (obbligatorio)Query parameter: nome della tua instance (tenant).
orderByStartDatestringASC (default) oppure DESC — ordinamento per data di inizio della subscription.
limitintegerNumero massimo di righe da restituire. Default 10.
offsetintegerNumero di righe da saltare. Default 0.
Elencare le subscription (SDK PHP)PHP
<?php
use FlowAlpPay\Models\Request\Subscription;

// $client: stesso costruttore dell'esempio di creazione qui sopra
$request = new Subscription();
$request->setOrderByStartDate('DESC');
$request->setLimit(10);

try {
    $subscriptions = $client->getAll($request);
    foreach ($subscriptions as $subscription) {
        echo $subscription->getId() . ': ' . $subscription->getStatus() . PHP_EOL;
    }
} catch (Exception $e) {
    error_log('Subscription list failed: ' . $e->getMessage());
}

Aggiornare una Subscription

Le modifiche si applicano dal ciclo di fatturazione successivo. L'aggiornamento del vatRate per le subscription basate su prodotti è supportato dalla versione API 1.13.

PUThttps://api.pay.flowalp.com/v1.16/Subscription/{id}/v1.14 · v1.15 · v1.16
ParametroTipoDescrizione
idinteger (obbligatorio)Path parameter: ID della subscription da aggiornare.
instancestring (obbligatorio)Query parameter: nome della tua instance (tenant).
amountstringNuovo importo in unità minori, addebitato a partire dal prossimo intervallo di pagamento.
currencystringCodice valuta ISO del pagamento.
purposestringNuova causale del pagamento.
vatRatestringNuova aliquota IVA come valore percentuale.
Aggiornare una subscriptionbash
curl -X PUT "https://api.pay.flowalp.com/v1.16/Subscription/84/?instance=<tenant>" \
  -H "x-api-key: <api-secret>" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "1990",
    "currency": "CHF",
    "purpose": "Streaming plan Plus"
  }'
Aggiornare una subscription (SDK PHP)PHP
<?php
use FlowAlpPay\Models\Request\Subscription;

// $client: stesso costruttore dell'esempio di creazione qui sopra
$subscription = new Subscription();
$subscription->setId(84);
$subscription->setAmount(1990);
$subscription->setCurrency('CHF');
$subscription->setPurpose('Streaming plan Plus');

try {
    $client->update($subscription);
} catch (Exception $e) {
    error_log('Subscription update failed: ' . $e->getMessage());
}

Annullare una Subscription

L'annullamento interrompe la fatturazione ricorrente della subscription. L'operazione è esposta tramite l'SDK ufficiale, dove la disdetta viene inviata come richiesta DELETE sulla risorsa subscription.

DELETEhttps://api.pay.flowalp.com/v1.16/Subscription/{id}/v1.14 · v1.15 · v1.16
Annullare una subscriptionbash
curl -X DELETE "https://api.pay.flowalp.com/v1.16/Subscription/84/?instance=<tenant>" \
  -H "x-api-key: <api-secret>"
Annullare una subscription (SDK PHP)PHP
<?php
use FlowAlpPay\Models\Request\Subscription;

// $client: stesso costruttore dell'esempio di creazione qui sopra
$subscription = new Subscription();
$subscription->setId(84);

try {
    $client->cancel($subscription);
} catch (Exception $e) {
    error_log('Subscription cancel failed: ' . $e->getMessage());
}

Response

Gli endpoint Subscription rispondono con la struttura consueta: status più un array data di oggetti subscription. paymentInterval riflette il ritmo di fatturazione, valid_until indica fino a quando il periodo corrente è pagato, mentre gli oggetti invoice e contact descrivono che cosa viene fatturato e a chi.

Esempio di responseJSON
{
  "status": "success",
  "data": [
    {
      "id": 84,
      "uuid": "a5e0c919",
      "status": "active",
      "start": "2026-01-12",
      "end": null,
      "valid_until": "2027-01-12",
      "paymentInterval": "P1M",
      "invoice": {
        "number": "Streaming plan",
        "currency": "CHF",
        "referenceId": "PLAN-2026-042",
        "originalAmount": 1490,
        "refundedAmount": 0
      },
      "contact": {
        "id": 12,
        "uuid": "4ab402a9",
        "firstname": "Anna",
        "lastname": "Keller",
        "email": "anna.keller@example.com",
        "countryISO": "CH"
      }
    }
  ]
}

Errori

Stato HTTPSignificato
400Richiesta non valida — il campo message del body di errore descrive il problema esatto.
404Nessuna subscription con l'ID indicato esiste su questa instance.

Gli addebiti ricorrenti compaiono come normali transazioni: monitorali con Elencare e recuperare le Transaction o tramite gli eventi webhook. Per gli ID dei provider accettati da psp interroga l'endpoint dei payment provider.