{"method":"POST","path":"https://api.revcent.com/v2/payment_profiles/{payment_profile_id}","summary":"Edit A Payment Profile","description":"Edit a previously created Payment Profile using the Payment Profile ID. Only include the properties you wish to modify. For example, if you only want to modify the name of the Payment Profile, then only include the name property in the request body. View markdown documentation at https://revcent.com/documentation/markdown/mcp/operation/EditPaymentProfile.md for an in-depth overview of this operation.","operationId":"EditPaymentProfile","parameters":[{"in":"path","name":"payment_profile_id","description":"The Payment Profile ID","required":true,"schema":{"type":"string","title":"Payment Profile ID","description":"A 20 character payment profile ID.","minLength":20,"maxLength":20}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"type":"string","description":"The Payment Profile name. Must be unique from other Payment Profile names."},"description":{"type":"string","description":"The Payment Profile description."},"enabled":{"type":"boolean","description":"Whether the Payment Profile is enabled."},"payment_flow":{"type":"array","description":"The flow is an array of nodes that the payment profile will go through when triggered. Each node has a type, content and settings. The type determines the kind of node it is and the content provides the necessary information for that node. Inputs and outputs determine the flow, i.e. connecting nodes via node ID's. A payment flow should have at a minimum 3 types of nodes in order to process payment: A 'start_payment_request' type node to begin the flow, an 'action_choose_gateway' type node to select a payment gateway, and an 'action_process_payment' type node to complete the payment. Note: Only one 'start_payment_request' node can be present in a payment flow.","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"The unique identifier for the node within the flow. Nodes are connected via their IDs within the inputs and outputs properties of the node, and thus should not share the same ID."},"type":{"type":"string","description":"The type of the node within the flow, signifying its specific purpose.","enum":["start_payment_request","filter_attempt_count","filter_bin_profile","filter_campaign","filter_card_type","filter_currency","filter_customer_group","filter_gateway_response","filter_metadata","filter_payment_amount","filter_process_payment_count","filter_product_group","filter_request_type","filter_merge_filters","action_abort_flow","action_choose_gateway","action_insert_metadata","action_process_payment","action_custom_function"]},"inputs":{"oneOf":[{"type":"object","description":"The inputs object specific to a 'start_payment_request' node type, which should have no properties as the 'start_payment_request' node does not have any inputs as it signifies the beginning of the payment flow. Only one 'start_payment_request' node is allowed per flow and it must be the first node in the flow. This node is triggered when a payment profile is initiated.","additionalProperties":false,"properties":{}},{"type":"object","description":"The nodes that are inputs into the current node. These determine the previous nodes in the flow that lead to this node. This applies to all node types except the start_payment_request node.","additionalProperties":false,"properties":{"input_1":{"type":"object","description":"The input into the node. All nodes except start_payment_request have a single input_1.","properties":{"connections":{"type":"array","description":"The nodes that connect to input_1.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to input_1."},"input":{"type":"string","description":"The output of the node that connects to input_1.","enum":["output_1","output_2","output_3"]}}}}},"required":["connections"]}},"required":["input_1"]}]},"outputs":{"oneOf":[{"type":"object","description":"Outputs for the 'action_process_payment' node type. This node handles the processing of payments within the payment profile flow. Depending on the result of the payment processing, the flow can continue to different nodes via output_1 or output_2.","additionalProperties":false,"properties":{"output_1":{"type":"object","description":"The output_1, if the payment was successful from the gateway chosen to process payment.","properties":{"connections":{"type":"array","description":"The nodes that connect to output_1.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_1."},"output":{"type":"string","description":"The input of the node that connects to output_1.","enum":["input_1"]}},"required":["node","output"]}}}},"output_2":{"type":"object","description":"The output_2, if the payment was declined or encountered an error from the gateway chosen to process payment.","properties":{"connections":{"type":"array","description":"The nodes that connect from output_2.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_2."},"output":{"type":"string","description":"The input of the node that connects to output_2.","enum":["input_1"]}},"required":["node","output"]}}}}}},{"type":"object","description":"There are no outputs for the 'action_insert_metadata' node type. It is run 'on the side' of the main flow and does not affect the flow path. Simply connect to the output of a separate node when you wish to insert metadata, make sure the previous node has another output routing to ensure flow continuation. This node is used solely for inserting metadata and does not influence the flow path, thus it has no outputs to connect to other nodes.","additionalProperties":false,"properties":{}},{"type":"object","description":"Outputs for the 'action_custom_function' node type. This node allows for the execution of a custom function within the payment profile flow. Depending on the result of the custom function, the flow can continue to different nodes via output_1 or output_2.","additionalProperties":false,"properties":{"output_1":{"type":"object","description":"The output_1, if the action_custom_function was successfully executed without an error. The function response can be used to determine the next steps in the payment flow. Read more on using a function response in a payment flow here: <a href=\"https://kb.revcent.com/en/payments/credit-card/next-gen-payment-profile#run-function\" target=\"_blank\">https://kb.revcent.com/en/payments/credit-card/next-gen-payment-profile#run-function</a>.","properties":{"connections":{"type":"array","description":"The nodes that connect to output_1.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_1."},"output":{"type":"string","description":"The input of the node that connects to output_1.","enum":["input_1"]}},"required":["node","output"]}}}},"output_2":{"type":"object","description":"The output_2, if the action_custom_function encountered an error or timed out when executing.","properties":{"connections":{"type":"array","description":"The nodes that connect from output_2.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_2."},"output":{"type":"string","description":"The input of the node that connects to output_2.","enum":["input_1"]}},"required":["node","output"]}}}}}},{"type":"object","description":"Output for the 'action_choose_gateway' node type. This node allows for the selection of a payment gateway within the payment profile flow. Once a gateway is selected, the flow can continue to the next node via output_1. If no gateways are selected, the flow is immediately terminated and an error is returned.","additionalProperties":false,"properties":{"output_1":{"type":"object","description":"The output_1, if the action_choose_gateway node selected a gateway.","properties":{"connections":{"type":"array","description":"The nodes that connect to output_1.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_1."},"output":{"type":"string","description":"The input of the node that connects to output_1.","enum":["input_1"]}},"required":["node","output"]}}}}}},{"type":"object","description":"There are no outputs for the 'action_abort_flow' node type. Once this node is reached, the flow is terminated and flow results are returned immediately.","additionalProperties":false,"properties":{}},{"type":"object","description":"The node IDs that are outputs from the node. These determine the next nodes in the flow that follow this node.","additionalProperties":false,"properties":{"output_1":{"type":"object","description":"The start_payment_request node has only one output, output_1, which connects to the next node in the flow after the flow is initiated.","properties":{"connections":{"type":"array","description":"The nodes that connect to output_1.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_1."},"output":{"type":"string","description":"The input of the node that connects to output_1.","enum":["input_1"]}},"required":["node","output"]}}}}},"required":["output_1"]},{"type":"object","description":"Outputs for all filter nodes except 'filter_merge_filters'. Applies to 'filter_attempt_count', 'filter_bin_profile', 'filter_campaign', 'filter_card_type', 'filter_currency', 'filter_customer_group', 'filter_gateway_response', 'filter_metadata', 'filter_payment_amount', 'filter_process_payment_count', 'filter_product_group' and 'filter_request_type' node types. These determine the next nodes in the flow that follow this node depending on the filter result.","additionalProperties":false,"properties":{"output_1":{"type":"object","description":"The output_1, if the filter condition(s) is met.","properties":{"connections":{"type":"array","description":"The nodes that connect to output_1.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_1."},"output":{"type":"string","description":"The input of the node that connects to output_1.","enum":["input_1"]}},"required":["node","output"]}}}},"output_2":{"type":"object","description":"The output_2, if the filter condition(s) is not met.","properties":{"connections":{"type":"array","description":"The nodes that connect from output_2.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_2."},"output":{"type":"string","description":"The input of the node that connects to output_2.","enum":["input_1"]}},"required":["node","output"]}}}}}},{"type":"object","description":"Outputs for the 'filter_merge_filters' node type. These determine the next nodes in the flow that follow this node depending on the filter result. A merge filter node is a mechanism to combine multiple filter nodes into a single AND statement. Other filter nodes are connected to a merge filter via output_3. If ALL connected filters conditions are met, then output_1 is taken. If ANY connected filters conditions are not met, then output_2 is taken.","additionalProperties":false,"properties":{"output_1":{"type":"object","description":"The output_1, if all connected filters (via output_3) condition(s) are met.","properties":{"connections":{"type":"array","description":"The nodes that connect to output_1.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_1."},"output":{"type":"string","description":"The input of the node that connects to output_1.","enum":["input_1"]}},"required":["node","output"]}}}},"output_2":{"type":"object","description":"The output_2, if ANY connected filters (via output_3) condition(s) are not met.","properties":{"connections":{"type":"array","description":"The nodes that connect from output_2.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_2."},"output":{"type":"string","description":"The input of the node that connects to output_2.","enum":["input_1"]}},"required":["node","output"]}}}},"output_3":{"type":"object","description":"Output 3 on a merge filter node connects to the input_1 of other filter nodes you wish to combine into a single filter where all connected filter nodes must be true. If a filter node is connected to a merge filter node, the outputs of the connected filter are ignored as its condition is passed to the merge node. Only filter nodes can be connected to a merger filter node type.","properties":{"connections":{"type":"array","description":"The nodes that connect into output_3. Only filter nodes can connect to output_3, signifying a chain/merge of filters.","items":{"type":"object","additionalProperties":false,"properties":{"node":{"type":"string","description":"The ID of the node that connects to output_3."},"output":{"type":"string","description":"The input of the node that connects to output_3.","enum":["input_1"]}},"required":["node","output"]}}}}}}]},"position":{"type":"object","description":"The position of the node in the flow diagram. This is used for visual representation of the flow and does not affect the functionality of the flow. The position values are in pixels, and are represented in the UI when viewing the flow in the RevCent web app. If not present a default value is given. However, if able to be provided, it is recommended to provide position values to ensure the flow diagram is organized and visually easy to follow when viewing the flow in the UI. Note: each node is approximately 300px in width, and 400px in height when viewing in the UI.","additionalProperties":false,"properties":{"x_axis":{"type":"integer","description":"The horizontal x-axis position in pixels of the node in the flow diagram. Note: each node is approximately 300px in width, and 400px in height when viewing in the UI."},"y_axis":{"type":"integer","description":"The vertical y-axis position in pixels of the node in the flow diagram. Note: each node is approximately 300px in width, and 400px in height when viewing in the UI."}}},"node_settings":{"oneOf":[{"type":"object","description":"The settings specific to a 'start_payment_request' node type. This is the initial node in a next-gen payment profile flow that triggers when a payment profile is initiated.","additionalProperties":false,"properties":{"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to an 'action_choose_gateway' node type. These settings determine the source and method of how a gateway is chosen when a payment profile flow reaches an 'action_choose_gateway' node. Chooses a gateway to be used to process a payment request. Read more at <a href=\"https://kb.revcent.com/en/payments/credit-card/next-gen-payment-profile#choose-a-gateway\" target=\"_blank\">https://kb.revcent.com/en/payments/credit-card/next-gen-payment-profile#choose-a-gateway</a>.","additionalProperties":false,"properties":{"selection_source":{"type":"string","description":"Specifies the source of the gateway selection.\nGateway: Select from an array of gateways specified in the payment profile node settings.\nGateway Group: Select from an array of gateway groups specified in the payment profile node settings.\nGateway Last Approved: RevCent will choose the gateway last approved for the customer, ignoring all revenue rules and time rules. Note: If none exists, RevCent will defer to the failsafe gateway.\nGateway Last Declined: RevCent will choose the gateway last declined for the customer, ignoring all revenue rules and time rules. Note: If none exists, RevCent will defer to the failsafe gateway.","enum":["gateway","gateway_group","gateway_last_approved","gateway_last_declined"]},"selection_method":{"type":"string","description":"Specifies the method of gateway selection.\nEvenly Distribute: Process valid gateways by even distribution of total captured payment volume within the past 24 hours.\nRandom: Will pick a random gateway from the list of gateways from selected gateways/gateway groups.\nProcess gateways in the sort order, beginning with the next gateway after the last transaction gateway used in the sort order. Applies to Gateway source only.\nProcess valid gateways in the sort order within the list of selected gateways, always starting with gateway 1.\nApplies to 'gateway' or 'gateway_group' sources only. Recommended value is 'evenly_distribute' to ensure gateways are being chosen in a way that limits overuse of a single gateway.","enum":["evenly_distribute","round_robin","sort_order","random"]},"gateways":{"type":"array","description":"An array of gateways RevCent will choose from when the selection source is 'gateway'. When the selection source is 'gateway', provide an array of gateway IDs.","items":{"type":"object","additionalProperties":false,"properties":{"order":{"description":"The order in which the gateway will be selected in relation to the other gateways in the array. Note: orders are 0 indexed, i.e. the first gateway is order 0. The gateway with the lowest order value will be selected first. Order only truly applies when the selection method is 'sort_order' or 'round_robin', however the 'order' property is still required.","type":"integer"},"id":{"type":"string","description":"A 20 character user gateway ID.","minLength":20,"maxLength":20}},"required":["order","id"]}},"gateway_groups":{"type":"array","description":"An array of gateway groups to choose from when the selection source is 'gateway_group'. RevCent will utilize all enabled gateways within the gateway groups selected.","items":{"type":"string","description":"A 20 character user gateway group ID.","minLength":20,"maxLength":20}},"prefer_gateway":{"type":"array","description":"Select one or more conditions in which a gateway should be preferred. CVV Bonus is if a gateway was used in an initial sale where the CVV was passed.\nPreviously Approved for Entity: Give a gateway preference if it has already been successful for the current sale, subscription or trial.\nPreviously Approved for Customer (CVV Bonus): Give a gateway preference if it has already been successful for the current customer. In addition, give the gateway a greater preference if it was previously successful when including CVV.\nPreviously Declined for Entity: Give a gateway preference if it has already been declined for the current sale, subscription or trial. Useful for retrying declined MID's when the customer needs to contact their bank.\nPreviously Declined for Customer (CVV Bonus): Give a gateway preference if it has already been declined for the current customer. In addition, give the gateway a greater preference if it was previously declined when including CVV.\n\nTerminology:\nEntity: The current sale, subscription, or trial being processed according to the request type.\nCustomer: The customer related to the current request.","items":{"type":"string","enum":["approved_for_entity","approved_for_customer","declined_for_entity","declined_for_customer"]}},"not_if_gateway":{"type":"array","description":"Select one or more conditions in which a gateway should not be chosen.\nPreviously Declined In Current Request (used_in_request): If the gateway has been declined in the current flow request, do not choose it.\nPreviously Declined For Entity (declined_for_entity): If the gateway has been declined at any point in the entity's history do not choose it.\nPreviously Declined for Customer (declined_for_customer): If the gateway has been declined at any point in the customers' history, do not choose it.\nPreviously Approved For Entity (approved_for_entity): If the gateway has been approved at any point in the entity's history do not choose it.\nPreviously Approved for Customer (approved_for_customer): If the gateway has been approved at any point in the customers' history, do not choose it.\n\nTerminology:\nCurrent Request: The current flow request.\nEntity: The current sale, subscription, or trial being processed according to the request type.\nCustomer: The customer related to the current request.","items":{"type":"string","enum":["used_in_request","approved_for_entity","approved_for_customer","declined_for_entity","declined_for_customer"]}},"nin_gateway_group":{"type":"array","description":"Meant for excluding a gateway when choosing. Select one or more gateway groups in which a chosen gateway cannot not be in.","items":{"type":"string","description":"A 20 character user gateway group ID.","minLength":20,"maxLength":20}},"declined_for_gateway_group":{"type":"array","description":"Meant for excluding a gateway when choosing. Select one or more gateway groups in which once a decline has occurred for any gateways within the group, no gateways in the same group can be chosen.","items":{"type":"string","description":"A 20 character user gateway group ID.","minLength":20,"maxLength":20}},"approved_for_gateway_group":{"type":"array","description":"Meant for excluding a gateway when choosing. Select one or more gateway groups in which once an approval has occurred for any gateways within the group, no gateways in the same group can be chosen.","items":{"type":"string","description":"A 20 character user gateway group ID.","minLength":20,"maxLength":20}},"ignore_settings":{"type":"array","description":"Select one or more settings to ignore when choosing a gateway. This is an advanced option. This can be used to provide exceptions to certain rules you have set up in your revenue rules and time rules for a specific gateway. For example, if you have a revenue rule that prevents a gateway from being chosen if it has captured over $10,000 in the past 24 hours, but you want to allow that gateway to be chosen regardless of that rule if it was previously approved for the customer, you can select 'revenue_rules' to be ignored.","items":{"type":"string","enum":["revenue_rules","time_rules","corp_lock"]}},"smart_bin_enabled":{"type":"string","description":"You can use SmartBin to choose the best gateway during the gateway choice process within the source gateways or gateways within source gateway groups. The SmartBin feature gives you the ability to have payments automatically routed to the gateway that has the highest statistical likelihood of success. I.e. increase approvals by using the gateway most likely to approve a specific customers' credit card.\n\nNote: SmartBin is an extra charge per month. You must contact RevCent first in order to enable SmartBin for your account. Read more about SmartBin at <a href=\"https://kb.revcent.com/payments/credit-card/smartbin\" target=\"_blank\">https://kb.revcent.com/payments/credit-card/smartbin</a>.\n\nWhen you should use SmartBin:\nYou have more than one gateway available to process initial sales.\nYou approval rates vary greatly based on issuer and gateway chosen.\n\nWhen you should not use SmartBin:\nYou have only one gateway processing initial sales.\nYou approval rates are high regardless of issuer and gateway.\n\nWhen SmartBin is not triggered:\nA Prefer Gateway If condition is met, giving one or more gateway(s) in the choice process produce a prefer score.\nSubscription profile prefer settings outside of this profile produce a prefer score.\nTrial prefer settings outside of this profile produce a prefer score.\nOnly one gateway is available to process at time of payment.","enum":["true","false"]},"modify_amount_option":{"type":"string","description":"If you want to decrease the payment amount before processing. This is an advanced option. Default is nomodify. Will only apply to additional payment attempts during a payment flow, i.e. will be ignored for the first payment attempt.\n\nOptions:\n'nomodify': Do not modify the original transaction amount.\n'modifypct': Modify the original transaction amount by a percentage decrease, the percentage value being the modify_amount_value property.\n'modifyspf': Modify the original transaction amount by a fixed dollar amount decrease. The fixed amount being the modify_amount_value property.","enum":["nomodify","modifypct","modifyspf"]},"modify_amount_value":{"type":"string","description":"The value to modify the amount if 'modifypct' or 'modifyspf' is chosen. This is an advanced option. For example, if 'modifypct' is chosen and the value is '10', the transaction amount will be decreased by 10%. If 'modifyspf' is chosen and the value is '5', the transaction amount will be decreased by $5."},"swap_card":{"type":"string","description":"Do you want to swap to another card if one is available? Will only apply to additional payment attempts during a payment flow, i.e. will be ignored for the first payment attempt. Note: Only implemented for subscription renewal and trial expiration requests, not sale requests.","enum":["false","true"]},"failsafe_gateway":{"type":"string","description":"The gateway ID of the failsafe gateway. The failsafe gateway is the gateway that RevCent will default to if all other gateways provided in the settings are unable to be chosen according to the selection source and selection method settings. Providing a failsafe gateway is highly recommended to ensure that there is always a gateway available to process transactions when reaching an 'action_choose_gateway' node in the flow."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}},"required":["selection_source"]},{"type":"object","description":"The settings specific to an 'insert_metadata' node type. This node allows for the insertion of metadata within the payment profile flow. The insert metadata node is unique in that it does not have an output. It is a side action meant to be conducted along with the execution of other filter or action nodes.","additionalProperties":false,"properties":{"metadata_target":{"type":"array","description":"The target(s) of where the metadata will be inserted. You can choose to insert metadata to the customer, sale, subscription, subscription_renewal, or trial related to the payment profile flow.","items":{"type":"string","enum":["customer","sale","subscription","subscription_renewal","trial"]}},"metadata":{"type":"array","description":"The metadata name value pairs to be inserted to the target specified in the metadata_target setting.","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"The metadata name to be inserted."},"value":{"type":"string","description":"The metadata value to be inserted."}},"required":["name","value"]}},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}},"required":["metadata_target","metadata"]},{"type":"object","description":"The settings specific to a 'custom_function' node type. You can choose to run a function during a payment flow. The function can return a specific response, or can run separately without interrupting the payment flow. It is HIGHLY recommended to read this section to understand using a function in a payment flow: <a href=\"https://kb.revcent.com/en/payments/credit-card/next-gen-payment-profile#run-function\" target=\"_blank\">https://kb.revcent.com/en/payments/credit-card/next-gen-payment-profile#run-function</a>","additionalProperties":false,"properties":{"custom_function":{"type":"string","description":"The ID of the custom function to be executed when the flow reaches this node. Read more on setting up a custom function here: <a href=\"https://kb.revcent.com/integrations/functions\" target=\"_blank\">https://kb.revcent.com/integrations/functions</a>."},"run_method":{"type":"string","description":"The method by which the custom function is executed. This determines whether the payment request will wait for a response, or continue and run the function separately.\n\nOptions:\n\nQueue And Continue: The function will run separately without waiting for a response from the function, i.e. wont pause the flow. The green output of the current function node will be followed.\nWait For Response: The function will run and RevCent will wait for the response. The response can determine the next node. Please read the warnings below.\n\nWarning when using the “Wait For Response” method:\nIt is always recommended to route the output_2 as a backup in case the function fails or times out. The red output is treated as a function failure/timeout output.\nA function is given a max 8 second time to respond within the flow before a timeout error occurs, in which the red output will be followed.\nBad function code can result in payments never being processed.\nFunctions cause latency, which will result in having to wait longer for a payment response.","enum":["wait_for_response","queue_continue"]},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to an 'action_process_payment' node type. This node handles the processing of a payment within the flow.","additionalProperties":false,"properties":{"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to an 'action_abort_flow' node type. Payment flow will be aborted. Use this node if you want to stop the flow and return an error. If a payment has been attempted previously during the flow the decline results will be returned, else an error will be returned. Note: The payment profiles' settings for kill terms and max attempts, if enabled, will still apply. You can use an 'action_custom_function' node prior to 'action_abort_flow' to generate a more detailed custom error based on decline response after an 'action_process_payment' node has run.","additionalProperties":false,"properties":{"custom_error":{"type":"string","description":"A custom error message to be returned when the flow is aborted."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to a 'filter_attempt_count' node type. The attempt count filter allows you to filter based on the number of attempts (payment flow completions) specific to the entity being processed. You have the option to filter whether the attempt count is less than or equal to, or greater than or equal to. Note: Applies to initial sale (not pending sale recovery), and subscription renewal request types only. Request types and attempt calculations explained:\nInitial Sale: An attempt is the previous completion of a payment flow for the same sale. I.e., customer previously clicked to purchase, for the same sale, and was declined after the flow request ended.\nSubscription Renew: An attempt is the number of subscription renewals, which includes the current one being processed. I.e., if there were 2 prior renewals, then the attempt count is 3. If there were no prior renewals, then the attempt count is 1.","additionalProperties":false,"properties":{"choice":{"type":"string","description":"The choice of whether to filter on attempt count being greater than or equal to, or less than or equal to a certain number.","enum":["gte","lte"]},"attempt_count":{"type":"string","description":"The number of attempts used in the filter condition. Should be an integer value in string format, e.g. '3'."},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}},"required":["choice","attempt_count"]},{"type":"object","description":"The settings specific to a 'filter_bin_profile' node type. The BIN profile filter allows you to filter based on the first 6 of the current credit card being used for the payment request via BIN profile. You have the option to filter on whether a card BIN is within a BIN profile, not within a BIN profile, or both.","additionalProperties":false,"properties":{"in_bin_profile":{"type":"array","description":"If the request is IN any of the specified BIN profile(s).","items":{"type":"string"}},"nin_bin_profile":{"type":"array","description":"If the request is NOT IN any of the specified BIN profile(s).","items":{"type":"string"}},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to a 'filter_campaign' node type. The campaign filter allows you to filter based on the campaign associated with the request. You have the option to filter on whether the request is associated with a campaign, not associated with a campaign, or both.","additionalProperties":false,"properties":{"in_campaign":{"type":"array","description":"If the request is IN any of the specified campaign(s).","items":{"type":"string"}},"nin_campaign":{"type":"array","description":"If the request is NOT IN any of the specified campaign(s).","items":{"type":"string"}},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to a 'filter_card_type' node type. The card type filter allows you to filter based on the card type being used to process payment. You have the option to filter on whether the card type is one or more types, is not one or more types, or both.","additionalProperties":false,"properties":{"in_card_type":{"type":"array","description":"If the request is IN any of the specified card type(s). Should be a lowercase string representing the card type.","items":{"type":"string","enum":["visa","master-card","american-express","diners-club","discover","jcb","unionpay","maestro","mir","elo","hiper","hipercard"]}},"nin_card_type":{"type":"array","description":"If the request is NOT IN any of the specified card type(s). Should be a lowercase string representing the card type.","items":{"type":"string","enum":["visa","master-card","american-express","diners-club","discover","jcb","unionpay","maestro","mir","elo","hiper","hipercard"]}},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to a 'filter_currency' node type. The currency filter allows you to filter based on the currency associated with the request. You have the option to filter on whether the currency is, is not, or both.","additionalProperties":false,"properties":{"in_currency":{"type":"array","description":"If the request is IN any of the specified currency(ies). Should be a lowercase 3 letter ISO 4217 currency string.","items":{"type":"string"}},"nin_currency":{"type":"array","description":"If the request is NOT IN any of the specified currency(ies). Should be a lowercase 3 letter ISO 4217 currency string.","items":{"type":"string"}},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to a 'filter_customer_group' node type. The customer group filter allows you to filter based on the customer group(s) of the customer associated with the request. You have the option to filter based on whether a customer is in a customer group, not in a customer group, or both.\nImportant: This should be used as a historical filter for pre-existing customers. Customer groups do not apply to customers instantly.\n\nCaveats:\n\nIt may take up to 15 minutes after the customers' most recent action for the applicable customer group(s) to be applied/removed.\nIf a customer recently attempted to purchase, recently received a refund, etc., qualifying customer group(s) may not be applied or removed for at least 15 minutes\nIf you recently changed one or more customer groups' settings, all past customers are not refreshed to reflect updates to any of their customer group(s) until 2:00am EST each day.","additionalProperties":false,"properties":{"in_customer_group":{"type":"array","description":"If the customer associated with the request is IN any of the specified customer group(s).","items":{"type":"string"}},"nin_customer_group":{"type":"array","description":"If the customer associated with the request is NOT IN any of the specified customer group(s).","items":{"type":"string"}},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to a 'filter_gateway_response' node type. The gateway response filter allows you to filter based on the most recent response received from a gateway in the current payment request. This is a case insensitive match. Provide one or more terms which must be contained in the gateways response in order for the filter to pass.","additionalProperties":false,"properties":{"matching_terms":{"type":"array","description":"The terms to match on the gateway response. If any of the terms provided in this array are contained in the gateway response, the filter will pass. Matching is case insensitive.","items":{"type":"string","description":"A term to match on the gateway response."}},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}},"required":["matching_terms"]},{"type":"object","description":"The settings specific to a 'filter_metadata' node type. The metadata filter allows you to filter based on the metadata contained within one or more sources. Select the metadata source, i.e. where to search for metadata entries. Payment Request is any metadata contained in a current Initial Sale API call. You have the option to filter on whether the source has or does not have specific metadata names and values.","additionalProperties":false,"properties":{"source":{"type":"string","description":"The source of the metadata to filter on.\nCustomer: Any metadata contained in the customer related to the entity being processed.\nGateway: The current gateway chosen, prior to processing payment, if one has been chosen.\nPayment Request: Applies to initial sale request type only, with the metadata contained in a current Initial Sale API call.\nSale: Any metadata contained in the sale related to the entity being processed.\nSubscription: Applies to subscription renew request type only.\nTrial: Applies to trial expire request type only.","enum":["customer","gateway","payment_request","sale","subscription","trial"]},"choice":{"type":"string","description":"Select whether to filter based on the selected source having (has) or not having (not_has) filter_metadata names/values.","enum":["has","not_has"]},"filter_metadata":{"type":"array","description":"The metadata name value pairs to filter on, used in conjunction with the source and choice fields.","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"The name of the metadata to filter on."},"value":{"type":"string","description":"The value of the metadata to filter on."}},"required":["name","value"]}},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}},"required":["source","choice","filter_metadata"]},{"type":"object","description":"The settings specific to a 'filter_payment_amount' node type. The payment amount filter allows you to filter based on the payment amount that is to be processed. You have the option to filter whether the amount is less than or equal to, or greater than or equal to a certain amount.","additionalProperties":false,"properties":{"choice":{"type":"string","description":"The choice of whether to filter on payment amount being greater than or equal to, or less than or equal to a certain number.","enum":["gte","lte"]},"payment_amount":{"type":"string","description":"The payment amount to be processed, used in conjunction with the choice field to determine the filter condition. This should be a float in string format. For example, if the amount to be processed is $10.50, this field should be '10.50'."},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}},"required":["choice","payment_amount"]},{"type":"object","description":"The settings specific to a 'filter_process_payment_count' node type. The process payment count filter allows you to filter based on the number of Process Payment nodes executed in the current flow request. I.e. the number of times that payment was attempted already in the request. You have the option to filter whether the process payment count is less than or equal to, or greater than or equal to a certain number.","additionalProperties":false,"properties":{"choice":{"type":"string","description":"The choice of whether to filter on process payment count being greater than or equal to, or less than or equal to a certain number.","enum":["gte","lte"]},"process_count":{"type":"string","description":"The number of times the current flow has processed the payment, used in conjunction with the choice field to determine the filter condition. This should be an integer in string format."},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}},"required":["choice","process_count"]},{"type":"object","description":"The settings specific to a 'filter_product_group' node type. The product group filter allows you to filter based on the product(s) contained in a product group associated with the request. You have the option to filter on whether a product is in a product group, not in a product group, or both.","additionalProperties":false,"properties":{"in_product_group":{"type":"array","description":"If all products related to the payment request are IN the specified product group(s).","items":{"type":"string"}},"nin_product_group":{"type":"array","description":"If any products related to the payment request are NOT IN the specified product group(s).","items":{"type":"string"}},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to a 'filter_request_type' node type. This node allows for filtering based on the current request type within the payment profile flow. A payment flow can be initiated during an initial sale, a subscription renewal or a trial expiration. If all conditions specified in the settings are met, the flow can continue to the next node via output_1. If any conditions specified in the settings are not met, the flow can continue to a different node via output_2.","additionalProperties":false,"properties":{"in_request_type":{"type":"array","description":"If the request type of the current flow request matches any of the request types specified in this array.","items":{"type":"string","enum":["initial_sale","subscription_renew","trial_expire"]}},"nin_request_type":{"type":"array","description":"If the request type of the current flow request does not match any of the request types specified in this array.","items":{"type":"string","enum":["initial_sale","subscription_renew","trial_expire"]}},"filter_priority":{"type":"string","description":"You may wish to have multiple filters checked separately for successful condition(s), with certain ones checked before others, when at the same point in a flow. The same point being the part of the flow where multiple filters coincide at the same time. Every filter has a filter priority, allowing you to tell RevCent which filter(s) to check before others when at the same point. Filter priority is 0 indexed, with 0 being the first in the list to check. The lower the number, the higher up the list, i.e. checked first. For example, a filter with priority 0 will be checked before a filter with priority 1. Filters with the same priority are checked in random order at time of processing. RevCent will attempt to find the first successful filter based on priority and if found the output_1 from that filter will be used. If no successul filter is determined, then the first priority output_2 is taken."},"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}},{"type":"object","description":"The settings specific to a 'filter_merge_filters' node type. This node allows for filtering based on the merge filters within the payment profile flow.","additionalProperties":false,"properties":{"node_note":{"type":"string","description":"An optional custom note for future reference and internal use regarding the node. This is recommended and can be used to provide additional context or information about the node to help with flow organization and management. This note does not have any effect on the flow or payment processing."}}}]}}},"minItems":3},"kill_terms":{"type":"object","additionalProperties":false,"description":"You have the ability to cancel the payment profile flow if a declined transaction has specific terms/phrases/words in a step gateways' decline response.","properties":{"enabled":{"description":"Whether kill terms are enabled.","type":"boolean"},"terms":{"description":"An array of one or more kill terms. Kill terms are case-insensitive. This will also cancel/void the related sale being attempted. Only applies to initial sale attempts, not renewals or trial expirations.","type":"array","items":{"type":"string","description":"An individual kill term"}}}},"max_attempts":{"type":"object","additionalProperties":false,"description":"You have the ability to cancel/void a sale if the number of declined payment profile attempts reaches a certain number.","properties":{"enabled":{"description":"Whether max attempts is enabled.","type":"boolean"},"num":{"description":"The number of failed payment profile attempts, where once reached, the sale being processed will automatically be cancelled/voided. If max attempts is enabled, num should be greater than 0.","type":"integer"}}}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"description":"","properties":{"api_call_id":{"type":"string","description":"A 20 character API call ID.","minLength":20,"maxLength":20},"api_call_unix":{"description":"Unix timestamp of when the API call was initiated.","type":"integer","format":"unix-time"},"code":{"description":"API call response code.","type":"integer","format":"int32","enum":[1]},"payment_profile_id":{"type":"string","title":"Payment Profile ID","description":"A 20 character payment profile ID.","minLength":20,"maxLength":20},"result":{"type":"string"}},"type":"object","additionalProperties":false}}},"description":"Successful response."},"default":{"content":{"application/json":{"schema":{"description":"","properties":{"api_call_id":{"type":"string","description":"A 20 character API call ID.","minLength":20,"maxLength":20},"api_call_unix":{"description":"Unix timestamp of when the API call was initiated.","type":"integer","format":"unix-time"},"code":{"description":"This value indicates that there is an error. Will always be 0.","type":"integer","enum":[0]},"error_code":{"description":"The specific error code.","type":"string"},"message":{"description":"A human readable description of the error.","type":"string"},"result":{"description":"A description of the API call result.","type":"string"}},"title":"APIStandardErrors","type":"object","additionalProperties":false}}},"description":"Error response."}}}