--- title: "Show Terms of Service document" description: "Get your cardholders to accept Adyen's Terms of Service" url: "https://docs.adyen.com/issuing/add-manage-funds/top-ups/sign-terms-of-service" source_url: "https://docs.adyen.com/issuing/add-manage-funds/top-ups/sign-terms-of-service.md" canonical: "https://docs.adyen.com/issuing/add-manage-funds/top-ups/sign-terms-of-service" last_modified: "2026-04-28T13:08:00+02:00" language: "en" --- # Show Terms of Service document Get your cardholders to accept Adyen's Terms of Service [View source](/issuing/add-manage-funds/top-ups/sign-terms-of-service.md) Before you can set up recurring top-ups, you must accept Adyen's Terms of Service for top-up contracts. The Terms of Service document must be accepted by an individual legal entity that represents a physical person. For organizations, the document must be accepted by an authorized signatory of the organization. For example: * A cardholder accepts the document on their own behalf. * The owner of a restaurant accepts the document on behalf of the legal entity that represents the business. ## Requirements Before you begin, take into account the following requirements and preparations. | Requirement | Description | | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Integration type** | Adyen Issuing integration. | | **[API credential roles](/development-resources/api-credentials/roles/)** | Make sure that you have the credentials for the [Legal Entity Management API](https://docs.adyen.com/api-explorer/legalentity/latest/overview) (in the format **ws\[123456]@Scope.Company\[YourCompanyAccount]**) | | **Setup steps** | This workflow is only required if you are configuring top-ups using the API. If you are using the Customer Area, this is handled during the setup wizard. Before you begin, make sure that you created the legal entity connected to the account holder. This is the same legal entity that accepts the Terms of Service document. | ## How it works To generate and accept the Terms of Service, follow these steps: 1. Optionally, make an API request to [check if your cardholder has already signed the Terms of Service](#check-existing-acceptance). 2. Make an API request to [generate the Terms of Service document](#generate-document). 3. [Present the Terms of Service document](#present-document) to your cardholder. 4. Make an API request to [confirm that your cardholder has accepted the Terms of Service](#accept-tos). ## Check the Terms of Service status To see if your cardholder has already accepted the Terms of Service for top-up contracts: 1. Make a GET [/legalEntities/{id}/termsOfServiceAcceptanceInfos](https://docs.adyen.com/api-explorer/legalentity/latest/get/legalEntities/\(id\)/termsOfServiceAcceptanceInfos) request with the [id](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#responses-200-id) of the main legal entity in the path. The main legal entity is the legal entity that accepts the Terms of Service. For sole proprietorships, this is the individual legal entity ID of the owner. For organizations, this is the ID of the organization. **Get Terms of Service information for a legal entity** ```bash curl https://kyc-test.adyen.com/lem/v3/legalEntities/LE00000000000000000000001/termsOfServiceAcceptanceInfos \ -H 'x-api-key: ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' \ -X GET \ ``` 2. The response returns a `data` array. Each object in the array contains the details of a Terms of Service document that the legal entity has accepted. * **If no terms have been accepted**: The response returns an empty `data` array. * **If terms have been accepted**: Check the `data` array for an object where the `type` is set to `directDebit`. If this object is present, your cardholder has already accepted the Terms of Service for top-up contracts and you can skip the remaining steps. The response contains the following fields: | Parameter | Description | | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | [createdAt](https://docs.adyen.com/api-explorer/legalentity/latest/get/legalEntities/_id_/termsOfServiceAcceptanceInfos#responses-200-data-createdAt) | The date the document was created. | | [id](https://docs.adyen.com/api-explorer/legalentity/latest/get/legalEntities/_id_/termsOfServiceAcceptanceInfos#responses-200-data-id) | The unique identifier of the accepted document. | | [acceptedBy](https://docs.adyen.com/api-explorer/legalentity/latest/get/legalEntities/_id_/termsOfServiceAcceptanceInfos#responses-200-data-acceptedBy) | The [id](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#responses-200-id) of the individual who accepted the terms of service. | | [acceptedFor](https://docs.adyen.com/api-explorer/legalentity/latest/get/legalEntities/_id_/termsOfServiceAcceptanceInfos#responses-200-data-acceptedFor) | The [id](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#responses-200-id) of the main legal entity. | | [type](https://docs.adyen.com/api-explorer/legalentity/latest/get/legalEntities/_id_/termsOfServiceAcceptanceInfos#responses-200-data-type) | The type of document based on the services and capabilities requested. | **Response** ```json { "data": [ { "acceptedBy": "LE00000000000000000000002", "acceptedFor": "LE00000000000000000000001", "createdAt": "2022-12-05T13:36:58.212253Z", "id": "TOSA000AB00000000B2AAAB2BA0AA0", "type": "directDebit" } ] } ``` ## Generate the Terms of Service document To generate the Terms of Service document: 1. Make a POST [/legalEntities/{id}/termsOfService](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService) request, specifying the [id](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#responses-200-id) of the main legal entity in the path. For sole proprietorships, this is the individual legal entity ID of the owner. For organizations, this is the ID of the organization. | Parameter | Required | Description | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService#request-type) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The type of document based on the services and capabilities requested. Set this to **directDebit** for topup contracts. | | [language](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService#request-language) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The language used for the Terms of Service document, specified by the two letter [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) language code. Possible values:- **en** for English - **fr** for French Note that French is only available for some integration types in certain countries/regions. Reach out to your Adyen contact for more information. | | [termsOfServiceDocumentFormat](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService#request-termsOfServiceDocumentFormat) | | The requested format for the Terms of Service document. Possilble values:- **JSON** (default) - **PDF** - **TXT** . | **Generate the Terms of Service document** ```bash curl https://kyc-test.adyen.com/lem/v3/legalEntities/LE00000000000000000000001/termsOfService \ -H 'x-api-key: ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "type": "directDebit", "language": "en" }' ``` 2. The response contains the following fields: | Parameter | Description | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [document](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService#responses-200-document) | The generated document in the Base64-encoded format. Present this to your cardholder in the [next step](#present-document). | | [id](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService#responses-200-id) | The unique identifier of the legal entity. For sole proprietorships, this is the individual legal entity ID of the owner. For organizations, this is the ID of the organization. | | [language](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService#responses-200-language) | The language of the document. | | [type](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService#responses-200-type) | The type of document based on the services and capabilities requested. | | [termsOfServiceDocumentId](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService#responses-200-termsOfServiceDocumentId) | The unique identifier of the document. Use this when you confirm that your cardholder has [accepted the Terms of Service](#accept-tos). | | [termsOfServiceDocumentFormat](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService#request-termsOfServiceDocumentFormat) | The requested format for the Terms of Service document. Possilble values:- **JSON** (default) - **PDF** - **TXT** | Depending on your integration, your cardholder may need to accept more than one Terms of Service document. In this case, every required [document](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/_id_/termsOfService#responses-200-document) and [termsOfServiceDocumentId](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/_id_/termsOfService#responses-200-termsOfServiceDocumentId) is returned in the response. **Response** ```json { "id": "LE00000000000000000000001", "type": "directDebit", "language": "en", "document": "termsOfServiceDocumentResponse" , "termsOfServiceDocumentId": "abc123", "termsOfServiceDocumentFormat": "JSON" } ``` ## Present the Terms of Service document You need to ask your cardholder to review and accept the Terms of Service document. The process depends on the format you requested in the previous step: * Use **JSON** if you want to render the document directly in your UI using the Adyen Document Viewer. * Use **PDF** or **TXT** for a simpler flow where your cardholder downloads and reviews the document. ### Tab: Format: JSON To present the document to your cardholder, you can use the Adyen Document Viewer to render the document on your website. Before passing the document to the Adyen Document Viewer, you need to decode it. Use the following code to decode the document and pass it to the Document Viewer: ```js const documentViewer = new AdyenDocumentViewer('#test'); const document = JSON.parse(decodeURIComponent(escape(window.atob(termsOfServiceDocumentResponse.document)))); documentViewer.render(document); ``` ### Tab: Format: PDF or TXT In the response from the previous step, take the Base64-encoded data from the [document](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/termsOfService#responses-200-document). Decode it and present it to your cardholder in your UI. ## Confirm the Terms of Service acceptance To confirm that your cardholder has accepted the Terms of Service: 1. Make a PATCH [/legalEntities/{id}/termsOfService/termsOfServicedocumentid](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)/termsOfService/\(termsofservicedocumentid\)) request, specifying the [id](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#responses-200-id) of the main legal entity and the [termsOfServiceDocumentId](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/_id_/termsOfService#responses-200-termsOfServiceDocumentId) of the document in the path. For sole proprietorships, include the legal entity ID of the owner in the path. For organizations, include the legal entity ID of the organization in the path. In the body of the request, specify the following: | Parameter | Required | Description | | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [acceptedBy](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/_id_/termsOfService/_termsofservicedocumentid_#request-acceptedBy) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The individual legal entity [id](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#responses-200-id) who accepts the Terms of Service. | | [ipAddress](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/_id_/termsOfService/_termsofservicedocumentid_#request-ipAddress) | | The IP address of the individual accepting the Terms of Service. | This request populates the Terms of Service document with the data of the main legal entity. For sole proprietorships, this is the information for the individual legal entity of the owner. For organizations, this means the document contains both the data for the organization and the individual legal entity of the authorized signatory who accepted the document. **Accept Terms of Service document** ```bash curl https://kyc-test.adyen.com/lem/v3/legalEntities/LE00000000000000000000001/termsOfService/abc123 \ -H 'x-api-key: ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' \ -H 'content-type: application/json' \ -X PATCH \ -d '{ "acceptedBy" : "LE00000000000000000000002", "ipAddress" : "127.0.0.1" }' ``` The response returns the following information. | Parameter | Description | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [acceptedBy](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/_id_/termsOfService/_termsofservicedocumentid_#responses-200-acceptedBy) | The individual legal entity [id](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#responses-200-id) who accepted the Terms of Service. | | [id](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/_id_/termsOfService/_termsofservicedocumentid_#responses-200-id) | The unique identifier of the accepted document. | | [ipAddress](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/_id_/termsOfService/_termsofservicedocumentid_#responses-200-ipAddress) | The IP address of the individual accepting the Terms of Service. Returned only if provided in the request. | | [language](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/_id_/termsOfService/_termsofservicedocumentid_#responses-200-language) | The language of the document. | | [termsOfServiceDocumentId](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/_id_/termsOfService/_termsofservicedocumentid_#responses-200-termsOfServiceDocumentId) | The unique identifier of the document. | | [type](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/_id_/termsOfService/_termsofservicedocumentid_#responses-200-type) | The type of document based on the services and capabilities requested. | **Terms of Service document accepted** ```json { "acceptedBy": "LE00000000000000000000002", "id": "TOSA000AB00000000B2AAAB2BA0AA0", "ipAddress": "127.0.0.1", "language": "en", "termsOfServiceDocumentId": "abc123", "type": "directDebit" } ``` 2. After receiving a successful response, confirm that the document is now correctly linked to the legal entity record. Follow the steps in [Check the Terms of Service status](#check-existing-acceptance) to verify that the `type` **directDebit** is now returned in the acceptance information. ## See also ###### [Create recurring top-ups](/issuing/add-manage-funds/top-ups/create-recurring-top-ups) [Learn how to configure recurring top-ups for your balance accounts.](/issuing/add-manage-funds/top-ups/create-recurring-top-ups) ###### [Manage recurring top-ups](/issuing/add-manage-funds/top-ups/manage-recurring-top-ups) [Learn how to view, change, and delete recurring top-ups.](/issuing/add-manage-funds/top-ups/manage-recurring-top-ups) ###### [Top-up webhooks](/issuing/add-manage-funds/top-ups/top-up-webhooks) [Stay updated about changes to the recurring top-ups on your platform.](/issuing/add-manage-funds/top-ups/top-up-webhooks)