NAV Navbar
json

Introduction

Welcome to the ProAbono API Backoffice documentation.

API Backoffice is designed to help power users and third party integrators to deal with data export and advanced automation capabilities. Every single functionnality of the ProAbono backoffice can be recoded and rebranded with this API.

ProAbono is organized around a RESTful Architecture and an API-First design.

Note that this API is designed to be used from a server to a server, and NOT from a client to server in javascript. This is very important for security purpose.

Compatibility : upward compatibility on this API is not guaranteed unless written agreement limited to the required resources.

Core concepts

Getting Started

Getting started with the ProAbono API is easy:

  1. Sign up.
  2. Get your API Keys and Endpoints from "My Profile" / Integration.
  3. Try it out! Create your first customer with POSTMAN (a REST API Client)

Your First Requests

POST https://via.proabono.com/Distribution/Customers
Content-Type: application/json
Accept: application/json
Accept-Encoding: gzip, deflate, compress

{
    "IdBusiness": 2,
    "ReferenceSegment": "myservice-eur",
    "ReferrenceCustomer": "123456",
    "Email": "john@doe.com",
    "Name": "Mr Doe"
}
...

GET https://via.proabono.com/Distribution/Customers/42

The API works with JSON.

To ensure maximal compatibility, use the Content-Type and Accept headers in all requests :

All requests must be made over HTTPS.

Authentication

All API requests must be made over HTTPS.
Each request requires authentication.

Notice : The requests must be server to server. Do not joke with security.

API ENDPOINT

API Backoffice : https://via.proabono.com

API KEYS

Get your API Keys (Agent key and API key) from "My Profile" / Integration.

BASIC AUTHENTICATION

Authentication to the API occurs via HTTP Basic Auth.

To authenticate your request, you have to add a valid Authorization header.

3 STEPS TO BUILD THE AUTHORIZATION HEADER
POST https://via.proabono.com/Distribution/Customers
Content-Type: application/json
Accept: application/json
Accept-Encoding: gzip, deflate, compress
Authorization: Basic YzdmYTU3YjgtNDg2MS00ODU3LTlhMzgtMDYxMGRkNGZmZTE2OmY2Nzk3YWYxLTc5MWItNDBiMS04YmRhLWM0MTlmZTYxNjM2NQ==

{
    "IdBusiness": 2,
    "ReferenceSegment": "myservice-eur",
    "ReferrenceCustomer": "123456",
    "Email": "john@doe.com",
    "Name": "Mr Doe"
}
  1. Concatenate agent_key and api_key separated with ':' -> agent_key:api_key
    c7fa57b8-4861-4857:f6797af1-791b-40b1

  2. Base-64 encode the string
    YzdmYTU3YjgtNDg2MS00ODU3OmY2Nzk3YWYxLTc5MWItNDBiMQ==

  3. Use the encoded string in the header of your request
    Authorization: Basic YzdmYTU3YjgtNDg2MS00ODU3OmY2Nzk3YWYxLTc5MWItNDBiMQ==

Sign up in order to get your Agent Key and API Key.

Start with POSTMAN a REST API Client

Your first steps with the API using POSTMAN:
POSTMAN and ProAbono API (English) or POSTMAN and ProAbono API (French)

We have created a collection to help you get started playing with the API.
A collection is a set of predefined requests.
Once installed, you can see everything you need to test, play with the ProAbono API and start your integration.

Note: POSTMAN allows you to generate the code to use the ProAbono API in the language of your choice.
See more at Generate_code_snippets

Convention

HTTP Response Codes

ProAbono uses conventional HTTP response codes to indicate success or failure of an API request.

In general,

The table below describes the response codes that will be issued and gives potential reasons as to why they may have been sent back.

Successful Response Codes
200 OK: Successful request
201 Created: Successfully created the resource.
204 No Content: Successfully processed the request, but no content was sent back
Unsuccessful Response Codes
400 Bad Request: Invalid or missing request parameters
Inspect the request parameters and ensure that all required parameters are supplied.

Check the response body : ProAbono may supply a hint on how to fix the problem.
401 Unauthorized: Invalid or no credentials passed in the request
Inspect the authorisation header and ensure that a valid authentication has been provided.
403 Forbidden: The operation cannot be processed. The response contains a JSON error object with more information
404 Not Found: The requested Resource was not found
Check your URL syntax or parameters.
405 Method not allowed: The requested resource does not support the supplied HTTP method
Check the API documentation, you are doing something unhealthy.
406 Not Acceptable: Provided Content-Type or Accept header is not supported.
You should probably use application/json.
422 Unprocessable Entity: Request syntax is correct, but its content is not.
The response body will contains a list of errors that will tell you exactly where the problems are.
See Errors section.
500 Internal Server Error: An internal error occurred when processing the request.
Attempt the request again and if the HTTP 500 error re-occurs contact support@proabono.com
501 Method Not Implemented: The requested resource is not implemented yet.
Found any ? You probably are a very advanced user. Contact tech support to know more about the release date.

Errors

Example of an error
{
    "Target": "AmountRecurrence",
    "Code": "Error.Property.ConvertValue.Exception", 
    "Message": "Exception while converting given value for the property",
    "Exception": "Input string was not in a correct format"
}

If your request results in a 4xx or 5xx HTTP code, the response body does contain an error.

Property Description Always returned?
Target The related property No
Code The error code Yes
Message A message localized in your language Yes
Exception More about the error No
Example of a list of errors
[
    {
        "Target": "AmountRecurrence",
        "Code": "Error.Property.ValueRequired",
        "Message": "A value is required for the property"
    },
    {
        "Target": "Ammount",
        "Code": "Error.Property.UnexpectedProperty",
        "Message": "Unexpected property"
    }
]

List of Errors

Errors list is just a JSON array of errors.

Pagination

Pagination used for list of resources

{
    "Page": 2,          
    "SizePage": 3,     
    "Count": 3,        
    "TotalItems": 40,   
    "DateGenerated": "2023-12-11T12:45:05.1234714Z",
    "Items": [
        { 
            "item":"1"
        },
        { 
            "item":"2"
        },
        { 
            "item":"3"
        }       
    ],
    "Links": [
        {
            "rel": "prev",
            "href": "/Subscriptions?page=1&SizePage=3"
        },
        {
            "rel": "next",
            "href": "/Subscriptions?page=3&SizePage=3"
        }
    ]
}

Requests that contain multiple items will be paginated by default.

Pagination used for list of events

{
    "Page": 2,          
    "SizePage": 3,     
    "Count": 3,        
    "HasMore": true,   
    "DateGenerated": "2023-12-11T12:45:05.1234714Z",
    "Items": [
        { 
            "item":"1"
        },
        { 
            "item":"2"
        },
        { 
            "item":"3"
        }       
    ],
    "Links": [
        {
            "rel": "next",
            "href": "/Notification/CustomerEvents?page=3&SizePage=3"
        }
    ]
}

Filters

 GET https://api-2.proabono.com/Subscriptions?ReferenceSegment=Sandbox-eur&Page=3&SizePage=20

Every objects collection has multiple available filters that can be passed in the URL.

Available filters are detailled for each object collection below.

Objects

Example Request - Retrieve a Customer
GET https://via.proabono.com/Distribution/Customers/152867
Example Response
{
    "Id": 152867,
    "DateUpdate": "2023-04-22T17:54:03.92Z",
    "IdUserUpdate": 11,
    "IdSegment": 3,
    "IdUserCreation": 11,
    "DateCreation": "2023-04-22T17:54:03.92Z",
    "StateLife": "Ok",
    "IdBusiness": 2,
    "ReferenceCustomer": "ab83c0de-cc96-4cd5-996b-d6dac962901d",
    "Name": "John Doe",
    "Email": "john@doe.com",
    "Language": "fr",
    "Links": [
        {
            "rel": "self",
            "href": "/Distribution/Customers/152868"
        },
        {
            "rel": "related-address-billing",
            "href": "/Distribution/Customers/152867/AddressBilling"
        },
        {
            "rel": "related-address-shipping",
            "href": "/Distribution/Customers/152867/AddressShipping"
        }
    ]
}

ProAbono adds attributes to its objects. Here is the list of its attributes :

Parameter Mandatory ? Description Type
DateCreation Yes Creation Date of the Object on ProAbono Datetime
IdUserCreation Yes Id of user who created the Object Integer
DateUpdate Yes Date of last update of the Object Datetime
IdUserUpdate Yes Id of user who updated the Object recently Integer
IdBusiness No Id of Business in which the Object has been created Integer
IdSegment No Id of Segment in which the Object has been created Integer

Performance tips

SizePage

Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&SizePage=3
Example Response
{
    "Page": 1,
    "SizePage": 3,
    "Count": 3,
    "TotalItems": 53,
    "DateGenerated": "2023-04-27T13:54:26.72Z",
    "Items": [
        {
            "Id": 90285,
            "Status": "Active", 
            "IdCustomer": 80269,
            "TitleLocalized": "Premium Offer",
            ...
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Subscriptions/90285"
                }
            ]
        },
        ...
    ],
    "Links": [
        {
            "rel": "next",
            "href": "/Sub/Subscriptions/?IdBusiness=2&SizePage=3&page=2"
        }
    ]
}

Tip: ?sizePage=100

If you need to fetch a lot of data, the default pagination size (10 items) is not the most efficient.

The maximum page size is 1000 and if you will greatly reduce the duration of your exports by reducing the number of requests.

Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&SizePage=3&Links=false
Example Response
{
    "Page": 1,
    "SizePage": 3,
    "Count": 3,
    "TotalItems": 25,
    "DateGenerated": "2023-04-27T13:54:26.72Z",
    "Items": [
        {
            "Id": 90285,
            "Status": "Active", 
            "IdCustomer": 80269,
            "TitleLocalized": "Premium Offer",
            ...
        },
        ...
    ],
    "Links": [
        {
            "rel": "next",
            "href": "/Sub/Subscriptions/?IdBusiness=2&SizePage=3&page=2"
        }
    ]
}

Tip: ?links=false

By default, API Backoffice generates HATEOAS links for resources:

Those links, expecially when requesting a single resource, can add a little cost to the call (generation, data size, parsing). Explicitely asking to not generate the links reduces the request duration.

Count

Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&SizePage=3&Count=false
Example Response
{
    "Page": 1,
    "SizePage": 3,
    "Count": 3,
    "DateGenerated": "2023-04-27T13:54:26.72Z",
    "Items": [
        {
            "Id": 90285,
            "Status": "Active", 
            "IdCustomer": 80269,
            "TitleLocalized": "Premium Offer",
            ...
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Subscriptions/90285"
                }
            ]
        },
        ...
    ],
    "Links": [
        {
            "rel": "next",
            "href": "/Sub/Subscriptions/?IdBusiness=2&SizePage=3&page=2"
        }
    ]
}

Tip: ?count=false

Requesting a collection of resources in the API Backoffice takes the form /{area}/{resources}. (ex: /Distribution/Customers )

See the general response at paginated list.

The TotalItems property indicates the total number of items matching the query (with the provided filters).

Retrieving that value adds between 33% and 200% to the request duration, depending on the data table size and the complexity of the filters. Bypassing that count when it’s not necessary is a great performance improvement.

To deal with pagination without the TotalItems property, just check if Count == SizePage. If that’s the case, there is a high chance you have an follow-up page.

Get Many

Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&id=90285&id=91456&id=65487
Example Response
{
    "Page": 1,
    "SizePage": 3,
    "Count": 3,
    "TotalItems": 3,
    "DateGenerated": "2023-04-27T13:54:26.72Z",
    "Items": [
        {
            "Id": 90285,
            "Status": "Active", 
            "IdCustomer": 80269,
            "TitleLocalized": "Premium Offer",
            ...
        },
        {
            "Id": 91456,
            "Status": "Active", 
            "IdCustomer": 78654,
            "TitleLocalized": "Premium Offer",
            ...
        },
        {
            "Id": 65487,
            "Status": "Active",
            "IdCustomer": 34512,
            "TitleLocalized": "Premium Offer",
            ...
        }
    ]
}

Tip: ?id=4567id=4568&id=4569

GET /{area}/{resource}/{id} returns a single resource

But if you want multiple resources and you know the ids, then you can do:

GET /{area}/{resource}?id={id_1}&id={id_2}&…

If will return an array of resources and it will be much faster that fetching each resource individually.

Recently modified

Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&sizepage=3&DateUpdateMin=2023-01-01T00:00:00.00Z
Example Response
{
    "Page": 1,
    "SizePage": 3,
    "Count": 3,
    "TotalItems": 53,
    "DateGenerated": "2023-04-27T13:54:26.72Z",
    "Items": [
        {
            "Id": 90285,
            "DateUpdate": "2023-04-09T00:40:00.00Z",
            "DateCreation": "2023-01-09T10:58:00.00Z",
            "Status": "Active", 
            "IdCustomer": 80269,
            "TitleLocalized": "Premium Offer",
            ...
        },
        {
            "Id": 91456,
            "DateUpdate": "2023-04-09T00:42:00.00Z",
            "DateCreation": "2023-01-09T10:59:00.00Z",
            "Status": "Active",
            "IdCustomer": 78654,
            "TitleLocalized": "Premium Offer",
            ...
        },
        {
            "Id": 65487,
            "DateUpdate": "2023-04-09T00:52:00.00Z",
            "DateCreation": "2023-01-09T11:12:00.00Z",
            "Status": "Active",
            "IdCustomer": 34512,
            "TitleLocalized": "Premium Offer",
            ...
        }
    ],
    "Links": [
        {
            "rel": "next",
            "href": "/Sub/Subscriptions/?IdBusiness=2&SizePage=3&DateUpdateMin=2023-01-01T00:00:00.00Z&page=2"
        }
    ]
}

Tip: ?DateUpdateMin={date}

Each resource in ProAbono has a DateUpdate property, which is the last modified date.

If you do a synchronization of some resources in your own information system, you don’t need to fetch all the data to detect what changed. Just use the DateUpdateMin filter to get only the resources that changed after the given date.

Data Formats

Dates

Example Response
{
  "DateStart": "2023-08-09T12:38:55.00Z"
}

Dates are in universal time : UTC.

They are sent and received in ISO 8601 format : YYYY-MM-DDTHH:MM:SSZ

Time Unit

Unit Description
Day
Week
Month
Year

Languages

ProAbono supports all languages.
Proabono supports language codes in ISO 639-1 format.

However you are responsible for the translation.

Common language codes are :

Code Language
de German
en English
es Spanish
fr French
nl Dutch
pt Portuguese
it Italian

Countries

Proabono supports country codes in ISO_3166-1 alpha2 format.

Common Country Codes are :

Code Country
AU Australia
BR Brazil
CA Canada
DE Germany
ES Spain
FR France
GB United Kingdom of Great Britain
IT Italy
NL Netherlands
US United States of America

Region/Province/State

Proabono supports Region/Province/State codes in ISO_3166-2 format

Common Region/Province/State Codes are :

Country Code Region/Province/State code list Url Country
AU ISO_3166-2:AU Australia
BR ISO_3166-2:BR Brazil
CA ISO_3166-2:CA Canada
DE ISO_3166-2:DE Germany
ES ISO_3166-2:ES Spain
FR ISO_3166-2:FR France
GB ISO_3166-2:GB United Kingdom of Great Britain
IT ISO_3166-2:IT Italy
NL ISO_3166-2:NL Netherlands
US ISO_3166-2:US United States of America

Status Customer

Status is a functional state of a Customer which can be seen as a simplified or external state.

This state is the one you will most likely care about. It indicates the state of the customer from an external point of view and is most likely the information an external software will require.

Status Description
Enabled The customer can subscribe, access its customer portal, update its subscription, download its invoices, update its payment info …
Suspended The customer has been suspended. Its customer portal and hosted pages cannot be accessed anymore. Its invoices cannot be opened (but can be exported)

Read more about Status and StateCustomer in our product documentation.

State Customer

StateCustomer is a technical state of a Customer which reflects the functional state and adds information about the customer lifecycle.

This state is useful only if you want more accurate information about a customer. It allows you to see where the customer is in its state machine.

StateCustomer Description
Enabled The customer can subscribe, access its customer portal, update its subscription, download its invoices, update its payment info …
Suspended The customer has been suspended. Its customer portal and hosted pages cannot be accessed anymore. Its invoices cannot be opened (but can be exported)

Read more about Status and StateCustomer in our product documentation.

Status Subscription

Status is a functional state of a Subscription which can be seen as a simplified or external state.

This state is the one you will most likely care about. It indicates the state of the subscription from an external point of view and is most likely the information an external software will require.

Status Description
Draft The subscription is not started yet.
Active The subscription is currently active, meaning the customer can access the service.
Suspended The subscription is suspended.
Ended The subscription is not active anymore.
Deleted The subscription is being deleted.

Read more about Status and StateSubscription in our product documentation.

State Subscription

StateSubscription is a technical state of a Subscription which reflects the functional state and adds information about the subscription lifecycle.

This state is useful only if you want to dig deep into how ProAbono works. It indicates where the Subscription is in its state machine, and what are the possible actions and automated outcomes.

If you want to expose your subscriptions state or use those into an external software, use the functional state instead.

StateSubscription Description
DraftCustomer Draft create by a customer that did not complete the subscription process
DraftAgent Draft create by a agent.
DraftDelayedStart Subscription with a scheduled start date.
DraftDelayedUpgrade Subscription replacing an active subscription on its next term.
ActiveRunning Subscription running
ActiveDelayedUpgrade Subscription replaced by a new one on its next term.
ActiveDelayedTermination Subscription terminating on its next term.
ActiveDelayedSuspension Subscription suspended on its next term.
SuspendedAgent Suspended by an agent.
SuspendedNoPaymentInfo Suspended automatically because payment information are missing.
SuspendedPaymentDue Suspended automatically because to many unpaid invoices.
EndedComplete Time-limited subscription ended.
EndedUpgrade Subscription terminated after a plan change.
EndedTerminated Subscription has been terminated.
Deleted Deleted

Read more about Status and StateSubscription in our product documentation.

Type Feature

Type Feature Description
OnOff For features like Module, Content Access, ...
Limitation Type for Feature which must be counted BUT its quantity will NOT be reset at each subscription renewal.
Consumption Type for Feature which must be counted AND its quantity will be reset at each subscription renewal.

Properties Feature

Property Description
UpdatableBeforeSubscription Authorize the Customer to modify the quantity of the Feature before subscription.
UpdatableAfterSubscription Authorize the Customer to modify the quantity of the Feature after subscription.
FreeInTrial During the Trial Period, any update of the feature are free. Extra charges will start only after the trial period.
UpdateAtFullPrice When increasing the quantity, the extra fee is computed for the full period.
When decreasing the quantity, the fees already added for the period are not credited.
When this property is not set, the extra fees are prorated.
(read this article before enabling)

Type Payment

Type Payment Description
Free Subscription is free, no payment ever requested
ExternalCheck Payment with check
ExternalCash Payment with cash
ExternalBank Payment by wire transfer
ExternalOther Other payment type
Batch Payment via XML files submitted to the bank
Card Payment with payment card, automated renewal
DirectDebit Payment with bank account info, automated renewal

Type Credit

Type Credit Description
Refund -
Chargeback -

State Life

State Life Description
Ok -
ToModerate -
DisabledUser -
DisabledSystem -
DisabledModeration -
Deleted -

Status Invoice

Status is a functional state of a Invoice which is mainly the accounting state.

Those are the states that you will need when pushing data into an accounting solution or make an export for your finance team.

Status Description
Draft Only case where the invoice is not issued (no number)
Due The invoice has not been paid yet.
Paid The invoice has been paid.
Problem The invoice has an issue. Either it’s not paid, or the funds have been charged back.
Void The invoice has been issued by mistake and has been cancelled.
Uncollectible The invoice was due but the payment cannot be collected or has been charged back and will not be paid.

Read more about Status and StateInvoice in our product documentation.

State Invoice

StateInvoice is a technical state of Invoice a which reflects the functional state and adds information about the invoice lifecycle.

Those states are used internally by ProAbono and are used to determine where is the invoice in the automation process, what are the possible actions and outcome. You most likely won’t need to dig into those.

StateInvoice Description
Draft Basic draft
DraftCharging Invoice is currently being charged and will be issued if the charge succeeds
DueAuto Invoice is due and automatically processed
DueOffline Invoice is due and an offline payment by the customer is expected
DueToProcess Invoice is due and will be processed later (ex: Batch)
DuePending Invoice is due and the payment is pending
Paid Invoice is paid
PaidRefunded Invoice is paid but has been refunded
ProblemAuto Invoice encountered an issue with an automated payment
ProblemOverdue Invoice is overdue
ProblemDisputed Invoice payment has been disputed
Void Invoice has been cancelled before any payment attempt
Uncollectible Invoice payment cannot be collected

Read more about Status and StateInvoice in our product documentation.

Status Payment

Status is a functional state of a Payment.

Status Description
Draft This state is not used for now, it’s added for future evolutions.
Pending The payment is pending. Generally used by direct debit.
Completed The payment is complete, the funds are either on your payment provider account or directly on your bank account.
Cancelled The payment has been cancelled
Failed The payment attempt ended with a failure
Reversed This is a reversal of a previous payment, because of a refund or a chargeback

Read more about Status and StatePayment in our product documentation.

State Payment

StatePayment is a technical state of a Payment.

StatePayment Description
Draft This state is not used for now, it’s added for future evolutions
Pending The payment is in progress and will change status once the process has been completed.
Completed The payment is completed
CompletedRefunded The payment is completed but has been a refunded. There is another related ‘Reversal’ payment.
CompletedChargedback The payment is completed but has been a charged back. There is another related ‘Reversal’ payment.
CancelledAgent The payment has been cancelled by a someone from your organization
Failed The payment attempt ended with a failure
ReversedRefund The funds have been reversed due to a refund by someone from your organization
ReversedChargeback The funds have been reversed due to a chargeback by the customer or the customer’s bank

Read more about Status and StatePayment in our product documentation.

Type GatewayPermission

Type GatewayPermission Description
CardDummy A fake card gateway (For tests only)
CardPaybox The gateway is Paybox (or compatible)
CardStripe The gateway is Stripe (or compatible)
DirectDebitDummySepa A fake directdebit gateway (For tests only)
DirectDebitGoCardless The gateway is GoCardless (or compatible)

Type Trigger

Type Trigger Description
CustomerAdded Customer - added
CustomerBillingAddressUpdated Customer - contact info updated
CustomerShippingAddressUpdated Customer - shipping address updated
CustomerSettingsPaymentUpdated Customer - payment settings updated
CustomerPaymentMethodUpdated Customer - payment method updated
CustomerDateNextBillingUpdated Customer - next billing date updated
CustomerIsGreyListed Customer - added to grey list
CustomerBillingSucceeded Customer - billing succeeded
CustomerBillingFailed Customer - billing failed
CustomerChargingSucceeded Customer - charging succeeded
CustomerChargingPending Customer - charging pending
CustomerChargingFailed Customer - charging failed
CustomerChargingAutoFailedNoPermission Customer - auto-charging failed: no valid gateway permission
CustomerChargingAutoFailedNoRetry Customer - an auto-charging failed and cannot be retried
CustomerSuspended Customer - suspended
CustomerEnabled Customer - enabled
CustomerDeleted Customer - deleted
SubscriptionStarted Subscription - started
SubscriptionRenewed Subscription - renewed
SubscriptionRestarted Subscription - restarted
SubscriptionSuspendedCustomer Subscription - suspended by the customer
SubscriptionSuspendedAgent Subscription - suspended by an agent
SubscriptionSuspendedPaymentInfoMissing Subscription - interrupted (no payment info)
SubscriptionSuspendedPaymentDue Subscription - interrupted (payment due)
SubscriptionTerminatedAtRenewal Subscription - terminated at end of the billing period
SubscriptionTerminated Subscription - terminated
SubscriptionHistory Subscription - over
SubscriptionDeleted Subscription - deleted
SubscriptionUpdated Subscription - updated
SubscriptionFeaturesUpdated Subscription - features updated
SubscriptionTerminatedForUpgrade Subscription - terminated for upgrade
SubscriptionUpgraded Subscription - upgraded
SubscriptionDateTermUpdated Subscription - renewal date updated
SubscriptionDelayedStartCancelled Subscription - delayed start cancelled
InvoiceDebitIssuedPaymentAuto Invoice - issued, charging programmed
InvoiceDebitIssuedPaymentOffline Invoice - payment due
InvoiceDebitPaid Invoice - paid
InvoiceDebitRefunded Invoice - refunded
InvoiceDebitCancelled Invoice - cancelled
InvoiceDebitPaymentAutoFailed Invoice - payment auto failed
InvoiceDebitPaymentAutoRequestedAuth Invoice - auto payment rejected: payment authentication requested
InvoiceDebitOverdue Invoice - overdue
InvoiceDebitDisputed Invoice - disputed
InvoiceCreditIssued Credit note - issued
InvoiceCreditPaid Credit note - paid
InvoiceCreditCancelled Credit note - cancelled
InvoiceCreditPaymentFailed InvoiceCreditPaymentFailed
InvoiceCreditOverdue Credit note - overdue
GatewayPermissionSoonExpired Payment permission - Expires soon
GatewayPermissionExpired Payment permission - Expires
GatewayPermissionInsufficientFunds Payment permission - insufficient funds
GatewayPermissionPaymentIssues Payment information - payment issues
GatewayPermissionDefective Payment permission - Defective
GatewayPermissionUnlocked Payment information - Re-enabling

Type Move

Type Move Description
AutoBillingReport Balance from the previous billing period. Used when a billing operation ends with a positive balance. This amount is reported on the next invoice
AutoBillingNoRepayment Amount carried over to the next billing period. Used when a billing operation has a positive balance. The amount is stacked in the customer moves to balance the account
AutoRefundPartial Partial refund of a paid invoice
AutoSubscriptionRecurrence Flat fee of a subscription
AutoSubscriptionRecurrenceProrata Prorated flat fee of a subscription flat fee. Used when upgrading
AutoSubscriptionUpfront Upfront fee of a subscription
AutoSubscriptionTrial Trial fee of a subscription, because trying doesn't always means for free
AutoSubscriptionTrialProrata Prorated trial fee of a subscription. Used when upgrading in a paying trial
AutoSubscriptionTermination Termination fee of a subscription
AutoFeatureNotProratable Computed feature fee when subscribing or renewing a subscription. Never refunded in case of an upgrade
AutoFeatureProratable Computed feature fee when subscribing or renewing a subscription. Partially refunded in case of an upgrade if the period is not over
AutoFeatureProrata Prorated adjustment on a feature. Used when the quantity changes on a proratable feature

State Discount

State Discount Description
Draft Discounts in draft are not usable
Enabled Discounts enabled can be applied to offers and subscriptions

Type Off

Only use with Discounts.

Type Off Description
Flat The discount is a fixed, flat amount
PerTenThousand The discount is a percentage

Type TargetFee

Only use with Discounts.

Type TargetFee Description
UpfrontFee Discount will only be applied the upfront/setup fee of subscriptions
FlatFee Discount will only be applied the flat fee of subscriptions
FeatureFee Discount will only be applied the fee of one specific feature of subscriptions
AllRecurring FlatFee + FeatureFee
All UpfrontFee + FlatFee + FeatureFee

Address Resource

Example
{
    "Company": "John Doe LLC",
    "FirstName": "John",
    "LastName": "Doe",
    "AddressLine1": "123 avenue des Champs Elysées",
    "AddressLine2": "1st Floor",
    "ZipCode": "75008",
    "City": "Paris",
    "Country": "FR",
    "Region": "FR-75",
    "Phone": "+33102030405",
    "TaxInformation":"FR1234567890"
}
Property Description Type
Id Id of the Address Object Integer
Company Name of the Company String
FirstName - String
LastName - String
AddressLine1 Line 1 of the Address String
AddressLine2 Line 2 of the Address String
ZipCode ZipCode of the Address String
City Name of the City String
Country Code of Country of the Address CountryCode
Region Region stands for Subdivision, Department, Region, Province, State of the Country RegionCode
TaxInformation Tax Information (VAT id, Num TVA Intra, GST...) String
Phone Phone Number String

See Object Convention

Metadata

Example Request "Create a Customer"
POST https://via.proabono.com/Distribution/Customers
{
    "ReferenceCustomer": "123456",
    "Name": "John Doe",
    "Email": "john@doe.com",
    "Language": "en",
    "ReferenceOffer": "premium-pro-plus",
    "Metadata":
        {
            "Gender":"Male",
            "Incomes": 150000,
            "Kids": 3
        }
}

A set of key/value pairs that you can add to an object (Customer, Subscription, ...).
It can be useful for storing additional information about the object in a structured format.
You can unset individual keys if you POST an empty value for that key.
You can clear all keys if you POST an empty value for metadata.

Customer Billing

Property Description Type
Id Id of the CustomerBilling Object Integer
IsCustomerBillable True if the customer is billable Boolean
IsPaymentCappingReached True if the customer has too many unpaid invoices Boolean
IsPermissionInExpiration True if the permission is expired or if it will expired before the next billing Boolean
IsGreyListed True if the customer is in the greylist Boolean
StateCustomer Technical State of the Customer StateCustomer
TypePayment Payment method TypePayment
CountUnpaidInvoice Number of due or disputed invoices Integer
AmountUnpaidInvoice Total amount of due or disputed invoices Integer
DaysUnpaidInvoice Number of days since the oldest due or disputed invoice Integer
IsAutoBilling True if the next billing date is automatically scheduled every month Boolean
DurationBilling Billing period duration (1 by default). Segment-wide settings. Integer
UnitBilling Billing period unit (month by default). Segment-wide settings. TimeUnit
CanRenewIfNoPaymentInfo True if the customer's subscription is renewed even if the customer has no payment method. Segment-wide settings. Boolean

See Object Convention

API Backoffice - Customers

Customers refer to your users in your Site/Service/Application.

Each customer shares a reference called ReferenceCustomer in order to be easily found in your database and ProAbono.

A customer can subscribe to offers.
Each subscription is a copy of the offer subscribed at the exact moment of the subscription.
(See below Offers and Subscriptions)

Customer Resource

Property Description Type
Id Id of the Customer Object Integer
ReferenceCustomer Shared Key of the Customer between ProAbono and your application String
Name Display Name of the Customer String
Email Email of the Customer String
StateCustomer Technical State of the Customer StateCustomer
Status Functional State of the Customer Status
Language Language of your customer String Language
Links Useful links concerning the Customer See below.

See Object Convention

Collection of links

Rel Description
related-settings-payment All about the Payment Settings of the Customer. See CustomerPaymentSettings.
related-address-billing Billing Address of the Customer. See Address.
related-address-shipping Shipping Address of the Customer. See Address.
collection-subscription All Subscriptions of the Customer. See Subscriptions.
collection-invoicedebit All Invoices of the Customer. See Invoices.
collection-invoicecredit All Credit Notes of the Customer. See Invoices.
collection-balance Balance of the Customer (if IsNotBilled is true, only what is NOT billed yet can be seen). See CustomerBalance.
hosted-collection-offers Unique encrypted link to the page which contains all visible offers available for the concerned Customer.
hosted-collection-subscription Unique encrypted link to the page which contains all subscriptions of the concerned Customer.
hosted-register Unique encrypted link for the concerned Customer to directly type/update his/her payment information.

Create a Customer

Definition
POST https://via.proabono.com/Distribution/Customers
Example Request
POST https://via.proabono.com/Distribution/Customers
{
    "IdBusiness": 2,
    "ReferenceCustomer": "ab83c0de-cc96-4cd5-996b-d6dac962901d",
    "Name": "John Doe",
    "Email": "john@doe.com",
    "Language": "en",
    "Metadata":
        {
            "Gender":"Male",
            "Incomes": 150000,
            "Kids": 3
        }
}
Example Response
{
    "Id": 64854,
    "DateUpdate": "2023-04-22T17:54:03.92Z",
    "IdUserUpdate": 69719,
    "IdSegment": 3,
    "IdUserCreation": 69719,
    "DateCreation": "2023-04-22T17:54:03.92Z",
    "StateCustomer": "Enabled",
    "Status": "Enabled",
    "IdBusiness": 2,
    "ReferenceCustomer": "ab83c0de-cc96-4cd5-996b-d6dac962901d",
    "Name": "John Doe",
    "Email": "john@doe.com",
    "Language": "en",
    "Metadata":
        {
            "Gender":"Male",
            "Incomes": 150000,
            "Kids": 3
        },
    "Links": [
        {
            "rel": "self",
            "href": "/Distribution/Customers/152868"
        },
        {
            "rel": "related-address-billing",
            "href": "/Distribution/Customers/152867/AddressBilling"
        },
        {
            "rel": "related-address-shipping",
            "href": "/Distribution/Customers/152867/AddressShipping"
        },
        {
            "rel": "related-address-billing",
            "href": "/Distribution/Customers/64854/AddressBilling"
        },
        {
            "rel": "related-address-shipping",
            "href": "/Distribution/Customers/64854/AddressShipping"
        },
        {
            "rel": "collection-subscription",
            "href": "/Sub/Subscriptions?IdCustomerOrBuyer=64854"
        },
        {
            "rel": "collection-invoicedebit",
            "href": "/Finance/InvoiceDebits?idCustomer=64854"
        },
        {
            "rel": "collection-invoicecredit",
            "href": "/Finance/InvoiceCredits?idCustomer=64854"
        },
        {
            "rel": "collection-balance",
            "href": "/Finance/CustomerMoves?idCustomer=64854&IsNotBilled=true"
        },
        {
            "rel": "hosted-collection-offers",
            "href": "https://sandbox-eur.proabono.com/pricing/{Unique-Encrypted-Url-1}"
        },
        {
            "rel": "hosted-register",
            "href": "https://sandbox-eur.proabono.com/register/{Unique-Encrypted-Url-2}"
        },
        {
            "rel": "hosted-collection-subscription",
            "href": "https://sandbox-eur.proabono.com/subscriptions/{Unique-Encrypted-Url-3}"
        }       
    ]
}

Create/Declare a customer in ProAbono.

Request Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
ReferenceSegment (Yes, only if you need/have more than 1 segment) Reference of the segment in which the customer will be created. String
Email Yes Email of your customer Integer
Name No Display Name of your customer String
ReferenceCustomer No Reference of your customer shared with your application and ProAbono.
(Use your own id/reference user)
String
Language No Language of your customer (By Default, ProAbono will use the language of the segment.) String Language
ReferenceAffiliation No Reference of the affiliate who brought the customer String
Metadata No A set of key/value pairs that you can add to a customer. Useful for storing additional information about the customer in a structured format. Metadata
Returns

Retrieve a Customer

Definition
GET https://via.proabono.com/Distribution/Customers/{Id}
Example Request
GET https://via.proabono.com/Distribution/Customers/152867
Example Response
{
    "Id": 64854,
    "DateUpdate": "2023-08-19T09:09:33.93Z",
    "IdUserUpdate": 128,
    "IdSegment": 3,
    "IdUserCreation": 128,
    "DateCreation": "2023-08-19T09:09:33.93Z",
    "StateCustomer": "Enabled",
    "Status": "Enabled",
    "IdBusiness": 2,
    "ReferenceCustomer": "c2f548b5-91bd-4394-83b0-d76c42620774",
    "Name": "John Doe",
    "Email": "john@doe.com",
    "Language": "en",
    "Links": [
        {
            "rel": "related-settings-payment",
            "href": "/Distribution/Customers/64854/SettingsPayment"
        },
        {
            "rel": "related-address-billing",
            "href": "/Distribution/Customers/64854/AddressBilling"
        },
        {
            "rel": "related-address-shipping",
            "href": "/Distribution/Customers/64854/AddressShipping"
        },
        {
            "rel": "collection-subscription",
            "href": "/Sub/Subscriptions?IdCustomerOrBuyer=64854"
        },
        {
            "rel": "collection-invoicedebit",
            "href": "/Finance/InvoiceDebits?idCustomer=64854"
        },
        {
            "rel": "collection-invoicecredit",
            "href": "/Finance/InvoiceCredits?idCustomer=64854"
        },
        {
            "rel": "collection-balance",
            "href": "/Finance/CustomerMoves?idCustomer=64854&IsNotBilled=true"
        },
        {
            "rel": "hosted-collection-offers",
            "href": "https://sandbox-eur.proabono.com/pricing/{Unique-Encrypted-Url-1}"
        },
        {
            "rel": "hosted-register",
            "href": "https://sandbox-eur.proabono.com/register/{Unique-Encrypted-Url-2}"
        },
        {
            "rel": "hosted-collection-subscription",
            "href": "https://sandbox-eur.proabono.com/subscriptions/{Unique-Encrypted-Url-3}"
        }
    ]
}

Retrieve a Customer by id

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the Customer to be retrieved. Integer
Returns

Update a Customer

Definition
PATCH https://via.proabono.com/Distribution/Customers/
Example Request
PATCH https://via.proabono.com/Distribution/Customers/
{
    "Id": 152867,
    "IdBusiness": 2,    
    "ReferenceCustomer": "ab83c0de-cc96-4cd5-996b-d6dac962901d",
    "Name": "John Doe Senior",
    "Email": "john-sr@doe.com",
    "Language": "fr"
}

Update your Customer's email, name, language and its Reference

Request Parameters
Parameter Required? Description Type
Id Yes Id of the Customer Integer
IdBusiness Yes Id of your Business Integer
Email Yes Email of your customer Integer
Name Yes Display Name of your customer String
ReferenceCustomer Yes Reference of your customer shared with your application and ProAbono String
Language Yes Language of your customer String Language
Returns

Delete a Customer

Definition
DELETE https://via.proabono.com/Distribution/Customers/{Id}
Example Request
DELETE https://via.proabono.com/Distribution/Customers/123456
Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the customer to be deleted. Integer
Returns

Retrieve Customer Payment Settings

Definition
GET https://via.proabono.com/Distribution/Customers/{Id}/SettingsPayment
Example Request
GET https://via.proabono.com/Distribution/Customers/152867/SettingsPayment
Example Response
{
    "Id": 152867,
    "DateUpdate": "2023-09-13T21:31:17.42Z",
    "IdUserUpdate": 1260,
    "IdCustomer": 152867,
    "DateNextBilling": "2023-04-16T17:04:14.26Z",
    "TypePayment": "Card",
    "IdGatewayPermission": 135,
    "Links": [
        {
            "rel": "related-customer",
            "href": "/Distribution/Customers/152867"
        },
        {
            "rel": "related-gatewaypermission",
            "href": "/Gateway/GatewayPermissions/135"
        }
    ]   
}
Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the customer. Integer
Returns

Update Customer Payment Settings

Definition
PATCH https://via.proabono.com/Distribution/Customers/{Id}/SettingsPayment
Example Request
PATCH https://via.proabono.com/Distribution/Customers/152867/SettingsPayment
{
    "IdBusiness": 2,
    "DateNextBilling": "2023-04-16T17:04:14.26Z",
    "TypePayment": "Card",
    "IdGatewayPermission": 135
}

Update the Date of the Next Billing of the Customer, the GatewayPermission of the Customer (Footprint of a bankcard, mandate...).

Request Parameters
Parameter Required? Description Type
Id Yes Id of the Customer Integer
IdBusiness Yes Id of your Business Integer
DateNextBilling Yes Date of the Next Billing of the Customer Datetime
TypePayment Yes Type of payment TypePayment
IdGatewayPermission Yes Id of the GatewayPermission Integer
Returns

Retrieve Customer Billing Address

Definition
GET https://via.proabono.com/Distribution/Customers/{Id}/AddressBilling
Example Request
GET https://via.proabono.com/Distribution/Customers/123456/AddressBilling
Example Response
{
    "Id": 123456,   
    "DateUpdate": "2023-04-24T14:25:14.62Z",
    "IdUserUpdate": 69719,
    "IdCustomer": 123456,
    "Company": "Sandbox SAS",
    "FirstName": "John",
    "LastName": "Doe",
    "AddressLine1": "100 avenue des Champs Elysees",
    "AddressLine2": "1st Floor",
    "ZipCode": "75008",
    "City": "Paris",
    "Country": "FR",
    "Region": "FR-75",
    "TaxInformation": "FR 1234567890",
    "Phone" : "+33 1 234 456 789",
    "Links": [
        {
            "rel": "related-customer",
            "href": "/Distribution/Customers/123456"
        }
    ]   
}

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the customer. Integer
Returns

Update Customer Billing Address

Definition
PATCH https://via.proabono.com/Distribution/Customers/{Id}/AddressBilling
Example Request
PATCH https://via.proabono.com/Distribution/Customers/123456/AddressBilling
{
    "IdBusiness": 2,
    "Company": "Sandbox SAS",
    "FirstName": "John",
    "LastName": "Doe",
    "AddressLine1": "100 avenue des Champs Elysees",
    "AddressLine2": "1st Floor",
    "ZipCode": "75008",
    "City": "Paris",
    "Country": "FR",
    "Region": "FR-75",
    "TaxInformation": "FR1234567890",
    "Phone" : "+33 1 234 456 789"
}

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the customer. Integer
IdBusiness Yes Id of your Business Integer
Returns

Retrieve Customer Shipping Address

Definition
GET https://via.proabono.com/Distribution/Customers/{Id}/AddressShipping
Example Request
GET https://via.proabono.com/Distribution/Customers/123456/AddressShipping
Example Response
{
    "Id": 123456,
    "DateUpdate": "2023-04-24T14:25:14.62Z",
    "IdUserUpdate": 69719,
    "IdCustomer": 123456,
    "Company": "Sandbox SAS",
    "FirstName": "John",
    "LastName": "Doe",
    "AddressLine1": "100 avenue des Champs Elysees",
    "AddressLine2": "1st Floor",
    "ZipCode": "75008",
    "City": "Paris",
    "Country": "FR",
    "Region": "FR-75",
    "TaxInformation": "FR 1234567890",
    "Phone" : "+33 1 234 456 789",
    "Links": [
        {
            "rel": "related-customer",
            "href": "/Distribution/Customers/123456"
        }
    ]   
}
Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the customer. Integer

 

Returns

 

Update Customer Shipping Address

Definition
PATCH https://via.proabono.com/Distribution/Customers/{Id}/AddressShipping
Example Request
PATCH https://via.proabono.com/Distribution/Customers/123456/AddressShipping
{
    "IdBusiness": 2,
    "Company": "Sandbox SAS",
    "FirstName": "John",
    "LastName": "Doe",
    "AddressLine1": "100 avenue des Champs Elysees",
    "AddressLine2": "1st Floor",
    "ZipCode": "75008",
    "City": "Paris",
    "Country": "FR",
    "Region": "FR-75",
    "TaxInformation": "FR 1234567890",
    "Phone" : "+33 1 234 456 789"
}

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the customer. Integer
IdBusiness Yes Id of your Business Integer
Returns

 

List Customers

Definition
GET https://via.proabono.com/Distribution/Customers/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Distribution/Customers/?IdBusiness=2
Example Response
{
  "Page": 1,
  "SizePage": 25,
  "Count": 3,
  "TotalItems": 3,
  "DateGenerated": "2023-04-24T09:34:18.46Z",
  "Items": [
    {
      "Id": 205708,
      "DateUpdate": "2023-04-16T16:04:14.26Z",
      "IdUserUpdate": 69719,
      "IdSegment": 44,
      "IdUserCreation": 69719,
      "DateCreation": "2023-04-16T16:04:14.26Z",
      "StateCustomer": "Enabled",
      "Status": "Enabled",
      "IdBusiness": 2,
      "ReferenceCustomer": "d0845e9e-1e3b-4b4a-a832-d624bbbce1e2",
      "Name": "Mickael Douglas",
      "Email": "mickael@douglas.com",
      "Language": "en",
      "Links": [
        {
          "rel": "self",
          "href": "/Distribution/Customers/205708"
        },
        {
          "rel": "related-address-billing",
          "href": "/Distribution/Customers/205708/AddressBilling"
        },
        {
          "rel": "related-address-shipping",
          "href": "/Distribution/Customers/205708/AddressShipping"
        }
      ]
    },
    {
      "Id": 205707,
      "DateUpdate": "2023-04-16T16:04:14.29Z",
      "IdUserUpdate": 69719,
      "IdSegment": 44,
      "IdUserCreation": 69719,
      "DateCreation": "2023-04-16T16:04:14.29Z",
      "StateCustomer": "Enabled",
      "Status": "Enabled",
      "IdBusiness": 2,
      "ReferenceCustomer": "8082ab5b-345d-44a1-b0a4-ce0683a7eca3",
      "Name": "Mickael Jackson",
      "Email": "mickael.jackson@heaven.com",
      "Language": "en",
      "Links": [
        {
          "rel": "self",
          "href": "/Distribution/Customers/205707"
        },
        {
          "rel": "related-address-billing",
          "href": "/Distribution/Customers/205707/AddressBilling"
        },
        {
          "rel": "related-address-shipping",
          "href": "/Distribution/Customers/205707/AddressShipping"
        }
      ]
    },
    {
      "Id": 205704,
      "DateUpdate": "2023-04-16T11:26:28.61Z",
      "IdUserUpdate": 69719,
      "IdSegment": 44,
      "IdUserCreation": 69719,
      "DateCreation": "2023-04-16T11:26:28.61Z",
      "StateCustomer": "Enabled",
      "Status": "Enabled",
      "IdBusiness": 2,
      "ReferenceCustomer": "ceb139b8-9fbb-4739-b498-593767f0ef5f",
      "Name": "Diana Ross",
      "Email": "diana@ross.com",
      "Language": "en",
      "Links": [
        {
          "rel": "self",
          "href": "/Distribution/Customers/205704"
        },
        {
          "rel": "related-address-billing",
          "href": "/Distribution/Customers/205704/AddressBilling"
        },
        {
          "rel": "related-address-shipping",
          "href": "/Distribution/Customers/205704/AddressShipping"
        }
      ]
    }
  ]
}

Get the collection of Customers (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes List all Customers related to the same Business Integer
IdSegment No List all Customers related to the same Segment Integer
DateCreationMin No List all Customers created after the date Datetime
DateCreationMax No List all Customers created before the date Datetime
DateUpdateMin No List all Customers update after the date Datetime
DateUpdateMax No List all Customers updated before the date Datetime
ReferenceCustomer No List of 1 Customer if the reference is related to a known Customer String
Email No List all Customers related to the same Email Address String
Name No List all Customers related to the same Name or a portion of the Name String
Language No List all Customers declared with a specific language Language
StatusCustomer No List all Customers with a specific Status Status
ReferenceAffiliation No List all Customers with the same reference of the affiliate who brought the customer String
IsBillable No If True, List all Customers with valid payment info Boolean

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Distribution/Customers/?IdBusiness=2&StateLife=Ok&Language=EN&DateCreationMin=2023-07-27T13:54:00

Returns

API Backoffice - Offers

Offer describes what AND how you want to sell.

Offer Resource

Property Description Type
Id Id of the Offer Object Integer
Name Name of the Offer String
ReferenceOffer Shared Key of the Offer between ProAbono and your application (Often used for accounting purposes) String
IsVisible Visibility of the offer in the hosted pages Boolean
Order Define the position of the Offer among all Offers when displayed in the hosted Offer Pages Integer
AmountUpFront Amount of the Upfront fee, Setup fee or Initial fee of your offer in cents Integer
AmountTrial Amount of the Trial period in cents Integer
DurationTrial Number of Trial Time Unit Integer
UnitTrial Time Unit of Trial TimeUnit
AmountRecurrence Amount of each recurrence in cents Integer
DurationRecurrence Number of Recurrence Time Unit Integer
UnitRecurrence Time Unit of Recurrence TimeUnit
CountRecurrences Number of Recurrences Integer
CountMinRecurrences Minimum recurrences the customer will be committed to pay Integer
AmountTermination Amount of the Termination Fee in cents Integer
StateLife State of the Offer StateLifeCycle
Links Useful links concerning the Offer See below.

Note : Amounts are set without currency because currency is set at the Segment Level.

See Object Convention

Collection of links

Rel Description
collection-offerfeature Collection of OfferFeatures related to the Subscription. See OfferFeature.
collection-subscription Collection of Subscriptions related to the Offer. See Subscription.
related-simulation See Compute an Offer Pricing.
hosted-subscribe Link to the page where the Customer should be redirect to subscribe.

Create an Offer

Definition
POST https://via.proabono.com/Sub/Offers
Example Request
POST https://via.proabono.com/Sub/Offers
{
    "IdBusiness": 2,
    "ReferenceSegment": "sandbox-eur",
    "Name": "Premium",
    "DurationTrial":30,
    "UnitTrial":"Day",
    "AmountRecurrence": 99,
    "DurationRecurrence": 1,
    "UnitRecurrence": "Month"
}
Example Response
{
    "Id": 2831,
    "IdSegment": 44,
    "DateUpdate": "2023-04-27T13:18:22.29Z",
    "IdUserUpdate": 69719,
    "DateCreation": "2023-04-27T13:18:22.29Z",
    "IdUserCreation": 69719,
    "StateLife": "Ok",
    "ReferenceOffer": "665ab615-f323-4edf-a047-990b8f7873ae",
    "Name": "Premium",
    "Order": 1,
    "IsVisible": true,
    "DurationTrial": 30,
    "UnitTrial": "Day",
    "AmountRecurrence": 99,
    "DurationRecurrence": 1,
    "UnitRecurrence": "Month",
    "Features": [],
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/Offers/2831"
        },
        {
            "rel": "collection-offerfeature",
            "href": "/Sub/OfferFeatures?idOffer=2831"
        },
        {
            "rel": "collection-subscription",
            "href": "/Sub/Subscriptions?idOffer=2831"
        },
        {
            "rel": "related-simulation",
            "href": "/Sub/Offers/2831/Simulation"
        },
        {
            "rel": "hosted-subscribe",
            "href": "https://sandbox-eur.proabono.com/subscribe?refo=665ab615-f323-4edf-a047-990b8f7873ae"
        }
    ]
}

Create/Declare an offer in ProAbono.

Request Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
ReferenceSegment (Yes, only if you need/have more than 1 segment) Reference of the segment in which the offer will be created. String
Name No Name of the Offer String
ReferenceOffer No Shared Key of the Offer between ProAbono and your application (Often used for accounting purposes) String
IsVisible No Visibility of the offer in the hosted pages Boolean
Order No Define the position of the Offer among all Offers when displayed in the hosted Offer Pages. By Default, it sets at the last position. Integer
AmountUpFront No Amount of the Upfront fee, Setup fee or Initial fee of your offer in cents Integer
AmountTrial No Amount of the Trial period in cents Integer
DurationTrial No Number of Trial Time Unit Integer
UnitTrial No Time Unit of Trial TimeUnit
AmountRecurrence Yes Amount of each recurrence in cents Integer
DurationRecurrence Yes Number of Recurrence Time Unit Integer
UnitRecurrence Yes Time Unit of Recurrence TimeUnit
CountRecurrences No Number of Recurrences Integer
CountMinRecurrences No Minimum recurrences the customer will be committed to pay Integer
AmountTermination No Amount of the Termination Fee in cents Integer
Returns

Retrieve an Offer

Definition
GET https://via.proabono.com/Sub/Offers/{Id}
Example Request
GET https://via.proabono.com/Sub/Offers/152867
Example Response
{
    "Id": 2831,
    "IdSegment": 44,
    "DateUpdate": "2023-04-27T13:18:22.29Z",
    "IdUserUpdate": 69719,
    "DateCreation": "2023-04-27T13:18:22.29Z",
    "IdUserCreation": 69719,
    "StateLife": "Ok",
    "ReferenceOffer": "665ab615-f323-4edf-a047-990b8f7873ae",
    "Name": "Premium",
    "Order": 1, 
    "IsVisible": true,
    "DurationTrial": 30,
    "UnitTrial": "Day",
    "AmountRecurrence": 99,
    "DurationRecurrence": 1,
    "UnitRecurrence": "Month",
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/Offers/2831"
        },
        {
            "rel": "collection-offerfeature",
            "href": "/Sub/OfferFeatures?idOffer=2831"
        },
        {
            "rel": "collection-subscription",
            "href": "/Sub/Subscriptions?idOffer=2831"
        },
        {
            "rel": "related-simulation",
            "href": "/Sub/Offers/2831/Simulation"
        },
        {
            "rel": "hosted-subscribe",
            "href": "https://sandbox-eur.proabono.com/subscribe?refo=665ab615-f323-4edf-a047-990b8f7873ae"
        }
    ]
}

Retrieve an Offer by id

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the offer to be retrieved. Integer
Returns

Update an Offer

Definition
PATCH https://via.proabono.com/Sub/Offers/{Id}
Example Request
PATCH https://via.proabono.com/Sub/Offers/2831
{
    "IdBusiness": 2,
    "Name": "Premium Pro",
    "ReferenceOffer": "premium-pro",
    "Order": 1, 
    "StateLife": "Ok",
    "DurationTrial": 3,
    "UnitTrial": "Month",
    "AmountRecurrence": 199,
    "DurationRecurrence": 1,
    "UnitRecurrence": "Month"
}

Update your Offer as you want

Request Parameters
Parameter Required? Description Type
Id Yes Id of the Offer Integer
IdBusiness Yes Id of your Business Integer
Name Yes Name of the Offer String
ReferenceOffer Yes Shared Key of the Offer between ProAbono and your application (Often used for accounting purposes) String
IsVisible Yes Visibility of the offer in the hosted pages Boolean
Order Yes Define the position of the Offer among all Offers when displayed in the hosted Offer Pages Integer
StateLife Yes State of the Offer StateLifeCycle
AmountUpFront No Amount of the Upfront fee, Setup fee or Initial fee of your offer in cents Integer
AmountTrial No Amount of the Trial period in cents Integer
DurationTrial No Number of Trial Time Unit Integer
UnitTrial No Time Unit of Trial TimeUnit
AmountRecurrence Yes Amount of each recurrence in cents Integer
DurationRecurrence Yes Number of Recurrence Time Unit Integer
UnitRecurrence Yes Time Unit of Recurrence TimeUnit
CountRecurrences No Number of Recurrences Integer
CountMinRecurrences No Minimum recurrences the customer will be committed to pay Integer
AmountTermination No Amount of the Termination Fee in cents Integer
Returns

Compute an Offer Pricing

Definition
GET https://via.proabono.com/Sub/Offers/{IdOffer}/Simulation?IdCustomer={Id}
Example Request
GET https://via.proabono.com/Sub/Offers/152867/Simulation?IdCustomer=123456
Example Response 1 - Offer with free trial
{
    "DateGeneration": "2023-09-11T09:32:04.66Z",
    "AmountSubtotal": 0,
    "AmountTotalDue": 0,
    "Details": [
        {
            "TypeMove": "SubscriptionInitialFee",
            "Label": "Trial amount",
            "AmountSubtotal": 0,
            "AmountTotalDue": 0
        }
    ],
    "NextTerm": {
        "AmountSubtotal": 9900,
        "AmountTotalDue": 11632,
        "Details": [
            {
                "TypeMove": "SubscriptionRecurringAmount",
                "Label": "Subscription amount",
                "AmountSubtotal": 9900,
                "AmountTotalDue": 11632,
                "Tax1": {
                    "IdTaxProfile": 252,
                    "Label": "Tax1",
                    "Rate": 1000,
                    "Amount": 990,
                    "Type": "Standard"
                },
                "Tax2": {
                    "IdTaxProfile": 253,
                    "Label": "Tax2",
                    "Rate": 750,
                    "Amount": 742,
                    "Type": "Standard"
                }
            }
        ]
    }
}
Example Response 2 - Offer with paying features
{
    "DateGeneration": "2023-09-11T14:00:35.52Z",
    "AmountSubtotal": 17200,
    "AmountTotalDue": 20209,
    "Details": [
        {
            "TypeMove": "SubscriptionInitialFee",
            "Label": "Up-front amount",
            "AmountSubtotal": 4900,
            "AmountTotalDue": 5757,
            "Tax1": {
                "IdTaxProfile": 252,
                "Label": "Tax1",
                "Rate": 1000,
                "Amount": 490,
                "Type": "Standard"
            },
            "Tax2": {
                "IdTaxProfile": 253,
                "Label": "Tax2",
                "Rate": 750,
                "Amount": 367,
                "Type": "Standard"
            }
        },
        {
            "TypeMove": "SubscriptionRecurringAmount",
            "Label": "Subscription amount",
            "AmountSubtotal": 9900,
            "AmountTotalDue": 11632,
            "Tax1": {
                "IdTaxProfile": 252,
                "Label": "Tax1",
                "Rate": 1000,
                "Amount": 990,
                "Type": "Standard"
            },
            "Tax2": {
                "IdTaxProfile": 253,
                "Label": "Tax2",
                "Rate": 750,
                "Amount": 742,
                "Type": "Standard"
            }
        },
        {
            "IdFeature": 239,
            "TypeMove": "SubscriptionFeatures",
            "Label": "Module A",
            "AmountSubtotal": 1000,
            "AmountTotalDue": 1175,
            "Tax1": {
                "IdTaxProfile": 252,
                "Label": "Tax1",
                "Rate": 1000,
                "Amount": 100,
                "Type": "Standard"
            },
            "Tax2": {
                "IdTaxProfile": 253,
                "Label": "Tax2",
                "Rate": 750,
                "Amount": 75,
                "Type": "Standard"
            }
        },
        {
            "IdFeature": 238,
            "TypeMove": "SubscriptionFeatures",
            "Label": "Users",
            "AmountSubtotal": 1400,
            "AmountTotalDue": 1645,
            "QuantityReal": 3,
            "QuantityBilled": 3,
            "Tax1": {
                "IdTaxProfile": 252,
                "Label": "Tax1",
                "Rate": 1000,
                "Amount": 140,
                "Type": "Standard"
            },
            "Tax2": {
                "IdTaxProfile": 253,
                "Label": "Tax2",
                "Rate": 750,
                "Amount": 105,
                "Type": "Standard"
            }
        }
    ]
}

Compute a pricing estimation based on an Offer and a Customer. ProAbono also applies Taxes if necessary.

Request Parameters
Parameter Required? Description Type
IdOffer Yes The identifier of the Offer to evaluated. Integer
Id Yes The identifier of the Customer for whom the Offer is evaluated. Integer

Example 1 - Offer with free trial

Example 2 - Offer with paying features

Returns

Structure of the Global Answer of the Computation

Parameter Required? Description Type
DateGeneration Yes Date of the Computation Datetime
AmountSubtotal Yes Total Amount in cents without Taxes for the first Term Integer
AmountTotalDue Yes Total Amount in cents with Taxes for the first Term Integer
Details Yes Collection of Details of the Offer for the first Term EvaluatedOfferDetails - See below
NextTerm No Evaluation of the next Term See below

Structure of NextTerm

Parameter Required? Description Type
AmountSubtotal Yes Total Amount in cents without Taxes for Next Term Integer
AmountTotalDue Yes Total Amount in cents with Taxes for the Next Term Integer
Details Yes Collection of Details of the Offer for the Next Term EvaluatedOfferDetails - See below

Structure of a EvaluatedOfferDetails

Parameter Required? Description Type
IdFeature Yes if the OfferDetail is related to a Feature Id of the Feature linked to the OfferDetail. Integer
TypeMove Yes Type of CustomerMove TypeMove
Label Yes Label of the Detail of the Offer String
AmountSubtotal Yes Amount in cents without Taxes Integer
AmountTotalDue Yes Amount in cents with Taxes Integer
QuantityReal Yes if the OfferDetail is related to a Feature with type Limitation or Consumption Quantity of the Feature available for the Customer Integer
QuantityBilled Yes if the OfferDetail is related to a Feature with type Limitation or Consumption Quantity of the Feature billed to the Customer Integer
Tax1 No Details of Tax1 applied for the concerned Customer EvaluatedOfferDetailsTax - See below
Tax2 No Details of Tax2 applied for the concerned Customer EvaluatedOfferDetailsTax - See below

Structure of a EvaluatedOfferDetailsTax

Parameter Required? Description Type
IdTaxProfile Yes Id of the Tax Profile Integer
Label Yes Label of the Tax String
Rate Yes Rate of the Tax applied in ‱. Ex 15,6% -> 1560. Integer
Amount Yes Tax Amount in cents calculated base on the rate of Tax Integer
Type Yes Type of Tax TypeTax

Delete an Offer

Definition
DELETE https://via.proabono.com/Sub/Offers/{Id}
Example Request
DELETE https://via.proabono.com/Sub/Offers/2831
Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the offer to be deleted. Integer
Returns

List Offers

Definition
GET https://via.proabono.com/Sub/Offers/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/Offers/?IdBusiness=2&SizePage=3
Example Response
{
    "Page": 1,
    "SizePage": 3,
    "Count": 3,
    "TotalItems": 15,
    "DateGenerated": "2023-04-27T13:54:26.72Z",
    "Items": [
        {
            "Id": 2836,
            "IdSegment": 44,
            "DateUpdate": "2023-04-27T13:54:01.27Z",
            "IdUserUpdate": 69719,
            "DateCreation": "2023-04-27T13:54:01.27Z",
            "IdUserCreation": 69719,
            "StateLife": "Ok",
            "ReferenceOffer": "premium",
            "Name": "Premium",
            "Order": 2,         
            "IsVisible": true,
            "AmountUpFront": 1990,
            "AmountRecurrence": 890,
            "DurationRecurrence": 3,
            "UnitRecurrence": "Month",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Offers/2836"
                }
            ]
        },
        {
            "Id": 2835,
            "IdSegment": 44,
            "DateUpdate": "2023-04-27T13:53:06.17Z",
            "IdUserUpdate": 69719,
            "DateCreation": "2023-04-27T13:53:06.17Z",
            "IdUserCreation": 69719,
            "StateLife": "Ok",
            "ReferenceOffer": "premium-pro",
            "Name": "Premium Pro",
            "Order": 3,         
            "IsVisible": true,
            "AmountUpFront": 990,
            "AmountRecurrence": 199,
            "DurationRecurrence": 1,
            "UnitRecurrence": "Month",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Offers/2835"
                }
            ]
        },
        {
            "Id": 2834,
            "IdSegment": 44,
            "DateUpdate": "2023-04-27T13:51:58.67Z",
            "IdUserUpdate": 69719,
            "DateCreation": "2023-04-27T13:51:58.67Z",
            "IdUserCreation": 69719,
            "StateLife": "Ok",
            "ReferenceOffer": "starter",
            "Name": "Starter",
            "Order": 1,
            "IsVisible": true,
            "DurationTrial": 10,
            "UnitTrial": "Day",
            "AmountRecurrence": 49,
            "DurationRecurrence": 1,
            "UnitRecurrence": "Month",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Offers/2834"
                }
            ]
        }
    ],
    "Links": [
        {
            "rel": "next",
            "href": "/Sub/Offers/?SizePage=3&page=2"
        }
    ]
}

Get the collection of Offers (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes List all Offers related to the same Business Integer
IdSegment No List all Offers related to the same Segment Integer
DateCreationMin No List all Offers created after the date Datetime
DateCreationMax No List all Offers created before the date Datetime
DateUpdateMin No List all Offers update after the date Datetime
DateUpdateMax No List all Offers updated before the date Datetime
ReferenceOffer No List of 1 Offer if the reference is related to a known Offer String
IsVisible No List all Offers with a specific IsVisible Boolean
Name No List all Offers related to the same Name or a portion of the Name String
StateLife List all Offers with a specific StateLife StateLifeCycle

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Sub/Offers/?IdBusiness=2&StateLife=Ok&IsVisible=true&DateUpdateMin=2023-04-27T13:54:00

Returns

Add a Feature to an Offer

Definition
POST https://via.proabono.com/Sub/OfferFeatures
Example Request
POST https://via.proabono.com/Sub/OfferFeatures
{
    "IdBusiness": 2,
    "IdOffer": 2958,
    "IdFeature": 1031
}
Example Response
{
    "Id": 3550,
    "IdSegment": 44,
    "DateUpdate": "2023-05-13T23:52:33.20Z",
    "IdUserUpdate": 69719,
    "IdOffer": 2958,
    "IdFeature": 1031,
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/OfferFeatures/3550"
        },
        {
            "rel": "related-offer",
            "href": "/Sub/Offers/2958"
        }
    ]
}

Declare/Group/Link a feature to an offer in ProAbono.  

Request Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdOffer Yes Id of the Offer Integer
IdFeature Yes Id of the Feature Integer
QuantityIncluded Quantity of the Feature Integer

API Backoffice - Features

Features stand for Features of your Offers and Site/Service/Application.

Feature Resource

Property Description Type
Id Id of the Feature Object Integer
ReferenceFeature Shared Key of the Feature between ProAbono and your application String
Name Name of the Feature String
TypeFeature Type of the Feature (OnOff, Limitation, Consumption) TypeFeature
IsVisible Visibility of the Feature in offers and hosted pages Boolean
Order Define the position of the Feature among all Features when displayed in offers and hosted pages Integer
StateLife State of the Feature StateLifeCycle
Links Useful links concerning the Feature -

See Object Convention

Create a Feature

Definition
POST https://via.proabono.com/Organization/Features
Example Request
POST https://via.proabono.com/Organization/Features
{
    "IdBusiness": 2,
    "ReferenceFeature": "users",
    "Name": "Active Users",
    "TypeFeature": "Limitation",
    "IsVisible": true,
    "Order": 5
}
Example Response
{
    "Id": 152867,
    "DateUpdate": "2023-04-22T18:56:03.92Z",
    "IdUserUpdate": 69719,
    "IdUserCreation": 69719,
    "DateCreation": "2023-04-22T18:56:03.92Z",
    "StateLife": "Ok",
    "IdBusiness": 2,
    "ReferenceFeature": "users",
    "Name": "Active Users",
    "Order": 5, 
    "IsVisible": true,
    "TypeFeature": "Limitation",    
    "Links": [
        {
            "rel": "self",
            "href": "/Organization/Features/152868"
        }
    ]
}

Create/Declare a feature in ProAbono.

Request Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
Name Yes Name of the Feature String
ReferenceFeature No Reference of the Feature shared with your application and ProAbono. String
TypeFeature Yes Type of the Feature (OnOff, Limitation, Consumption) TypeFeature
Order No Define the position of the Feature among all Features when displayed in offers and hosted pages. By Default, it sets at the last position. Integer
IsVisible No Visibility of the Feature in offers and hosted pages. By Default, it sets to true. Boolean
Returns

Retrieve a Feature

Definition
GET https://via.proabono.com/Organization/Features/{Id}
Example Request
GET https://via.proabono.com/Organization/Features/152867
Example Response
{
    "Id": 152867,
    "DateUpdate": "2023-04-22T17:54:03.92Z",
    "IdUserUpdate": 69719,
    "IdUserCreation": 69719,
    "DateCreation": "2023-04-22T17:54:03.92Z",
    "StateLife": "Ok",
    "IdBusiness": 2,
    "ReferenceFeature": "users",
    "Name": "Active Users",
    "Order": 5, 
    "IsVisible": true,
    "TypeFeature": "Limitation",    
    "Links": [
        {
            "rel": "self",
            "href": "/Organization/Features/152867"
        }
    ]
}

Get a Feature by id

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the feature to be retrieved. Integer
Returns

Update a Feature

Definition
PATCH https://via.proabono.com/Organization/Features/{Id}
Example Request
PATCH https://via.proabono.com/Organization/Features/152867
{
    "IdBusiness": 2,
    "ReferenceFeature": "authorized-users",
    "Name": "Authorized Users",
    "IsVisible": true,
    "Order": 2, 
    "TypeFeature": "Limitation",
    "StateLife": "Ok"   
}

Update your Feature's name, visibility , order, life state and its Reference.

Request Parameters
Parameter Required? Description Type
Id Yes Id of the Feature Integer
IdBusiness Yes Id of your Business Integer
Name Yes Name of the Feature String
ReferenceFeature No Reference of the Feature shared with your application and ProAbono. String
TypeFeature Yes Type of the Feature (OnOff, Limitation, Consumption) TypeFeature
Order Yes Define the position of the Feature among all Features when displayed in offers and hosted pages. Integer
IsVisible Yes Visibility of the Feature in offers and hosted pages. Boolean
StateLife Yes State of the Feature StateLifeCycle
Returns

Delete a Feature

Definition
DELETE https://via.proabono.com/Organization/Features/{Id}
Example Request
DELETE https://via.proabono.com/Organization/Features/152867
Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the feature to be deleted. Integer
Returns

List Features

Definition
GET https://via.proabono.com/Organization/Features/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Organization/Features/?IdBusiness=2
Example Response
{
  "Page": 1,
  "SizePage": 25,
  "Count": 3,
  "TotalItems": 3,
  "DateGenerated": "2023-04-24T09:34:18.46Z",
  "Items": [
    {
      "Id": 205708,
      "DateUpdate": "2023-04-16T16:04:14.26Z",
      "IdUserUpdate": 69719,
      "IdUserCreation": 69719,
      "DateCreation": "2023-04-16T16:04:14.26Z",
      "StateLife": "Ok",
      "IdBusiness": 2,
      "ReferenceFeature": "authorized-users"
      "Name": "Authorized Users",
      "Order": 2,
      "IsVisible": true,
      "TypeFeature": "Limitation",      
      "Links": [
        {
          "rel": "self",
          "href": "/Organization/Features/205708"
        }
      ]
    },
    {
      "Id": 205707,
      "DateUpdate": "2023-04-16T16:04:14.29Z",
      "IdUserUpdate": 69719,
      "IdUserCreation": 69719,
      "DateCreation": "2023-04-16T16:04:14.29Z",
      "StateLife": "Ok",
      "IdBusiness": 2,
      "ReferenceFeature": "8082ab5b-345d-44a1-b0a4-ce0683a7eca3",
      "Name": "Export Statistics",
      "Order": 1,      
      "IsVisible": false,
      "TypeFeature": "OnOff",        
      "Links": [
        {
          "rel": "self",
          "href": "/Organization/Features/205707"
        }
      ]
    },
    {
      "Id": 205704,
      "DateUpdate": "2023-04-16T11:26:28.61Z",
      "IdUserUpdate": 69719,
      "IdUserCreation": 69719,
      "DateCreation": "2023-04-16T11:26:28.61Z",
      "StateLife": "Ok",
      "IdBusiness": 2,
      "ReferenceFeature": "ceb139b8-9fbb-4739-b498-593767f0ef5f",
      "Name": "Notifications",
      "Order": 3,
      "IsVisible": true,
      "TypeFeature": "Consumption",
      "Links": [
        {
          "rel": "self",
          "href": "/Organization/Features/205704"
        }
      ]
    }
  ]
}

Get the collection of Features (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes List all Features related to the same Business Integer
IdSegment No List all Features related to the same Segment Integer
DateCreationMin No List all Features created after the date Datetime
DateCreationMax No List all Features created before the date Datetime
DateUpdateMin No List all Features update after the date Datetime
DateUpdateMax No List all Features updated before the date Datetime
ReferenceFeature No List of 1 Feature if the reference is related to a known Feature String
IsVisible No List all Features with a specific IsVisible Boolean
Name No List all Features related to the same Name or a portion of the Name String
StateLife No List all Features with a specific StateLife StateLifeCycle

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Organization/Features/?IdBusiness=2&StateLife=Ok&IsVisible=false&DateCreationMin=2023-04-27T13:54:00

Returns

API Backoffice - PricingTables

PricingTables stand for Pricing Tables, Grid Offers of your Site/Service/Application.

PricingTable Resource

Property Description Type
Id Id of the PricingTable Object Integer
ReferencePricingTable Shared Key of the PricingTable between ProAbono and your application String
Name Name of the PricingTable String
Order Define the position of the PricingTable among all PricingTables when displayed in the hosted pages Integer
IsVisible Visibility of the PricingTable in hosted pages Boolean
IsDefault Indicate if the PricingTable is displayed by default in hosted pages Boolean
Links Useful links concerning the PricingTable -

See Object Convention

Collection of links

Rel Description
collection-pricingtable-offer Collection of PricingTableOffers related to the PricingTable. See PricingTable Offers.
collection-offer Collection of Offers related to the PricingTable. (Only visible if there is any SubscriptionPeriods.) See Offers.
hosted-subscribe Direct link to display the PricingTable with its offers

Create a PricingTable

Definition
POST https://via.proabono.com/Sub/PricingTables
Example Request
POST https://via.proabono.com/Sub/PricingTables
{
    "IdBusiness": 2,
    "ReferenceSegment": "sandbox-eur",
    "ReferencePricingTable": "yearly",
    "Name": "Yearly Offers",
    "IsVisible": true,
    "Order": 2
}
Example Response
{
    "Id": 740,
    "DateUpdate": "2023-05-05T09:26:54.10Z",
    "IdUserUpdate": 42,
    "IdSegment": 3,
    "DateCreation": "2023-05-05T09:26:54.10Z",
    "IdUserCreation": 42,
    "ReferencePricingTable": "yearly",
    "Name": "Yearly Offers",
    "Order": 2,
    "IsVisible": true,
    "IsDefault": false,
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/PricingTables/740"
        },
        {
            "rel": "collection-pricingtable-offer",
            "href": "/Sub/PricingTableOffers?idPricingTable=740"
        },
        {
            "rel": "collection-offer",
            "href": "/Sub/Offers?idPricingTable=740"
        },
        {
            "rel": "hosted-subscribe",
            "href": "https://sandbox-eur.proabono.com/pricing?refpt=yearly"
        }
    ]
}

Create/Declare a PricingTable in ProAbono.

Request Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
ReferenceSegment Yes Reference of the segment where the table will be created String
Name No Name of the PricingTable String
ReferencePricingTable No Reference of the PricingTable shared with your application and ProAbono. String
Order No Define the position of the PricingTable among all PricingTables when displayed in hosted pages. By Default, it sets at the last position. Integer
IsVisible No Visibility of the PricingTable in offers and hosted pages. By Default, it sets to false. Boolean
Returns

Retrieve a PricingTable

Definition
GET https://via.proabono.com/Sub/PricingTables/{Id}
Example Request
GET https://via.proabono.com/Sub/PricingTables/740
Example Response
{
    "Id": 740,
    "DateUpdate": "2023-05-05T09:26:54.10Z",
    "IdUserUpdate": 42,
    "IdSegment": 3,
    "DateCreation": "2023-05-05T09:26:54.10Z",
    "IdUserCreation": 42,
    "ReferencePricingTable": "yearly",
    "Name": "Yearly Offers",
    "Order": 2,
    "IsVisible": true,
    "IsDefault": false,
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/PricingTables/740"
        },
        {
            "rel": "collection-pricingtable-offer",
            "href": "/Sub/PricingTableOffers?idPricingTable=740"
        },
        {
            "rel": "collection-offer",
            "href": "/Sub/Offers?idPricingTable=740"
        },
        {
            "rel": "hosted-subscribe",
            "href": "https://sandbox-eur.proabono.com/pricing?refpt=yearly"
        }
    ]
}

Get a PricingTable by id

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the PricingTable to be retrieved. Integer
IdBusiness Yes Id of your Business Integer
Returns

Update a PricingTable

Definition
PATCH https://via.proabono.com/Sub/PricingTables/{Id}
Example Request
PATCH https://via.proabono.com/Sub/PricingTables/740
{
    "IdBusiness": 2,
    "ReferencePricingTable": "yearly-special",
    "Name": "Special Yearly Offers",
    "IsVisible": true,
    "Order": 3
}

Update your PricingTable's name, visibility , order and its Reference.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the PricingTable to be retrieved. Integer
IdBusiness Yes Id of your Business Integer
Name No Name of the PricingTable String
ReferencePricingTable No Reference of the PricingTable shared with your application and ProAbono. String
Order No Define the position of the PricingTable among all PricingTables when displayed in hosted pages. By Default, it sets at the last position. Integer
IsVisible No Visibility of the PricingTable in offers and hosted pages. By Default, it sets to false. Boolean
Returns

Delete a PricingTable

Definition
DELETE https://via.proabono.com/Sub/PricingTables/{Id}
Example Request
DELETE https://via.proabono.com/Sub/PricingTables/740
Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the PricingTable to be deleted. Integer
IdBusiness Yes Id of your Business Integer
Returns

List PricingTables

Definition
GET https://via.proabono.com/Sub/PricingTables/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/PricingTables/?IdBusiness=2
Example Response
{
  "Page": 1,
  "SizePage": 10,
  "Count": 3,
  "TotalItems": 3,
  "DateGenerated": "2023-05-05T09:36:59.43Z",
  "Items": [
    {
      "Id": 740,
      "DateUpdate": "2023-05-05T09:26:54.10Z",
      "IdUserUpdate": 52,
      "IdSegment": 3,
      "DateCreation": "2023-05-05T09:26:54.10Z",
      "IdUserCreation": 52,
      "ReferencePricingTable": "yearly",
      "Name": "Yearly Offers",
      "Order": 2,
      "IsVisible": true,
      "IsDefault": false,
      "Links": [
        {
          "rel": "self",
          "href": "/Sub/PricingTables/740"
        }
      ]
    },
    {
      "Id": 427,
      "DateUpdate": "2023-09-23T12:30:24.21Z",
      "IdUserUpdate": 11,
      "IdSegment": 3,
      "DateCreation": "2023-09-23T12:28:59.30Z",
      "IdUserCreation": 11,
      "ReferencePricingTable": "special-table",
      "Name": "Special Offers",
      "Order": 2,
      "IsVisible": false,
      "IsDefault": false,
      "Links": [
        {
          "rel": "self",
          "href": "/Sub/PricingTables/427"
        }
      ]
    },
    {
      "Id": 2,
      "DateUpdate": "2023-09-20T09:03:16.88Z",
      "IdUserUpdate": 1,
      "IdSegment": 3,
      "DateCreation": "2023-09-20T09:03:16.88Z",
      "IdUserCreation": 1,
      "ReferencePricingTable": "default",
      "Name": "Monthly Offers",
      "Order": 1,
      "IsVisible": true,
      "IsDefault": true,
      "Links": [
        {
          "rel": "self",
          "href": "/Sub/PricingTables/2"
        }
      ]
    }
  ]
}

Get the collection of PricingTables (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No List all PricingTables related to the same Segment Integer
DateCreationMin No List all PricingTables created after the date Datetime
DateCreationMax No List all PricingTables created before the date Datetime
DateUpdateMin No List all PricingTables update after the date Datetime
DateUpdateMax No List all PricingTables updated before the date Datetime
ReferencePricingTable No List of 1 PricingTable if the reference is related to a known PricingTable String
IsVisible No List all PricingTables with a specific IsVisible Boolean
Name No List all PricingTables related to the same Name or a portion of the Name String
ReferenceSegment No List all PricingTables related to the same Segment String

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Sub/PricingTables/?IdBusiness=2&IsVisible=false&DateCreationMin=2023-04-27T13:54:00

Returns

API Backoffice - PricingTable Offers

A PricingTableOffer describes the relationship of Offer and a PricingTable.

PricingTableOffer Resource

Property Description Type
Id Id of the PricingTableOffer Object Integer
IdPricingTable Id of the PricingTable related to the PricingTableOffer Integer
IdOffer Id of the Offer related to the PricingTableOffer Integer
Order Define the position of the Offer among all Offers in the PricingTable when displayed in the hosted pages Integer
Links Useful links concerning the PricingTableOffer --

See Object Convention

Create a PricingTableOffer

Definition
POST https://via.proabono.com/Sub/PricingTableOffers
Example Request
POST https://via.proabono.com/Sub/PricingTableOffers
{
    "IdBusiness": 2,
    "ReferenceSegment": "sandbox-eur",
    "IdPricingTable": 2,
    "IdOffer": 2793,
    "Order": 3
}
Example Response
{
    "Id": 2364,
    "DateUpdate": "2023-04-24T09:28:57.04Z",
    "IdUserUpdate": 11,
    "IdPricingTable": 2,
    "IdOffer": 2793,
    "Order": 3,
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/PricingTableOffers/2"
        }
    ]
}

Create/Declare a PricingTableOffer in ProAbono.

Request Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
ReferenceSegment Yes Reference of the segment where the table will be created String
IdPricingTable Yes Id of the PricingTable related to the PricingTableOffer Integer
IdOffer Yes Id of the Offer related to the PricingTableOffer Integer
Order No Define the position of the Offer among all Offers in the PricingTable when displayed in hosted pages. By Default, it sets at the last position. Integer
Returns

Retrieve a PricingTableOffer

Definition
GET https://via.proabono.com/Sub/PricingTableOffers/{Id}
Example Request
GET https://via.proabono.com/Sub/PricingTableOffers/2364
Example Response
{
    "Id": 2364,
    "DateUpdate": "2023-04-24T09:28:57.04Z",
    "IdUserUpdate": 11,
    "IdPricingTable": 2,
    "IdOffer": 2793,
    "Order": 3,
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/PricingTableOffers/2"
        }
    ]
}

Retrieve a PricingTableOffer by id.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the PricingTableOffer to be retrieved. Integer
Returns

Update a PricingTable Offer

Definition
PATCH https://via.proabono.com/Sub/PricingTableOffers/{Id}
Example Request
PATCH https://via.proabono.com/Sub/PricingTableOffers/2364
{
    "IdBusiness": 2,
    "IdPricingTable": 2,
    "IdOffer": 2793,
    "Order": 2
}

Update your PricingTableOffer as you want.

Request Parameters
Parameter Required? Description Type
Id Yes Id of the PricingTableOffer Integer
IdBusiness Yes Id of your Business Integer
IdPricingTable No Id of the PricingTable related to the PricingTableOffer Integer
IdOffer No Id of the Offer related to the PricingTableOffer Integer
Order No Define the position of the Offer among all Offers in the PricingTable when displayed in hosted pages. By Default, it sets at the last position. Integer
Returns

Delete a PricingTableOffer

Definition
DELETE https://via.proabono.com/Sub/PricingTableOffers/{Id}
Example Request
DELETE https://via.proabono.com/Sub/PricingTableOffers/2364
Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the PricingTableOffer to be deleted. Integer
IdBusiness Yes Id of your Business Integer
Returns

List PricingTableOffers

Definition
GET https://via.proabono.com/Sub/PricingTableOffers/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/PricingTableOffers/?IdBusiness=2&IdPricingTable=2
Example Response
{
  "Page": 1,
  "SizePage": 10,
  "Count": 3,
  "TotalItems": 3,
  "DateGenerated": "2023-05-05T11:48:18.12Z",
  "Items": [
    {
      "Id": 2371,
      "DateUpdate": "2023-04-26T09:37:28.33Z",
      "IdUserUpdate": 11,
      "IdPricingTable": 2,
      "IdOffer": 2800,
      "Order": 3,
      "Links": [
        {
          "rel": "self",
          "href": "/Sub/PricingTableOffers/2371"
        }
      ]
    },
    {
      "Id": 2364,
      "DateUpdate": "2023-04-24T09:28:57.04Z",
      "IdUserUpdate": 11,
      "IdPricingTable": 2,
      "IdOffer": 2793,
      "Order": 2,
      "Links": [
        {
          "rel": "self",
          "href": "/Sub/PricingTableOffers/2364"
        }
      ]
    },
    {
      "Id": 2348,
      "DateUpdate": "2023-04-19T10:35:33.35Z",
      "IdUserUpdate": 11,
      "IdPricingTable": 2,
      "IdOffer": 2777,
      "Order": 1,
      "Links": [
        {
          "rel": "self",
          "href": "/Sub/PricingTableOffers/2348"
        }
      ]
    }
  ]
}

Get the collection of PricingTableOffers (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No Id of one of your Segment Integer
DateUpdateMin No List all PricingTableOffers updated/created after the date Datetime
DateUpdateMax No List all PricingTableOffers updated/created before the date Datetime
IdPricingTable No List all PricingTableOffers for a given PricingTable Integer
IdOffer No List all PricingTableOffers for a given Offer Integer

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Sub/PricingTableOffers/?IdBusiness=2&IdOffer=238&DateUpdateMin=2023-08-27T13:54:00

Returns

API Backoffice - Subscriptions

Subscriptions describe the conditions of the relationship between your Customer and your Site/Service/Application.

Subscription Resource

Property Description Type
Id Id of the Subscription Object Integer
IdOffer Id of the Offer subscribed by the Customer IdCustomer Integer
IdCustomer Id of the Customer who owns this Subscription Integer
IdCustomerBuyer Id of the Customer who buys this Subscription Integer
Name Name of the Subscription String
TitleLocalized Title of the Subscription in the language of the Customer String
DescriptionLocalized Description of the Subscription in the language of the Customer String
Language Language of the Subscription String Language
DateStart Date when the Subscription started Integer
AmountUpFront Amount of the Upfront fee, Setup fee or Initial fee of the Subscription in cents Integer
AmountTrial Amount of the Trial period in cents Integer
DurationTrial Number of Trial Time Unit Integer
UnitTrial Time Unit of Trial TimeUnit
AmountRecurrence Amount of each recurrence in cents Integer
DurationRecurrence Number of Recurrence Time Unit Integer
UnitRecurrence Time Unit of Recurrence TimeUnit
CountRecurrences Number of Recurrences Integer
CountMinRecurrences Minimum recurrences the customer committed to pay Integer
AmountTermination Amount of the Termination Fee in cents Integer
StateSubscription Technical State of the Subscription StateSubscription
Status Functional State of the Subscription Status
Metadata A set of key/value pairs that you can add to a subscription Metadata
Links Useful links concerning the Subscription See below.

Note : Amounts are set without currency because currency is set at the Segment Level.

See Object Convention

Collection of links

Rel Description
related-offer Offer related to the Subscription
related-customer Customer which benefits of the Subscription
related-customerbuyer Customer who pays the Subscription
collection-subscriptionfeature Collection of SubscriptionFeatures related to the Subscription. See SubscriptionFeature.
collection-subscriptionperiod Collection of SubscriptionPeriods related to the Subscription. (Only visible if there is any SubscriptionPeriods.) See Subscription Periods.
related-quote See Compute a Subscription Pricing.
hosted-subscribe Unique encrypted link to conclude and pay the Subscription for the concerned Customer.
hosted-related-subscription Unique encrypted link to the detailed page of the Subscription for the concerned Customer.

Create a Subscription

Definition
POST https://via.proabono.com/Sub/Subscriptions
Example Request
POST https://via.proabono.com/Sub/Subscriptions
{
    "IdBusiness": 2,
    "IdOffer": 308,
    "IdCustomer": 342896
}
Example Response
{
    "Id": 149747,
    "IdSegment": 3,
    "DateUpdate": "2023-05-11T15:11:04.23Z",
    "IdUserUpdate": 69719,
    "DateCreation": "2023-05-11T15:11:04.23Z",
    "IdUserCreation": 69719,
    "StateSubscription": "DraftAgent",
    "Status": "Draft",  
    "IdOffer": 308,
    "IdCustomer": 342896,
    "IdCustomerBuyer": 342896,  
    "Name": "Subscription 25",
    "Language": "en",
    "TitleLocalized": "Premium offer",
    "AmountRecurrence": 4900,
    "DurationRecurrence": 1,
    "UnitRecurrence": "Month",
    "CountRecurrences": 1,
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/Subscriptions/149747"
        },
        {
            "rel": "related-offer",
            "href": "/Sub/Offers/308"
        },
        {
            "rel": "related-customer",
            "href": "/Distribution/Customers/342896"
        },
        {
            "rel": "related-customerbuyer",
            "href": "/Distribution/Customers/342896"
        },
        {
            "rel": "collection-subscriptionfeature",
            "href": "/Sub/SubscriptionFeatures?idSubscription=149747"
        },
        {
            "rel": "collection-subscriptionperiod",
            "href": "/Sub/SubscriptionPeriods?idSubscription=149747"
        },
        {
            "rel": "hosted-related-subscription",
            "href": "https://sandbox-eur.proabono.com/subscription/{Unique-Enrypted-Url}"
        }
    ]
}

Create a subscription in ProAbono.

Request Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdOffer Yes Id of the Offer the Customer wants to subscribe Integer
IdCustomer Yes Id of the Customer who wants to subscribe the Offer IdOffer Integer
IdCustomerBuyer No Id of the Customer who buys this Subscription. By default, IdCustomerBuyer = IdCustomer. Integer
Name No Name of the Subscription String
TitleLocalized No Title of the Subscription in the language of the Customer String
DescriptionLocalized No Description of the Subscription in the language of the Customer String
Language No Language of the Subscription String Language
AmountUpFront No Amount of the Upfront fee, Setup fee or Initial fee of your offer in cents Integer
AmountTrial No Amount of the Trial period in cents Integer
DurationTrial No Number of Trial Time Unit Integer
UnitTrial No Time Unit of Trial TimeUnit
AmountRecurrence No Amount of each recurrence in cents Integer
DurationRecurrence No Number of Recurrence Time Unit Integer
UnitRecurrence No Time Unit of Recurrence TimeUnit
CountRecurrences No Number of Recurrences Integer
CountMinRecurrences No Minimum recurrences the customer will be committed to pay Integer
AmountTermination No Amount of the Termination Fee in cents Integer
Metadata No A set of key/value pairs that you can add to a subscription. Useful for storing additional information about the subscription in a structured format. Metadata
Returns

Retrieve a Subscription

Definition
GET https://via.proabono.com/Sub/Subscriptions/{Id}
Example Request
GET https://via.proabono.com/Sub/Subscriptions/90285
Example Response
{
    "Id": 90285,
    "IdSegment": 3,
    "DateUpdate": "2023-04-09T00:40:00.00Z",
    "IdUserUpdate": 3,
    "DateCreation": "2023-01-09T10:58:00.00Z",
    "IdUserCreation": 69719,
    "StateSubscription": "ActiveRunning",
    "Status": "Active", 
    "IdOffer": 2344,
    "IdCustomer": 80269,
    "IdCustomerBuyer": 80269,   
    "Name": "Subscription 10",
    "Language": "fr",
    "TitleLocalized": "Premium Offer",
    "DescriptionLocalized": "Most Popular Offer!",
    "DateStart": "2023-01-09T00:00:00.00Z",
    "AmountRecurrence": 49700,
    "DurationRecurrence": 1,
    "UnitRecurrence": "Month",
    "Links": [
        {
            "rel": "related-offer",
            "href": "/Sub/Offers/2344"
        },
        {
            "rel": "related-customer",
            "href": "/Distribution/Customers/80269"
        },
        {
            "rel": "related-customerbuyer",
            "href": "/Distribution/Customers/64959"
        },
        {
            "rel": "collection-subscriptionfeature",
            "href": "/Sub/SubscriptionFeatures?idSubscription=90285"
        },
        {
            "rel": "collection-subscriptionperiod",
            "href": "/Sub/SubscriptionPeriods?idSubscription=90285"
        },
        {
            "rel": "hosted-related-subscription",
            "href": "https://sandbox-eur.proabono.com/subscription/{Unique-Enrypted-Url}"
        }
    ]
}

Retrieve a subscription by id

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the Subscription to be retrieved. Integer
Returns

Update a Subscription

Definition
PATCH https://via.proabono.com/Sub/Subscriptions/{Id}
Example Request
PATCH https://via.proabono.com/Sub/Subscriptions/2831
{
    "IdBusiness": 2,
    "Name": "Premium Pro",
    "TitleLocalized": "Premium Pro Offer",
    "DescriptionLocalized": "Sales ! $349/month instead of $497/month",
    "AmountRecurrence": 69700,
    "DurationRecurrence": 3,
    "UnitRecurrence": "Month",
    "Language": "fr",   
}

Update your Subscription as you want.

Request Parameters
Parameter Required? Description Type
Id Yes Id of the Subscription Integer
IdBusiness Yes Id of your Business Integer
Name Yes Name of the Subscription String
TitleLocalized Yes Title of the Subscription in the language of the Customer String
DescriptionLocalized No Description of the Subscription in the language of the Customer String
IdOffer No Id of the Offer related to the Subscription Integer
StateSubscription Yes State of the Subscription StateSubscription
Language Yes Language of the Subscription String Language
AmountUpFront No Amount of the Upfront fee, Setup fee or Initial fee of your subscription in cents Integer
AmountTrial No Amount of the Trial period in cents Integer
DurationTrial No Number of Trial Time Unit Integer
UnitTrial No Time Unit of Trial TimeUnit
AmountRecurrence Yes Amount of each recurrence in cents Integer
DurationRecurrence Yes Number of Recurrence Time Unit Integer
UnitRecurrence Yes Time Unit of Recurrence TimeUnit
CountRecurrences No Number of Recurrences Integer
CountMinRecurrences No Minimum recurrences the customer committed to pay Integer
AmountTermination No Amount of the Termination Fee in cents Integer
Returns

Compute a Subscription Pricing

Definition
GET https://via.proabono.com/Sub/Subscriptions/{Id}/Quote
Example Request
GET https://via.proabono.com/Sub/Subscriptions/644/Quote
Example Response 1 - Subscription with free trial
{
    "DateGeneration": "2023-09-12T17:34:42.10Z",
    "IdSubscription": 644,
    "AmountSubtotal": 0,
    "AmountTotal": 0,
    "Details": [
        {
            "IdSubscription": 644,
            "TypeMove": "SubscriptionInitialFee",
            "Label": "Trial amount",
            "AmountSubtotal": 0,
            "AmountTotal": 0
        }
    ],
    "NextTerm": {
        "IdSubscription": 644,
        "AmountSubtotal": 9900,
        "AmountTotal": 11632,
        "Details": [
            {
                "IdSubscription": 644,
                "TypeMove": "SubscriptionRecurringAmount",
                "Label": "Subscription amount",
                "AmountSubtotal": 9900,
                "AmountTotal": 11632,
                "Tax1": {
                    "IdTaxProfile": 252,
                    "Label": "Tax1",
                    "Rate": 1000,
                    "Amount": 990,
                    "Type": "Outside"
                },
                "Tax2": {
                    "IdTaxProfile": 253,
                    "Label": "Tax2",
                    "Rate": 750,
                    "Amount": 742,
                    "Type": "Outside"
                }
            }
        ]
    }
}
Example Response 2 - Subscription with paying features
{
    "DateGeneration": "2023-09-12T17:35:12.20Z",
    "IdSubscription": 645,
    "AmountSubtotal": 17200,
    "AmountTotal": 20209,
    "Details": [
        {
            "IdSubscription": 645,
            "TypeMove": "SubscriptionInitialFee",
            "Label": "Up-front amount",
            "AmountSubtotal": 4900,
            "AmountTotal": 5757,
            "Tax1": {
                "IdTaxProfile": 252,
                "Label": "Tax1",
                "Rate": 1000,
                "Amount": 490,
                "Type": "Outside"
            },
            "Tax2": {
                "IdTaxProfile": 253,
                "Label": "Tax2",
                "Rate": 750,
                "Amount": 367,
                "Type": "Outside"
            }
        },
        {
            "IdSubscription": 645,
            "TypeMove": "SubscriptionRecurringAmount",
            "Label": "Subscription amount",
            "AmountSubtotal": 9900,
            "AmountTotal": 11632,
            "Tax1": {
                "IdTaxProfile": 252,
                "Label": "Tax1",
                "Rate": 1000,
                "Amount": 990,
                "Type": "Outside"
            },
            "Tax2": {
                "IdTaxProfile": 253,
                "Label": "Tax2",
                "Rate": 750,
                "Amount": 742,
                "Type": "Outside"
            }
        },
        {
            "IdSubscription": 645,
            "IdFeature": 239,
            "TypeMove": "SubscriptionFeatures",
            "Label": "Module A",
            "AmountSubtotal": 1000,
            "AmountTotal": 1175,
            "Tax1": {
                "IdTaxProfile": 252,
                "Label": "Tax1",
                "Rate": 1000,
                "Amount": 100,
                "Type": "Outside"
            },
            "Tax2": {
                "IdTaxProfile": 253,
                "Label": "Tax2",
                "Rate": 750,
                "Amount": 75,
                "Type": "Outside"
            }
        },
        {
            "IdSubscription": 645,
            "IdFeature": 238,
            "TypeMove": "SubscriptionFeatures",
            "Label": "Users",
            "AmountSubtotal": 1400,
            "AmountTotal": 1645,
            "QuantityReal": 3,
            "QuantityBilled": 3,
            "Tax1": {
                "IdTaxProfile": 252,
                "Label": "Tax1",
                "Rate": 1000,
                "Amount": 140,
                "Type": "Outside"
            },
            "Tax2": {
                "IdTaxProfile": 253,
                "Label": "Tax2",
                "Rate": 750,
                "Amount": 105,
                "Type": "Outside"
            }
        }
    ]
}

Compute a pricing estimation of the Subscription based on the Offer, the Subscription overrides and the Customer. ProAbono also applies Taxes if necessary.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the Subscription. Integer

Example 1 - Subscription with free trial

Example 2 - Subscription with paying features

Returns

Structure of the Global Answer of the Computation

Parameter Required? Description Type
DateGeneration Yes Date of the Computation Datetime
IdSubscription Yes Id of the Subscription evaluated Integer
AmountSubtotal Yes Total Amount in cents without Taxes for the first Term Integer
AmountTotal Yes Total Amount in cents with Taxes for the first Term Integer
Details Yes Collection of Details of the Subscription for the first Term EvaluatedSubscriptionDetails - See below
NextTerm No Evaluation of the next Term See below

Structure of NextTerm

Parameter Required? Description Type
IdSubscription Yes Id of the Subscription evaluated Integer
AmountSubtotal Yes Total Amount in cents without Taxes for Next Term Integer
AmountTotal Yes Total Amount in cents with Taxes for the Next Term Integer
Details Yes Collection of Details of the Subscription for the Next Term EvaluatedSubscriptionDetails - See below

Structure of a EvaluatedSubscriptionDetails

Parameter Required? Description Type
IdSubscription Yes Id of the Subscription evaluated Integer
IdFeature Yes if the SubscriptionDetail is related to a Feature Id of the Feature linked to the SubscriptionDetail. Integer
TypeMove Yes Type of CustomerMove TypeMove
Label Yes Label of the Detail of the Subscription String
AmountSubtotal Yes Amount in cents without Taxes Integer
AmountTotal Yes Amount in cents with Taxes Integer
QuantityReal Yes if the SubscriptionDetail is related to a Feature with type Limitation or Consumption Quantity of the Feature available for the Customer Integer
QuantityBilled Yes if the SubscriptionDetail is related to a Feature with type Limitation or Consumption Quantity of the Feature billed to the Customer Integer
Tax1 No Details of Tax1 applied for the concerned Customer EvaluatedSubscriptionDetailsTax - See below
Tax2 No Details of Tax2 applied for the concerned Customer EvaluatedSubscriptionDetailsTax - See below

Structure of a EvaluatedSubscriptionDetailsTax

Parameter Required? Description Type
IdTaxProfile Yes Id of the Tax Profile Integer
Label Yes Label of the Tax String
Rate Yes Rate of the Tax applied in ‱. Ex 15,6% -> 1560. Integer
Amount Yes Tax Amount in cents calculated base on the rate of Tax Integer
Type Yes Type of Tax TypeTax

List Subscriptions

Definition
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&SizePage=3
Example Response
{
    "Page": 1,
    "SizePage": 3,
    "Count": 3,
    "TotalItems": 15,
    "DateGenerated": "2023-04-27T13:54:26.72Z",
    "Items": [
        {
            "Id": 90285,
            "IdSegment": 44,
            "DateUpdate": "2023-04-09T00:40:00.00Z",
            "IdUserUpdate": 3,
            "DateCreation": "2023-01-09T10:58:00.00Z",
            "IdUserCreation": 69719,
            "StateSubscription": "ActiveRunning",
            "Status": "Active", 
            "IdOffer": 2344,
            "IdCustomer": 80269,
            "IdCustomerBuyer": 80269,           
            "Name": "Subscription 13",
            "Language": "fr",
            "TitleLocalized": "Premium Offer",
            "DescriptionLocalized": "Most Popular Offer!",
            "DateStart": "2023-01-09T00:00:00.00Z",
            "AmountRecurrence": 49700,
            "DurationRecurrence": 1,
            "UnitRecurrence": "Month",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Subscriptions/90285"
                }
            ]
        },
        {
            "Id": 91456,
            "IdSegment": 44,
            "DateUpdate": "2023-04-09T00:42:00.00Z",
            "IdUserUpdate": 3,
            "DateCreation": "2023-01-09T10:59:00.00Z",
            "IdUserCreation": 69719,
            "StateSubscription": "ActiveDelayedTermination",
            "Status": "Active",
            "IdOffer": 2344,
            "IdCustomer": 78654,
            "IdCustomerBuyer": 78654,           
            "Name": "Subscription 14",
            "Language": "fr",
            "TitleLocalized": "Premium Offer",
            "DescriptionLocalized": "Most Popular Offer!",
            "DateStart": "2023-01-09T00:00:00.00Z",
            "AmountRecurrence": 49700,
            "DurationRecurrence": 1,
            "UnitRecurrence": "Month",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Subscriptions/91456"
                }
            ]
        },
        {
            "Id": 65487,
            "IdSegment": 44,
            "DateUpdate": "2023-04-09T00:52:00.00Z",
            "IdUserUpdate": 3,
            "DateCreation": "2023-01-09T11:12:00.00Z",
            "IdUserCreation": 69719,
            "StateSubscription": "ActiveDelayedUpgrade",
            "Status": "Active",
            "IdOffer": 2344,
            "IdCustomer": 34512,
            "IdCustomerBuyer": 34512,           
            "Name": "Subscription 12",
            "Language": "fr",
            "TitleLocalized": "Premium Offer",
            "DescriptionLocalized": "Most Popular Offer!",
            "DateStart": "2023-01-09T00:00:00.00Z",
            "AmountRecurrence": 49700,
            "DurationRecurrence": 1,
            "UnitRecurrence": "Month",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Subscriptions/65487"
                }
            ]
        }
    ],
    "Links": [
        {
            "rel": "next",
            "href": "/Sub/Subscriptions/?SizePage=3&page=2"
        }
    ]
}

Get the collection of Subscriptions (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No Id of one of your Segment Integer
DateCreationMin No List all subscriptions created after the date Datetime
DateCreationMax No List all subscriptions created before the date Datetime
DateUpdateMin No List all subscriptions update after the date Datetime
DateUpdateMax No List all subscriptions updated before the date Datetime
IdOffer No List all subscriptions related to a known Offer String
Name No List all subscriptions related to the same Name or a portion of the Name String
IdSegment No List all subscriptions related to the same Segment Integer
DateStartMin No List all subscriptions started after the date Datetime
DateStartMax No List all subscriptions started before the date Datetime
StateSubscription No List all subscriptions with a specific technical state StateSubscription
StateSubscriptionMin No List all subscriptions with a given minimum technical state StateSubscription
StateSubscriptionMax No List all subscriptions with a given maximum technical state StateSubscription
StatusSubscription No List all subscriptions with a specific functional status Status
StatusSubscriptionMin No List all subscriptions with a given minimum functional status Status
StatusSubscriptionMax No List all subscriptions with a given maximum functional status Status
ReferenceAffiliation No List all subscriptions related to customers with the same ReferenceAffiliation (Reference of the affiliate who brought these customers)
IdCustomer No List all subscriptions related to a known Customer String
IdCustomerBuyer No List all subscriptions related to a known Buyer String

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Sub/Subscriptions/?IdBusiness=2&StateSubscription=ActiveRunning&dateStartMin=2023-04-27T13:54:00

Returns

API Backoffice - Subscription Periods

A Subscription Period is a period of time during which your Customer is committed.
Subscription Periods are automatically added when the subscription starts and at each renewal.

Note that the periods for a given subscription cannot overlap.

Subscription Period Resource

Property Description Type
Id Id of the Subscription Period Object Integer
IdSubscription Id of the Subscription related to this Subscription Period Integer
DateStart Start Date of the Subscription Period Datetime
DateTerm Term Date (End Date) of the Subscription Period Datetime
IsTrial If false, the Subscription Period is not a Trial Period Boolean
Links Useful links concerning the Subscription Period --

See Object Convention

Retrieve a Subscription Period

Definition
GET https://via.proabono.com/Sub/SubscriptionPeriods/{Id}
Example Request
GET https://via.proabono.com/Sub/SubscriptionPeriods/593
Example Response
{
    "Id": 593,
    "DateUpdate": "2023-08-25T15:55:54.98Z",
    "IdUserUpdate": 11,
    "DateCreation": "2023-08-25T15:55:54.98Z",
    "IdUserCreation": 11,
    "IdSubscription": 545,
    "DateStart": "2023-08-25T15:55:54.98Z",
    "DateTerm": "2023-09-03T15:55:54.98Z",
    "IsTrial": true,
    "Links": [
        {
            "rel": "related-subscription",
            "href": "/Sub/Subscriptions/545"
        }
    ]
}

Retrieve a Subscription Period by id.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the Subscription Period to be retrieved. Integer
Returns

List Subscription Periods

Definition
GET https://via.proabono.com/Sub/SubscriptionPeriods/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/SubscriptionPeriods/?IdBusiness=2
Example Response
{
    "Page": 1,
    "SizePage": 10,
    "Count": 3,
    "TotalItems": 3,
    "DateGenerated": "2023-09-13T07:50:27.18Z",
    "Items": [
        {
            "Id": 621,
            "DateUpdate": "2023-09-04T06:55:19.85Z",
            "IdUserUpdate": 147,
            "DateCreation": "2023-09-04T06:55:19.85Z",
            "IdUserCreation": 147,
            "IdSubscription": 560,
            "DateStart": "2023-09-04T06:55:19.85Z",
            "DateTerm": "2023-10-04T06:55:19.85Z",
            "IsTrial": false,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/SubscriptionPeriods/621"
                }
            ]
        },
        {
            "Id": 596,
            "DateUpdate": "2023-08-26T08:43:15.12Z",
            "IdUserUpdate": 1097,
            "DateCreation": "2023-08-26T08:43:15.12Z",
            "IdUserCreation": 1097,
            "IdSubscription": 547,
            "DateStart": "2023-08-26T08:43:15.12Z",
            "DateTerm": "2023-09-26T08:43:15.12Z",
            "IsTrial": false,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/SubscriptionPeriods/596"
                }
            ]
        },
        {
            "Id": 593,
            "DateUpdate": "2023-08-25T15:55:54.98Z",
            "IdUserUpdate": 11,
            "DateCreation": "2023-08-25T15:55:54.98Z",
            "IdUserCreation": 11,
            "IdSubscription": 545,
            "DateStart": "2023-08-25T15:55:54.98Z",
            "DateTerm": "2023-09-03T15:55:54.98Z",
            "IsTrial": true,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/SubscriptionPeriods/593"
                }
            ]
        }
    ]
}

Get the collection of Subscription Periods (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No Id of one of your Segment Integer
DateUpdateMin No List all Subscription Periods updated/created after the date Datetime
DateUpdateMax No List all Subscription Periods updated/created before the date Datetime
IdSubscription No List all Subscription Periods of a Subscription Integer
DateStartMin No List all Subscription Periods started after the date Datetime
DateStartMax No List all Subscription Periods started before the date Datetime
DateTermMin No List all Subscription Periods ended/will end after the date Datetime
DateTermMax No List all Subscription Periods ended/will end before the date Datetime

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Sub/SubscriptionPeriods/?IdBusiness=2&IdSubscription=545&DateStartMin=2023-08-27T13:54:00

Returns

API Backoffice - Subscription Features

A SubscriptionFeature describes the relationship of Feature and a Customer via its Subscription.

SubscriptionFeature Resource

Property Description Type
Id Id of the Subscription Feature Object Integer
IdSubscription Id of the Subscription related to the SubscriptionFeature Integer
IdFeature Id of the Feature related to the SubscriptionFeature Integer
Properties List of properties of the SubscriptionFeature See Feature Properties
QuantityIncluded Limitation/Quota/NumberOfUnit of the Feature included in the Subscription of the Customer Integer
QuantityCurrent Current Limitation/Quota/NumberOfUnit of the Feature available for the Customer Integer
Steps Collection of Steps See below.
Links Useful links concerning the Subscription Feature --

See Object Convention

Example 1 - $10 for Module A
"Steps": [
    {
        "AmountCeiling": 1000
    }
]
Example 2 - $7 per user
"Steps": [
    {
        "Increment": 1,
        "AmountPerIncrement": 700
    }
]
Example 3 - $7 per User for the 10st User and then 5$ per User
"Steps": [
    {
        "QuantityMax": 10,
        "Increment": 1,
        "AmountPerIncrement": 700
    },
    {
        "Increment": 1,
        "AmountPerIncrement": 500
    }
]
Example 4 - $7 per User with a maximum cost of $150
"Steps": [
    {
        "Increment": 1,
        "AmountPerIncrement": 700,
        "AmountCeiling": 15000
    }
]
Example 5 - $100 per 5 Users until 200 users then $12 per user
"Steps": [
    {
        "QuantityMax": 200, 
        "Increment": 5,
        "AmountPerIncrement": 10000
    },
    {   
        "Increment": 1,
        "AmountPerIncrement": 1200
    }   
]

Structure of a SubscriptionFeatureStep

Parameter Description Type
QuantityMax Limit max of Feature for the Step Integer
Increment Quantity of Feature per Increment (Size of Increment) for the Step Integer
AmountPerIncrement Amount in cents per Increment for the Step Integer
AmountCeiling Amount max in cents for the Step Integer

See some examples on the right.

Retrieve a SubscriptionFeature

Definition
GET https://via.proabono.com/Sub/SubscriptionFeatures/{Id}
Example Request
GET https://via.proabono.com/Sub/SubscriptionFeatures/2372
Example Response
{
    "Id": 2372,
    "DateUpdate": "2023-09-12T17:27:00.67Z",
    "IdUserUpdate": 11,
    "IdSubscription": 645,
    "IdFeature": 238,
    "Properties": "UpdatableBeforeSubscription, UpdatableAfterSubscription, FreeInTrial",
    "QuantityIncluded": 1,
    "QuantityCurrent": 3,
    "Steps": [
        {
            "Increment": 1,
            "AmountPerIncrement": 700
        }
    ],
    "Links": [
        {
            "rel": "related-subscription",
            "href": "/Sub/Subscriptions/645"
        }
    ]
}

Retrieve a SubscriptionFeature by id.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the SubscriptionFeature to be retrieved. Integer
Returns

Update a Subscription Feature

Definition
PATCH https://via.proabono.com/Sub/SubscriptionFeatures/{Id}
Example Request
PATCH https://via.proabono.com/Sub/SubscriptionFeatures/2372
{
    "Properties": "UpdatableBeforeSubscription, UpdatableAfterSubscription, FreeInTrial",
    "QuantityIncluded": 1,
    "QuantityCurrent": 8,
    "Steps": [
        {
            "Increment": 1,
            "AmountPerIncrement": 850
        }
    ]   
}

Update your SubscriptionFeature as you want.

Request Parameters
Parameter Required? Description Type
Id Yes Id of the SubscriptionFeature Integer
Properties No List of properties of the SubscriptionFeature See Feature Properties
QuantityIncluded No Limitation/Quota/NumberOfUnit of the Feature included in the Subscription of the Customer Integer
QuantityCurrent No Current Limitation/Quota/NumberOfUnit of the Feature available for the Customer Integer
Steps No Collection of Steps See SubscriptionFeatureStep in SubscriptionFeature

See SubscriptionFeatureStep examples in SubscriptionFeature Resource Section.

Returns

List SubscriptionFeatures

Definition
GET https://via.proabono.com/Sub/SubscriptionFeatures/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/SubscriptionFeatures/?IdBusiness=2&IdSubscription=645
Example Response
{
    "Page": 1,
    "SizePage": 10,
    "Count": 2,
    "TotalItems": 2,
    "DateGenerated": "2023-09-13T12:18:55.21Z",
    "Items": [
        {
            "Id": 2373,
            "DateUpdate": "2023-09-12T17:27:00.76Z",
            "IdUserUpdate": 11,
            "IdSubscription": 645,
            "IdFeature": 239,
            "Properties": "FreeInTrial",
            "QuantityIncluded": 0,
            "Steps": [
                {
                    "AmountCeiling": 1000
                }
            ],
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/SubscriptionFeatures/2373"
                }
            ]
        },
        {
            "Id": 2372,
            "DateUpdate": "2023-09-12T17:27:00.67Z",
            "IdUserUpdate": 11,
            "IdSubscription": 645,
            "IdFeature": 238,
            "Properties": "UpdatableBeforeSubscription, UpdatableAfterSubscription, FreeInTrial",
            "QuantityIncluded": 1,
            "QuantityCurrent": 3,
            "Steps": [
                {
                    "Increment": 1,
                    "AmountPerIncrement": 700
                }
            ],
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/SubscriptionFeatures/2372"
                }
            ]
        }
    ]
}

Get the collection of SubscriptionFeatures (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No Id of one of your Segment Integer
DateUpdateMin No List all SubscriptionFeatures updated/created after the date Datetime
DateUpdateMax No List all SubscriptionFeatures updated/created before the date Datetime
IdSubscription No List all SubscriptionFeatures for a given Subscription Integer
IdFeature No List all SubscriptionFeatures for a given Feature Integer

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Sub/SubscriptionFeatures/?IdBusiness=2&IdFeature=238&DateUpdateMin=2023-08-27T13:54:00

Returns

API Backoffice - Subscription Discounts

A SubscriptionDiscount links a Discount and a Subscription.

SubscriptionDiscount Resource

Property Description Type
Id Id of the SubscriptionDiscount Object Integer
IdSubscription Id of the Subscription related to the SubscriptionDiscount Integer
IdDiscount Id of the Discount related to the SubscriptionDiscount Integer
ReferenceDiscount Reference of the Discount related to the SubscriptionDiscount Integer
Name Name of the Discount String
Idfeature Id of the feature if the discount is applied to a feature Integer
ReferenceFeature Reference of the feature if the discount is applied to a feature Integer
TargetFee Targets the fees on which the discount is applied TargetFee
TypeOff Type of the Discount TypeOff
ValueOff Defines the value (amount or percent) in cents of the Discount Integer
IsApplied Indicates if the discount is applied or not. Boolean
CountPeriodsLeft Number of application periods remaining Integer

See Object Convention

Create a SubscriptionDiscount

Definition
POST https://via.proabono.com/Sub/SubscriptionDiscounts
Example Request 1
POST https://via.proabono.com/Sub/SubscriptionDiscounts
{
    "IdSubscription": 752900,
    "IdDiscount": 28
}
Example Response 1
{
    "Id": 151,
    "DateCreation": "2023-05-27T14:33:46.16Z",
    "IdUserCreation": 11,
    "DateUpdate": "2023-05-27T14:33:46.16Z",
    "IdUserUpdate": 11,
    "IdSegment": 3,
    "IdDiscount": 28,
    "IdSubscription": 752900,
    "ReferenceDiscount": "30off-recurringfees",
    "Name": "30% off on all recurring fees",
    "TargetFee": "AllRecurring",
    "ValueOff": 3000,
    "TypeOff": "PerTenThousand",
    "IsApplied": false,
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/SubscriptionDiscounts/151"
        },
        {
            "rel": "related-subscription",
            "href": "/Sub/Subscriptions/752900"
        }
    ]
}
Example Request 2 - Discount applied on a feature
POST https://via.proabono.com/Sub/SubscriptionDiscounts
{
    "IdSubscription": 752900,
    "IdDiscount": 29,
    "ReferenceFeature" : "users"
}
Example Response 2
{
    "Id": 152,
    "DateCreation": "2023-05-27T14:33:53.12",
    "IdUserCreation": 11,
    "DateUpdate": "2023-05-27T14:33:53.12Z",
    "IdUserUpdate": 11,
    "IdSegment": 3,
    "IdDiscount": 29,
    "IdSubscription": 752900,
    "ReferenceDiscount": "50off-featurefees",
    "Name": "50% off on all users",
    "TargetFee": "FeatureFee",
    "ValueOff": 5000,
    "TypeOff": "PerTenThousand",
    "IsApplied": false,
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/SubscriptionDiscounts/152"
        },
        {
            "rel": "related-subscription",
            "href": "/Sub/Subscriptions/752900"
        }
    ]
}

Create/Declare a SubscriptionDiscount in ProAbono. It links a Discount and a Subscription.

If a Discount must be applied only on a Feature, its TargetFee type must be "FeatureFee".

Request Parameters
Parameter Required? Description Type
IdSubscription Yes Id of the Subscription Integer
IdDiscount Yes Id of the Discount Integer
ReferenceFeature (Yes, only if the discount applies to a feature) Reference of the Feature String
Returns

Retrieve a SubscriptionDiscount

Definition
GET https://via.proabono.com/Sub/SubscriptionDiscounts/{Id}
Example Request
GET https://via.proabono.com/Sub/SubscriptionDiscounts/151
Example Response
{
    "Id": 151,
    "DateCreation": "2023-05-27T14:33:46.16Z",
    "IdUserCreation": 11,
    "DateUpdate": "2023-05-27T14:33:46.16Z",
    "IdUserUpdate": 11,
    "IdSegment": 3,
    "IdDiscount": 28,
    "IdSubscription": 752900,
    "ReferenceDiscount": "30off-recurringfees",
    "Name": "30% off on all recurring fees",
    "TargetFee": "AllRecurring",
    "ValueOff": 3000,
    "TypeOff": "PerTenThousand",
    "IsApplied": false,
    "Links": [
        {
            "rel": "related-subscription",
            "href": "/Sub/Subscriptions/752900"
        }
    ]
}

Retrieve a SubscriptionDiscount by id.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the SubscriptionDiscount to be retrieved. Integer
Returns

Delete a SubscriptionDiscount

Definition
DELETE https://via.proabono.com/Sub/SubscriptionDiscounts/{Id}
Example Request
DELETE https://via.proabono.com/Sub/SubscriptionDiscounts/123456

It removes a Discount from a Subscription.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the SubscriptionDiscount to be deleted. Integer
Returns

List SubscriptionDiscounts

Definition
GET https://via.proabono.com/Sub/SubscriptionDiscounts/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/SubscriptionDiscounts/?IdBusiness=2&IdSubscription=645
Example Response
{
    "Page": 1,
    "SizePage": 2,
    "Count": 2,
    "TotalItems": 2,
    "DateGenerated": "2023-05-27T14:43:57.95Z",
    "Items": [
        {
            "Id": 153,
            "DateCreation": "2023-05-27T14:43:47.39Z",
            "IdUserCreation": 11,
            "DateUpdate": "2023-05-27T14:43:47.39Z",
            "IdUserUpdate": 11,
            "IdSegment": 3,
            "IdDiscount": 27,
            "IdSubscription": 754267,
            "ReferenceDiscount": "50off-upfrontfee",
            "Name": "50% off on the upfront fee",
            "TargetFee": "UpfrontFee",
            "ValueOff": 5000,
            "TypeOff": "PerTenThousand",
            "IsApplied": false,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/SubscriptionDiscounts/153"
                }
            ]
        },
        {
            "Id": 151,
            "DateCreation": "2023-05-27T14:33:46.16Z",
            "IdUserCreation": 11,
            "DateUpdate": "2023-05-27T14:33:46.16Z",
            "IdUserUpdate": 11,
            "IdSegment": 3,
            "IdDiscount": 38,
            "IdSubscription": 752900,
            "ReferenceDiscount": "30off-recurringfees",
            "Name": "30% off on all recurring fees",
            "TargetFee": "AllRecurring",
            "ValueOff": 3000,
            "TypeOff": "PerTenThousand",
            "IsApplied": false,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/SubscriptionDiscounts/151"
                }
            ]
        }
    ]
}

Get the collection of SubscriptionDiscounts (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness No List all SubscriptionDiscounts for a given Business Integer
IdSegment No List all SubscriptionDiscounts for a given Segment Integer
IdSubscription No List all SubscriptionDiscounts for a given Subscription Integer
IdFeature No List all SubscriptionDiscounts for a given Feature Integer
IdDiscount No List all SubscriptionDiscounts for a given Discount Integer
DateCreationMin No List all Discounts created after the date Datetime
DateCreationMax No List all Discounts created before the date Datetime
DateUpdateMin No List all Subscriptions updated after the date Datetime
DateUpdateMax No List all Discounts updated before the date Datetime

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Sub/SubscriptionDiscounts/?IdBusiness=2&IdDiscount=238&DateUpdateMin=2023-02-27T13:54:00

Returns

API Backoffice - Discounts

Discounts are used to reduce the price of subscriptions, either permanently or for a short period of time.

Discounts can be applied to offers and subscriptions.

Discount Resource

Property Description Type
Id Id of the Discount Object Integer
ReferenceDiscount Shared Key of the Discount between ProAbono and your application (Often used for accounting purposes) String
StateDiscount State of the Discount StateDiscount
Name Name of the Discount String
TargetFee Targets the fees on which the discount will applied TargetFee
TypeOff Type of the Discount TypeOff
ValueOff Defines the value (amount or percent) in cents of the Discount Integer
CountPeriods Number of Periods Integer
Links Useful links concerning the Discount See below.

Note : value are set without currency because currency is set at the Segment Level.

See Object Convention

Collection of links

Rel Description
collection-offerdiscount Collection of OfferDiscounts related to the Discount. See Offer Discounts.
collection-subscriptiondiscount Collection of SubscriptionDiscounts related to the Discount. See Subscription Discounts.

Create a Discount

Definition
POST https://via.proabono.com/Sub/Discounts
Example 1 - Request (30% off all recurring fees permanently)
POST https://via.proabono.com/Sub/Discounts
{
    "IdSegment": 3,
    "ReferenceDiscount": "30off-recurringfees",
    "Name": "30% off on all recurring fees",
    "TargetFee": "AllRecurring",
    "TypeOff": "PerTenThousand",
    "ValueOff": 3000
}
Example 1 - Response
{
    "Id": 28,
    "DateCreation": "2023-05-24T15:13:58.78Z",
    "IdUserCreation": 666,
    "DateUpdate": "2023-05-24T15:13:58.78Z",
    "IdUserUpdate": 666,
    "IdBusiness": 2,
    "IdSegment": 3,
    "StateDiscount": "Enabled",
    "ReferenceDiscount": "30off-recurringfees",
    "Name": "30% off on all recurring fees",
    "TargetFee": "AllRecurring",
    "ValueOff": 3000,
    "TypeOff": "PerTenThousand",
    "Links": [
        {
            "rel": "self",
            "href": "/Sub/Discounts/28"
        },  
        {
            "rel": "collection-offerdiscount",
            "href": "/Sub/OfferDiscounts?idDiscount=28"
        },
        {
            "rel": "collection-subscriptiondiscount",
            "href": "/Sub/SubscriptionDiscounts?idDiscount=28"
        }
    ]
}
Example 2 - Request (10% off for 3 months)
POST https://via.proabono.com/Sub/Discounts
{
    "IdSegment": 3,
    "ReferenceDiscount": "10off-recurringfees-3months",
    "Name": "10% off for 3 months",
    "TargetFee": "AllRecurring",
    "TypeOff": "PerTenThousand",
    "ValueOff": 1000,
    "CountPeriods" : 3
}
Example 3 - Request (50% off for the Upfront fee)
POST https://via.proabono.com/Sub/Discounts
{
    "IdSegment": 3,
    "ReferenceDiscount": "50off-upfrontfee",
    "Name": "50% off on the Setup Fee",
    "TargetFee": "UpfrontFee",
    "TypeOff": "PerTenThousand",
    "ValueOff": 5000
}

Create a discount in ProAbono.

Request Parameters
Parameter Required? Description Type
IdSegment Yes Id of your Segment Integer
ReferenceDiscount No Shared Key of the Discount between ProAbono and your application (Often used for accounting purposes) String
Name No Name of the Discount String
StateDiscount No State of the Discount. Default value is Enabled. StateDiscount
TargetFee Yes Targets the fees on which the discount will applied TargetFee
TypeOff No Type of the Discount. Default value is Flat. TypeOff
ValueOff Yes Defines the value in cents of the Discount Integer
CountPeriods No Number of Periods. Null means permanently. Integer
Returns

Retrieve a Discount

Definition
GET https://via.proabono.com/Sub/Discounts/{Id}
Example Request
GET https://via.proabono.com/Sub/Discounts/28
Example Response
{
    "Id": 28,
    "DateCreation": "2023-05-24T15:13:58.78Z",
    "IdUserCreation": 666,
    "DateUpdate": "2023-05-24T15:13:58.78Z",
    "IdUserUpdate": 666,
    "IdBusiness": 2,
    "IdSegment": 3,
    "StateDiscount": "Enabled",
    "ReferenceDiscount": "30off-recurringfees",
    "Name": "30% off on all recurring fees",
    "TargetFee": "AllRecurring",
    "ValueOff": 3000,
    "TypeOff": "PerTenThousand",
    "Links": [
        {
            "rel": "collection-offerdiscount",
            "href": "/Sub/OfferDiscounts?idDiscount=28"
        },
        {
            "rel": "collection-subscriptiondiscount",
            "href": "/Sub/SubscriptionDiscounts?idDiscount=28"
        }
    ]
}

Retrieve a discount by id

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the Discount to be retrieved. Integer
Returns

List Discounts

Definition
GET https://via.proabono.com/Sub/Discounts/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/Discounts/?IdBusiness=2&SizePage=3
Example Response
{
    "Page": 1,
    "SizePage": 10,
    "Count": 3,
    "TotalItems": 12,
    "DateGenerated": "2023-05-25T14:14:30.51Z",
    "Items": [{
            "Id": 37,
            "DateCreation": "2023-05-25T12:54:43.82Z",
            "IdUserCreation": 666,
            "DateUpdate": "2023-05-25T12:54:43.82Z",
            "IdUserUpdate": 666,
            "IdBusiness": 2,
            "IdSegment": 3,
            "StateDiscount": "Enabled",
            "ReferenceDiscount": "1035cf46-6428-4083-a3ac-77b20586f08f",
            "Name": "1st month free",
            "TargetFee": "All",
            "ValueOff": 10000,
            "TypeOff": "PerTenThousand",
            "CountPeriods": 1,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Discounts/37"
                }
            ]
        },
        {
            "Id": 8,
            "DateCreation": "2023-05-19T09:23:33.92Z",
            "IdUserCreation": 666,
            "DateUpdate": "2023-05-19T09:23:33.92Z",
            "IdUserUpdate": 666,
            "IdBusiness": 2,
            "IdSegment": 3,
            "StateDiscount": "Enabled",
            "ReferenceDiscount": "b02fc2ce-2f30-46d5-be1d-403bc23e6136",
            "Name": "10% off for 1 month",
            "TargetFee": "FlatFee",
            "ValueOff": 1000,
            "TypeOff": "PerTenThousand",
            "CountPeriods": 1,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Discounts/8"
                }
            ]
        },
        {
            "Id": 28,
            "DateCreation": "2023-05-24T15:13:58.78Z",
            "IdUserCreation": 666,
            "DateUpdate": "2023-05-24T15:13:58.78Z",
            "IdUserUpdate": 666,
            "IdBusiness": 2,
            "IdSegment": 3,
            "StateDiscount": "Enabled",
            "ReferenceDiscount": "30off-recurringfees",
            "Name": "30% off on all recurring fees",
            "TargetFee": "AllRecurring",
            "ValueOff": 3000,
            "TypeOff": "PerTenThousand",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Sub/Discounts/28"
                }
            ]
        }
    ],
    "Links": [
        {
            "rel": "next",
            "href": "/Sub/Discounts/?page=2"
        }
    ]
}

Get the collection of Discounts (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes List all Discounts related to the same Business (cross-segment) Integer
IdSegment No List all Discounts related to the same Segment Integer
DateCreationMin No List all Discounts created after the date Datetime
DateCreationMax No List all Discounts created before the date Datetime
DateUpdateMin No List all Subscriptions updated after the date Datetime
DateUpdateMax No List all Discounts updated before the date Datetime
Name No List all Discounts related to the same Name or a portion of the Name String
StateDiscount No List all Discounts with a specific StateDiscount StateDiscount

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Sub/Discounts/?IdBusiness=2&stateDiscount=Enabled

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Sub/Discounts/?IdBusiness=2&stateDiscount=Enabled&dateCreationMin=2023-04-27T13:54:00

Returns

API Backoffice - Invoices & Credit Notes

Invoices describe what you sold.
Credit notes describe what you have refunded or cancelled.
Refunding or cancelling an invoice creates a credit note.

Invoice Resource

Invoices and Credit Notes are based on the same resource : Invoice.

Property Description Type
Id Id of the Invoice Object Integer
FullNumber FullNumber of the Invoice String
Number Number of the Invoice Integer
IsCredit Indicates if the object is an invoice or a credit note. If true, the object is a credit note boolean
IdCustomer Id of the Customer Integer
IdAddressBusiness Id of the Billing Address of the Seller Integer
IdAddressBilling Id of the Billing Address of the Customer Integer
StateInvoice Technical State of the Invoice StateInvoice
Status Functional State of the Invoice Status
DateIssue Date when the Invoice has been issued Datetime
DatePayment Date of payment Datetime
Language Language of the Invoice String Language
TypePayment Type of payment the Customer paid with TypePayment
AmountSubtotal Amount without taxes in cents Integer
AmountTotalDue Total Amount (with taxes) in cents Integer
Lines Collection of lines InvoiceLines
Customer Details of the Customer Customer
AddressBusiness Postal address of your Business Address
AddressBilling Postal address of the Customer Address
CustomerBilling Customer Billing Customer Billing
Links Useful links concerning the Invoice See below.

See Object Convention

Collection of links

Rel Description
related-customer Customer of the Invoice
related-address-business Billing Address of the Seller. See Address.
related-address-billing Billing Address of the Customer. See Address.
collection-invoiceline Collection of InvoiceLines related to the invoice. See InvoiceLines.
collection-subscription Collection of Subscriptions related to the invoice. See Subscriptions.
collection-payment Collection of Payments related to the invoice. See Payments.
collection-gatewaytransaction Collection of Transactions related to the invoice.
hosted-related-invoice Unique encrypted link to the invoice in PDF format.

Invoice Extra Data

Example Request
GET https://via.proabono.com/Finance/Invoices/3281497?IdBusiness=2&Extra=Customer&Extra=AddressBusiness&Extra=AddressBilling
Example Response
{
  "Id": 3281497,
  "DateCreation": "2024-03-15T09:09:10.14Z",
  "IdUserCreation": 11,
  "DateUpdate": "2024-03-20T08:26:09.68Z",
  "IdUserUpdate": 11,
  "IdBusiness": 2,
  "IdSegment": 3,
  "Key": "d62b270b-98af-4e81-a981-4cb48d708f8b",
  "FullNumber": "F-3.00000076",
  "IsCredit": false,
  "Number": 76,
  "IsInRealMoney": true,
  "IdCustomer": 1068165,
  "IdAddressBusiness": 812,
  "IdAddressBilling": 487491,
  "Status": "Paid",
  "StateInvoice": "Paid",
  "DateIssue": "2024-03-15T09:09:10.24Z",
  "DatePayment": "2024-03-20T08:26:09.68Z",
  "Language": "fr",
  "TypePayment": "Card",
  "AmountSubtotal": 59800,
  "AmountTotal": 71760,
  "Lines": [
    {
      "Id": 4983775,
      "DateUpdate": "2024-03-15T09:09:10.20Z",
      "IdUserUpdate": 11,
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 1068165,
      "TypeMove": "AutoSubscriptionUpfront",
      "IdInvoice": 3281497,
      "IdSubscription": 969445,
      "IdAddressBusiness": 812,
      "IdAddressBilling": 487491,
      "TextLocalized": "Setup fee",
      "AmountSubtotal": 14900,
      "AmountTotal": 17880,
      "RateTax1": 2000,
      "LabelTax1": "TVA",
      "DateMove": "2024-03-01T00:00:00.00Z"
    },
    {
      "Id": 4983774,
      "DateUpdate": "2024-03-15T09:09:10.20Z",
      "IdUserUpdate": 11,
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 1068165,
      "TypeMove": "AutoSubscriptionRecurrence",
      "IdInvoice": 3281497,
      "IdSubscription": 969445,
      "IdAddressBusiness": 812,
      "IdAddressBilling": 487491,
      "TextLocalized": "Subscription Fee",
      "DatePeriodEnd": "2024-04-01T00:00:00.00Z",
      "AmountSubtotal": 6900,
      "AmountTotal": 8280,
      "RateTax1": 2000,
      "LabelTax1": "TVA",
      "DatePeriodStart": "2024-03-01T00:00:00.00Z"
    },
    {
      "Id": 4983772,
      "DateUpdate": "2024-03-15T09:09:10.20Z",
      "IdUserUpdate": 11,
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 1068165,
      "TypeMove": "AutoFeatureProratable",
      "IdInvoice": 3281497,
      "IdSubscription": 969445,
      "IdFeature": 9592,
      "IdAddressBusiness": 812,
      "IdAddressBilling": 487491,
      "TextLocalized": "Users",
      "DatePeriodEnd": "2024-04-01T00:00:00.00Z",
      "QuantityReported": 4,
      "QuantityBilled": 2,
      "AmountSubtotal": 4000,
      "AmountTotal": 4800,
      "RateTax1": 2000,
      "LabelTax1": "TVA",
      "DatePeriodStart": "2024-03-01T00:00:00.00Z"
    },
    {
      "Id": 4983773,
      "DateUpdate": "2024-03-15T09:09:10.20Z",
      "IdUserUpdate": 11,
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 1068165,
      "TypeMove": "AutoFeatureProratable",
      "IdInvoice": 3281497,
      "IdSubscription": 969445,
      "IdFeature": 9591,
      "IdAddressBusiness": 812,
      "IdAddressBilling": 487491,
      "TextLocalized": "24/7 Support",
      "DatePeriodEnd": "2024-04-01T00:00:00.00Z",
      "AmountSubtotal": 10000,
      "AmountTotal": 12000,
      "RateTax1": 2000,
      "LabelTax1": "TVA",
      "DatePeriodStart": "2024-03-01T00:00:00.00Z"
    },
    {
      "Id": 4983776,
      "DateUpdate": "2024-03-15T09:09:10.20Z",
      "IdUserUpdate": 11,
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 1068165,
      "TypeMove": "Service",
      "IdInvoice": 3281497,
      "IdAddressBusiness": 812,
      "IdAddressBilling": 487491,
      "TextLocalized": "Training courses",
      "AmountSubtotal": 24000,
      "AmountTotal": 28800,
      "RateTax1": 2000,
      "LabelTax1": "TVA",
      "DateMove": "2024-03-15T08:48:44.54Z"
    }
  ],
  "Customer": {
    "Id": 1068165,
    "DateCreation": "2024-03-05T08:38:40.96Z",
    "IdUserCreation": 11,
    "DateUpdate": "2024-03-15T09:09:10.33Z",
    "IdUserUpdate": 11,
    "IdBusiness": 2,
    "IdSegment": 3,
    "Status": "Enabled",
    "StateCustomer": "Enabled",
    "ReferenceCustomer": "b9d8cf94-a35d-4bb3-9f55-7bef11618dcf",
    "Name": "Smith Inc",
    "Language": "en"
  },
  "AddressBusiness": {
    "Id": 812,
    "IdBusiness": 2,
    "DateUpdate": "2021-07-27T08:38:06.74Z",
    "IdUserUpdate": 761080,
    "Company": "Sandbox & Co.",
    "FirstName": "Jane",
    "LastName": "Smith",
    "AddressLine1": "101 avenue des Champs Elysees",
    "AddressLine2": "Building Eiffel - 5th floor",
    "ZipCode": "75008",
    "City": "Paris",
    "Country": "FR",
    "Region": "FR-75",
    "TaxInformation": "FR00789536845"
  },
  "AddressBilling": {
    "Id": 487491,
    "DateUpdate": "2024-03-05T08:42:06.45Z",
    "IdUserUpdate": 11,
    "IdSegment": 3,
    "IdCustomer": 1068165,
    "Company": "Smith Inc.",
    "FirstName": "John",
    "LastName": "Smith",    
    "AddressLine1": "440 Grove Street",
    "AddressLine2": "1st Floor",
    "ZipCode": "10011",
    "City": "New York",
    "Country": "US",
    "Region": "US-NY",
    "Phone" : "1-631-850-3480"
    "TaxInformation": "US123456789"
  },
  "CustomerBilling": {
    "Id": 1068165,
    "IdBusiness": 2,
    "IdSegment": 3,
    "IdCustomer": 1068165,
    "IsCustomerBillable": true,
    "IsPaymentCappingReached": false,
    "IsPermissionInExpiration": false,
    "IsGreyListed": false,
    "StateCustomer": "Enabled",
    "TypePayment": "Card",
    "CountUnpaidInvoice": 2,
    "AmountUnpaidInvoice": 39450,
    "DaysUnpaidInvoice": 15,
    "IsAutoBilling": false,
    "DurationBilling": 1,
    "UnitBilling": "Month",
    "CanRenewIfNoPaymentInfo": true
  },
  "Links": [
    {
      "rel": "related-customer",
      "href": "/Distribution/Customers/1068165"
    },
    {
      "rel": "related-invoice-addressbusiness",
      "href": "/Finance/InvoiceAddressBusinesses/812"
    },
    {
      "rel": "related-invoice-addressbilling",
      "href": "/Finance/InvoiceAddressBillings/487491"
    },
    {
      "rel": "collection-invoiceline",
      "href": "/Finance/InvoiceLines?IdInvoice=3281497"
    },
    {
      "rel": "collection-subscription",
      "href": "/Sub/Subscriptions?IdInvoice=3281497"
    },
    {
      "rel": "collection-gatewaytransaction",
      "href": "/Gateway/GatewayTransactions?IdInvoice=3281497"
    },
    {
      "rel": "collection-payment",
      "href": "/Finance/Payments?IdInvoice=3281497"
    },
    {
      "rel": "hosted-related-invoice",
      "href": "https://sandbox-eur.proabono.com/invoice-pdf/{Unique-Encrypted-Url}"
    }
  ]
}

When retrieving an invoice or a list of invoices, you can request additionnal data to be returned.

To do so, add extra={resource-type} in the url.

Extra Resource Type
Customer
AddressBilling
AddressBusiness

Retrieve an Invoice or a Credit Note

Definition
GET https://via.proabono.com/Finance/Invoices/{Id}
Example Request
GET https://via.proabono.com/Finance/Invoices/3281497
Example Response
{
  "Id": 3281497,
  "DateCreation": "2024-03-15T09:09:10.14Z",
  "IdUserCreation": 11,
  "DateUpdate": "2024-03-20T08:26:09.68Z",
  "IdUserUpdate": 11,
  "IdBusiness": 2,
  "IdSegment": 3,
  "Key": "d62b270b-98af-4e81-a981-4cb48d708f8b",
  "FullNumber": "F-3.00000076",
  "IsCredit": false,
  "Number": 76,
  "IsInRealMoney": true,
  "IdCustomer": 1068165,
  "IdAddressBusiness": 812,
  "IdAddressBilling": 487491,
  "Status": "Paid",
  "StateInvoice": "Paid",
  "DateIssue": "2024-03-15T09:09:10.24Z",
  "DatePayment": "2024-03-20T08:26:09.68Z",
  "Language": "fr",
  "TypePayment": "Card",
  "AmountSubtotal": 59800,
  "AmountTotal": 71760,
  "Lines": [
    {
      "Id": 4983775,
      "DateUpdate": "2024-03-15T09:09:10.20Z",
      "IdUserUpdate": 11,
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 1068165,
      "TypeMove": "AutoSubscriptionUpfront",
      "IdInvoice": 3281497,
      "IdSubscription": 969445,
      "IdAddressBusiness": 812,
      "IdAddressBilling": 487491,
      "TextLocalized": "Setup fee",
      "AmountSubtotal": 14900,
      "AmountTotal": 17880,
      "RateTax1": 2000,
      "LabelTax1": "TVA",
      "DateMove": "2024-03-01T00:00:00.00Z"
    },
    {
      "Id": 4983774,
      "DateUpdate": "2024-03-15T09:09:10.20Z",
      "IdUserUpdate": 11,
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 1068165,
      "TypeMove": "AutoSubscriptionRecurrence",
      "IdInvoice": 3281497,
      "IdSubscription": 969445,
      "IdAddressBusiness": 812,
      "IdAddressBilling": 487491,
      "TextLocalized": "Subscription Fee",
      "DatePeriodEnd": "2024-04-01T00:00:00.00Z",
      "AmountSubtotal": 6900,
      "AmountTotal": 8280,
      "RateTax1": 2000,
      "LabelTax1": "TVA",
      "DatePeriodStart": "2024-03-01T00:00:00.00Z"
    },
    {
      "Id": 4983772,
      "DateUpdate": "2024-03-15T09:09:10.20Z",
      "IdUserUpdate": 11,
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 1068165,
      "TypeMove": "AutoFeatureProratable",
      "IdInvoice": 3281497,
      "IdSubscription": 969445,
      "IdFeature": 9592,
      "IdAddressBusiness": 812,
      "IdAddressBilling": 487491,
      "TextLocalized": "Users",
      "DatePeriodEnd": "2024-04-01T00:00:00.00Z",
      "QuantityReported": 4,
      "QuantityBilled": 2,
      "AmountSubtotal": 4000,
      "AmountTotal": 4800,
      "RateTax1": 2000,
      "LabelTax1": "TVA",
      "DatePeriodStart": "2024-03-01T00:00:00.00Z"
    },
    {
      "Id": 4983773,
      "DateUpdate": "2024-03-15T09:09:10.20Z",
      "IdUserUpdate": 11,
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 1068165,
      "TypeMove": "AutoFeatureProratable",
      "IdInvoice": 3281497,
      "IdSubscription": 969445,
      "IdFeature": 9591,
      "IdAddressBusiness": 812,
      "IdAddressBilling": 487491,
      "TextLocalized": "24/7 Support",
      "DatePeriodEnd": "2024-04-01T00:00:00.00Z",
      "AmountSubtotal": 10000,
      "AmountTotal": 12000,
      "RateTax1": 2000,
      "LabelTax1": "TVA",
      "DatePeriodStart": "2024-03-01T00:00:00.00Z"
    },
    {
      "Id": 4983776,
      "DateUpdate": "2024-03-15T09:09:10.20Z",
      "IdUserUpdate": 11,
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 1068165,
      "TypeMove": "Service",
      "IdInvoice": 3281497,
      "IdAddressBusiness": 812,
      "IdAddressBilling": 487491,
      "TextLocalized": "Training courses",
      "AmountSubtotal": 24000,
      "AmountTotal": 28800,
      "RateTax1": 2000,
      "LabelTax1": "TVA",
      "DateMove": "2024-03-15T08:48:44.54Z"
    }
  ],
  "CustomerBilling": {
    "Id": 1068165,
    "IdBusiness": 2,
    "IdSegment": 3,
    "IdCustomer": 1068165,
    "IsCustomerBillable": true,
    "IsPaymentCappingReached": false,
    "IsPermissionInExpiration": false,
    "IsGreyListed": false,
    "StateCustomer": "Enabled",
    "TypePayment": "Card",
    "CountUnpaidInvoice": 2,
    "AmountUnpaidInvoice": 39450,
    "DaysUnpaidInvoice": 15,
    "IsAutoBilling": false,
    "DurationBilling": 1,
    "UnitBilling": "Month",
    "CanRenewIfNoPaymentInfo": true
  },
  "Links": [
    {
      "rel": "related-customer",
      "href": "/Distribution/Customers/1068165"
    },
    {
      "rel": "related-invoice-addressbusiness",
      "href": "/Finance/InvoiceAddressBusinesses/812"
    },
    {
      "rel": "related-invoice-addressbilling",
      "href": "/Finance/InvoiceAddressBillings/487491"
    },
    {
      "rel": "collection-invoiceline",
      "href": "/Finance/InvoiceLines?IdInvoice=3281497"
    },
    {
      "rel": "collection-subscription",
      "href": "/Sub/Subscriptions?IdInvoice=3281497"
    },
    {
      "rel": "collection-gatewaytransaction",
      "href": "/Gateway/GatewayTransactions?IdInvoice=3281497"
    },
    {
      "rel": "collection-payment",
      "href": "/Finance/Payments?IdInvoice=3281497"
    },
    {
      "rel": "hosted-related-invoice",
      "href": "https://sandbox-eur.proabono.com/invoice-pdf/{Unique-Encrypted-Url}"
    }
  ]
}

Retrieve an Invoice or a Credit Note.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the Invoice to be retrieved. Integer

See Invoice Extra Data if you need more additionnal data to be returned.

Returns

Refund an Invoice

Definition
POST https://via.proabono.com/Finance/InvoiceDebits/RefundAuto?Id={IdInvoice}&IdBusiness={YourIdBusiness}
Example Request
POST https://via.proabono.com/Finance/InvoiceDebits/RefundAuto?Id=54258&IdBusiness=2
{
    "Reason": "The customer has terminated its subscription at the begin of the period. So he asked for a refund.",
    "InfoExtra1": "Internal Accounting Code : 79"
}
Example Response
{
    "Id": 54263,
    "DateUpdate": "2023-02-16T13:09:37.00Z",
    "IdUserUpdate": 104143,
    "IdSegment": 605,
    "DateCreation": "2023-02-16T13:09:36.80Z",
    "IdUserCreation": 104143,
    "Key": "de3ae359-49bd-4dc9-9074-78bb69f98fed",
    "FullNumber": "SA-605.00000035",
    "Number": 35,
    "IsCredit": true,
    "IdCustomer": 171846,
    "IdInvoiceDebit": 54258,
    "IdAddressBusiness": 249,
    "IdAddressBilling": 41676,
    "StateInvoice": "PaidRefunded",
    "Status": "Paid",
    "DateIssue": "2023-02-16T13:09:36.82Z",
    "DatePayment": "2023-02-16T13:09:36.90Z",
    "Language": "fr",
    "TypePayment": "Card",
    "AmountSubtotal": 9900,
    "AmountTotal": 11880,
    "TypeCredit": "Refund",
    "Reason": "The customer has terminated its subscription at the begin of the period. So he asked for a refund.",
    "InfoExtra1": "Internal Accounting Code : 79"
}

Refunding an Invoice creates a Credit Note.

Request Parameters
Parameter Required? Description Type
Id Yes Id of the Invoice to refund Integer
IdBusiness Yes Id of your Business Integer
Reason Yes Reason of the Refund String
InfoExtra1 No Free to add extra information String
InfoExtra2 No Free to add extra information String
Returns

Register payment for an Invoice

Definition
POST https://via.proabono.com/Finance/InvoiceDebits/{Id}/Payment
Example Request
POST https://via.proabono.com/Finance/InvoiceDebits/78519/Payment
{
    "TypePayment": "ExternalCheck",
    "DatePayment": "2023-5-11",
    "InfoExtra1": "Check Number 1234567890",
    "InfoExtra2": ""
}
Example Response
{
    "Id": 78519,
    "DateUpdate": "2023-05-12T14:40:55.20Z",
    "IdUserUpdate": 52,
    "IdSegment": 3,
    "DateCreation": "2023-05-12T14:40:20.70Z",
    "IdUserCreation": 11,
    "Key": "a0b8aa48-74b4-43c2-86af-e0fbe87bd8d8",
    "FullNumber": "S-3.00000014",
    "Number": 14,
    "IsCredit": false,
    "IsInRealMoney": false,
    "IdCustomer": 191566,
    "IdAddressBusiness": 255,
    "IdAddressBilling": 60523,
    "StateInvoice": "Paid",
    "Status": "Paid",   
    "DateIssue": "2023-05-12T14:40:20.78Z",
    "DatePayment": "2023-05-11T00:00:00.00Z",
    "Language": "fr",
    "TypePayment": "ExternalCheck",
    "AmountSubtotal": 2900,
    "AmountTotal": 3480,
    "InfoExtra1": "Check Number 1234567890"
}

Register a Payment for an Invoice. It sets the status of an Invoice to Paid.
Useful when the payment is external : WireTransfer, Checks, Cash, ...

Request Parameters
Parameter Required? Description Type
Id Yes Id of the Invoice Integer
TypePayment Yes Type of the Payment TypePayment
DatePayment Yes Date of the Payment of the Refund Datetime
InfoExtra1 No Free to add extra information String
InfoExtra2 No Free to add extra information String
Returns

List all Invoices and Credit Notes

Definition
GET https://via.proabono.com/Finance/Invoices/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Finance/Invoices/?IdBusiness=2
Example Response
{
    "Page": 1,
    "SizePage": 10,
    "Count": 2,
    "TotalItems": 2,
    "DateGenerated": "2023-08-27T13:32:35.74Z",
    "Items": [
        {
            "Id": 27,
            "DateUpdate": "2023-08-20T07:28:52.65Z",
            "IdUserUpdate": 955,
            "IdSegment": 3,
            "DateCreation": "2023-08-20T07:28:52.65Z",
            "IdUserCreation": 955,
            "Key": "9a5fb3bf-5041-439f-87e4-fad388bf7c96",
            "FullNumber": "F-3.00000002",
            "Number": 2,
            "IsCredit": false,
            "IdCustomer": 64811,
            "IdAddressBusiness": 8,
            "IdAddressBilling": 29,
            "StateInvoice": "Paid",
            "Status": "Paid",
            "DateIssue": "2023-08-20T07:28:53.23Z",
            "DatePayment": "2023-08-20T07:28:53.01Z",
            "Language": "en",
            "TypePayment": "Card",
            "AmountSubtotal": 20000,
            "AmountTotalDue": 20000,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Finance/InvoiceDebits/27"
                }
            ]
        },
        {
            "Id": 19,
            "DateUpdate": "2023-07-27T13:22:55.43Z",
            "IdUserUpdate": 149,
            "IdSegment": 3,
            "DateCreation": "2023-07-27T13:22:55.43Z",
            "IdUserCreation": 149,
            "Key": "91f8ea96-617a-4ee8-8cf4-4fe8d085a156",
            "FullNumber": "F-3.00000001",
            "Number": 1,
            "IsCredit": false,
            "IdCustomer": 64081,
            "IdAddressBusiness": 8,
            "IdAddressBilling": 21,
            "StateInvoice": "PaidRefunded",
            "Status": "Paid",
            "DateIssue": "2023-07-27T13:22:56.10Z",
            "DatePayment": "2023-07-27T13:22:55.93Z",
            "Language": "fr",
            "TypePayment": "Card",
            "AmountSubtotal": 20000,
            "AmountTotalDue": 20000,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Finance/InvoiceDebits/19"
                }
            ]
        }
    ]
}

Get the collection of Invoices and Credit Notes (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No Id of one of your Segment Integer
IsCredit No If True, list only Credit Notes Boolean
DateIssueMin No List all invoices issued after the date Datetime
DateIssueMax No List all invoices issued before the date Datetime
DatePaymentMin No List all invoices paid after the date Datetime
DatePaymentMax No List all invoices paid before the date Datetime
StateInvoice No List all invoices with a specific technical state StateInvoice
StateInvoiceMin No List all invoices with a given minimum technical state StateInvoice
StateInvoiceMax No List all invoices with a given maximum technical state StateInvoice
StatusInvoice No List all invoices with a specific functional status Status
StatusInvoiceMin No List all invoices with a given minimum functional status Status
StatusInvoiceMax No List all invoices with a given maximum functional status Status
NumberMin No List all invoices issued after a specific 'Number' Integer
NumberMax No List all invoices issued before a specific 'Number' Integer
TypePayment No List all invoices with a specific type of payment TypePayment
ReferenceAffiliation No List all invoices related to customers with the same ReferenceAffiliation (Reference of the affiliate who brought these customers) String
IdCustomer No List all invoices of a Customer Integer
ReferenceCustomer No List all invoices of a Customer String

See Invoice Extra Data if you need more extra data to be returned.

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Finance/Invoices/?IdBusiness=2&StateInvoice=Paid&DatePaymentMin=2023-04-27T13:54:00

Returns

List only Invoices

Definition
GET https://via.proabono.com/Finance/Invoices/?IdBusiness={YourIdBusiness}&IsCredit=false
Example Request
GET https://via.proabono.com/Finance/Invoices/?IdBusiness=2&IsCredit=false

Get the collection of Invoices only.

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No Id of one of your Segment Integer
IsCredit No If False, list only Invoices Boolean

For more parameters, see List all Invoices and Credit Notes

List only Credit Notes

Definition
GET https://via.proabono.com/Finance/Invoices/?IdBusiness={YourIdBusiness}&IsCredit=true
Example Request
GET https://via.proabono.com/Finance/Invoices/?IdBusiness=2&IsCredit=true

Get the collection of Credit Notes only.

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No Id of one of your Segment Integer
IsCredit No If True, list only Credit Notes Boolean

For more parameters, see List all Invoices and Credit Notes

API Backoffice - Invoice Lines

InvoiceLine describes a content of an invoice.

InvoiceLine Resource

Property Description Type
Id Id of the InvoiceLine Object Integer
IdInvoice Id of the Invoice to which this InvoiceLine belongs. Integer
IdSubscription Id of the Subscription which to which this InvoiceLine belongs. Integer
TextLocalized Description of the content of the InvoiceLine String
AmountSubtotal Amount without taxes in cents Integer
AmountTotalDue Total Amount (with taxes) in cents Integer
RateTax1 Rate of Tax1 in ‱. Ex 15,6% -> 1560. Integer
LabelTax1 Label of Tax1 String
RateTax2 Rate of Tax2 in ‱. Ex 15,6% -> 1560. Integer
LabelTax2 Label of Tax2 String

See Object Convention

Retrieve an InvoiceLine

Definition
GET https://via.proabono.com/Finance/InvoiceLines/{Id}
Example Request
GET https://via.proabono.com/Finance/InvoiceLines/76
Example Response
{
    "Id": 76,
    "DateUpdate": "2023-09-12T12:40:12.14Z",
    "IdUserUpdate": 1237,
    "IdInvoice": 37,
    "IdSubscription": 639,
    "TextLocalized": "Up-front amount",
    "AmountSubtotal": 4900,
    "AmountTotalDue": 5757,
    "RateTax1": 1000,
    "LabelTax1": "Tax1",
    "RateTax2": 750,
    "LabelTax2": "Tax2",
    "Links": [
        {
            "rel": "related-invoice",
            "href": "/Finance/Invoices/37"
        },
        {
            "rel": "related-subscription",
            "href": "/Sub/Subscriptions/639"
        }
    ]
}

Retrieve a InvoiceLine.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the InvoiceLine to be retrieved. Integer
Returns

List InvoiceLines

Definition
GET https://via.proabono.com/Finance/InvoiceLines/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Finance/InvoiceLines/?IdBusiness=2&IdInvoice=37
Example Response
{
    "Page": 1,
    "SizePage": 10,
    "Count": 4,
    "TotalItems": 4,
    "DateGenerated": "2023-09-12T13:52:48.85Z",
    "Items": [
        {
            "Id": 77,
            "DateUpdate": "2023-09-12T12:40:12.17Z",
            "IdUserUpdate": 1237,
            "IdInvoice": 37,
            "IdSubscription": 639,
            "TextLocalized": "Subscription amount",
            "AmountSubtotal": 9900,
            "AmountTotalDue": 11632,
            "RateTax1": 1000,
            "LabelTax1": "Tax1",
            "RateTax2": 750,
            "LabelTax2": "Tax2",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Finance/InvoiceLines/77"
                }
            ]
        },
        {
            "Id": 78,
            "DateUpdate": "2023-09-12T12:40:12.17Z",
            "IdUserUpdate": 1237,
            "IdInvoice": 37,
            "IdSubscription": 639,
            "TextLocalized": "Module A",
            "AmountSubtotal": 1000,
            "AmountTotalDue": 1175,
            "RateTax1": 1000,
            "LabelTax1": "Tax1",
            "RateTax2": 750,
            "LabelTax2": "Tax2",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Finance/InvoiceLines/78"
                }
            ]
        },
        {
            "Id": 79,
            "DateUpdate": "2023-09-12T12:40:12.17Z",
            "IdUserUpdate": 1237,
            "IdInvoice": 37,
            "IdSubscription": 639,
            "TextLocalized": "Users",
            "AmountSubtotal": 1400,
            "AmountTotalDue": 1645,
            "RateTax1": 1000,
            "LabelTax1": "Tax1",
            "RateTax2": 750,
            "LabelTax2": "Tax2",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Finance/InvoiceLines/79"
                }
            ]
        },
        {
            "Id": 76,
            "DateUpdate": "2023-09-12T12:40:12.14Z",
            "IdUserUpdate": 1237,
            "IdInvoice": 37,
            "IdSubscription": 639,
            "TextLocalized": "Up-front amount",
            "AmountSubtotal": 4900,
            "AmountTotalDue": 5757,
            "RateTax1": 1000,
            "LabelTax1": "Tax1",
            "RateTax2": 750,
            "LabelTax2": "Tax2",
            "Links": [
                {
                    "rel": "self",
                    "href": "/Finance/InvoiceLines/76"
                }
            ]
        }
    ]
}

Get the collection of InvoiceLines (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No List all InvoiceLines related to a specific Segment Integer
DateUpdateMin No List all InvoiceLines updated/created after the date Datetime
DateUpdateMax No List all InvoiceLines updated/created before the date Datetime
DateIssueMin No List all InvoiceLines issued after the date Datetime
DateIssueMax No List all InvoiceLines issued before the date Datetime
IsCredit No If false, list all InvoiceLines of Credit Notes. If true, list all InvoiceLines of Invoices. Boolean
IdInvoice No List all InvoiceLines of an Invoice or Credit Note Integer
IdSubscription No List all InvoiceLines related to a specific Subscription Integer
AmountSubtotalMin No List all InvoiceLines with AmountSubtotal equal or greater than AmountSubtotalMin Integer
AmountSubtotalMax No List all InvoiceLines with AmountSubtotal equal or less than AmountSubtotalMax Integer
AmountTotalDueMin No List all InvoiceLines with AmountSubtotal equal or greater than AmountTotalDue Integer
AmountTotalDueMax No List all InvoiceLines with AmountSubtotal equal or less than AmountTotalDue Integer

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Finance/InvoiceLines/?IdBusiness=2&IdInvoice=37&AmountTotalDueMin=1000

Returns

API Backoffice - CustomerBalance

The Balance of a Customer is the result of debit and credit moves.

CustomerMove describes a movement in the balance of a customer.

CustomerMoves can be viewed as :

CustomerMove Resource

Property Description Type
Id Id of the CustomerMove Object Integer
IdCustomer Id of the Customer related to this CustomerMove Integer
IdSubscription Id of the Subscription related to this CustomerMove Integer
IdSubscriptionPeriod Id of the Period of the Subscription related to this CustomerMove Integer
IdFeature Id of the Feature related to this CustomerMove Integer
TextLocalized Text of the CustomerMove in the language of the Customer String
AmountSubtotal Amount without taxes in cents Integer
AmountTotal Total Amount (with taxes) in cents Integer
TypeMove Type of the Move Type of Move
Links Useful links concerning the CustomerMove

Note : Amounts are set without currency because currency is set at the Segment Level.

See Object Convention

Create a CustomerMove

Definition
POST https://via.proabono.com/Finance/CustomerMoves
Example Request
POST https://via.proabono.com/Finance/CustomerMoves
{
    "IdBusiness": 2,
    "IdCustomer": 64811,
    "TextLocalized": "Extra Charges",
    "AmountSubtotal": 9900
}
Example Response
{
    "Id": 74,
    "DateUpdate": "2023-08-27T17:04:09.13Z",
    "IdUserUpdate": 11,
    "IdCustomer": 64811,
    "TypeMove": "Unspecified",
    "TextLocalized": "Extra Charges",
    "AmountSubtotal": 9900,
    "AmountTotal": 9900,
    "Links": [
        {
            "rel": "self",
            "href": "/Finance/CustomerMoves/74"
        }
    ]
}

Create a CustomerMove for a Customer. The CustomerMove can be linked to a Subscription or/and a Feature.

Request Parameters
Parameter Required? Description Type
IdCustomer Yes Id of the Customer related to this CustomerMoves Integer
IdBusiness Yes Id of your Business Integer
IdSubscription No Id of the Subscription related to this CustomerMoves Integer
IdFeature No Id of the Feature related to this CustomerMoves Integer
TextLocalized Yes Text of the CustomerMove in the language of the Customer String
AmountSubtotal Yes Amount without taxes in cents Integer
Returns

Retrieve a CustomerMove

Definition
GET https://via.proabono.com/Finance/CustomerMoves/{Id}
Example Request
GET https://via.proabono.com/Finance/CustomerMoves/74
Example Response
{
    "Id": 74,
    "DateUpdate": "2023-08-27T17:04:09.13Z",
    "IdUserUpdate": 11,
    "IdCustomer": 64811,
    "TypeMove": "Unspecified",
    "TextLocalized": "Extra Charges",
    "AmountSubtotal": 9900,
    "AmountTotal": 9900,
    "Links": [
        {
            "rel": "self",
            "href": "/Finance/CustomerMoves/74"
        }
    ]
}

Retrieve a CustomerMove by id.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the CustomerMove to be retrieved. Integer
Returns

Update a CustomerMove

Definition
PATCH https://via.proabono.com/Finance/CustomerMoves/{Id}
Example Request
PATCH https://via.proabono.com/Finance/CustomerMoves/74
{
    "IdBusiness": 2,
    "TextLocalized": "Extra Charges - Pack A",
}

Update the Text of the CustomerMove as you want.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the CustomerMove to update. Integer
TextLocalized Yes Text of the CustomerMove in the language of the Customer String
IdBusiness Yes Id of your Business Integer
Returns

List CustomerMoves

Definition
GET https://via.proabono.com/Finance/CustomerMoves/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Finance/CustomerMoves/?IdBusiness=2
Example Response
{
    "Page": 1,
    "SizePage": 10,
    "Count": 3,
    "TotalItems": 3,
    "DateGenerated": "2023-08-27T17:12:26.58Z",
    "Items": [
        {
            "Id": 74,
            "DateUpdate": "2023-08-27T17:04:09.14Z",
            "IdUserUpdate": 11,
            "IdCustomer": 64811,
            "TypeMove": "Unspecified",
            "TextLocalized": "Extra Charges - Pack A",
            "AmountSubtotal": 9900,
            "AmountTotal": 9900,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Finance/CustomerMoves/74"
                }
            ]
        },
        {
            "Id": 45,
            "DateUpdate": "2023-08-20T16:22:06.72Z",
            "IdUserUpdate": 11,
            "IdCustomer": 64802,
            "TypeMove": "Unspecified",
            "TextLocalized": "Pack 30 Euro",
                "AmountSubtotal": 3000,
            "AmountTotal": 3000,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Finance/CustomerMoves/45"
                }
            ]
        },
        {
            "Id": 44,
            "DateUpdate": "2023-08-20T16:22:02.78Z",
            "IdUserUpdate": 11,
            "IdCustomer": 64802,
            "TypeMove": "Unspecified",
            "TextLocalized": "Discount -35 Euro",
            "AmountSubtotal": -3500,
            "AmountTotal": -3500,
            "Links": [
                {
                    "rel": "self",
                    "href": "/Finance/CustomerMoves/44"
                }
            ]
        }
    ]
}

Get the collection of Subscriptions (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No Id of one of your Segment Integer
DateUpdateMin No List all CustomerMoves updated/created after the date Datetime
DateUpdateMax No List all CustomerMoves updated/created before the date Datetime
IdCustomer No List all CustomerMoves of a Customer Integer
IsNotBilled No If true, list all CustomerMoves not billed yet. Boolean
AmountSubtotalMin No List all CustomerMoves with AmountSubtotal equal or greater than AmountSubtotalMin Integer
AmountSubtotalMax No List all CustomerMoves with AmountSubtotal equal or less than AmountSubtotalMax Integer
AmountTotalMin No List all CustomerMoves with AmountSubtotal equal or greater than AmountTotal Integer
AmountTotalMax No List all CustomerMoves with AmountSubtotal equal or less than AmountTotal Integer

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Finance/CustomerMoves/?IdBusiness=2&IdCustomer=64811&DateUpdateMin=2023-07-27T13:54:00

Returns

API Backoffice - Payments

Payments refer to any payments to or from a Customer.

Payment Resource

Property Description Type
Id Id of the Payment Object Integer
IdCustomer Id of the Customer related to this Payment Integer
IdInvoice Id of the Invoice related to this Payment Integer
TypePayment Type of payment TypePayment
StatePayment Technical State of the payment StatePayment
Status Functional State of the payment Status
Amount Amount of the payment in cents Integer
DatePayment Date of the payment Datetime
IdGatewayTransaction Id of the Transaction related to this Payment Integer
Links Useful links concerning the Payment --

Note : Amounts are set without currency because currency is set at the Segment Level.

See Object Convention

Retrieve a Payment

Definition
GET https://via.proabono.com/Finance/Payments/{Id}
Example Request
GET https://via.proabono.com/Finance/Payments/74
Example Response
{
    "Id": 74,
    "DateUpdate": "2023-07-27T13:23:00.00Z",
    "IdUserUpdate": 149,
    "IdSegment": 3,
    "DateCreation": "2023-07-27T13:23:00.00Z",
    "IdUserCreation": 149,
    "IdCustomer": 64081,
    "IdInvoice": 19,
    "TypePayment": "Card",
    "StatePayment": "CompletedRefunded",
    "Status": "Completed",
    "Amount": 20000,
    "DatePayment": "2023-07-27T13:23:00.00Z",
    "IdGatewayTransaction": 15,
    "Links": [
        {
            "rel": "related-invoicedebit",
            "href": "/Finance/InvoiceDebits/19"
        },
        {
            "rel": "related-gatewaytransaction",
            "href": "/Gateway/GatewayTransactions/15"
        }
    ]
}

Retrieve a Payment by id.

Request Parameters
Parameter Required? Description Type
Id Yes The identifier of the Payment to be retrieved. Integer
Returns

List Payments

Definition
GET https://via.proabono.com/Finance/Payments/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Finance/Payments/?IdBusiness=2
Example Response
{
  "Page": 1,
  "SizePage": 10,
  "Count": 2,
  "TotalItems": 2,
  "DateGenerated": "2023-08-27T22:06:17.19Z",
  "Items": [
    {
      "Id": 21,
      "DateUpdate": "2023-08-20T07:29:00.00Z",
      "IdUserUpdate": 955,
      "IdSegment": 3,
      "DateCreation": "2023-08-20T07:29:00.00Z",
      "IdUserCreation": 955,
      "IdCustomer": 64811,
      "IdInvoice": 27,
      "TypePayment": "Card",
      "StatePayment": "CompletedRefunded",
      "Status": "Completed",
      "Amount": 20000,
      "DatePayment": "2023-08-20T07:29:00.00Z",
      "IdGatewayTransaction": 23,
      "Links": [
        {
          "rel": "self",
          "href": "/Finance/Payments/21"
        }
      ]
    },
    {
      "Id": 15,
      "DateUpdate": "2023-07-27T13:23:00.00Z",
      "IdUserUpdate": 149,
      "IdSegment": 3,
      "DateCreation": "2023-07-27T13:23:00.00Z",
      "IdUserCreation": 149,
      "IdCustomer": 64081,
      "IdInvoice": 19,
      "TypePayment": "Card",
      "StatePayment": "Completed",
      "Status": "Completed",
      "Amount": 20000,
      "DatePayment": "2023-07-27T13:23:00.00Z",
      "IdGatewayTransaction": 15,
      "Links": [
        {
          "rel": "self",
          "href": "/Finance/Payments/15"
        }
      ]
    }
  ]
}

Get the collection of Payments (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No Id of one of your Segment Integer
DateUpdateMin No List all Payments updated/created after the date Datetime
DateUpdateMax No List all Payments updated/created before the date Datetime
IdCustomer No List all Payments of a Customer Integer
TypePayment No List all Payments with a specific type of payment TypePayment
StatePayment No List all payments with a specific technical state StatePayment
StatePaymentMin No List all payments with a given minimum technical state StatePayment
StatePaymentMax No List all payments with a given maximum technical state StatePayment
AmountMin No List all Payments with Amount equal or greater than AmountMin Integer
AmountMax No List all Payments with Amount equal or less than AmountMax Integer
StatusPayment No List all payments with a specific functional status Status
StatusPaymentMin No List all payments with a given minimum functional status Status
StatusPaymentMax No List all payments with a given maximum functional status Status

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Finance/Payments/?IdBusiness=2&IdCustomer=64811&DateUpdateMin=2023-07-27T13:54:00

Returns

-- Log & events --

API Backoffice - CustomerEvents

CustomerEvents are created by ProAbono in response to certain events that have occurred in ProAbono.

CustomerEvents can be related to an action executed in the backoffice (by an agent), on the hosted pages (by one of your customers), by ProAbono itself.

CustomerEvent Resource

Parameter Mandatory? Description Type
Id Yes Id of the CustomerEvent String
DateCreation Yes Creation Date of the Event on ProAbono Datetime
IdUserCreation Yes Id of user who created the Object Integer
TypeTrigger Yes Type of the Trigger TypeTrigger
IdBusiness Yes Id of Business related to this event Integer
IdSegment Yes Id of Segment related to this event Integer
IdCustomer Yes Id of Customer related to this event Integer
IdCustomerBuyer Yes Id of CustomerBuyer related to this event Integer
IdOffer No Id of Offer related to this event Integer
IdSubscription No Id of Subscription related to this event Integer
IdGatewayPermission No Id of Gateway Permission related to this event Integer
IdInvoiceDebit No Id of Invoice related to this event Integer
IdInvoiceCredit No Id of Credit Note related to this event Integer

Each CustomerEvent has attributes which depends on TypeTrigger.

Examples :

CustomerEvent Extra Data

Example Request
GET https://via.proabono.com/Notification/CustomerEvents/?IdBusiness=2&Extra=Customer&Extra=Subscription&Extra=AddressBilling
Example Response
{
  "Page": 1,
  "SizePage": 10,
  "Count": 10,
  "HasMore": true,
  "DateGenerated": "2023-12-06T12:40:05.91Z",
  "Items": [
    {
      "Id": "c03da37a-b5e7-45e2-9008-f0da5fc4df26",
      "DateCreation": "2023-12-04T14:56:07.20Z",
      "IdUserCreation": 11,
      "TypeTrigger": "SubscriptionStarted",
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdOffer": 12436,
      "IdCustomer": 978968,
      "IdCustomerBuyer": 978968,
      "IdSubscription": 813915,
      "Customer": {
        "Id": 978968,
        "DateCreation": "2023-12-03T15:16:09.19Z",
        "IdUserCreation": 52,
        "DateUpdate": "2023-12-04T14:52:01.28Z",
        "IdUserUpdate": 11,
        "IdBusiness": 2,
        "IdSegment": 3,
        "StateLife": "Ok",
        "ReferenceCustomer": "123456",
        "Name": "John Smith",
        "Email": "john@smith.com",
        "Language": "en"
      },
      "AddressBilling": {
        "Id": 978968,
        "DateUpdate": "2023-12-03T15:16:12.01Z",
        "IdUserUpdate": 52,
        "IdBusiness": 2,
        "IdSegment": 3,
        "IdCustomer": 978968,
        "Company": "Smith Inc.",
        "FirstName": "John",
        "LastName": "Smith",    
        "AddressLine1": "440 Grove Street",
        "AddressLine2": "1st Floor",
        "ZipCode": "10011",
        "City": "New York",
        "Country": "US",
        "Region": "US-NY",
        "Phone" : "1-631-850-3480"
      },
      "Subscription": {
        "Id": 813915,
        "DateCreation": "2023-12-04T14:56:07.07Z",
        "IdUserCreation": 11,
        "DateUpdate": "2023-12-04T14:56:07.20Z",
        "IdUserUpdate": 11,
        "IdBusiness": 2,
        "IdSegment": 3,
        "IdOffer": 12436,
        "IdCustomer": 978968,
        "IdCustomerBuyer": 978968,
        "StateSubscription": "Running",
        "Name": "Subscription 9",
        "TitleLocalized": "Premium Pro+",
        "DateStart": "2023-12-04T14:56:07.00Z",
        "DatePeriodStart": "2023-12-04T14:56:07.00Z",
        "DatePeriodEnd": "2023-01-03T15:16:27.00Z",
        "DateTerm": "2023-01-03T15:16:27.00Z",
        "IsTrial": false,
        "CountPeriodsNonTrial": 1,
        "AmountUpFront": 0,
        "AmountRecurrence": 100000,
        "DurationRecurrence": 1,
        "UnitRecurrence": "Month",
        "IdSubscriptionBefore": 813797,
        "Metadata": {
          "Accounting": "cust-123456-small",
          "Type": "B2B"
        }
      }
    },
    {
      ...
    }
    }
  ],
  "Links": [
    {
      "rel": "next",
      "href": "/Notification/CustomerEvents?IdBusiness=2&Extra=Customer&Extra=Subscription&Extra=AddressBilling&page=2"
    }
  ]
}

When retrieving a trigger or a list of CustomerEvents, you can request additionnal data to be returned.

To do so, add extra={resource-type} in the url.

Extra Resource Type
Business
Segment
Agent
Offer
Customer
AddressBilling
AddressShipping
CustomerBuyer
Subscription
GatewayPermission
InvoiceDebit
InvoiceCredit

List CustomerEvents

Definition
GET https://via.proabono.com/Notification/CustomerEvents?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Notification/CustomerEvents?IdBusiness=2
Example Response
{
  "Page": 1,
  "SizePage": 5,
  "Count": 5,
  "HasMore": true,
  "DateGenerated": "2023-08-26T21:16:52.61Z",
  "Items": [
    {
      "Id": "c03da37a-b5e7-45e2-9008-f0da5fc4df26",
      "DateCreation": "2023-08-26T08:43:15.34Z",
      "IdUserCreation": 1097,
      "TypeTrigger": "SubscriptionHistory",
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdOffer": 191,
      "IdCustomer": 64944,
      "IdSubscription": 547
    },
    {
      "Id": "4dda4275-0a15-4a61-bcb4-1a1ed89e495e",
      "DateCreation": "2023-08-26T08:43:15.33Z",
      "IdUserCreation": 1097,
      "TypeTrigger": "SubscriptionStarted",
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdOffer": 191,
      "IdCustomer": 64944,
      "IdSubscription": 547
    },
    {
      "Id": "7e3d7677-3d8e-4ab0-987c-82cbe76301fd",
      "DateCreation": "2023-08-26T08:43:14.62Z",
      "IdUserCreation": 1097,
      "TypeTrigger": "CustomerSettingsPaymentUpdated",
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 64944
    },
    {
      "Id": "aa773e74-16bb-4af5-b57d-016d6f6cf8b8",
      "DateCreation": "2023-08-26T08:43:04.72Z",
      "IdUserCreation": 1097,
      "TypeTrigger": "CustomerBillingAddressUpdated",
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 64944
    },
    {
      "Id": "7348aab6-821d-4930-b9e6-917e4ef2d5c0",
      "DateCreation": "2023-08-26T08:41:29.18Z",
      "IdUserCreation": 11,
      "TypeTrigger": "CustomerAdded",
      "IdBusiness": 2,
      "IdSegment": 3,
      "IdCustomer": 64944
    }
  ],
  "Links": [
    {
      "rel": "next",
      "href": "/Notification/CustomerEvents?sizepage=5&IdBusiness=2&page=2"
    }
  ]
}

Get the collection of CustomerEvents (filtered or not).

Querystring Parameters
Parameter Required? Description Type
IdBusiness Yes Id of your Business Integer
IdSegment No Id of one of your Segment Integer
DateCreationMin No List all CustomerEvents created after the date Datetime
DateCreationMax No List all CustomerEvents created before the date Datetime
TypeTrigger No List all CustomerEvents with a specific Type of Trigger TypeTrigger
IdCustomer No List all CustomerEvents related to a specific Customer Integer
ReferenceCustomer No List all CustomerEvents related to a specific Customer String
IdOffer No List all CustomerEvents related to a specific Offer Integer
ReferenceOffer No List all CustomerEvents related to a specific Offer String
IdSubscription No List all CustomerEvents related to a specific Subscription Integer

See CustomerEvent Extra Data if you need more additionnal data to be returned.

You can combine these parameters to get exactly what you are looking for.

Example:

GET /Notification/CustomerEvents/?IdBusiness=2&TypeTrigger=CustomerAdded&DateCreationMin=2023-07-27T13:54:00&Extra=Customer&Extra=AddressBilling

Returns