Create an auto route

​

Create an auto route and provision dedicated deposit addresses. The routing configuration is immutable; only name stays editable through PATCH /rulesets/{id}. The name is not part of the idempotencyKey comparison, so a same-key retry returns the stored auto route under its current name. The recipient must be an ACTIVE wallet registered to the owning account. Optional senderUserId links a user with a saved location in that exact account; the link is immutable and uses the Receive creation entitlement. Pass subaccountId to create one for a direct child. Addresses start PENDING and provision asynchronously. INSTANT creation requires a configured delivery asset and operational wallet. With forceInstant: true, deposits wait for instant settlement when the corridor or pool is unavailable. Without it, an unavailable corridor or pool falls back to NETTED. A disabled payout asset is held in either mode. Deposits over the applicable account threshold are held.

Body

required
application/json
  • Required at auto route creation when beneficiary collection is enabled. Saved for payments of $3,000 or more between different users. See https://docs.bettermoney.com/travel-rule.

    Required at auto route creation when beneficiary collection is enabled. Saved for payments of $3,000 or more between different users. See https://docs.bettermoney.com/travel-rule.

    • Individual beneficiary’s date of birth, YYYY-MM-DD. Must not be in the future.

    • Individual beneficiary’s family name.

    • Individual beneficiary’s given name.

    • Whether the beneficiary controls the destination wallet without a wallet provider.

    • Individual beneficiary’s country and subdivision of residence.

      Properties: 2
    • Legal entity identifier (LEI) of the wallet provider, not the beneficiary. Required for hosted wallets; omit or pass an empty string for self-hosted wallets. Find it with GET /travel-rule/vasps.

  • How TBMC’s fee is collected. invoiced (the default) bills it on the monthly invoice and the recipient receives the full amount. deducted takes it out of the payment: the recipient receives the funding amount minus the fee.

  • Properties: 1
  • Create this under one of your subaccounts instead of the authenticated account. Must be a direct child of the authenticated account.

Responses

  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for post/api/v1/rulesets
curl https://api.bettermoney.com/api/v1/rulesets \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
  "beneficiary": {
    "type": "individual",
    "givenName": "",
    "familyName": "",
    "dateOfBirth": "",
    "location": {
      "country": "",
      "subdivision": ""
    },
    "isSelfHosted": true,
    "legalEntityIdentifier": ""
  },
  "name": "",
  "senderUserId": "",
  "deliveredAsset": "",
  "deliveredChain": "",
  "toAddress": "",
  "mode": "NETTED",
  "forceInstant": true,
  "feeCollection": "invoiced",
  "metadata": {
    "additionalProperty": "anything"
  },
  "idempotencyKey": "",
  "subaccountId": ""
}'
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "accountId": "123e4567-e89b-12d3-a456-426614174000",
  "senderUserId": null,
  "name": null,
  "status": "ACTIVE",
  "deliveredAsset": "string",
  "deliveredChain": "string",
  "toAddress": "string",
  "mode": "NETTED",
  "forceInstant": false,
  "feeCollection": "invoiced",
  "metadata": {
    "additionalProperty": "anything"
  },
  "addresses": [
    {
      "chain": "string",
      "failureReason": "string",
      "status": "PENDING",
      "address": null
    }
  ],
  "createdAt": "2026-10-22T14:42:28.555Z",
  "beneficiary": {
    "type": "individual",
    "givenName": "string",
    "familyName": "string",
    "dateOfBirth": "2026-10-22",
    "location": {
      "country": "string",
      "subdivision": "string"
    },
    "isSelfHosted": true,
    "legalEntityIdentifier": "string"
  }
}