# Take a repeat card payment Take online payments using our Card Payments API. Endpoint: POST /cardPayments/merchantInitiatedTransactions Version: 7 Security: BasicAuth ## Header parameters: - `Content-Type` (string, required) Example: "application/vnd.worldpay.payments-v7+json" - `Accept` (string, required) Example: "application/vnd.worldpay.payments-v7+json" ## Request fields (application/vnd.worldpay.payments-v7+json): - `transactionReference` (string, required) A unique reference generated by you that is used to identify a payment throughout its lifecycle. - `merchant` (object, required) An object that contains information about the merchant. - `merchant.entity` (string, required) Direct your payment to assist with billing, reporting and reconciliation. This is mandatory for authentication and queries. Example: "default" - `merchant.mcc` (string) You can apply a merchant category code mcc to an individual request. You can only provide an mcc if we have enabled the dynamic mcc feature during boarding. If enabled but not provided, merchant.mcc defaults to a configured value. - `merchant.paymentFacilitator` (object) An object containing Payment Facilitator information. This information is required for every authorization only if you are a Payment Facilitator. - `merchant.paymentFacilitator.schemeId` (string, required) Your payment facilitator ID received from Visa, Mastercard, or Amex. - `merchant.paymentFacilitator.independentSalesOrganizationId` (string) - `merchant.paymentFacilitator.subMerchant` (object, required) - `merchant.paymentFacilitator.subMerchant.name` (string, required) - `merchant.paymentFacilitator.subMerchant.reference` (string, required) - `merchant.paymentFacilitator.subMerchant.address` (object, required) - `merchant.paymentFacilitator.subMerchant.address.postalCode` (string, required) Example: "SW1 1AA" - `merchant.paymentFacilitator.subMerchant.address.street` (string, required) Example: "221B Baker Street" - `merchant.paymentFacilitator.subMerchant.address.city` (string, required) Example: "London" - `merchant.paymentFacilitator.subMerchant.address.state` (string) The state code of the subMerchant in ISO-3166-2 format. - `merchant.paymentFacilitator.subMerchant.address.countryCode` (string, required) Country code of the subMerchant in [ISO 3166-1 Alpha-2 format](/products/reference/supported-countries-currencies#iso-country-codes). - `merchant.paymentFacilitator.subMerchant.phoneNumber` (string) - `merchant.paymentFacilitator.subMerchant.taxReference` (string) - `merchant.paymentFacilitator.subMerchant.email` (string) - `merchant.paymentFacilitator.subMerchant.url` (string) - `merchant.taxReference` (string) Merchant's tax reference. - `instruction` (object, required) An object that contains all information related to the payment. - `instruction.requestAutoSettlement` (object, required) Indicates whether the transaction should be sent for settlement now true or later false, at a time of your choosing. - `instruction.requestAutoSettlement.enabled` (boolean) - `instruction.value` (object, required) An object that contains information about the value of the payment. - `instruction.value.amount` (integer, required) The payment amount. This is a whole number with an exponent e.g. if exponent is two, 250 is 2.50. Example: 250 - `instruction.value.currency` (string, required) The three character currency code. See list of [supported currencies](/products/reference/supported-countries-currencies#iso-currency-codes). Example: "USD" - `instruction.value.acceptPartialAmount` (boolean) Set to true to accept partial authorization amount. The remainder of the amount can be charged using a different payment credential via a new authorization request. {% admonition type="info" name="Note" %} requestAutoSettlement must be false for partial authorizations.{% /admonition %} - `instruction.value.surchargeAmount` (integer) The charging amount representing processing and service fees. Ensure that the surchargeAmount complies with local regulations and card network rules before applying. {% admonition type="info" name="Note" %} The surchargeAmount is included in the total transaction amount, e.g. if the value.surchargeAmount is $20 and the value.amount is $100, then the actual cost of goods/services is $80. {% /admonition %} - `instruction.value.convenienceAmount` (integer) The charging amount representing the offer of a convenient payment method or channel (such as online booking fee). Ensure that the convenienceAmount complies with local regulations and card network rules before applying. {% admonition type="info" name="Note" %} The convenience fee is included in the total transaction amount, e.g. if the value.convenienceAmount is $20 and the value.amount is $100, then the actual cost of goods/services is $80. {% /admonition %} - `instruction.narrative` (object, required) The text that appears on your customer's statement. Used to identify the merchant. - `instruction.narrative.line1` (string, required) The first line of the narrative which appears on your customer's statement (24 characters max. If character is not supported it is replaced with a space). - `instruction.narrative.line2` (string) Additional details about the payment e.g. order number, telephone number. - `instruction.paymentInstrument` (object, required) - `instruction.customerAgreement` (object, required) Contains specific customer agreements for the transaction. - `instruction.consumerBillPayment` (boolean) Consumer Bill Payment is a flag which identifies a bill payment paid by providers on behalf of consumers. - `instruction.requestAccountUpdater` (boolean) Allows you to request a real-time account update when using a previously stored card. You can only use this with customerAgreement transactions with a storedCardUsage value of subsequent. If the stored card details that you provided for the transaction are no longer valid and new credentials are available, the authorization will be processed with the new card and its details will be returned in the paymentInstrument object in the response. - `instruction.debtRepayment` (boolean) Debt Repayment Indicator is a flag which identifies a payment with the purpose of repaying a debt. - `instruction.fundsTransfer` (object) Contains details of the funds transfer request, which is a money movement for a reason other than the purchase of goods or services (also known as Account Funding Transaction (AFT)). - `instruction.fundsTransfer.type` (string, required) Specifies the type of the funds transfer. {% admonition type="warning" name="Note" %} You may only submit the fundsTransfer.type values that relate to the use cases that you have been approved for by the schemes.{% /admonition %} Enum: "accountToAccount", "cash", "disbursement", "personToPerson", "purchase", "topUp", "walletLoad" - `instruction.fundsTransfer.purpose` (string) Specifies the purpose of the funds transfer. Required for some regions and use cases (eg crypto). Enum: "businessToBusiness", "creditCardRepayment", "crypto", "crowdLending", "debitCard", "education", "emergency", "familySupport", "gift", "giftCard", "gaming", "highRiskSecurities", "liquidAssets", "medical", "payroll", "prepaidCard", "salary", "savings", "travel", "other" - `instruction.fundsTransfer.recipient` (object) An object containing details about the recipient of funds, including name and address information, as well as recipient account details. In many use cases, the recipient is the same person as the sender (for example if your customer uses their card to load funds into their own crypto exchange or investment account). __Although an optional object in the API schema, recipient is required for some regions and use cases.__ - `instruction.fundsTransfer.recipient.account` (object) An object for the account details of the recipient. - `instruction.fundsTransfer.recipient.firstName` (string) Recipient's first name. Must be supplied if lastName or middleName are provided. - `instruction.fundsTransfer.recipient.middleName` (string) Recipient's middle name. - `instruction.fundsTransfer.recipient.lastName` (string) Recipient's last name. Must be supplied if firstName or middleName are provided. - `instruction.fundsTransfer.recipient.address` (object) The recipient's address. - `instruction.fundsTransfer.recipient.address.address1` (string) Must be supplied if city is provided. - `instruction.fundsTransfer.recipient.address.address2` (string) - `instruction.fundsTransfer.recipient.address.city` (string) Must be supplied if address1 is provided. - `instruction.fundsTransfer.recipient.address.state` (string) 1-3 alphanumeric characters and spaces. - `instruction.fundsTransfer.recipient.address.countryCode` (string, required) Country code in [ISO 3166-1 Alpha-2 format](/products/reference/supported-countries-currencies#iso-country-codes). - `instruction.fundsTransfer.recipient.dateOfBirth` (object) Recipient's date of birth. - `instruction.fundsTransfer.recipient.dateOfBirth.day` (integer, required) - `instruction.fundsTransfer.recipient.dateOfBirth.month` (integer, required) - `instruction.fundsTransfer.recipient.dateOfBirth.year` (integer, required) - `instruction.fundsTransfer.recipient.phoneNumber` (string) Recipient's phone number. - `instruction.fundsTransfer.recipient.documentReference` (string) Recipient's document reference (e.g. Tax ID). - `instruction.fundsTransfer.sender` (object) An object containing details about the sender of funds, including name and address information. The sender account is always the card account declared within instruction.paymentInstrument. __Although an optional object in the API schema, sender is required for some regions and use cases.__ - `instruction.fundsTransfer.sender.firstName` (string) Sender's first name. Must be supplied if lastName or middleName are provided. - `instruction.fundsTransfer.sender.middleName` (string) Sender's middle name. - `instruction.fundsTransfer.sender.lastName` (string) Sender's last name. Must be supplied if firstName or middleName are provided. - `instruction.fundsTransfer.sender.address` (object) The sender's address. - `instruction.fundsTransfer.sender.dateOfBirth` (object) Sender's date of birth. - `instruction.fundsTransfer.sender.documentReference` (string) Sender's document reference (e.g. Tax ID). - `instruction.routing` (object) An object containing specific routing preferences. - `instruction.routing.fundingType` (string) Specifies the credit or debit functionality of a combo card. Enum: "credit", "debit" - `instruction.routing.preferredCardBrand` (string) Specifies your customer's preferred card brand to be used for the transaction using a co-badged card. Enum: "visa", "mastercard", "maestro", "amex", "cartesBancaires", "diners", "dankort", "jcb", "discover", "elo", "eftposAU", "unionPay" - `recipient` (object) Additional transaction recipient data. - `recipient.accountReference` (string) Partial account reference of the primary recipient. Either partial card number (first 6 and last 4, no spaces), or a bank account number Example: "4444331111" - `recipient.lastName` (string) The last name of the recipient. If for a business, then use the company name. Example: "Smith" - `recipient.address` (object) Address of the recipient. - `recipient.address.postalCode` (string, required) The postal code of the recipient (UK only) - `recipient.dateOfBirth` (object) Birth date of the recipient. - `shipping` (object) An object containing shipping details. - `shipping.sender` (object) - `shipping.sender.address` (object) An object containing sender's (shipped from) address. - `shipping.recipient` (object) - `shipping.recipient.address` (object) An object containing recipient's shipping address. - `shipping.recipient.address.countryCode` (string) - `order` (object) An object containing details about the order. - `order.taxExempt` (boolean) A flag to indicate whether the purchase is exempt from tax. Must be set to true if order.salesTax is 0. - `order.orderDate` (object) Date of the order. - `order.items` (array) Array of order items. You can send up to 99 individual order objects within this array. - `order.items.commodityCode` (string) Commodity code as defined by the National Institute of Governmental Purchasing. - `order.items.totalTaxAmount` (integer) Total tax amount for the item(s). - `order.items.unitCost` (integer) The price of one unit of the item purchased. - `order.items.totalAmount` (integer) Total cost of the item(s) including tax. - `order.items.totalAmountNoTax` (integer) Total cost of the item(s) excluding tax. - `order.items.unitOfMeasure` (string) The unit of measure of the purchased item. Explains how to interpret items.quantity field, e.g. quantity = 15, unitOfMeasure = kg. - `order.items.name` (string, required) Name of the item(s). - `order.items.quantity` (integer) Number of items purchased. - `order.items.productCode` (string) Merchant defined product code. - `order.items.totalDiscountAmount` (integer) Total discount amount for the item(s). - `order.dutyAmount` (integer) Total amount of duty costs for the order. - `order.salesTax` (integer) Total amount of sales tax for the order. Must be provided if merchant.taxReference is supplied. - `order.shippingAmount` (integer) Total amount of shipping costs for the order. - `order.invoiceReference` (string) Invoice reference for the order. - `order.discountAmount` (integer) Total amount of discounts for the order. - `customer` (object) Additional customer data. - `customer.documentReference` (string) Required for domestic processing in some Latin American countries. - `customer.reference` (string) Merchant-generated customer reference. - `customer.emailAddress` (string) Customer's email address. If enabled by your configuration, your customer will receive the transaction outcome at this email address. - `industryData` (object) An object containing industry specific order data. - `industryData.type` (string, required) Enum: "airline" - `industryData.airlineName` (string, required) The name of the airline (displayed as it would be on a bill). Example: "Cobb Air" - `industryData.ticket` (object, required) An object containing ticket details. - `industryData.ticket.number` (string, required) The ticket number. Example: "123" - `industryData.ticket.issuerAddress` (object, required) An object containing the ticket issuer's address. - `industryData.ticket.issuerAddress.address1` (string, required) - `industryData.ticket.flightDetails` (array) An array with objects containing flight details. Each object represents one leg of a flight and you can submit up to four flight legs within this array. - `industryData.ticket.flightDetails.fareClassCode` (string, required) The code used by airlines to identity a fare type. - `industryData.ticket.flightDetails.departureAirport` (string, required) The three letter IATA Airport Code for the departure airport. Example: "LHR" - `industryData.ticket.flightDetails.arrivalAirport` (string, required) The three letter IATA Airport Code for the destination airport. Example: "SYD" - `industryData.ticket.flightDetails.carrierCode` (string, required) Same as industryData.airlineCode, the code represents the airline for the specific flight leg. Example: "M1" - `industryData.ticket.flightDetails.fareBasisCode` (string) An optional extension to the fareClassCode for custom codes. Example: "TMYA" - `industryData.ticket.flightDetails.flightCode` (string, required) The flight code. Example: "501" - `industryData.ticket.flightDetails.departureDate` (object, required) An object containing the date of the departure. - `industryData.ticket.flightDetails.stopOver` (boolean) Set to true if this flight leg is a stopover, connecting different destinations. - `industryData.ticket.flightDetails.taxAmount` (integer, required) The tax amount for this specific flight leg. Example: 3500 - `industryData.ticket.restricted` (boolean, required) Typically, restricted airfares require approval and e-ticket processing within 24 hours of making the reservation, are not transferable if cancelled, and can have specific requirements on when or whether a cancelled ticket can be rebooked. You must define if the ticket is restricted, but this does not affect the payment flows. - `industryData.ticket.issueDate` (object) An object containing the ticket's issue date. - `industryData.agentName` (string) The name of the travel agent. Example: "J Small & Co" - `industryData.agentCode` (string, required) The IATA travel agency code. Example: "12345678" - `industryData.invoiceReference` (string) Billing Settlement Plan invoice reference. - `industryData.airlineCode` (string, required) The two character IATA airline code. Example: "CA" - `industryData.passenger` (object, required) An object containing passenger details. - `industryData.passenger.code` (string, required) - `industryData.passenger.firstName` (string, required) - `industryData.passenger.lastName` (string, required) - `riskProfile` (string) Used to update the FraudSight data model to benefit future payments. Example: "https://try.access.worldpay-bsh.securedataplatform.com/riskProfile/{linkData}" ## Response 400 fields (application/vnd.worldpay.payments-v7+json): - `errorName` (string) - `message` (string) - `validationErrors` (array) Further error details - `validationErrors.jsonPath` (string) ## Response 401 fields (application/vnd.worldpay.payments-v7+json): - `errorName` (string) - `message` (string) ## Response 404 fields (application/vnd.worldpay.payments-v7+json): - `errorName` (string) - `message` (string) ## Response 415 fields (application/vnd.worldpay.payments-v7+json): - `errorName` (string) - `message` (string) ## Response 500 fields (application/vnd.worldpay.payments-v7+json): - `errorName` (string) - `message` (string)