Platform terms of service agreement

Every account that needs a capability other than transfers must accept Moov's platform agreement before it can be used in a transfer. You collect the acceptance in your app and send it to Moov on the account.

Your app must display links to Moov's privacy policy and platform agreement, and the user must accept them. Choose how to record the acceptance:

Method How it works Availability
Hosted onboarding The onboarding form collects acceptance; nothing else to send Everyone (simplest)
Terms of service Drop Pre-built UI that shows the terms and generates a token Everyone (recommended)
Moov.js methods Accept the terms or get a token in your own UI Everyone
Terms of service token Get a token from the API and send it on the account Approved partners only
Manual entry Send the acceptance date, IP, user agent, and domain Approved partners only

Tokens are generated client-side, so authenticate your application first.

To confirm acceptance, check that account.tos-acceptance no longer appears in the account's capability requirements.currentlyDue.

Terms of service Drop

Moov.js is a browser client that collects PII data so you don’t have to be responsible for handling and storing sensitive customer information.

Moov.js provides a pre-built terms of service Drop. With the pre-built user interface, you can integrate our privacy policy and terms of service while simultaneously generating a token in the background. The token can be patched to an account using the accounts PATCH endpoint.

Alternate Moov.js implementation

Moov.js can also accept the terms and update the account in one call (moov.accounts.acceptTermsOfService), or just generate a token (moov.accounts.getTermsOfServiceToken). See platform terms of service agreement in the Moov.js reference.

API implementation

The API implementations outlined below are not available to everyone. If you are not authorized by Moov to use these flows, you will receive a 400 error.

To confirm the platform terms of service agreement acceptance via the API, you must send either a token, or enter the acceptance manually. You can provide this information when creating an account, or by updating an existing account. For server-side integrations, Moov recommends the manual method.

Terms of service token

You can retrieve and send the token when creating an account, or you can update the account after it's been created.

To send Moov the terms of service token, retrieve the token with the terms of service GET endpoint. Use the account POST endpoint to send the token when creating an account, or use the PATCH endpoint when updating an account.

# Get the terms of service token
curl -X GET "https://api.moov.io/tos-token" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2026.07.00"
# Send the token when creating an account
curl -X POST "https://api.moov.io/accounts" \
# ...
--data-raw '{
  "accountType": "account-type",
  "profile": {...},
  "termsOfService": {
    "token": "terms-of-service-token"
  },
  "foreignID": "unique-correlation-id"
}'

Manual entry

You'll need to capture a date-time, IP address, user agent and domain to manually enter a terms of service agreement. For manual entry when creating an account, use the create account POST endpoint. For manual entry when updating an account, use the patch account PATCH endpoint.

curl -X POST "https://api.moov.io/accounts" \
# ...
--data-raw '{
  "accountType": "your-account-type",
  "profile": {...},
  "termsOfService": {
    "manual": {
      "acceptedDate": "accepted-date",
      "acceptedIP": "accepted-ip",
      "acceptedUserAgent": "accepted-user-agent",
      "acceptedDomain": "accepted-domain"
    }
  },
  "foreignID": "unique-correlation-id"
}'