openapi: 3.2.0 info: title: Infusionsoft Payment Methods API license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 version: '1.0' description: 'Operations tagged Payment Methods across 4 of this provider''s published API definitions: infusionsoft-keap-sdk-v2-swagger-original.yml, infusionsoft-rest-v2-2025-11-05-openapi-original.json, infusionsoft-rest-v2-openapi-original.json, infusionsoft-rest-v2-openapi.json. Each path carries the servers of the definition it was published in.' servers: - url: https://api.keap.com/crm - url: https://api.infusionsoft.com/crm/rest - url: https://api.infusionsoft.com/crm tags: - name: Payment Methods paths: /rest/v2/contacts/{contact_id}/paymentMethods/{payment_method_id}:deactivate: post: tags: - Payment Methods summary: Deactivate a Contact Payment Method description: Deactivate the specified payment method operationId: deactivatePaymentMethod parameters: - name: contact_id in: path description: ID of the contact to which the payment method belongs. required: true schema: type: string - name: payment_method_id in: path description: ID of the payment method to be deactivated. required: true schema: type: string responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' '501': description: Method Not Implemented content: application/json: schema: $ref: '#/components/schemas/Error' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/paymentMethods: get: tags: - Payment Methods summary: List of Payment Methods description: Retrieves a list of Payment Methods operationId: listPaymentMethods parameters: - name: filter in: query description: 'Filter to apply, allowed fields are: - (String) `payment_method_id` - (String) `credit_card_id` - (String) `contact_id` - (String) `merchant_account_id` - (String) `since_time` - (String) `until_time` You will need to apply the `==` operator to check the equality of one of the filters with your searched word, in the encoded form `%3D%3D`. - `filter=payment_method_id%3D%3D123` - `filter=contact_id%3D%3D123%3Bmerchant_account_id%3D%3D567` ' required: false schema: type: string - name: order_by in: query description: 'Attribute and direction to order items. One of the following fields: - `payment_method_id` - `created_time` - `contact_id` - `merchant_account_id` One of the following directions: - `desc` - `asc`' required: false schema: type: string - name: page_size in: query description: Total number of items to return per page required: false schema: type: integer format: int32 maximum: 1000 minimum: 0 example: 0 - name: page_token in: query description: Page token required: false schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListPaymentMethodsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' '501': description: Method Not Implemented content: application/json: schema: $ref: '#/components/schemas/Error' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/contacts/{contact_id}/paymentMethods: get: tags: - Payment Methods summary: List of Contact Payment Methods description: Retrieves a list of Contact Payment Methods operationId: listPaymentMethods_1 parameters: - name: contact_id in: path description: ID of the contact to which the payment method belongs. required: true schema: type: string - name: filter in: query description: 'Filter to apply, allowed fields are: - (String) `merchant_account_id` You will need to apply the `==` operator to check the equality of one of the filters with your searched word, in the encoded form `%3D%3D`. - `filter=merchant_account_id%3D%3D123` ' required: false schema: type: string - name: page_token in: query description: Page token required: false schema: type: string - name: order_by in: query description: 'Attribute and direction to order items. One of the following fields: - `created_time` One of the following directions: - `desc` - `asc`' required: false schema: type: string - name: page_size in: query description: Total number of items to return per page required: false schema: type: integer format: int32 maximum: 1000 minimum: 0 example: 0 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListContactPaymentMethodsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' '501': description: Method Not Implemented content: application/json: schema: $ref: '#/components/schemas/Error' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/contacts/{contact_id}/paymentMethods/{payment_method_id}: delete: tags: - Payment Methods summary: Delete a Contact Payment Method description: Deletes the specified payment method operationId: deletePaymentMethod parameters: - name: contact_id in: path description: ID of the contact to which the payment method belongs. required: true schema: type: string - name: payment_method_id in: path description: ID of the payment method to be deleted. required: true schema: type: string responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' '501': description: Method Not Implemented content: application/json: schema: $ref: '#/components/schemas/Error' security: - oauth2: [] servers: - url: https://api.keap.com/crm /v2/contacts/{contact_id}/paymentMethods: get: tags: - Payment Methods summary: List of Payment Methods description: Retrieves a list of Payment Methods operationId: listPaymentMethodsUsingGET parameters: - name: contact_id in: path description: ID of the contact to which the payment method belongs. required: true schema: type: string - name: filter in: query description: 'Filter to apply, allowed fields are: - (String) `merchant_account_id` You will need to apply the `==` operator to check the equality of one of the filters with your searched word, in the encoded form `%3D%3D`. - `filter=merchant_account_id%3D%3D123` You can filter across all contacts by using the `-` for the `contact_id` field. ' schema: type: string - name: order_by in: query description: 'Attribute and direction to order items. One of the following fields: - `date_created` One of the following directions: - `desc` - `asc`' schema: type: string - name: page_size in: query description: Total number of items to return per page schema: maximum: 1000 minimum: 1 type: integer format: int32 example: 0 - name: page_token in: query description: Page token schema: type: string responses: '200': description: OK content: application/json: schema: title: ListPaymentMethodsResponse type: object properties: next_page_token: type: string records: type: array items: title: PaymentMethod type: object properties: card_info: title: CardInfo type: object properties: brand: type: string card_type: type: string description: 'The card type. Valid values are: CREDIT, DEBIT, PREPAID.' enum: - CREDIT - DEBIT - PREPAID - ACH expiration_month: type: string expiration_year: type: string last_four: type: string contact_id: type: string created_time: type: string merchant_account_id: type: string merchant_account_type: type: string description: 'The merchant type this payment method was authorized with. Valid values are: PAYPAL, AUTHORIZE, EWAY, WEPAY, STRIPE, KEAP_PAY, UNSUPPORTED' enum: - PAYPAL - UNSUPPORTED - AUTHORIZE - EWAY - WEPAY - STRIPE - KEAP_PAY payment_method_id: type: string payment_method_type: type: string description: The type of payment method. For now, only CARD is supported. enum: - CARD status: type: string description: Status of the payment method. Fow now, only EXPIRED is supported. enum: - EXPIRED '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '404': description: Not Found content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false servers: - url: https://api.infusionsoft.com/crm/rest /v2/contacts/{contact_id}/paymentMethods/{payment_method_id}: delete: tags: - Payment Methods summary: Delete a Payment Method description: Deletes the specified payment method operationId: deletePaymentMethodUsingDELETE parameters: - name: contact_id in: path description: ID of the contact to which the payment method belongs. required: true schema: type: string - name: payment_method_id in: path description: ID of the payment method to be deleted. required: true schema: type: string responses: '204': description: No Content '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '404': description: Not Found content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false servers: - url: https://api.infusionsoft.com/crm/rest /v2/contacts/{contact_id}/paymentMethods/{payment_method_id}:deactivate: post: tags: - Payment Methods summary: Deactivate a Payment Method description: Deactivate the specified payment method operationId: deactivatePaymentMethodUsingPOST parameters: - name: contact_id in: path description: ID of the contact to which the payment method belongs. required: true schema: type: string - name: payment_method_id in: path description: ID of the payment method to be deactivated. required: true schema: type: string responses: '204': description: No Content '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false servers: - url: https://api.infusionsoft.com/crm/rest components: schemas: PaymentMethod: type: object properties: contact_id: type: string description: The id of the contact the payment method is associated with. example: 123 payment_method_id: type: string description: The unique identifier of the payment method. example: 123 credit_card_id: type: string description: For backward-compatibility with v1 endpoints. If present, it's the credit card id this payment method refers to. merchant_account_type: type: string description: The merchant account type through which the payment method was tokenized. enum: - PAYPAL - UNSUPPORTED - AUTHORIZE - EWAY - WEPAY - STRIPE - KEAP_PAY example: STRIPE merchant_account_id: type: string description: The merchant account id through which the payment method was tokenize. payment_method_type: type: string description: The type of payment method. For now, only CARD is supported. enum: - CARD created_time: type: string format: date-time description: When this payment method was made. In ISO-8601 format. example: '2024-05-21T14:30:00Z' card_info: $ref: '#/components/schemas/CardInfo' description: If present, it provides additional details for payment methods of payment_method_type CARD. status: type: string description: Status of the payment method. Fow now, only EXPIRED is supported. enum: - EXPIRED Error: type: object properties: code: type: integer format: int32 message: type: string status: type: string details: type: array items: $ref: '#/components/schemas/ErrorDetails' ErrorDetails: type: object properties: domain: type: string resource: type: string CardInfo: type: object properties: brand: type: string fingerprint: type: string description: A token that uniquely identifies the card info card_type: type: string description: 'The card type. Valid values are: CREDIT, DEBIT, PREPAID.' enum: - CREDIT - DEBIT - PREPAID - ACH last_four: type: string expiration_year: type: string description: Four-digit expiration year expiration_month: type: string description: Two-digit expiration month ListPaymentMethodsResponse: type: object properties: payment_methods: type: array items: $ref: '#/components/schemas/PaymentMethod' next_page_token: type: string ListContactPaymentMethodsResponse: type: object properties: records: type: array items: $ref: '#/components/schemas/PaymentMethod' next_page_token: type: string Throwable: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' securitySchemes: oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://accounts.infusionsoft.com/app/oauth/authorize tokenUrl: https://api.infusionsoft.com/token scopes: {} x-refined-from: - infusionsoft-keap-sdk-v2-swagger-original.yml - infusionsoft-rest-v2-2025-11-05-openapi-original.json - infusionsoft-rest-v2-openapi-original.json - infusionsoft-rest-v2-openapi.json