Filter customers that have any financial activity (invoices, direct debits)
Adfin API (1.0.0)
Adfin uses OAuth 2.0 access tokens to authenticate all API requests.
There are two contexts in which tokens are issued:
Biller Access Tokens — Generated via the Authorization Code flow when a biller connects their Adfin account. These tokens grant access to that biller's data (invoices, payment requests, customers, etc.).
Platform Access Tokens — Generated via the Client Credentials flow for Adfin's own integrations and system events. These tokens authenticate Adfin as the platform itself (not as a specific biller) and are required for endpoints like
/api/webhook.
Filter customers that have signed their direct debit mandate after this date
Filter customers that have signed their direct debit mandate until this date
The status of the latest direct debit mandate
This flag determines whether the response should include the financial status of the customer's invoices and payments
The financial statuses of the payment situation of the customer
The start time after which the customer last updated time should be, including the start time.
- Mock serverhttps://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers
- Production API Server URLhttps://api.adfin.com/api/customers
- Staging API Server URLhttps://api.staging.adfin.com/api/customers
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers?onlyCustomersWithActivity=true&searchText=string&ddMandateSignedStartTime=2019-08-24T14%3A15%3A22Z&ddMandateSignedEndTime=2019-08-24T14%3A15%3A22Z&ddMandateStatuses=CREATED&includeCustomerFinancialDetails=true&financialStatuses=DRAFT&lastUpdatedStartTime=2019-08-24T14%3A15%3A22Z&tagIds=string&customerIds=string&page=0&size=20&sort=creationTime%2CDESC' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "customers": [ { … } ], "page": { "page": 0, "size": 0, "totalPages": 0, "totalElements": 0, "numberOfElements": 0, "sort": "string" }, "pagination": { "page": 0, "size": 0, "totalPages": 0, "totalElements": 0, "numberOfElements": 0, "sort": "string" } }
The list of the addresses for the customer. Only 1 pe supported for now
The list of tracking item catalogue IDs associated with the customer.
- Mock serverhttps://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers
- Production API Server URLhttps://api.adfin.com/api/customers
- Staging API Server URLhttps://api.staging.adfin.com/api/customers
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
https://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"id": "string",
"externalId": "string",
"name": "string",
"people": [
{
"id": "string",
"firstName": "string",
"lastName": "string",
"email": "string",
"phoneNo": "string",
"isPrimaryContact": true,
"isIncludedInCommunications": true,
"validForEmailCommunication": true,
"validForPhoneCommunication": true
}
],
"addresses": [
{
"id": "string",
"city": "string",
"postalCode": "string",
"country": "string",
"addressLine1": "string"
}
],
"externalData": {
"connectorType": "XERO",
"id": "string",
"name": "string"
},
"trackingItemIds": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"officeId": "da08ce10-cc2b-4a3d-a418-e10a176cc27a"
}'The request has succeeded and has resulted in one customer being updated.
References about this customer from external platforms Adfin integrates with, such as ID, etc.
The reason as a predefined code for why the customer is in a certain status
The tracking item catalogues associated with the customer.
{ "id": "string", "externalId": "string", "name": "string", "creationTime": "2019-08-24T14:15:22Z", "lastUpdatedTime": "2019-08-24T14:15:22Z", "people": [ { … } ], "addresses": [ { … } ], "directDebitMandate": { "id": "string", "status": "CREATED", "statusReasonCode": "PENDING_DD_CAPABILITY", "statusReason": "string", "creationTime": "2019-08-24T14:15:22Z", "lastUpdatedTime": "2019-08-24T14:15:22Z", "authorisationTime": "2019-08-24T14:15:22Z", "submissionTime": "2019-08-24T14:15:22Z", "url": "string" }, "billerBankAccount": { "accountHolderAddress": { … }, "accountHolderName": "string", "bankAccount": { … }, "bankAddress": { … }, "currencyCode": "AED" }, "timezone": "string", "discount": { "percentage": 0, "period": 0 }, "externalData": [ { … } ], "tags": [ "string" ], "status": "ACTIVE", "statusReasonCode": "MERGED", "settings": { "paymentSettings": { … } }, "trackingItems": [ { … } ], "office": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "trackingItemId": "c7c7fc03-0b17-402e-aa79-1d532a6db210", "details": { … } } }
A list of people associated with the customer. Can include contacts, representatives, or stakeholders.
A list of addresses for the customer. Currently, only one address is supported.
The list of tracking item catalogue IDs associated with the customer.
- Mock serverhttps://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers
- Production API Server URLhttps://api.adfin.com/api/customers
- Staging API Server URLhttps://api.staging.adfin.com/api/customers
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"name": "John Doe",
"people": [
{
"name": "Jane Smith",
"email": "jane.smith@example.com"
}
],
"addresses": [
{
"line1": "2 Catherine Pl",
"city": "London",
"state": "NY",
"postCode": "SW1E 6HF"
}
],
"externalData": {
"connectorType": "XERO",
"id": "string",
"name": "string"
},
"trackingItemIds": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"officeId": "da08ce10-cc2b-4a3d-a418-e10a176cc27a"
}'The request has succeeded and has resulted in one customer being updated.
References about this customer from external platforms Adfin integrates with, such as ID, etc.
The reason as a predefined code for why the customer is in a certain status
The tracking item catalogues associated with the customer.
{ "id": "string", "externalId": "string", "name": "string", "creationTime": "2019-08-24T14:15:22Z", "lastUpdatedTime": "2019-08-24T14:15:22Z", "people": [ { … } ], "addresses": [ { … } ], "directDebitMandate": { "id": "string", "status": "CREATED", "statusReasonCode": "PENDING_DD_CAPABILITY", "statusReason": "string", "creationTime": "2019-08-24T14:15:22Z", "lastUpdatedTime": "2019-08-24T14:15:22Z", "authorisationTime": "2019-08-24T14:15:22Z", "submissionTime": "2019-08-24T14:15:22Z", "url": "string" }, "billerBankAccount": { "accountHolderAddress": { … }, "accountHolderName": "string", "bankAccount": { … }, "bankAddress": { … }, "currencyCode": "AED" }, "timezone": "string", "discount": { "percentage": 0, "period": 0 }, "externalData": [ { … } ], "tags": [ "string" ], "status": "ACTIVE", "statusReasonCode": "MERGED", "settings": { "paymentSettings": { … } }, "trackingItems": [ { … } ], "office": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "trackingItemId": "c7c7fc03-0b17-402e-aa79-1d532a6db210", "details": { … } } }
- Mock serverhttps://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/{id}
- Production API Server URLhttps://api.adfin.com/api/customers/{id}
- Staging API Server URLhttps://api.staging.adfin.com/api/customers/{id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/{id}?idType=XERO&includeCustomerFinancialDetails=true' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'The customer with the specified ID.
References about this customer from external platforms Adfin integrates with, such as ID, etc.
The reason as a predefined code for why the customer is in a certain status
The tracking item catalogues associated with the customer.
{ "id": "string", "externalId": "string", "name": "string", "creationTime": "2019-08-24T14:15:22Z", "lastUpdatedTime": "2019-08-24T14:15:22Z", "people": [ { … } ], "addresses": [ { … } ], "directDebitMandate": { "id": "string", "status": "CREATED", "statusReasonCode": "PENDING_DD_CAPABILITY", "statusReason": "string", "creationTime": "2019-08-24T14:15:22Z", "lastUpdatedTime": "2019-08-24T14:15:22Z", "authorisationTime": "2019-08-24T14:15:22Z", "submissionTime": "2019-08-24T14:15:22Z", "url": "string" }, "billerBankAccount": { "accountHolderAddress": { … }, "accountHolderName": "string", "bankAccount": { … }, "bankAddress": { … }, "currencyCode": "AED" }, "timezone": "string", "discount": { "percentage": 0, "period": 0 }, "externalData": [ { … } ], "tags": [ "string" ], "status": "ACTIVE", "statusReasonCode": "MERGED", "settings": { "paymentSettings": { … } }, "trackingItems": [ { … } ], "office": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "trackingItemId": "c7c7fc03-0b17-402e-aa79-1d532a6db210", "details": { … } } }
The list of the addresses for the customer. Only 1 pe supported for now
The list of tracking item catalogue IDs associated with the customer.
- Mock serverhttps://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/{id}
- Production API Server URLhttps://api.adfin.com/api/customers/{id}
- Staging API Server URLhttps://api.staging.adfin.com/api/customers/{id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
'https://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/{id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"externalId": "string",
"name": "string",
"people": [
{
"id": "string",
"firstName": "string",
"lastName": "string",
"email": "string",
"phoneNo": "string",
"isPrimaryContact": true,
"isIncludedInCommunications": true,
"validForEmailCommunication": true,
"validForPhoneCommunication": true
}
],
"addresses": [
{
"id": "string",
"city": "string",
"postalCode": "string",
"country": "string",
"addressLine1": "string"
}
],
"externalData": {
"connectorType": "XERO",
"id": "string",
"name": "string"
},
"trackingItemIds": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"officeId": "da08ce10-cc2b-4a3d-a418-e10a176cc27a"
}'The request has succeeded and has resulted in one customer being updated.
References about this customer from external platforms Adfin integrates with, such as ID, etc.
The reason as a predefined code for why the customer is in a certain status
The tracking item catalogues associated with the customer.
{ "id": "string", "externalId": "string", "name": "string", "creationTime": "2019-08-24T14:15:22Z", "lastUpdatedTime": "2019-08-24T14:15:22Z", "people": [ { … } ], "addresses": [ { … } ], "directDebitMandate": { "id": "string", "status": "CREATED", "statusReasonCode": "PENDING_DD_CAPABILITY", "statusReason": "string", "creationTime": "2019-08-24T14:15:22Z", "lastUpdatedTime": "2019-08-24T14:15:22Z", "authorisationTime": "2019-08-24T14:15:22Z", "submissionTime": "2019-08-24T14:15:22Z", "url": "string" }, "billerBankAccount": { "accountHolderAddress": { … }, "accountHolderName": "string", "bankAccount": { … }, "bankAddress": { … }, "currencyCode": "AED" }, "timezone": "string", "discount": { "percentage": 0, "period": 0 }, "externalData": [ { … } ], "tags": [ "string" ], "status": "ACTIVE", "statusReasonCode": "MERGED", "settings": { "paymentSettings": { … } }, "trackingItems": [ { … } ], "office": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "trackingItemId": "c7c7fc03-0b17-402e-aa79-1d532a6db210", "details": { … } } }
List of workflow transition configurations, each defining a source and target workflow type
The current workflow type from which it is transitioning
The workflow type to which it is transitioning
Indicates whether auto-collect workflow is enabled
Indicates whether auto-collect is the default workflow
When true, payment collection is paused. While paused, no automatic retries or scheduled collection attempts will occur.
- Mock serverhttps://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/workflow_settings
- Production API Server URLhttps://api.adfin.com/api/customers/workflow_settings
- Staging API Server URLhttps://api.staging.adfin.com/api/customers/workflow_settings
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
https://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/workflow_settings \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"customerIds": [
"string"
],
"workflowSettings": {
"workflowTransitions": [
{
"source": "AUTO_COLLECT",
"target": "AUTO_COLLECT",
"type": "AUTOMATIC"
}
],
"autoCollect": {
"isEnabled": true,
"isDefault": true,
"pauseCollection": true,
"resumeCollectionAt": "2025-01-15T10:00:00Z"
},
"onDemand": {
"isEnabled": true,
"isDefault": true
},
"customerStatement": {
"isEnabled": true
}
}
}'The customer workflow settings were successfully updated.
List of workflow transition configurations, each defining a source and target workflow type
When true, payment collection is paused. While paused, no automatic retries or scheduled collection attempts will occur.
{ "workflowTransitions": [ { … } ], "autoCollect": { "isEnabled": true, "isDefault": true, "pauseCollection": true, "resumeCollectionAt": "2025-01-15T10:00:00Z" }, "onDemand": { "isEnabled": true, "isDefault": true }, "customerStatement": { "isEnabled": true } }
- Mock serverhttps://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/payment_settings
- Production API Server URLhttps://api.adfin.com/api/customers/payment_settings
- Staging API Server URLhttps://api.staging.adfin.com/api/customers/payment_settings
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
https://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/payment_settings \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"customerIds": [
"string"
],
"paymentSettings": {
"allowPartialPayments": true,
"minPartialPaymentAmount": 0,
"surchargeIsEnabled": true
}
}'{ "allowPartialPayments": true, "minPartialPaymentAmount": 0, "surchargeIsEnabled": true }
- Mock serverhttps://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/{id}/workflow_settings
- Production API Server URLhttps://api.adfin.com/api/customers/{id}/workflow_settings
- Staging API Server URLhttps://api.staging.adfin.com/api/customers/{id}/workflow_settings
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/{id}/workflow_settings' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "workflowTransitions": [ { … } ], "autoCollect": { "isEnabled": true, "isDefault": true, "pauseCollection": true, "resumeCollectionAt": "2025-01-15T10:00:00Z" }, "onDemand": { "isEnabled": true, "isDefault": true }, "customerStatement": { "isEnabled": true } }
- Mock serverhttps://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/{id}/payment_settings
- Production API Server URLhttps://api.adfin.com/api/customers/{id}/payment_settings
- Staging API Server URLhttps://api.staging.adfin.com/api/customers/{id}/payment_settings
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developer.adfin.com/_mock/products/partner-integration/partner-integration-api-reference/customers/{id}/payment_settings' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "allowPartialPayments": true, "minPartialPaymentAmount": 0, "surchargeIsEnabled": true }