(EOL 30th September 2020) - Optional reports to verify you hold the same entitlement data as Bango
If you store entitlement data on your own systems, you can supply it regularly to Bango to allow Bango to perform a reconciliation process and send you reconciliation reports.
The reconciliation process checks that your data matches the Bango data, and highlights any problems. Bango performs similar reconciliation processes with merchants who make their products and services available through the Bango Resale API.
Unless otherwise agreed, the Bango data is considered the source of truth.
To supply reconciliation data to Bango, you need an SFTP site that Bango can access. Give the connection details of your SFTP site to Bango Support, including the credentials Bango should use, and then upload your reconciliation data to the site as necessary. Bango will make reconciliation reports available to you by email or SFTP upload.
Supply the data to Bango in RFC 4180 CSV format, using the columns defined for entitlement reports.
When comparing the data you supply to the data in the Bango Platform, Bango checks pairs of records with the same value for BangoEntitlementId
.
Currently, reconciliation considers the pair to match only when the ProductKey
, MerchantKey
, ResellerKey
, and Status
are identical. If any values are different, the result is a mismatch.
If a BangoEntitlementId
value is present in one set of data and not the other, this is considered a mismatch.
Bango generates two reports: one for matched entitlements, and one for unmatched entitlements. Each report contains the same columns.
Column name | Description |
---|---|
BangoEntitlementId | (UUID string) Unique identifier for an entitlement |
BangoUserId | (number) Unique identifier for the user, defined by Bango |
ResellerCustomerId | (string) Unique identifier for the user, used by the reseller |
ProductKey | (string) Identifier for the merchant service, for example 30_DAYS_MUSIC |
DisplayName | (string) User-visible string describing the entitlement, for example 30 days Bango music |
MerchantKey | (string) Identifier for the merchant, for example BANGO_ENTERTAINMENT |
ResellerKey | (string) Identifier for the reseller, for example, MY_RESELLER_KEY |
Status | (string) Entitlement status, one of ACTIVE , SUSPENDED , CANCELLED , REVOKED , PENDING , or FAILED |
ActivationCode | (string) Merchant-specific code or token used for the entitlement activation |
OfferKey | (string) Entitlement offer, for example BUNDLE . The empty string if no offer applies. |
DateCreated | (ISO 8601 timestamp string) When the entitlement record was created |
DateActivated | (ISO 8601 timestamp string or null ) When the entitlement was activated, or null if it has never been activated |
DateExpiry | (ISO 8601 timestamp string or null ) When the entitlement expires, or null if it has no expiry time |
DateEnded | (ISO 8601 timestamp string or null ) When the entitlement was canceled or revoked, or null if it has never been canceled or revoked |
DateLastUpdated | (ISO 8601 timestamp string) When the entitlement record was last updated |
IsReconciled | (TRUE or FALSE ) Whether the entitlement record is reconciled |
ReconciliationDescription | (string) Short description of the reconciliation status: if empty, Bango has not received any record with that BangoEntitlementId value |
Here's an example of a matched entitlements report:
BangoEntitlementId,BangoUserId,ResellerCustomerId,ProductKey,DisplayName,MerchantKey,ResellerKey,Status,ActivationCode,OfferKey,DateCreated,DateActivated,DateExpiry,DateEnded,DateLastUpdated,IsReconciled,ReconciliationDescription
"da0836e0-9ac2-4bb1-819f-87b39e59c990",123456789,"+4407123456789","30_DAYS_MUSIC","30 days of Bango music","BANGO_ENTERTAINMENT","MY_RESELLER_KEY","ACTIVE","","BUNDLE","2017-01-01T01:02:03Z","2017-01-01T01:02:03Z",NULL,NULL,"2017-01-01T01:02:03Z",TRUE,"Reconciled in file {Filename}"
"387bf1af-7b26-4535-82dd-cb9b9731ae1d",123456789,"+4407123456789","30_DAYS_MUSIC","30 days of Bango music","BANGO_ENTERTAINMENT","MY_RESELLER_KEY","ACTIVE","","BUNDLE","2017-01-16T10:30:05Z","2017-01-16T10:30:05Z",NULL,NULL,"2017-01-16T10:30:05Z",TRUE,"Reconciled in file {Filename}"
"6a841d19-f5eb-4354-bfe1-c7a135b60ab8",123456789,"+4407123456789","30_DAYS_MUSIC","30 days of Bango music","BANGO_ENTERTAINMENT","MY_RESELLER_KEY","CANCELLED","","","2016-12-15 10:30:05","2016-12-15 10:30:05",NULL,"2017-01-16T10:30:05Z","2017-01-16T10:30:05Z",TRUE,"Reconciled in file {Filename}"
"a25100b8-4e0c-4e37-b921-cac9cb1e930f",123456789,"+4407123456789","30_DAYS_MUSIC","30 days of Bango music","BANGO_ENTERTAINMENT","MY_RESELLER_KEY","PENDING","","BUNDLE","2017-01-16T10:30:05Z",NULL,NULL,NULL,"2017-01-16T10:30:05Z",TRUE,"Reconciled in file {Filename}"
Here's an example of an unmatched entitlements report:
BangoEntitlementId,BangoUserId,ResellerCustomerId,ProductKey,DisplayName,MerchantKey,ResellerKey,Status,ActivationCode,DateCreated,DateActivated,DateExpiry,DateEnded,DateLastUpdated,IsReconciled,ReconciliationDescription
"da0836e0-9ac2-4bb1-819f-87b39e59c990",123456789,"+4407123456789","30_DAYS_MUSIC","30 days of Bango music","BANGO_ENTERTAINMENT","MY_RESELLER_KEY","ACTIVE","","BUNDLE","2017-01-01T01:02:03Z","2017-01-01T01:02:03Z",NULL,NULL,"2017-01-01T01:02:03Z",FALSE,""
"387bf1af-7b26-4535-82dd-cb9b9731ae1d",123456789,"+4407123456789","30_DAYS_MUSIC","30 days of Bango music","BANGO_ENTERTAINMENT","MY_RESELLER_KEY","ACTIVE","","","2017-01-16T10:30:05Z","2017-01-16T10:30:05Z",NULL,NULL,"2017-01-16T10:30:05Z",FALSE,"Entitlement identifier mismatch - received 60_DAYS_MUSIC"
"6a841d19-f5eb-4354-bfe1-c7a135b60ab8",123456789,"+4407123456789","30_DAYS_MUSIC","30 days of Bango music","BANGO_ENTERTAINMENT","MY_RESELLER_KEY","CANCELLED","","BUNDLE","2016-12-15 10:30:05","2016-12-15 10:30:05",NULL,"2017-01-16T10:30:05Z","2017-01-16T10:30:05Z",FALSE,"Status mismatch - received ACTIVE"
"a25100b8-4e0c-4e37-b921-cac9cb1e930f",123456789,"+4407123456789","30_DAYS_MUSIC","30 days of Bango music","BANGO_ENTERTAINMENT","MY_RESELLER_KEY","PENDING","","","2017-01-16T10:30:05Z",NULL,NULL,NULL,"2017-01-16T10:30:05Z",FALSE,""