Moov · Schema

PaymentLink

BankingEmbedded FinanceFinancial InfrastructureMoney MovementPaymentsTransfers

Properties

Name Type Description
code object
paymentLinkType object
mode object
status object
partnerAccountID string The partner's Moov account ID.
merchantAccountID string The merchant's Moov account ID.
ownerAccountID string The payment link's owner's Moov account ID.
merchantPaymentMethodID string The merchant's preferred payment method ID. Must be a wallet payment method.
link string Link to the payment landing page for this payment link.
amount object The fixed amount of the payment link. In API versions before `2026.07.00`, this was a required field. In API version `2026.07.00` and beyond, this field is present for `payment` and `payout` links and
salesTaxAmount object Optional sales tax amount.
uses integer The number of times this payment link has been used.
maxUses integer An optional limit on the number of times this payment link can be used. **For payouts, `maxUses` is always 1.**
lastUsedOn string The timestamp when this payment link was last used.
expiresOn string An optional expiration date for this payment link.
display object
customer object
payment object
payout object
lineItems object
createdOn string
updatedOn string
disabledOn string
View JSON Schema on GitHub

JSON Schema

moov-payment-link-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/moov/main/json-schema/moov-payment-link-schema.json",
  "title": "PaymentLink",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/moov-openapi.yml#/components/schemas/PaymentLink",
  "type": "object",
  "required": [
    "code",
    "paymentLinkType",
    "mode",
    "status",
    "partnerAccountID",
    "merchantAccountID",
    "ownerAccountID",
    "merchantPaymentMethodID",
    "link",
    "amount",
    "uses",
    "display",
    "customer",
    "createdOn",
    "updatedOn"
  ],
  "properties": {
    "code": {
      "$ref": "#/$defs/PaymentLinkCode"
    },
    "paymentLinkType": {
      "$ref": "#/$defs/PaymentLinkType"
    },
    "mode": {
      "$ref": "#/$defs/Mode"
    },
    "status": {
      "$ref": "#/$defs/PaymentLinkStatus"
    },
    "partnerAccountID": {
      "type": "string",
      "description": "The partner's Moov account ID."
    },
    "merchantAccountID": {
      "type": "string",
      "description": "The merchant's Moov account ID."
    },
    "ownerAccountID": {
      "type": "string",
      "description": "The payment link's owner's Moov account ID."
    },
    "merchantPaymentMethodID": {
      "type": "string",
      "description": "The merchant's preferred payment method ID. Must be a wallet payment method."
    },
    "link": {
      "type": "string",
      "format": "uri",
      "description": "Link to the payment landing page for this payment link."
    },
    "amount": {
      "allOf": [
        {
          "$ref": "#/$defs/Amount"
        }
      ],
      "description": "The fixed amount of the payment link.\n\nIn API versions before `2026.07.00`, this was a required field.\n\nIn API version `2026.07.00` and beyond, this field is present for `payment` and `payout` links and omitted\nfor `customAmountPayment` links, where the payor chooses the amount."
    },
    "salesTaxAmount": {
      "allOf": [
        {
          "$ref": "#/$defs/Amount"
        }
      ],
      "description": "Optional sales tax amount."
    },
    "uses": {
      "type": "integer",
      "format": "int64",
      "description": "The number of times this payment link has been used."
    },
    "maxUses": {
      "type": "integer",
      "format": "int64",
      "description": "An optional limit on the number of times this payment link can be used.\n\n**For payouts, `maxUses` is always 1.**"
    },
    "lastUsedOn": {
      "type": "string",
      "format": "date-time",
      "description": "The timestamp when this payment link was last used."
    },
    "expiresOn": {
      "type": "string",
      "format": "date-time",
      "description": "An optional expiration date for this payment link."
    },
    "display": {
      "$ref": "#/$defs/PaymentLinkDisplayOptions"
    },
    "customer": {
      "$ref": "#/$defs/PaymentLinkCustomerOptions"
    },
    "payment": {
      "$ref": "#/$defs/PaymentLinkPaymentDetails"
    },
    "payout": {
      "$ref": "#/$defs/PaymentLinkPayoutDetails"
    },
    "lineItems": {
      "$ref": "#/$defs/PaymentLinkLineItems"
    },
    "createdOn": {
      "type": "string",
      "format": "date-time"
    },
    "updatedOn": {
      "type": "string",
      "format": "date-time"
    },
    "disabledOn": {
      "type": "string",
      "format": "date-time"
    }
  },
  "$defs": {
    "ACHCompanyEntryDescription": {
      "type": "string",
      "minLength": 4,
      "maxLength": 10,
      "description": "An optional override of the default NACHA company entry description for a transfer."
    },
    "ACHOriginatingCompanyName": {
      "type": "string",
      "minLength": 4,
      "maxLength": 16,
      "description": "An optional override of the default NACHA company name for a transfer."
    },
    "ACHPaymentDetails": {
      "type": "object",
      "properties": {
        "companyEntryDescription": {
          "$ref": "#/$defs/ACHCompanyEntryDescription"
        },
        "originatingCompanyName": {
          "$ref": "#/$defs/ACHOriginatingCompanyName"
        }
      },
      "description": "Options for payment links used to collect an ACH payment."
    },
    "Amount": {
      "type": "object",
      "required": [
        "currency",
        "value"
      ],
      "properties": {
        "currency": {
          "$ref": "#/$defs/Currency"
        },
        "value": {
          "type": "integer",
          "format": "int64",
          "description": "Quantity in the smallest unit of the specified currency. \n\nIn USD this is cents, for example, $12.04 is 1204 and $0.99 is 99."
        }
      }
    },
    "AmountDecimal": {
      "type": "object",
      "required": [
        "currency",
        "valueDecimal"
      ],
      "properties": {
        "currency": {
          "$ref": "#/$defs/Currency"
        },
        "valueDecimal": {
          "type": "string",
          "pattern": "^\\d+\\.\\d{1,9}$",
          "description": "A decimal-formatted numerical string that represents up to 9 decimal place precision. \n\nFor example, $12.987654321 is '12.987654321'."
        }
      }
    },
    "CallToAction": {
      "type": "string",
      "enum": [
        "pay",
        "book",
        "subscribe",
        "donate",
        "confirm",
        "auto"
      ],
      "description": "The text to be displayed on web form's submit button.\n\nIf set to \"auto\" the UI will automatically select between \n\"pay\" and \"confirm\" for payments and payouts respectively."
    },
    "CardDynamicDescriptor": {
      "type": "string",
      "minLength": 4,
      "maxLength": 22,
      "description": "An optional override of the default card statement descriptor for a transfer. Accounts must be enabled by Moov to set this field."
    },
    "CardPaymentDetails": {
      "type": "object",
      "properties": {
        "dynamicDescriptor": {
          "$ref": "#/$defs/CardDynamicDescriptor"
        }
      },
      "description": "Options for payment links used to collect a card payment."
    },
    "CollectionPaymentMethodType": {
      "type": "string",
      "enum": [
        "apple-pay",
        "card-payment",
        "ach-debit-collect"
      ],
      "description": "Payment methods allowed for collecting a payment."
    },
    "Currency": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "A 3-letter ISO 4217 currency code."
    },
    "DisbursementPaymentMethodType": {
      "type": "string",
      "enum": [
        "push-to-card",
        "rtp-credit",
        "ach-credit-same-day",
        "ach-credit-standard",
        "push-to-apple-pay",
        "push-to-google-pay"
      ],
      "description": "Payment methods allowed for disbursing funds."
    },
    "Email": {
      "type": "string",
      "maxLength": 255,
      "format": "email"
    },
    "ImageID": {
      "type": "string",
      "description": "Unique identifier for a image resource."
    },
    "ImagePublicID": {
      "type": "string",
      "pattern": "[A-Za-z0-9_-]{21}",
      "description": "A unique identifier for an image, used in public image links."
    },
    "Mode": {
      "type": "string",
      "enum": [
        "sandbox",
        "production"
      ],
      "description": "The operating mode for an account."
    },
    "PaymentLinkCode": {
      "type": "string",
      "description": "Unique code identifying this payment link."
    },
    "PaymentLinkCustomerOptions": {
      "type": "object",
      "properties": {
        "requireAddress": {
          "type": "boolean",
          "description": "If true, a billing address is required when completing the payment form."
        },
        "requirePhone": {
          "type": "boolean",
          "description": "If true, a phone number is required when completing the payment form."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional free-form metadata for the Moov account that will represent this customer."
        }
      }
    },
    "PaymentLinkDisplayOptions": {
      "type": "object",
      "required": [
        "title",
        "description",
        "callToAction"
      ],
      "properties": {
        "title": {
          "type": "string",
          "description": "The payment page title displayed to the user."
        },
        "description": {
          "type": "string",
          "description": "A payment description displayed to the user."
        },
        "callToAction": {
          "$ref": "#/$defs/CallToAction"
        }
      },
      "description": "Customizable display options for a payment link."
    },
    "PaymentLinkLineItem": {
      "type": "object",
      "required": [
        "name",
        "basePrice",
        "quantity"
      ],
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 150,
          "description": "The name of the item."
        },
        "basePrice": {
          "allOf": [
            {
              "$ref": "#/$defs/AmountDecimal"
            }
          ],
          "description": "The base price of the item before applying option modifiers."
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "minimum": 1,
          "description": "The quantity of this item."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PaymentLinkLineItemOption"
          },
          "description": "Optional list of modifiers applied to this item (e.g., toppings, upgrades, customizations)."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PaymentLinkLineItemImageMetadata"
          },
          "description": "Optional list of images associated with this line item."
        },
        "productID": {
          "type": "string",
          "description": "Optional unique identifier associating the line item with a product."
        }
      },
      "description": "Represents a single line item in a payment link, including optional modifiers and quantity."
    },
    "PaymentLinkLineItemImageMetadata": {
      "type": "object",
      "required": [
        "imageID",
        "link",
        "publicID"
      ],
      "properties": {
        "imageID": {
          "$ref": "#/$defs/ImageID"
        },
        "altText": {
          "type": "string",
          "maxLength": 125,
          "description": "Alternative text for the image."
        },
        "link": {
          "type": "string",
          "format": "uri",
          "description": "The image's public URL."
        },
        "publicID": {
          "$ref": "#/$defs/ImagePublicID"
        }
      }
    },
    "PaymentLinkLineItemOption": {
      "type": "object",
      "required": [
        "name",
        "quantity"
      ],
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 150,
          "description": "The name of the option or modifier."
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "minimum": 1,
          "description": "The quantity of this option."
        },
        "priceModifier": {
          "allOf": [
            {
              "$ref": "#/$defs/AmountDecimal"
            }
          ],
          "description": "Optional price modification applied by this option. Can be positive, negative, or zero."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PaymentLinkLineItemImageMetadata"
          },
          "description": "Optional list of images associated with this line item option."
        },
        "group": {
          "type": "string",
          "maxLength": 100,
          "description": "Optional group identifier to categorize related options (e.g., 'toppings')."
        }
      },
      "description": "Represents a modifier or option applied to a line item."
    },
    "PaymentLinkLineItems": {
      "type": "object",
      "required": [
        "items"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PaymentLinkLineItem"
          },
          "minItems": 1,
          "description": "The list of line items."
        }
      },
      "description": "An optional collection of line items for a payment link.\nWhen line items are provided, their total plus tax must equal the payment link amount."
    },
    "PaymentLinkPaymentDetails": {
      "type": "object",
      "required": [
        "allowedMethods"
      ],
      "properties": {
        "allowedMethods": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CollectionPaymentMethodType"
          },
          "minItems": 1,
          "description": "A list of payment methods that should be supported for this payment link."
        },
        "cardDetails": {
          "$ref": "#/$defs/CardPaymentDetails"
        },
        "achDetails": {
          "$ref": "#/$defs/ACHPaymentDetails"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional free-form metadata for the transfer."
        }
      },
      "description": "Options for payment links used to collect payment."
    },
    "PaymentLinkPayoutDetails": {
      "type": "object",
      "required": [
        "allowedMethods",
        "recipient"
      ],
      "properties": {
        "allowedMethods": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/DisbursementPaymentMethodType"
          },
          "minItems": 1,
          "description": "A list of payment methods that should be supported for this payment link."
        },
        "recipient": {
          "$ref": "#/$defs/PayoutRecipient"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional free-form metadata for the transfer."
        }
      },
      "description": "Options for payout links used to send a payout."
    },
    "PaymentLinkStatus": {
      "type": "string",
      "enum": [
        "active",
        "used",
        "disabled",
        "expired"
      ]
    },
    "PaymentLinkType": {
      "type": "string",
      "enum": [
        "payment",
        "payout",
        "invoice-payment"
      ]
    },
    "PayoutRecipient": {
      "type": "object",
      "properties": {
        "email": {
          "$ref": "#/$defs/Email"
        },
        "phone": {
          "$ref": "#/$defs/PhoneNumber"
        }
      },
      "description": "Specify the intended recipient of the payout.\nEither `email` or `phone` must be specified, but not both.\n\nThis information will be used to authenticate the end user when they follow the payment link."
    },
    "PhoneNumber": {
      "type": "object",
      "properties": {
        "number": {
          "type": "string",
          "maxLength": 10
        },
        "countryCode": {
          "type": "string",
          "maxLength": 1
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/moov-payment-link"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.