Payment Container
Documentazione per integrazione con il servizio TS Payment Container
Descrizione Flussi
Descrizione dei vari flussi operativi
Richiesta di pagamento
Creazione richiesta di pagamento
Per creare una richiesta di pagamento deve essere invocata l’api [POST] /paymentRequest.
Il beneficiario della richiesta deve:
- essere iscritto su TS Digital
- coincidere con l’owner della richiesta
- avere servizio banklink dispositivo attivo
- | se viene scelta una modalità di pagamento TsPay, aver completato l'onboarding sulla piattaforma
In fase di creazione della richiesta, il beneficiario può scegliere una o più soluzioni di pagamento tra cui “paga totale” o “paga a rate”. La request deve avere definiti i metodi di pagamento che sono iban e/o carta. Ciascun metodo può avere dei constraints ovvero delle condizioni per cui il metodo può essere attivo.
È possibile inserire una data di scadenza alla richiesta di pagamento altrimenti verranno aggiunti 180 gg di default alla data dell’ultima rata.
L’api restituisce un link per poter accedere alla richiesta, seguire l’iter e procedere al pagamento su un gateway di pagamento esterno (ad oggi TS Pay è l'unica integrazione). Inoltre, l’api restituisce anche il token da inserire nelle chiamate di visualizzazione o modifica richiesta. Il link della richiesta di pagamento viene inviato per e-mail al debitore se impostata la relativa mail. Il testo della mail è possibile personalizzarlo attraverso le preferenze.
Il link alla UI Payment Container è sempre ottenibile tramite il token restituito ed è così composto: https://url_ui_payment_container/{token}. URLs per i vari ambienti li potete trovare qui
Una volta effettuato il pagamento su tspay, la richiesta verrà aggiornata con il pagamento saldato per l’intera richiesta o per una singola rata.
Il debitore può comunicare di aver effettuato il pagamento tramite altre modalità diverse da tspay, selezionando in richiesta “pagamento già effettuato”, in questo caso la richiesta verrà aggiornata in “pagata” quando il creditore confermerà l’avvenuto pagamento.
Per visualizzare l’anteprima dei documenti (formato pdf) inseriti in una richiesta è possibile utilizzare l’api [GET] /paymentRequest/document/{documentId}/preview.
Per effettuare il download dei documenti è possibile tramite l’api [GET]/public/paymentRequest/{token}/documents/{documentId}/download.
Disabilitare una richiesta di pagamento
Per disabilitare un link di una richiesta di pagamento bisogna invocare l’api [PATCH] /paymentRequest/{token}/disable. Inserire il token che viene restituito in fase di creazione della richiesta.
Accedendo al link disabilitato non è possibile effettuare nessuna operazione. Se il debitore procede al pagamento durante la disabilitazione del link, la richiesta è ritenuta pagata. Quindi accedendo al nuovo link non potrà effettuare il pagamento già effettuato.
Visualizzare una richiesta di pagamento
Per visualizzare una richiesta di pagamento già creata è possibile tramite l’api [GET] /public/paymentRequest/{token}.
L’api restituisce tutte le informazioni inserite nella richiesta, compresa la ragione sociale e il logo dell’azienda creditrice. Inoltre, è possibile visualizzare lo stato dei pagamenti (paid/notpaid) delle singole rate.
Mapping stati Payment Container e TsPay
Il mapping tra il servizio Payment Container e TsPay si può riassumere nel seguente schema:
Richiesta singola (TsPay link2Pay)
PAID -> active
ON_HOLD -> pending
NOT_PAID -> error, failed
Richiesta schedulata (TsPay link2Save)
SCHEDULED -> active (quando avverrà il pagamento alla data di scadenza sarà PAID)
NOT_YET_PAID-> pending
NOT_PAID -> error, failed
Pagamenti
Sostituzione link di pagamento
Per sostituire un link di pagamento già creato è possibile tramite l’api [PATCH] /public/paymentRequest/{token}/payment/{id}. Permette di generare un nuovo link di pagamento inserendo la modalità e la soluzione di pagamento a cui fare riferimento ma senza modificarne le condizioni.
Pagamento manuale di una richiesta
Per effettuare il pagamento manuale di una richiesta è possibile tramite l’api [POST] /paymentRequest/{token}/manualPayment. Permette di effettuare il pagamento manuale di una o più rate o dell’intera richiesta.
In questo caso, dopo aver proceduto al pagamento, accedendo di nuovo al link della richiesta, risulterà il pagamento come già saldato e sarà possibile selezionare solo le rate non pagate.
Preferenze
Creazione Preferenza
E’ possibile creare una preferenza da applicare alle richieste di pagamento tramite l’api [POST] /preferences/{companyId}.
Nel campo “company id” bisogna inserire lo uuid dell’azienda creditrice/owner della richiesta.
È possibile creare una preferenza su una specifica azienda inserendo:
- i giorni di scadenza che verranno aggiunti alla data di scadenza dell’ultima rata. Se nella richiesta di pagamento è stata inserita una data di scadenza, la preferenza non verrà applicata;
- il nome ed il cognome con i quali inviare la mail ai debitori che poi verranno riportati all'interno dell'intestazione "Inviato per conto di Nome Cognome" con la quale verrà spedita la mail da Payment Container;
- testo personalizzato dall’email con max 400 caratteri; Si possono inserire alcuni placeholder per avere dei valori dinamici e sono i seguenti:
@creditor_description@ > nome/ragione sociale creditore
@creditor_fiscal_code@ > codice fiscale creditore
@creditor_vat_number@ > partita iva creditore
@link@ > link di pagamento
@amount@ > importo totale della Payment Request
@reason@ > causale della Payment Request - metodo di pagamento con i constraints, i quali verranno applicati solo se non sono presenti nella richiesta.
Modifica Preferenza
La modifica di una preferenza precedentemente creata, è possibile tramite l’api [PATCH] /preferences/{companyId}.
Visualizzazione Preferenza
La visualizzazione, di una preferenza creata su una specifica azienda, è possibile invocando l’api [GET] /preferences/{companyId}.
Company Overview
Per verificare la presenza di fatture ricevute, inviate e scartate per una o più aziende a partire da un dato timestamp è possibile invocare api (https://b2bread-api-test.agyo.io/api/v2/items/overview). La stessa API vi permette di fare la stessa cosa anche con Payment Container. È stato aggiunto un nuovo campo specifico lastTimestampPayment
Successivamente al pagamento di una richiesta di pagamento, richiamando l’api [GET]/paymentRequest?ownerId={ownerId}×tamp=1630387427000 è possibile visualizzare le richieste che si sono modificate rispetto a un dato timestamp.
API
Descrizione API del servizio Payment Container
Informazioni Generali
Swagger
L'ambiente di produzione non esponse swagger.
Url base di produzione è: https://payment-container.agyo.io/
Headers
Per chiamare correttamente gli endpoint messi a disposizione dal servizio Payment Container, è necessario includere gli headers come descritto qui.
Tutte le API public non hanno necessità degli headers e possono essere utilizzate pubblicamente. Questo perchè anche un utente finale, non necessariamente TS Digital, può effettuare tali operazioni
In questa guida tutti gli endpoint sono descritti senza il prefisso /api/vX che va dunque anteposto
URLs UI
- DEV: https://apps-dev.agyo.io/payment-container-front/
- TEST: https://test.tsdigital-pay.com/payment-container-front/
- PROD: https://tsdigital-pay.com/
Richiesta di pagamento
Il path parameter token è l'identificativo univoco risultante dalla creazione di una Payment Request
Creazione richiesta di pagamento
Se si intende sfruttare questa api per avere un match univoco tra una fattura e una richiesta di pagamento, guardare la pagina Fatturazione
Permette di creare una richiesta di pagamento
[POST] /paymentRequest ?
Nella request abbiamo:
creditor: creditore della richiesta di pagamento
identifiers: lista di possibili identificativi riguardanti il soggetto. Per il creditore è necessario fornire un TS_DIGITAL_IDname: non compilare per il creditore in quanto verrà recuperato automaticamente da anagrafica TS Digitalholder: non compilare per il creditore in quanto verrà recuperato automaticamente da anagrafica TS Digitallogourl: non compilare per il creditore in quanto verrà recuperato automaticamente da anagrafica TS Digitalemail: compilare per utilizzare email custom di reply to inserita nella mail (vedere preferenze per capire le gerarchie)
debtor: debitore della richiesta di pagamentoidentifiers: lista di possibili identificativi riguardanti il soggetto.name: compilare in alternativa a holder (Persone giuridiche)holder: compilare in alternativa a name (Persone fisiche)logourl: non utilizzato per il debitore, non compilareemail: compilare se si vuole utilizzare la funzionalità di invio mail automatiche
paymentReason: causale di pagamentototalAmount: ammontare totale della richiesta di pagamentoavailablePaymentPlans: piani di pagamento a disposizionetype: tipologia di piano (singolo o multiplo)description: descrizione del piano di pagamentoinstallments: rate che compongono il piano di pagamentodescription: descrizione della ratadueDate: scadenza della singola rataamount: importo della ratametadata: dati aggiuntivi che è possibile utilizzare ai fini di riconciliazione (max 100 caratteri totali)
availablePaymentMethods: metodi di pagamento a disposizionename: metodo di pagamento accettatoconstraints: minimali e massimali del singolo metodo di pagamentominimumAmount: importo minimo per il metodo di pagamentomaximumAmount: importo massimo per il metodo di pagamento
ownerId: ownerId con identificativo TS Digital del creditoretransmitterId: transmitterId con identificativo TS DigitalpaymentDocuments: identificativi dei documenti che compongono la richiesta di pagamentoid: identificativo del documento (hubId se fatture, o id se documento del document store)type: tipo di documento-
description: descrizione del documento allowDownloadBeforePayment: booleano per inibire download prima che la richiesta sia completamente pagata (Default: true)
dueDate: data di scadenza della richiesta di pagamentomailContent: contenuto della mail da fornire nel caso si voglia inviare del contenuto personalizzato (La mail può contenere i comuni tag html per i paragrafi e per la formattazione)storeMailContent: valore booleano che indica se è necessario conservare il contenuto della mail inviato
I constraints hanno una priorità. Se vengono definiti sia nella request che nelle preferenze, avranno precedenza quelli della richiesta puntuale. Il minimumAmount può non essere definito ma in tal caso assumerà valore 0 con valuta EUR
Se un piano di pagamento è definito come SINGLE_INSTALLMENT deve contenere una sola rata. Contrariamente se viene definito un MULTIPLE_INSTALLMENTS deve contenere almeno due rate
Tutte le valute dei vari importi devono coincidere
Per inviare automaticamente una mail al debitore, contenete il link di pagamento, bisogna fornire l'indirizzo email compilando l'attributo email del debtor
Nella response l'API ritorna:
id: identificativo univoco della richiesta di pagamento creata-
token: identificativo da utilizzare nelle altre chiamate API per fare riferimento alla richiesta di pagamento in oggetto url: link per visualizzare la richiesta di pagamento tramite UI Payment Container e successivamente effettuare dei pagamenti
Modifica richiesta di pagamento
Permette di modificare una richiesta di pagamento
[PATCH] /paymentRequest/{token} ?
Nella request abbiamo:
debtor: debitore della richiesta di pagamentoidentifiers: lista di possibili identificativi riguardanti il soggetto. Se non compilato viene utilizzato quello già presentename: compilare in alternativa a holder (Persone giuridiche). Se non passato viene utilizzato quello già presenteholder: compilare in alternativa a name (Persone fisiche). Se non compilato viene utilizzato quello già presenteemail: compilare se si vuole utilizzare la funzionalità di invio mail automatiche. Se non compilato viene utilizzata la mail impostata in precedenza. Per eventualmente rimuovere la mail, valorizzare a stringa vuota
paymentDocuments: identificativi dei documenti che compongono la richiesta di pagamentoid: identificativo del documento (hubId se fatture, o id se documento del document store)type: tipo di documento-
description: descrizione del documento allowDownloadBeforePayment: booleano per inibire download prima che la richiesta sia completamente pagata (Default: true)
Almeno un attributo deve essere valorizzato, altrimenti verrà restituito un errore. Per quanto riguarda paymentDocuments, è necessario fornire il nuovo elenco di documenti che andranno a sovrascrivere quelli precedentemente forniti
La modifica non è possibile se la richiesta di pagamento è nei seguenti stati: PAID \ EXTERNAL_PAID
Nella response l'API ritorna:
id: identificativo univoco della richiesta di pagamento modificata-
token: identificativo da utilizzare nelle altre chiamate API per fare riferimento alla richiesta di pagamento in oggetto url: link per visualizzare la richiesta di pagamento tramite UI Payment Container e successivamente effettuare dei pagamenti
Disabilitare richiesta di pagamento
Permette di disabilitare una richiesta di pagamento precedentemente creata
[PATCH] /paymentRequest/{token}/disable ?
Nella response l'API ritorna:
id: identificativo univoco della richiesta di pagamento disabilitata-
token: identificativo token della richiesta di pagamento disabilitata url: link disabilitato
Visualizzare una singola richiesta di pagamento [API Pubblica]
Permette di visualizzare una richiesta di pagamento
[GET] /public/paymentRequest/{token}
Nella response l'API ritorna:
token: token della richiesta di pagamentocreditor: creditore della richiesta di pagamentodebtor: debitore della richiesta di pagamentopaymentReason: causale di pagamentototalAmount: ammontare totale della richiesta di pagamentoavailablePaymentPlans: piani di pagamento a disposizioneid: identificativo del piano di pagamentotype: tipologia di piano (singolo o multiplo)description: descrizione del piano di pagamentoinstallments: rate che compongono il piano di pagamentoid: identificativo della ratadescription: descrizione della ratadueDate: scadenza della singola rataamount: importo della rata
availablePaymentMethods: metodi di pagamento a disposizionename: metodo di pagamento accettatoconstraints: minimali e massimali del singolo metodo di pagamentominimumAmount: importo minimo per il metodo di pagamentomaximumAmount: importo massimo per il metodo di pagamento
ownerId: ownerId con identificativo TS Digital del creditoretransmitterId: transmitterId con identificativo TS DigitalpaymentDocuments: identificativi dei documenti che compongono la richiesta di pagamentodocumentId: identificativo del documento (interno a Payment Container non identificativo originale della fattura o documento su docstore)type: tipo di documentodescription: descrizione del documentopreviewUrl: link per preview documentodownloadUrl: link per download documento
dueDate: data di scadenza della richiesta di pagamentostatus: stato generale in cui si trova la richiesta di pagamentocreatedAt: data in cui è stata creata la richiestapayments: pagamenti effettuati per la richiesta di pagamentoid: identificativo univoco del pagamentoamount: importo del pagamentopaymentMethodName: metodo di pagamento utilizzatopaymentPlanId: identificativo del piano di pagamentoinstallmentIds: rate del pagamentostatus: stato del pagamentolink: link di pagamento
Visualizzare una singola richiesta di pagamento [API Autenticata]
Permette di visualizzare una richiesta di pagamento
[GET] /paymentRequest/{token} ?
Nella response l'API ritorna:
token: token della richiesta di pagamentocreditor: creditore della richiesta di pagamentodebtor: debitore della richiesta di pagamentopaymentReason: causale di pagamentototalAmount: ammontare totale della richiesta di pagamentoavailablePaymentPlans: piani di pagamento a disposizioneid: identificativo del piano di pagamentotype: tipologia di piano (singolo o multiplo)description: descrizione del piano di pagamentoinstallments: rate che compongono il piano di pagamentoid: identificativo della ratadescription: descrizione della ratadueDate: scadenza della singola rataamount: importo della ratametadata: dati aggiuntivi che sono stati inseriti in creazione della richiesta
availablePaymentMethods: metodi di pagamento a disposizionename: metodo di pagamento accettatoconstraints: minimali e massimali del singolo metodo di pagamentominimumAmount: importo minimo per il metodo di pagamentomaximumAmount: importo massimo per il metodo di pagamento
ownerId: ownerId con identificativo TS Digital del creditoretransmitterId: transmitterId con identificativo TS DigitalpaymentDocuments: identificativi dei documenti che compongono la richiesta di pagamentodocumentId: identificativo del documento (interno a Payment Container non identificativo originale della fattura o documento su docstore)type: tipo di documentodescription: descrizione del documentopreviewUrl: link per preview documentodownloadUrl: link per download documento
originalDocumentIds: mapping tra gli identificativi interni PaymentContainer e gli identificativi originali caricati (hubId o id DocStore)dueDate: data di scadenza della richiesta di pagamentostatus: stato generale in cui si trova la richiesta di pagamentocreatedAt: data in cui è stata creata la richiestaenabled: stato della richiesta che indica se abilitata o disabilitatapayments: pagamenti effettuati per la richiesta di pagamentoid: identificativo univoco del pagamentoamount: importo del pagamentopaymentMethodName: metodo di pagamento utilizzatopaymentPlanId: identificativo del piano di pagamentoinstallmentIds: rate del pagamentostatus: stato del pagamentolink: link di pagamento
emailContent: contenuto della mail inviata al debitore al momento della creazione della richiesta
Visualizzare richieste di pagamento
Permette di visualizzare una lista di richieste di pagamento
[GET] /paymentRequest ?
Parametri obbligatori:
ownerId: ownerId di cui si ha il permesso per operare e per cui si richiede la listatimestamp: unix timestamp in millisecondi (esempio:1643361440000)
Parametri opzionali:
tokens: array di id di richieste di pagamento da visualizzaresize: numero di risultati per richiesta (default: 20)continuationToken: token per richiedere il blocco successivo (restituito nella risposta)sort: chiavi di sorting possibili -> createdAtdirection: desc | asc rispetto alla chiave di sorting
Nella response l'API ritorna:
content: lista di risultati con singola struttura identica alla richiesta singola [Profilo Privato]continuationToken: token per richiedere altri risultatihasNext: booleano che indica se ci sono altri risultati da visualizzaresize: massima dimensione dei risultati impostata nei filtri
Invio email
Permette l'invio manuale della mail di Creazione Richiesta.
[POST] /paymentRequest/{token}/sendMail ?
Nella request abbiamo:
email: indirizzo email a cui inviare la notifica (opzionale)
Nella response l'API non torna nulla se non lo status code
Il campo email è opzionale. Se nella creazione della richiesta di pagamento era stato impostato il campo email del debtor verrà preso quel valore per inviare nuovamente una mail. Impostando email in questa API, questo valore avrà precedenza rispetto a quello del debtor, ma non lo sostituirà. Per modificare l'email del debtor per tutta la richiesta di pagamento, procedere utilizzando l'API dedicata di modifica della richiesta di pagamento
Il testo della mail è fornito di default da TS Digital. Alternativamente, se impostato il parametro bodyText nelle preferenze, verrà utilizzato questo in alternativa a quello di default.
Questa mail è esattamente la stessa che viene inviata automaticamente dal sistema se impostato il campo email del debtor nella richiesta di pagamento
Pagamento
Il path parameter token è l'identificativo univoco risultante dalla creazione di una Payment Request
Creazione link di pagamento
Permette di creare un link di pagamento facendo riferimento ad una payment request precedentemente configurata
[POST] /public/paymentRequest/{token}/pay
Nella request abbiamo:
paymentMethodName: metodo di pagamento da utilizzarepaymentPlanId: identificativo del piano di pagamento da pagareinstallmentIds: identificativi delle rate del piano di pagamento da pagarelangLocale: lingua da utilizzarescheduled: booleano per indicare se il pagamento dovrà essere immediato o schedulato (default: false)
Nella response l'API ritorna:
id: identificativo univoco del pagamento creatolink: link di pagamento verso la piattaforma di riferimento
Modifica link di pagamento
Permette di modificare le configurazioni di un link di pagamento precedentemente configurato e non ancora pagato
[PATCH] /public/paymentRequest/{token}/payment
Nella request abbiamo:
paymentMethodName: metodo di pagamento da utilizzarepaymentPlanId: identificativo del piano di pagamento da pagareinstallmentIds: identificativi delle rate del piano di pagamento da pagarelangLocale: lingua da utilizzare
Nella response l'API ritorna:
id: identificativo univoco del pagamento creatolink: link di pagamento verso la piattaforma di riferimento
Richiesta pagamento manuale
Permette di segnalare un pagamento come effettuato anche senza passare attraverso un iter di pagamento di Payment Container
[POST] /paymentRequest/{token}/manualPayment ?
Nella request abbiamo:
paymentMethodName: metodo di pagamento utilizzato per pagarepaymentPlanId: identificativo del piano di pagamento pagatoinstallmentIds: identificativi delle rate del piano di pagamento pagato
Nella response l'API ritorna:
id: identificativo univoco del pagamento creatoamount: ammontare del pagamento effettuatopaymentMethodName: metodo di pagamento utilizzatopaymentPlanId: identificativo del piano di pagamento pagatoinstallmentIds: identificativi delle rate del piano di pagamento pagatostatus: stato per il pagamento effettuatocreatedAt: data di creazione del pagamento
Documenti
Il path parameter token è l'identificativo univoco risultante dalla creazione di una Payment Request
Preview di un documento
Permette di ricevere la preview di uno specifico documento contenuto in una payment request precedentemente configurata
[GET] /public/paymentRequest/{token}/documents/{documentId}/preview
[GET] /paymentRequest/{token}/documents/{documentId}/preview ?
Possibili parametri:
type: tipologia di visualizzazione voluta
Nella response l'API ritorna:
XML del documento, HTML o PDF in base alla preview richiesta
Formati disponibili per tipologia di file
| ASSOSW | ADE | ASSOSWPDF | ADEPDF | RAW | BASE64 | |
| AGYO_INVOICE |
✅ Fallback |
✅ | ✅ | ✅ | ✅ | ❌ |
| DOC_STORE_DOCUMENT | ❌ | ❌ | ❌ | ❌ |
✅ Fallback |
✅ |
Se si richiede un formato non valido per la tipologia di documento richiesta, verrà applicato il formato di fallback
Nel caso di Formato BASE64, ritorna esattamente la stessa struttura del Doc Store ovvero con anteposta la stringa data:application/pdf;base64,
L'api public segue il comportamento del flag allowDownloadBeforePayment. Se impostato a false in fase di creazione richiesta, il documento non può essere mostrato prima che il pagamento sia completato. L'api autenticata, invece, permette di visionare in qualunque momento il documento in oggetto.
Download di un documento
Permette di ricevere la preview di uno specifico documento contenuto in una payment request precedentemente configurata
[GET] /public/paymentRequest/{token}/documents/{documentId}/download
[GET] /paymentRequest/{token}/documents/{documentId}/download ?
Possibili parametri:
format: tipologia di visualizzazione voluta
Nella response l'API ritorna:
XML del documento, PDF o stringa base64 in base al formato richiesto
Formati disponibili per tipologia di file
| XML | ASSOSW | BASE64 | RAW | ||
| AGYO_INVOICE | ✅ | ✅ |
✅ Fallback |
❌ | ❌ |
| DOC_STORE_DOCUMENT | ❌ | ❌ | ❌ | ✅ |
✅ Fallback |
Se si richiede un formato non valido per la tipologia di documento richiesta, verrà applicato il formato di fallback
Nel caso di Formato BASE64, ritorna esattamente la stessa struttura del Doc Store ovvero in formato DataURI con anteposta la stringa data:application/pdf;base64,
L'api public segue il comportamento del flag allowDownloadBeforePayment. Se impostato a false in fase di creazione richiesta, il documento non può essere scaricato prima che il pagamento sia completato. L'api autenticata, invece, permette di scaricare in qualunque momento il documento in oggetto.
Upload documento Payment Container tramite TS Document Store
Proxy che permette di caricare un documento su TS Document Store, senza preoccuparsi di possedere un token tecnico dedicato
[POST] /documentStore ?
Request Body (multipart/form-data):
ownerId: ownerId con identificativo TS Digital del creditoretransmitterId: transmitterId con identificativo TS Digitalfile: binary del file da caricare (max 10mb)
Upload documento Payment Container tramite TS Document Store (Base64)
Proxy che permette di caricare un documento su TS Document Store, senza la necessità di possedere un token tecnico dedicato.
[POST] /documentStore/base64 ?
Nella request abbiamo:
ownerId: ownerId con identificativo TS Digital del creditoretransmitterId: transmitterId con identificativo TS Digitalfile: base64 con formato DataURI ---> data:application/pdf;base64,file_content_in_base_64
Preferenze
Il path parameter companyId è l'identificativo TS Digital di un'azienda correttamente registrata
Le preferenze non vincono mai sui valori impostati in una singola richiesta di pagamento. Questo permette di sovrascrivere le preferenze per delle richieste di pagamento specifiche.
Se daysDueDate non viene impostato, o viene impostato a 0, verranno aggiunti 180gg come valore di default alla data di scadenza dell'ultima rata (a meno di non aver impostato una due date specifica in richiesta)
Creazione di una preferenza
Permette di creare una preferenza per una specifica azienda
[POST] /preferences/{companyId} ?
Nella request abbiamo:
daysDueDate: giorni di scadenza che verranno aggiunti alla data di scadenza dell'ultima rataemailSettings: parametri di customizzazione per emailbodyText: testo della mailname: nome inserito nell'intestazione della mailemail: email custom di reply to inserita nella mail
paymentMethodSettings: identificativi delle rate del piano di pagamento da pagarename: metodo di pagamentoconstraints: minimali e massimali del singolo metodo di pagamentominimumAmount: importo minimo per il metodo di pagamentomaximumAmount: importo massimo per il metodo di pagamento
Nella response l'API ritorna:
companyId: id azienda TS DigitaldaysDueDate: giorni di scadenza che verranno aggiunti alla data di scadenza dell'ultima rataemailSettings: parametri di customizzazione per emailbodyText: testo della mailname: nome inserito nell'intestazione della mailemail: email custom di reply to inserita nella mail
paymentMethodSettings: identificativi delle rate del piano di pagamento da pagarename: metodo di pagamentoconstraints: minimali e massimali del singolo metodo di pagamentominimumAmount: importo minimo per il metodo di pagamentomaximumAmount: importo massimo per il metodo di pagamento
Modifica di una preferenza
Permette di modificare una preferenza precedentemente creata per una specifica azienda
[PATCH] /preferences/{companyId} ?
Nella request abbiamo:
daysDueDate: giorni di scadenza che verranno aggiunti alla data di scadenza dell'ultima rataemailSettings: parametri di customizzazione per emailbodyText: testo della mailname: nome inserito nell'intestazione della mailemail: email custom di reply to inserita nella mail
paymentMethodSettings: identificativi delle rate del piano di pagamento da pagarename: metodo di pagamentoconstraints: minimali e massimali del singolo metodo di pagamentominimumAmount: importo minimo per il metodo di pagamentomaximumAmount: importo massimo per il metodo di pagamento
Nella response l'API ritorna:
companyId: id azienda TS DigitaldaysDueDate: giorni di scadenza che verranno aggiunti alla data di scadenza di una richiesta di pagamentoemailSettings: parametri di customizzazione per emailbodyText: testo della mailname: nome inserito nell'intestazione della mailemail: email custom di reply to inserita nella mail
paymentMethodSettings: identificativi delle rate del piano di pagamento da pagarename: metodo di pagamentoconstraints: minimali e massimali del singolo metodo di pagamentominimumAmount: importo minimo per il metodo di pagamentomaximumAmount: importo massimo per il metodo di pagamento
Visualizzazione di una preferenza
Permette di modificare una preferenza precedentemente creata per una specifica azienda
[GET] /preferences/{companyId} ?
Nella response l'API ritorna:
companyId: id azienda TS DigitaldaysDueDate: giorni di scadenza che verranno aggiunti alla data di scadenza di una richiesta di pagamentoemailSettings: parametri di customizzazione per emailbodyText: testo della mailname: nome inserito nell'intestazione della mailemail: email custom di reply to inserita nella mail
paymentMethodSettings: identificativi delle rate del piano di pagamento da pagarename: metodo di pagamentoconstraints: minimali e massimali del singolo metodo di pagamentominimumAmount: importo minimo per il metodo di pagamentomaximumAmount: importo massimo per il metodo di pagamento
Gerarchia priorità
daysDueDate
- dueDate inserita nella singola richiesta
- dueDate maggiore negli installments + daysDueDate nelle preferenze
- dueDate maggiore negli installments + 180gg
emailSettings.email
- creditor.email nella singola richiesta
- email preferenze
- nessuna email di reply-to
emailSettings.name:
- name nelle preferenze
- nome azienda recuperato dall'Anagrafica Ts Digital
emailSettings.bodyText:
- testo nelle preferenze
- testo standard fornito dalla piattaforma
Fatturazione
Per avvalersi le funzionalità di linking tra una fattura e una richiesta di pagamento, bisogna fare affidamento alla API dedicate disponibili qui
Creazione richiesta di pagamento - Swagger
[POST] https://b2bwrite-api-test.agyo.io/api/v1/payment/create ?
Questa API si comporta come la classica Creazione richiesta di pagamento, ma permette di visualizzare sulla fattura l'identificativo della richiesta di pagamento appena creata.
Inoltre permette, a fronte di una richiesta di pagamento successiva, di disabilitare la precedente mantenendo univoco il rapporto Fattura/Richiesta di pagamento.
Il payload utilizzato è il medesimo che potete trovare nella classica creazione richiesta di pagamento disponibile qui
Rimuovere richiesta di pagamento da una fattura - Swagger
[POST] https://b2bwrite-api-test.agyo.io/api/v2/invoices/{hubId}/removePaymentRequest ?
Questa API permette di rimuovere una richiesta di pagamento da una fattura e la disabilita automaticamente
Overview
Il path parameter companyId è l'identificativo TS Digital di un'azienda correttamente registrata.
Richiesta informazioni di Overview
Permette di recuperate informazioni di overview utili a fini statistici
[GET] /overview/{companyId} ?
Nella response l'API ritorna:
enabledPaymentRequests: numero di richieste abilitate per l'ownerId in oggetto
Esempi Payload
Creazione Richiesta di pagamento
{
"creditor": {
"identifiers": [
{
"type": "TS_DIGITAL_ID",
"country": "Italy",
"value": "5841dc57-59e9-4b82-b751-a03799a21cf6"
}
]
},
"debtor": {
"identifiers": [
{
"type": "VAT_NUMBER",
"country": "IT",
"value": "23434565432"
}
],
"name": "Debitore fannullone",
"email": "test.debitore@teamsystem.com"
},
"totalAmount": {
"currency": "EUR",
"amount": "3299.99"
},
"availablePaymentPlans": [
{
"type": "MULTIPLE_INSTALLMENTS",
"description": "Piano rateale",
"installments": [
{
"description": "Prima rata",
"dueDate": "2022-02-19T16:17:47.720Z",
"amount": {
"currency": "EUR",
"amount": "1000.00"
}
},
{
"description": "Seconda rata",
"dueDate": "2022-09-08T12:17:47.720Z",
"amount": {
"currency": "EUR",
"amount": "1000.00"
}
},
{
"description": "Terza rata",
"dueDate": "2022-10-08T12:17:47.720Z",
"amount": {
"currency": "EUR",
"amount": "1299.99"
}
}
]
},
{
"type": "SINGLE_INSTALLMENT",
"description": "Pagamento totale",
"installments": [
{
"description": "Rata unica",
"dueDate": "2022-08-08T12:17:47.720Z",
"amount": {
"currency": "EUR",
"amount": "3299.99"
}
}
]
}
],
"availablePaymentMethods": [
{
"name": "TS_PAY_BANK_TRANSFER"
},
{
"name": "TS_PAY_CREDIT_CARD"
}
],
"paymentReason": "Fattura n.4 del 20 Luglio 2021",
"ownerId": "5841dc57-59e9-4b82-b751-a03799a21cf6",
"transmitterId": "5841dc57-59e9-4b82-b751-a03799a21cf6",
"paymentDocuments": [
{
"type": "AGYO_INVOICE",
"description": "test",
"id": "8009cfb3-e7f1-43d1-a2a9-e1f263e5159c"
},
{
"type": "DOC_STORE_DOCUMENT",
"description": "file doc store test",
"id": "d015f194-2609-4496-a7ec-6aba33a4b51c"
}
]
}
Creazione di un pagamento
{
"installmentIds": [
"0.0",
"0.1"
],
"paymentMethodName": "TS_PAY_BANK_TRANSFER",
"paymentPlanId": "0",
"langLocale": "it-IT",
"scheduled": true
}
Creazione di una preferenza
{
"daysDueDate": 30,
"emailSettings": {
"bodyText": "Ciao benvenuto"
}
}