{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/nmi/main/json-schema/nmi-credit-card-payment-in-full-partial-request-schema.json", "title": "Credit Card - Complete Partial Payment in Full", "x-generated": "2026-10-14", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/nmi-payments-openapi.yml#/components/schemas/CreditCardPaymentInFullPartialRequest", "allOf": [ { "type": "object", "required": [ "type", "ccnumber", "ccexp", "amount", "partial_payment_id", "partial_payments", "security_key" ], "properties": { "security_key": { "$ref": "#/$defs/SecurityKey" }, "type": { "type": "string", "enum": [ "complete_partial_payment" ], "description": "Will complete a `payment_in_full` transaction that has not been collected in full. This allows industries that require `payment_in_full` but subsequently decide to still settle the transaction even though it has not been collected in full." }, "partial_payments": { "type": "string", "enum": [ "payment_in_full" ], "description": "`payment_in_full`: Required that any split tendered transaction is collected in-full before settlement gets initiated." } } }, { "additionalProperties": { "type": "string", "description": "Up to 20 `merchant_defined_field_#` are allowed." } }, { "$ref": "#/$defs/PartialPaymentInfo" }, { "$ref": "#/$defs/CreditCardWithCvv" }, { "$ref": "#/$defs/Amount" }, { "$ref": "#/$defs/BaseTransaction" }, { "$ref": "#/$defs/Industry" }, { "$ref": "#/$defs/SignatureImage" } ], "$defs": { "Amount": { "type": "object", "properties": { "amount": { "type": "string", "description": "Total amount to be charged.\n \nFormat: `x.xx`" } } }, "BaseTransaction": { "allOf": [ { "type": "object", "properties": { "payment_token": { "type": "string", "description": "The tokenized version of the customer's card or check information, generated by the [Payment Component](../docs/payment-component) (npm packages / [Gateway.js](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#gjs_methodology)) and usable only once. Existing integrations may also supply a token from [Collect.js](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#cjs_methodology)." }, "transaction_session_id": { "type": "string", "minLength": 32, "maxLength": 32, "description": "A single use session ID used by Kount to link the transaction and Data Collector information together.\n\n* Should be generated every time a payment form is loaded by the cardholder.\n* Should be random/unpredictable (do not use sequential IDs).\n* Should not be reused within a 30 day period.\n\nThis can be used with [Collect.js](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#cjs_methodology) or the Payment API when using the [Kount DDC with Gateway.js](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#gjs_methodology).\n\nFormat: `alphanumeric`" }, "applepay_payment_data": { "type": "string", "description": "The encrypted token created when integration directly to the Apple Pay SDK." }, "googlepay_payment_data": { "type": "string", "description": "The encrypted token created when [integration directly to the Google Pay SDK](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#googlepay_variables)." }, "surcharge": { "type": "string", "description": "Surcharge amount.\n \nFormat: `x.xx`" }, "convenience_fee": { "type": "string", "description": "Convenience fee amount.\n \nFormat: `x.xx`" }, "misc_fee": { "type": "string", "description": "Miscellaneous fee amount.\n \nFormat: `x.xx`" }, "misc_fee_name": { "type": "string", "description": "Custom miscellaneous fee name.\n \nDefault: `Miscellaneous Fee`" }, "tip": { "type": "number", "description": "The final tip amount, included in the transaction, associated with the purchase.\n \nFormat: `x.xx`" }, "currency": { "type": "string", "description": "The transaction currency.\n \nFormat: `ISO 4217`" }, "processor_id": { "type": "string", "description": "If using Multiple MIDs, route to this processor (*processor_id* is obtained under Settings → Transaction Routing in the Control Panel)." }, "dup_seconds": { "type": "integer", "maximum": 7862400, "description": "Sets the time in seconds for duplicate transaction checking on supported processors. Set to *0* to disable duplicate checking." } } }, { "$ref": "#/$defs/Descriptor" }, { "type": "object", "properties": { "billing_method": { "type": "string", "enum": [ "initial_recurring", "recurring", "installment" ], "description": "Recurring or installment classification for the processor.\n\n- `initial_recurring`: First transaction in a recurring sequence only.\n- `recurring`: Later charges in that sequence.\n- `installment`: Installment transactions; use `billing_number` and `billing_total` on supported processors.\n\nWhich values apply depends on the processor." }, "billing_number": { "type": "integer", "minimum": 0, "maximum": 99, "description": "Specify installment billing number, on supported processors. For use when `billing_method` is set to \"installment\"." }, "billing_total": { "type": "string", "description": "Specify installment billing total on supported processors. For use when `billing_method` is set to \"installment\"." }, "order_template": { "type": "string", "description": "Order template ID." }, "order_description": { "type": "string", "description": "Order description." }, "orderid": { "type": "string", "description": "Order Id." }, "ipaddress": { "type": "string", "description": "IP address of cardholder, this field is recommended.\n \nFormat: `xxx.xxx.xxx.xxx`" } } }, { "type": "object", "properties": { "first_name": { "type": "string", "description": "Cardholder's first name." }, "last_name": { "type": "string", "description": "Cardholder's last name" }, "company": { "type": "string", "description": "Cardholder's company" }, "address1": { "type": "string", "description": "Card billing address" }, "address2": { "type": "string", "description": "Card billing address, line 2" }, "city": { "type": "string", "description": "Card billing city" }, "state": { "type": "string", "description": "Card billing state.\n \nFormat: `CC`" }, "zip": { "type": "string", "description": "Card billing zip code" }, "country": { "type": "string", "description": "Card billing country. *Country codes are as shown in ISO 3166-1 alpha-2*.\n \nFormat: `CC`" }, "phone": { "type": "string", "description": "Billing phone number" }, "fax": { "type": "string", "description": "Billing fax number" }, "email": { "type": "string", "format": "email", "description": "Billing email address" } } }, { "$ref": "#/$defs/DriversLicense" }, { "$ref": "#/$defs/Shipping" }, { "$ref": "#/$defs/MerchantDefinedField" }, { "type": "object", "properties": { "customer_receipt": { "type": "string", "enum": [ "true", "false" ], "description": "If set to true, when the customer is charged, they will be sent a transaction receipt." }, "cardholder_auth": { "type": "string", "enum": [ "verified", "attempted" ], "description": "Set 3D Secure condition. Value used to determine E-commerce indicator (ECI).\n \n**Required for 3D Secure transactions**" }, "cavv": { "type": "string", "description": "Cardholder authentication verification value.\n \nFormat: `base64 encoded` **Required for 3D Secure transactions**" }, "xid": { "type": "string", "description": "Cardholder authentication transaction id.\n \nFormat: `base64 encoded` **Required for 3D Secure transactions**" }, "three_ds_version": { "type": "string", "enum": [ "2.0.0", "2.2.0" ], "description": "3DSecure version. **Required for 3D Secure transactions**" }, "directory_server_id": { "type": "string", "description": "Directory Server Transaction ID. May be provided as part of 3DSecure 2.0 authentication.\n \nFormat: `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`" }, "source_transaction_id": { "type": "string", "description": "Specifies a payment gateway transaction id in order to associate payment information with a Subscription or Customer Vault record. Must be set with a 'recurring' or 'customer_vault' action." }, "pinless_debit_override": { "type": "string", "description": "Set to 'Y' if you have Pinless Debit Conversion enabled but want to opt out for this transaction. Feature applies to selected processors only." } } }, { "type": "object", "properties": { "recurring": { "type": "string", "enum": [ "add_subscription" ], "description": "**Recurring Field:** Recurring action to be processed.", "x-group-key": "Recurring" }, "plan_id": { "type": "string", "description": "**Recurring Field:** Create a subscription tied to a Plan ID if the sale/auth transaction is successful.\n\nRequired when **recurring** variable is set to `add_subscription`", "x-group-key": "Recurring" }, "plan_payments": { "type": "integer", "description": "**Recurring Field:** The number of payments before the recurring plan is complete.\n\nNote: Use '0' for until canceled\n\nRequired when **recurring** variable is set to `add_subscription`", "x-group-key": "Recurring" }, "plan_amount": { "type": "number", "description": "**Recurring Field:** The plan amount to be charged each billing cycle.\n\nFormat: `x.xx`\n\nRequired when **recurring** variable is set to `add_subscription`", "x-group-key": "Recurring" }, "month_frequency": { "type": "integer", "minimum": 1, "maximum": 24, "description": "**Recurring Field:** How often, in months, to charge the customer. Cannot be set with 'day_frequency'. Must be set with 'day_of_month'. \n\nRequired when **recurring** variable is set to `add_subscription`", "x-group-key": "Recurring" }, "day_of_month": { "type": "integer", "minimum": 1, "maximum": 31, "description": "**Recurring Field:** The day that the customer will be charged. Cannot be set with 'day_frequency'. Must be set with 'month_frequency'. For months without 29, 30, or 31 days, the charge will be on the last day\n\nRequired when **recurring** variable is set to `add_subscription`", "x-group-key": "Recurring" }, "day_frequency": { "type": "integer", "description": "**Recurring Field:** How often, in days, to charge the customer. Cannot be set with 'month_frequency' or 'day_of_month'.\n\nRequired when **recurring** variable is set to `add_subscription`", "x-group-key": "Recurring" }, "start_date": { "type": "string", "format": "date", "description": "**Recurring Field:** The first day that the customer will be charged.\n\nFormat: `YYYYMMDD`\n\nRequired when **recurring** variable is set to `add_subscription`", "x-group-key": "Recurring" } } }, { "$ref": "#/$defs/CustomerVaultFields" }, { "$ref": "#/$defs/StoredCredentialsFields" }, { "$ref": "#/$defs/LevelThreeOrderFields" }, { "$ref": "#/$defs/LevelThreeLineItemDetailFields" }, { "$ref": "#/$defs/PaymentFacilitatorFields" } ] }, "CreditCard": { "type": "object", "properties": { "ccnumber": { "type": "string", "enum": [ "4111111111111111", "5431111111111111", "6011000991300009", "341111111111111", "30205252489926", "3541963594572595", "6799990100000000019" ], "description": "Credit card number.\n\n
\nAllowed Card Numbers:\n\n| Card Type | Test Card Number |\n|:------------------|:---------------------|\n| Visa | 4111111111111111 |\n| MasterCard | 5431111111111111 |\n| Discover | 6011000991300009 |\n| American Express | 341111111111111 |\n| Diner's Club | 30205252489926 |\n| JCB | 3541963594572595 |\n| Maestro | 6799990100000000019 |\n
" }, "ccexp": { "type": "string", "description": "Credit card expiration date.\n \nFormat: `MMYY`" } } }, "CreditCardWithCvv": { "allOf": [ { "$ref": "#/$defs/CreditCard" }, { "type": "object", "properties": { "cvv": { "type": "string", "description": "The card security code. While this is not required, it is strongly recommended." } } } ] }, "CustomerVaultFields": { "type": "object", "properties": { "customer_vault": { "type": "string", "enum": [ "add_customer", "update_customer" ], "description": "Associate payment information with a Customer Vault record if the transaction is successful.", "x-group-key": "Customer Vault" }, "customer_vault_id": { "type": "string", "description": "Specifies a Customer Vault id. If not set, the payment gateway will randomly generate a Customer Vault id.", "x-group-key": "Customer Vault" } } }, "Descriptor": { "type": "object", "properties": { "descriptor": { "type": "string", "description": "Set payment descriptor on supported processors." }, "descriptor_phone": { "type": "string", "description": "Set payment descriptor phone on supported processors." }, "descriptor_address": { "type": "string", "description": "Set payment descriptor address on supported processors." }, "descriptor_city": { "type": "string", "description": "Set payment descriptor city on supported processors." }, "descriptor_state": { "type": "string", "description": "Set payment descriptor state on supported processors." }, "descriptor_postal": { "type": "string", "description": "Set payment descriptor postal code on supported processors." }, "descriptor_country": { "type": "string", "description": "Set payment descriptor country on supported processors." }, "descriptor_mcc": { "type": "string", "description": "Set payment descriptor mcc on supported processors." }, "descriptor_merchant_id": { "type": "string", "description": "Set payment descriptor merchant id on supported processors." }, "descriptor_url": { "type": "string", "description": "Set payment descriptor url on supported processors." } } }, "DriversLicense": { "type": "object", "properties": { "drivers_license_number": { "type": "string", "description": "Driver's license number." }, "drivers_license_dob": { "type": "string", "description": "Driver's license date of birth." }, "drivers_license_state": { "type": "string", "description": "The state that issued the customer's driver's license." } } }, "Industry": { "type": "object", "properties": { "industry": { "type": "string", "enum": [ "ecommerce", "moto", "retail", "restaurant", "lodging" ], "description": "The industry parameter is supported across multiple transaction types. Its purpose is to identify the merchant industry type for processing" } } }, "LevelThreeLineItemDetailFields": { "type": "object", "properties": { "item_product_code_1": { "type": "string", "description": "**Level III - Line Item:** Merchant defined description code of the item being purchased.\n\n*Up to 99 sets of item_* fields are allowed.*", "x-group-key": "Level III - Line Item(s)" }, "item_description_1": { "type": "string", "description": "**Level III - Line Item:** Description of the item(s) being supplied.", "x-group-key": "Level III - Line Item(s)" }, "item_commodity_code_1": { "type": "string", "description": "**Level III - Line Item:** International description code of the individual good or service being supplied. The acquirer or processor will provide a list of current codes.", "x-group-key": "Level III - Line Item(s)" }, "item_unit_of_measure_1": { "type": "string", "description": "**Level III - Line Item:** Code for units of measurement as used in international trade. Default - `EACH`.", "x-group-key": "Level III - Line Item(s)" }, "item_unit_cost_1": { "type": "number", "description": "**Level III - Line Item:** Unit cost of item purchased, may contain up to 4 decimal places.", "x-group-key": "Level III - Line Item(s)" }, "item_quantity_1": { "type": "integer", "description": "**Level III - Line Item:** Quantity of the item(s) being purchased. Default - `1`.", "x-group-key": "Level III - Line Item(s)" }, "item_total_amount_1": { "type": "number", "description": "**Level III - Line Item:** Purchase amount associated with the item. Defaults to: 'item_unit_cost_#' x 'item_quantity_#' rounded to the nearest penny.", "x-group-key": "Level III - Line Item(s)" }, "item_tax_amount_1": { "type": "number", "description": "**Level III - Line Item:** Amount of sales tax on specific item. Amount should not be included in 'total_amount_#'. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Line Item(s)" }, "item_tax_rate_1": { "type": "number", "description": "**Level III - Line Item:** Percentage representing the value-added tax applied. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Line Item(s)" }, "item_discount_amount_1": { "type": "number", "description": "**Level III - Line Item:** Discount amount which can have been applied by the merchant on the sale of the specific item. Amount should not be included in 'total_amount_#'.", "x-group-key": "Level III - Line Item(s)" }, "item_discount_rate_1": { "type": "number", "description": "**Level III - Line Item:** Discount rate for the line item. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Line Item(s)" }, "item_tax_type_1": { "type": "string", "description": "**Level III - Line Item:** Type of value-added taxes that are being used.", "x-group-key": "Level III - Line Item(s)" }, "item_alternate_tax_id_1": { "type": "string", "description": "**Level III - Line Item:** Tax identification number of the merchant that reported the alternate tax amount.", "x-group-key": "Level III - Line Item(s)" } } }, "LevelThreeOrderFields": { "type": "object", "properties": { "shipping": { "type": "number", "description": "**Level II/III - Order Field:** Freight or shipping amount included in the transaction amount. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Order" }, "tax": { "type": "number", "description": "**Level II/III - Order Field:** The sales tax, included in the transaction amount, associated with the purchase. Setting tax equal to '-1' indicates an order that is exempt from sales tax. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Order" }, "ponumber": { "type": "string", "description": "**Level II/III - Order Field:** Purchase order number", "x-group-key": "Level III - Order" }, "orderid": { "type": "string", "description": "**Level III - Order Field:** Identifier assigned by the merchant. This defaults to gateway transaction id.", "x-group-key": "Level III - Order" }, "shipping_country": { "type": "string", "description": "**Level III - Order Field:** Shipping country (e.g. US).\n \nFormat: `CC` - ISO 3166-1 alpha-2", "x-group-key": "Level III - Order" }, "shipping_postal": { "type": "string", "description": "**Level III - Order Field:** Postal/ZIP code of the address where purchased goods will be delivered. This field can be identical to the 'ship_from_postal' if the customer is present and takes immediate possession of the goods.", "x-group-key": "Level III - Order" }, "ship_from_postal": { "type": "string", "description": "**Level III - Order Field:** Postal/ZIP code of the address from where purchased goods are being shipped, defaults to merchant profile postal code.", "x-group-key": "Level III - Order" }, "summary_commodity_code": { "type": "string", "description": "**Level III - Order Field:** 4 character international description code of the overall goods or services being supplied. The acquirer or processor will provide a list of current codes.", "x-group-key": "Level III - Order" }, "duty_amount": { "type": "number", "description": "**Level III - Order Field:** Amount included in the transaction amount associated with the import of purchased goods. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Order" }, "discount_amount": { "type": "number", "description": "**Level III - Order Field:** Amount included in the transaction amount of any discount applied to complete order by the merchant. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Order" }, "national_tax_amount": { "type": "number", "description": "**Level III - Order Field:** The national tax amount included in the transaction amount. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Order" }, "alternate_tax_amount": { "type": "number", "description": "**Level III - Order Field:** Second tax amount included in the transaction amount in countries where more than one type of tax can be applied to the purchases. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Order" }, "alternate_tax_id": { "type": "string", "description": "**Level III - Order Field:** Tax identification number of the merchant that reported the alternate tax amount.", "x-group-key": "Level III - Order" }, "vat_tax_amount": { "type": "number", "description": "**Level III - Order Field:** Contains the amount of any value added taxes which can be associated with the purchased item. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Order" }, "vat_tax_rate": { "type": "number", "description": "**Level III - Order Field:** Contains the tax rate used to calculate the sales tax amount appearing. Can contain up to 2 decimal places, e.g. 1% = 1.00. Default - `0.00`.\n\nFormat: `x.xx`", "x-group-key": "Level III - Order" }, "vat_invoice_reference_number": { "type": "string", "description": "**Level III - Order Field:** Invoice number that is associated with the VAT invoice.", "x-group-key": "Level III - Order" }, "customer_vat_registration": { "type": "string", "description": "**Level III - Order Field:** Value added tax registration number supplied by the cardholder.", "x-group-key": "Level III - Order" }, "merchant_vat_registration": { "type": "string", "description": "**Level III - Order Field:** Government assigned tax identification number of the merchant for whom the goods or services were purchased from.", "x-group-key": "Level III - Order" }, "order_date": { "type": "string", "format": "date", "description": "**Level III - Order Field:** Purchase order date, defaults to the date of the transaction.\n\nFormat: `YYMMDD`", "x-group-key": "Level III - Order" } } }, "MerchantDefinedField": { "type": "object", "properties": { "merchant_defined_field_1": { "type": "string", "description": "Merchant defined field. You can pass custom information in up to 20 fields.\n\nFormat: `merchant_defined_field_1=Value1`, `merchant_defined_field_2=Value2`, etc..." } } }, "PartialPaymentInfo": { "type": "object", "properties": { "partial_payment_id": { "type": "string", "description": "Unique identifier returned when making the original transaction. This should only be used for secondary transactions." } } }, "PaymentFacilitatorFields": { "type": "object", "properties": { "payment_facilitator_id": { "type": "string", "description": "**Payment Facilitator:** Payment Facilitator/Aggregator/ISO's ID Number", "x-group-key": "Payment Facilitator" }, "submerchant_id": { "type": "string", "description": "**Payment Facilitator:** Sub-merchant Account ID", "x-group-key": "Payment Facilitator" }, "submerchant_name": { "type": "string", "description": "**Payment Facilitator:** Sub-merchant's Name", "x-group-key": "Payment Facilitator" }, "submerchant_address": { "type": "string", "description": "**Payment Facilitator:** Sub-merchant's Address", "x-group-key": "Payment Facilitator" }, "submerchant_city": { "type": "string", "description": "**Payment Facilitator:** Sub-merchant's City", "x-group-key": "Payment Facilitator" }, "submerchant_state": { "type": "string", "description": "**Payment Facilitator:** Sub-merchant's State", "x-group-key": "Payment Facilitator" }, "submerchant_postal": { "type": "string", "description": "**Payment Facilitator:** Sub-merchant's Zip/Postal Code", "x-group-key": "Payment Facilitator" }, "submerchant_country": { "type": "string", "description": "**Payment Facilitator:** Sub-merchant's Country", "x-group-key": "Payment Facilitator" }, "submerchant_phone": { "type": "string", "description": "**Payment Facilitator:** Sub-merchant's Phone Number", "x-group-key": "Payment Facilitator" }, "submerchant_email": { "type": "string", "format": "email", "description": "**Payment Facilitator:** Sub-merchant's Email Address", "x-group-key": "Payment Facilitator" } } }, "SecurityKey": { "type": "string", "description": "API Security Key assigned to a merchant account. New keys can be generated from the merchant control panel in Settings > Security Keys" }, "Shipping": { "type": "object", "properties": { "shipping_firstname": { "type": "string", "description": "Shipping first name" }, "shipping_lastname": { "type": "string", "description": "Shipping last name" }, "shipping_company": { "type": "string", "description": "Shipping company" }, "shipping_address1": { "type": "string", "description": "Shipping address" }, "shipping_address2": { "type": "string", "description": "Shipping address, line 2" }, "shipping_city": { "type": "string", "description": "Shipping city" }, "shipping_state": { "type": "string", "description": "Shipping state.\n \nFormat: `CC`" }, "shipping_zip": { "type": "string", "description": "Shipping zip code" }, "shipping_country": { "type": "string", "description": "Shipping country. *Country codes are as shown in ISO 3166-1 alpha-2*.\n \nFormat: `CC`" }, "shipping_email": { "type": "string", "format": "email", "description": "Shipping email address" } } }, "SignatureImage": { "type": "object", "properties": { "signature_image": { "type": "string", "description": "Cardholder signature image.\n \nFormat: `base64 encoded raw PNG image. (16kiB maximum)`" } } }, "StoredCredentialsFields": { "type": "object", "properties": { "initiated_by": { "type": "string", "enum": [ "customer", "merchant" ], "description": "**Stored Credentials (CIT/MIT):** Who initiated the transaction." }, "initial_transaction_id": { "type": "string", "description": "**Stored Credentials (CIT/MIT):** Original payment gateway transaction id." }, "stored_credential_indicator": { "type": "string", "enum": [ "stored", "used" ], "description": "**Stored Credentials (CIT/MIT):** The indicator of the stored credential.\n\nUse **'stored'** when processing the initial transaction in which you are storing a customer's payment details (customer credentials) in the Customer Vault or other third-party payment storage system.\n\nUse **'used'** when processing a subsequent or follow-up transaction using the customer payment details (customer credentials) you have already stored to the Customer Vault or third-party payment storage method." } } } } }