pragmatic.

Canadian mortgage tools · CAD

Debt Service (GDS/TDS)

Current public data and calculations from Pragmatic Mortgage. Anonymous access; no account required.

calculator
slug
debt-service
title
Debt Service (GDS/TDS)
description
Full ratio breakdown with policy toggles.
category
qualification
input Schema
{
  "type": "object",
  "properties": {
    "mortgageAmount": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "pattern": "^-?\\d+(?:\\.\\d+)?$"
        }
      ]
    },
    "nominalRatePercent": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "pattern": "^-?\\d+(?:\\.\\d+)?$"
        }
      ]
    },
    "amortization": {
      "type": "object",
      "properties": {
        "years": {
          "type": "integer",
          "minimum": 0,
          "maximum": 40
        },
        "months": {
          "type": "integer",
          "minimum": 0,
          "maximum": 11
        }
      },
      "required": [
        "years",
        "months"
      ],
      "additionalProperties": false
    },
    "propertyTaxes": {
      "type": "object",
      "properties": {
        "amount": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "pattern": "^-?\\d+(?:\\.\\d+)?$"
            }
          ]
        },
        "frequency": {
          "type": "string",
          "enum": [
            "monthly",
            "annual"
          ]
        }
      },
      "required": [
        "amount",
        "frequency"
      ],
      "additionalProperties": false
    },
    "heat": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "pattern": "^-?\\d+(?:\\.\\d+)?$"
        }
      ]
    },
    "condoFees": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "pattern": "^-?\\d+(?:\\.\\d+)?$"
        }
      ]
    },
    "monthlyDebts": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "pattern": "^-?\\d+(?:\\.\\d+)?$"
        }
      ]
    },
    "grossAnnualIncome": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "pattern": "^-?\\d+(?:\\.\\d+)?$"
        }
      ]
    },
    "otherShelterExpenses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "enum": [
              "Option A",
              "Option B",
              "Option C",
              "Current payment",
              "Current offer",
              "Alternative offer",
              "Lender retention",
              "Market offer",
              "Prepayment",
              "Lump sum",
              "Recurring increase"
            ]
          },
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^-?\\d+(?:\\.\\d+)?$"
              }
            ]
          },
          "frequency": {
            "type": "string",
            "enum": [
              "monthly",
              "annual"
            ]
          }
        },
        "required": [
          "label",
          "amount",
          "frequency"
        ],
        "additionalProperties": false
      },
      "default": []
    },
    "otherExpenses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "enum": [
              "Option A",
              "Option B",
              "Option C",
              "Current payment",
              "Current offer",
              "Alternative offer",
              "Lender retention",
              "Market offer",
              "Prepayment",
              "Lump sum",
              "Recurring increase"
            ]
          },
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^-?\\d+(?:\\.\\d+)?$"
              }
            ]
          },
          "frequency": {
            "type": "string",
            "enum": [
              "monthly",
              "annual"
            ]
          }
        },
        "required": [
          "label",
          "amount",
          "frequency"
        ],
        "additionalProperties": false
      },
      "default": []
    },
    "otherIncome": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "enum": [
              "Option A",
              "Option B",
              "Option C",
              "Current payment",
              "Current offer",
              "Alternative offer",
              "Lender retention",
              "Market offer",
              "Prepayment",
              "Lump sum",
              "Recurring increase"
            ]
          },
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^-?\\d+(?:\\.\\d+)?$"
              }
            ]
          },
          "frequency": {
            "type": "string",
            "enum": [
              "monthly",
              "annual"
            ]
          }
        },
        "required": [
          "label",
          "amount",
          "frequency"
        ],
        "additionalProperties": false
      },
      "default": []
    }
  },
  "required": [
    "mortgageAmount",
    "nominalRatePercent",
    "amortization",
    "propertyTaxes",
    "heat",
    "condoFees",
    "monthlyDebts",
    "grossAnnualIncome"
  ],
  "additionalProperties": false
}

Open the full calculator → · Structured data (JSON)