Partner API v1

Un Partner e' chi porta merchant a PayGlobe: un rivenditore, un'agenzia, un integratore. Ha credenziali proprie, vede i suoi merchant, i volumi che generano e quanto guadagna su ciascuno; via API puo' anche crearli e configurarli.

Non sai da dove entrare? Vai a Dove si accede: c'e' l'elenco completo degli URL (portale, API, documentazione).
Autenticazione API Key

Ogni Partner ha credenziali API dedicate:

  • API Key (pk_partner_xxx) - Usata per autenticazione
  • API Secret (sk_partner_xxx) - Per il login al portale e per le webhook signatures. Consegnato una volta sola: non e' recuperabile, solo rigenerabile

Base URL

https://api.payglobe.it/paymentgw/partner/api/v1

Funzionalità Principali

Gestione Merchant
Crea, configura e gestisci i tuoi merchant via API
Configurazione Servizi
Abilita/disabilita gateway per ogni merchant
Multi-Gateway
IGFS, Shift4, PayPal, BANCOMAT Pay, Zonda, etc.
Sicurezza
API Key + IP Whitelist + Webhook Signatures

Autenticazione

Tutte le richieste API devono includere l'header Authorization con il tuo API Key:

curl -X GET https://api.payglobe.it/paymentgw/partner/api/v1/me \
  -H "Authorization: Bearer pk_partner_xxxxxxxxxxxxxxxx"
Errori di Autenticazione
CodiceDescrizione
401API Key mancante o non valida
403IP non in whitelist (se configurato)

Quick Start

Esempio completo: crea un merchant e abilita BANCOMAT Pay

# 1. Crea un nuovo merchant
curl -X POST https://api.payglobe.it/paymentgw/partner/api/v1/merchants \
  -H "Authorization: Bearer pk_partner_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "merchantId": "STORE_001",
    "merchantName": "Il Mio Negozio",
    "environment": "TEST"
  }'

# 2. Abilita BANCOMAT Pay
curl -X POST ".../merchants/STORE_001/services/BANCOMAT_PAY/enable" \
  -H "Authorization: Bearer pk_partner_xxx"

# 3. Configura BANCOMAT Pay
curl -X PUT ".../merchants/STORE_001/services/BANCOMAT_PAY/config" \
  -H "Authorization: Bearer pk_partner_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "idPg": "ABCDE",
    "idNegozio": "12345678901",
    "merchantName": "Il Mio Negozio",
    "mode": "sandbox"
  }'

Dove si accede

Tutti gli indirizzi del programma partner. Non ce ne sono altri.

CosaURLCon cosa si entra
Portale partner (volumi, guadagno, transazioni)https://api.payglobe.it/paymentgw/partner-login.htmlAPI Key + API Secret
API partner (base URL)https://api.payglobe.it/paymentgw/partner/api/v1header Authorization: Bearer pk_partner_...
Questa documentazionehttps://api.payglobe.it/paymentgw/partner-api.htmlpubblica
Dashboard dei merchant (non del partner)https://api.payglobe.it/paymentgw/merchant-login.htmlchiavi pk_/sk_ del singolo merchant + 2FA
Guida all'integrazione dei merchanthttps://api.payglobe.it/paymentgw/partner.htmlpubblica
Le credenziali partner non sono quelle dei merchant. Con la pk_partner_ non si entra nella dashboard di un merchant, e con la sk_ di un merchant non si entra nel portale partner. Un partner che vuole vedere la dashboard di un suo merchant usa le chiavi di quel merchant (o un account utente creato dal merchant).

Portale partner

partner-login.html → si entra con API Key + API Secret. Dentro:

  • periodo selezionabile (default: mese corrente);
  • totali: transazioni incassate, volume lordo, rimborsato, commissioni PayGlobe, il tuo guadagno;
  • tabella per merchant, con il pricing applicato a ciascuno;
  • elenco transazioni filtrabile per merchant, con commissione e guadagno riga per riga.
Il portale e' in sola lettura per costruzione. La sessione del browser apre soltanto le rotte di lettura (/me, /merchants, /stats, /transactions). Creare, modificare o disattivare merchant richiede sempre il Bearer con la API Key: dal portale non si puo' fare, e non e' un limite temporaneo. Non vengono mostrati i dati dei compratori (email, nome): al partner serve il conto, non l'anagrafica dei clienti dei suoi merchant.

La sessione scade dopo 30 minuti di inattivita'. Il secret non viene mai salvato nel browser.

GET /stats

Volumi, commissioni PayGlobe e guadagno del partner, per merchant e in totale. Gli stessi numeri del portale.

Parametri
ParametroTipoDescrizione
fromdateYYYY-MM-DD, incluso. Default: primo del mese corrente
todateYYYY-MM-DD, incluso. Default: oggi. Finestra massima 366 giorni
curl "https://api.payglobe.it/paymentgw/partner/api/v1/stats?from=2026-09-01&to=2026-09-30" \
  -H "Authorization: Bearer pk_partner_xxx"
Response
{
  "success": true,
  "from": "2026-09-01",
  "to": "2026-09-30",
  "currency": "EUR",
  "revenueSharePercent": 30.00,
  "merchants": [
    {
      "merchantId": "soluzioniservizi",
      "environment": "PRODUCTION",
      "isActive": true,
      "pricing": {
        "defined": true,
        "percent": 1.200, "fixed": 0.15, "notes": "listino personalizzato",
        "tiers": [
          { "category": "MYBANK",     "label": "MyBank",     "percent": 0.250, "fixed": 0.15 },
          { "category": "PREPAID",    "label": "Prepaid",    "percent": 1.100, "fixed": 0.15 },
          { "category": "DEBIT",      "label": "Debit",      "percent": 1.100, "fixed": 0.15 },
          { "category": "CREDIT",     "label": "Credit",     "percent": 1.100, "fixed": 0.15 },
          { "category": "COMMERCIAL", "label": "Commercial", "percent": 2.300, "fixed": 0.15 },
          { "category": "EXTRA_EEA",  "label": "Extra-EEA",  "percent": 2.300, "fixed": 0.15 }
        ]
      },
      "transactionCount": 42,
      "grossVolume": 3180.00,
      "refundedAmount": 150.00,
      "payglobeFees": 42.36,
      "partnerEarnings": 12.71,
      "byCategory": {
        "DEBIT":        { "transactionCount": 25, "grossVolume": 1900.00, "refundedAmount": 0.00,   "payglobeFees": 24.65, "partnerEarnings": 7.40 },
        "CREDIT":       { "transactionCount": 12, "grossVolume": 980.00,  "refundedAmount": 150.00, "payglobeFees": 12.58, "partnerEarnings": 3.77 },
        "EXTRA_EEA":    { "transactionCount": 3,  "grossVolume": 200.00,  "refundedAmount": 0.00,   "payglobeFees": 5.05,  "partnerEarnings": 1.52 },
        "UNCLASSIFIED": { "transactionCount": 2,  "grossVolume": 100.00,  "refundedAmount": 0.00,   "payglobeFees": 1.50,  "partnerEarnings": 0.45 }
      },
      "unclassifiedCount": 2
    }
  ],
  "totals": {
    "transactionCount": 42,
    "grossVolume": 3180.00,
    "refundedAmount": 150.00,
    "payglobeFees": 42.36,
    "partnerEarnings": 12.71
  }
}

GET /transactions

Transazioni dei merchant del partner, in sola lettura. Senza dati del compratore.

Parametri
ParametroTipoDescrizione
merchantIdstringOpzionale. Un merchant che non e' del partner risponde con lista vuota, come uno inesistente
from / todateCome in /stats
onlyMoneyMovedbooleantrue = solo incassate e rimborsate (quelle che contano nei totali). Default false
page / sizeintPaginazione, size max 500, default 50. Ordinate dalla piu' recente
Response
{
  "success": true,
  "total": 42, "page": 0, "size": 50,
  "transactions": [
    {
      "transactionId": "3f0c9a2e-...",
      "merchantId": "soluzioniservizi",
      "createdAt": "2026-09-12T10:41:07+02:00",
      "completedAt": "2026-09-12T10:41:52+02:00",
      "amount": 75.00,
      "refundedAmount": 0.00,
      "paymentMethod": "CARD",
      "status": "COMPLETED",
      "statusFamily": "COMPLETED",
      "orderId": "ORD-1187",
      "description": "Ordine 1187",
      "fee": 1.00,
      "partnerEarning": 0.30
    }
  ]
}

statusFamily vale COMPLETED, REFUNDED, AUTHORIZED, PENDING, FAILED, CANCELLED, DISPUTED: e' quella da usare nei conti. status e' lo stato grezzo del PSP (decine di valori) e cambia con l'integrazione.

Pricing e quota: come si calcola

Commissione PayGlobeimporto × percent / 100 + fixed, per transazione, con la riga del listino della categoria della transazione. Il pricing lo imposta PayGlobe, il partner lo legge in /merchants e /stats (pricing.tiers)
CategorieMYBANK · PREPAID · DEBIT · CREDIT · COMMERCIAL · EXTRA_EEA. Sono le righe con cui il listino viene contrattato. Le carte vengono classificate dal BIN (le prime sei cifre) con la tabella BIN degli schemi, al momento del pagamento; Extra-EEA vince sul prodotto (una carta di debito emessa fuori dallo Spazio Economico Europeo e' EXTRA_EEA, non DEBIT), che e' anche come classifica l'acquirer. MyBank si riconosce dal metodo di pagamento. Ogni transazione porta cardCategory e issuerCountry in /transactions
RipiegoLe transazioni senza categoria (wallet e APM senza carta, carte di test, BIN non in tabella) e le categorie senza una riga dedicata prendono pricing.percent / pricing.fixed. In /stats compaiono in byCategory.UNCLASSIFIED e in unclassifiedCount: se sono tante fra le carte, il listino a fasce e' applicato solo in parte
Guadagno partnercommissione × revenueSharePercent / 100. La quota e' una percentuale fissa per partner, in /me
Quali transazioniSolo quelle in cui i soldi si sono mossi: famiglie COMPLETED e REFUNDED. Preautorizzazioni, fallite, annullate e in corso non contano
RimborsiEsposti a parte, non sottratti dalla commissione: e' la convenzione degli acquirer
Pricing assenteCommissione zero e pricing.defined = false. Non e' un listino gratuito: e' un listino non ancora inserito, e il portale lo segnala
StoricoLa commissione si calcola in lettura col pricing attuale: se il pricing cambia, cambiano anche i numeri dei mesi passati. Per un consuntivo definitivo, esportare a fine periodo

GET /me

Ottieni informazioni sul partner autenticato.

Response
{
  "success": true,
  "partner": {
    "id": 1,
    "partnerCode": "GRUPPO_RETAIL",
    "name": "Gruppo Retail SpA",
    "role": "PARTNER",
    "allowedServices": "[\"IGFS\",\"BANCOMAT_PAY\",\"PAYPAL\"]",
    "maxMerchants": 100,
    "revenueSharePercent": 30.00,
    "apiCallCount": 1523
  }
}

GET /merchants

Lista tutti i merchant del partner.

POST /merchants

Crea un nuovo merchant.

Request Body
ParametroTipoDescrizione
merchantId *stringID univoco del merchant
merchantNamestringNome visualizzato
environmentstringTEST o LIVE
Importante: Le chiavi API sono mostrate solo nella risposta di creazione. Salvale subito!

Il webhook lo imposta poi il merchant dalla propria dashboard. Sono accettati solo URL http(s) che risolvono a un indirizzo pubblico: localhost, reti private, 169.254.x.x e nomi che non risolvono vengono rifiutati con il motivo, e il controllo si ripete prima di ogni invio. Dettagli in partner.html.

GET /merchants/{merchantId}

Ottieni dettagli di un merchant.

PATCH /merchants/{merchantId}

Aggiorna configurazione (parziale).

DELETE /merchants/{merchantId}

Disattiva un merchant (soft delete).

GET /services

Lista servizi disponibili per il partner.

POST /merchants/{id}/services/{service}/enable

Abilita un servizio per un merchant.

POST /merchants/{id}/services/{service}/disable

Disabilita un servizio per un merchant.

PUT /merchants/{id}/services/{service}/config

Configura un servizio. I parametri variano per servizio.

IGFS
baseUrl, merchantId, apiKey, tid, acquirerName
baseUrl deve essere un URL https di un host N&TS (*.netsgroup.com, *.netswgroup.it): a quell'indirizzo partono la apiKey IGFS e i dati di pagamento del merchant. Qualunque altro valore viene rifiutato con HTTP 400 e il motivo nel campo error, senza modificare la configurazione.
BANCOMAT_PAY
idPg, idNegozio, merchantName, certificate, privateKey, mode
PAYPAL
clientId, clientSecret, mode
SHIFT4
merchantId, signatureKey, mode

Lista Servizi Disponibili

CodiceNomeDescrizione
IGFSIGFS/NexiPagamenti carta di credito
SHIFT4Shift4Pagamenti carta via Shift4
PAYPALPayPalPagamenti PayPal
AMAZON_PAYAmazon PayPagamenti Amazon Pay
BANCOMAT_PAYBANCOMAT PayPagamenti BANCOMAT Pay
BIZUMBizum (Redsys)Pagamento istantaneo conto-a-conto, solo Spagna
SKRILLSkrill (Quick Checkout)Wallet Skrill; dalla stessa pagina anche carta, Neteller, Rapid Transfer, PaysafeCard
ZONDAZonda CryptoPayPagamenti criptovalute
SATISPAYSatispayPagamenti Satispay

Adapter di compatibilità

Oltre alle API PayGlobe native, due adapter permettono a un merchant di restare sul protocollo che già usa. Non sono servizi da abilitare qui: si configurano emettendo le credenziali dell'adapter e ripuntando la Base URL del client.

AdapterPer chi arriva daBase URLDocumentazione
Mandala Stripe (SDK backend + Stripe.js) https://api.payglobe.it/mandala/v1 mandala
IGFS Adapter IGFS diretto (N&TS/Nexi PGW REST) https://api.payglobe.it/MONEYNET_CG_SERVICES igfs-adapter.html

L'IGFS Adapter espone init, verify, capture, reversal e refund in protocollo IGFS nativo, con la stessa HTTP-Signature. Il client cambia solo Base URL, merId (max 16 caratteri) e secret. auth diretto, selector, tokenizer e pay-by-mail non sono ancora esposti.

IGFS è un marchio e un prodotto di N&TS Group. PayGlobe non è affiliata a N&TS Group e non è autorizzata a distribuire la documentazione di integrazione IGFS. L'adapter è rivolto esclusivamente ai merchant che hanno già un'integrazione IGFS attiva e la relativa documentazione N&TS: le specifiche del protocollo vanno richieste a N&TS Group.

Codici Errore

HTTPDescrizione
400Parametri mancanti o non validi
401API Key mancante o non valida
403IP non autorizzato o servizio non consentito
404Risorsa non trovata
409Conflitto: ID già esistente, oppure Idempotency-Key riusata con un corpo diverso
500Errore interno del server

Ritentativi: Idempotency-Key

Su ogni chiamata che muove denaro — incasso, storno, annullo, addebito su carta salvata — invia l'header Idempotency-Key con un valore diverso per ogni operazione. Se ripeti la richiesta con la stessa chiave, ricevi la risposta originale invece di eseguirla una seconda volta.

Serve soprattutto sugli storni parziali. Uno storno totale ripetuto viene rifiutato da solo, perché non resta saldo da restituire; ma un secondo storno parziale dello stesso importo è un'operazione legittima, quindi senza chiave viene eseguito e il cliente riceve i soldi due volte.

Se una chiamata fallisce senza un esito confermato, ritentala con la stessa chiave: è l'unico modo di non decidere alla cieca. Riusare una chiave con un corpo diverso è un 409. Le chiavi restano valide 30 giorni.