openapi: 3.0.2 info: x-logo: url: https://apidocs.primer.io/docs/assets/images/primer-logo.svg title: Primer Client Session API Payment Methods API API version: '2.4' description: This API enforces a timeout of 90 seconds for all requests. A 504 response indicates a timeout occurred. servers: - url: https://api.sandbox.primer.io - url: https://api.primer.io security: - ApiKeyAuth: [] tags: - name: Payment Methods API paths: /payment-instruments/{paymentMethodToken}/vault: post: tags: - Payment Methods API summary: Save a payment method token description: '

Save a `SINGLE_USE` payment method token so it can be used again later. If you try to vault an already vaulted token, you will get the existing vaulted token back. ' operationId: vault_payment_method_payment_methods__token__vault_post parameters: - description: Payment method token to store. required: true schema: title: Payment Method Token type: string description: Payment method token name: paymentMethodToken in: path - $ref: '#/components/parameters/ApiVersionHeader' requestBody: content: application/json: schema: $ref: '#/components/schemas/VaultPaymentMethodAPIRequest' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MerchantPaymentMethodTokenAPIResponse' '400': description: Error Response content: application/json: schema: $ref: '#/components/schemas/400ErrorResponse' example: error: errorId: FailedVerification description: Payment method could not be verified diagnosticsId: '1234567898' '422': description: Error Response content: application/json: schema: $ref: '#/components/schemas/422ErrorResponse' example: error: errorId: RequestValidationError description: We were unable to validate your request, please check your payload against /docs/api diagnosticsId: '1234567898' validationErrors: - model: VaultPaymentInstrumentAPIRequest errors: - path: $.customerId description: Ensure this value has at least 1 characters /payment-instruments: get: tags: - Payment Methods API summary: List saved payment methods description: Retrieve a list of stored payment methods for a customer. operationId: get_payment_methods_payment_methods_get parameters: - description: Return payment methods for this customer ID. required: true schema: title: Customer ID type: string description: Return payment methods for this customer ID. name: customer_id in: query - $ref: '#/components/parameters/ApiVersionHeader' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MerchantPaymentMethodTokenListAPIResponse' /payment-instruments/{paymentMethodToken}: delete: tags: - Payment Methods API summary: Delete a saved payment method description: Delete a saved payment method. operationId: delete_payment_method_payment_methods__token__delete parameters: - description: Saved payment method token to delete. required: true schema: title: Payment Method Token type: string description: Payment method token name: paymentMethodToken in: path - $ref: '#/components/parameters/ApiVersionHeader' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MerchantPaymentMethodTokenAPIResponse' '400': description: Error Response content: application/json: schema: $ref: '#/components/schemas/400ErrorResponse' example: error: errorId: InvalidPaymentInstrumentToken description: Invalid payment instrument. diagnosticsId: '1234567898' /payment-instruments/{paymentMethodToken}/default: post: tags: - Payment Methods API summary: Update the default saved payment method description: Update a saved payment method to be the default stored payment method for a customer. operationId: set_payment_method_default_payment_methods__token__default_post parameters: - description: Saved payment method token to set to default. required: true schema: title: Token type: string description: Payment method token name: paymentMethodToken in: path - $ref: '#/components/parameters/ApiVersionHeader' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MerchantPaymentMethodTokenAPIResponse' '400': description: Error Response content: application/json: schema: $ref: '#/components/schemas/400ErrorResponse' example: error: errorId: InvalidPaymentInstrumentToken description: Invalid payment instrument. diagnosticsId: '1234567898' components: schemas: PaymentCardTokenAPISchema: title: PaymentCardTokenAPISchema required: - last4Digits - expirationMonth - expirationYear type: object properties: first6Digits: title: Payment card's first six digits maxLength: 6 minLength: 6 type: string last4Digits: title: Payment card's last four digits maxLength: 4 minLength: 4 type: string expirationMonth: title: Expiration month maxLength: 2 minLength: 2 type: string expirationYear: title: Expiration year maxLength: 4 minLength: 4 type: string cardholderName: title: Cardholder's name type: string network: title: Card network type: string isNetworkTokenized: title: Is represented by a digital PAN type: boolean default: false binData: $ref: '#/components/schemas/BinDataAPISchema' PayPalBillingAgreementAPISchema: title: PayPalBillingAgreementAPISchema required: - paypalBillingAgreementId type: object properties: paypalBillingAgreementId: title: Paypalbillingagreementid type: string externalPayerInfo: $ref: '#/components/schemas/PayPalExternalPayerInfoAPISchema' title: Payer Info description: Information about the PayPal customer shippingAddress: $ref: '#/components/schemas/AddressAPISchema' title: Shipping address description: The PayPal customer's shipping address paypalStatus: title: PayPal order status type: string CardAccountNumberTypeEnum: title: CardAccountNumberTypeEnum enum: - PRIMARY_ACCOUNT_NUMBER - NETWORK_TOKEN - DIGITAL_PAN - UNKNOWN type: string description: An enumeration. AddressAPISchema: title: AddressAPISchema required: - addressLine1 - city - countryCode type: object properties: firstName: title: First Name type: string lastName: title: Last Name type: string addressLine1: title: Address Line 1 type: string description: Street name, Company name or PO Box addressLine2: title: Address Line 2 type: string description: Apartment, Unit or Building number city: title: City type: string description: Name of the city, district, town or village state: title: State type: string description: State, County or Province countryCode: $ref: '#/components/schemas/CountryCodeEnum' title: Country Code description: Two letter ISO country code postalCode: title: Postal Code type: string description: Postal or ZIP code KlarnaCustomerTokenAPISchema: title: KlarnaCustomerTokenAPISchema required: - klarnaCustomerToken - sessionData type: object properties: klarnaCustomerToken: title: Klarnacustomertoken type: string sessionData: $ref: '#/components/schemas/KlarnaSessionDetailsAPISchema' Currency: title: Currency enum: - AED - AFN - ALL - AMD - ANG - AOA - ARS - AUD - AWG - AZN - BAM - BBD - BDT - BGN - BHD - BIF - BMD - BND - BOB - BOV - BRL - BSD - BTN - BWP - BYR - BYN - BZD - CAD - CDF - CHE - CHF - CHW - CLP - CNY - COP - COU - CRC - CUC - CUP - CVE - CZK - DJF - DKK - DOP - DZD - EGP - ERN - ETB - EUR - FJD - FKP - GBP - GEL - GHS - GIP - GMD - GNF - GTQ - GYD - HKD - HNL - HRK - HTG - HUF - IDR - ILS - INR - IQD - IRR - ISK - JMD - JOD - JPY - KES - KGS - KHR - KMF - KPW - KRW - KWD - KYD - KZT - LAK - LBP - LKR - LRD - LSL - LYD - MAD - MDL - MKD - MMK - MNT - MOP - MRO - MUR - MVR - MWK - MXN - MXV - MYR - MZN - NAD - NGN - NIO - NOK - NPR - NZD - OMR - PAB - PEN - PGK - PHP - PKR - PLN - PYG - QAR - RON - RSD - RUB - RWF - SAR - SBD - SCR - SDG - SEK - SGD - SHP - SOS - SRD - SSP - SVC - SYP - SZL - THB - TJS - TMT - TND - TOP - TRY - TTD - TWD - TZS - UAH - UGX - USD - UYU - UZS - VND - VUV - WST - XAF - XAG - XAU - XBA - XBB - XBC - XBD - XCD - XDR - XFU - XOF - XPD - XPF - XPT - XSU - XTS - XUA - YER - ZAR - ZMW - ZWL description: "3-letter currency code in ISO 4217 format, \ne.g. USD for US dollars.\n" VaultPaymentMethodAPIRequest: title: VaultPaymentMethodAPIRequest required: - customerId type: object properties: customerId: title: Customer ID minLength: 1 type: string description: The ID representing the customer additionalProperties: false PayPalExternalPayerInfoAPISchema: title: PayPalExternalPayerInfoAPISchema type: object properties: externalPayerId: title: Externalpayerid type: string email: title: Email type: string firstName: title: Firstname type: string lastName: title: Lastname type: string CardProductTypeEnum: title: CardProductTypeEnum enum: - CONSUMER - BUSINESS - GOVERNMENT - UNKNOWN type: string description: An enumeration. ErrorObject: title: Error type: object description: An object containing information about the error that occurred. required: - errorId - description properties: errorId: title: Error ID type: string description: An error ID description: title: Error description type: string description: A human readable description of the error recoverySuggestion: title: Recovery Suggestion type: string description: A suggestion on how to recover from the error. diagnosticsId: title: Error diagnostics ID type: string description: An ID that you can quote when contacting the Primer support team via our [Support Portal](https://primerapi.atlassian.net/servicedesk/customer/portal/11). validationErrors: title: Validation Errors type: array items: type: object description: Returned in case of a badly formed request GoCardlessMandateAPISchema: title: GoCardlessMandateAPISchema required: - gocardlessMandateId type: object properties: gocardlessMandateId: title: Mandate agreement ID type: string description: Unique identifier of a GoCardless mandate agreement 422ErrorResponse: title: 422ErrorResponse type: object required: - error properties: error: $ref: '#/components/schemas/ErrorObject' PrepaidReloadableEnum: title: PrepaidReloadableEnum enum: - RELOADABLE - NON_RELOADABLE - NOT_APPLICABLE - UNKNOWN type: string description: An enumeration. KlarnaAddressAPISchema: title: KlarnaAddressAPISchema type: object properties: title: title: Title type: string firstName: title: Firstname type: string lastName: title: Lastname type: string email: title: Email type: string phoneNumber: title: Phonenumber type: string addressLine1: title: Addressline1 type: string addressLine2: title: Addressline2 type: string addressLine3: title: Addressline3 type: string city: title: City type: string state: title: State type: string countryCode: $ref: '#/components/schemas/CountryCodeEnum' postalCode: title: Postalcode type: string CardNetworkEnum: title: CardNetworkEnum enum: - AMEX - DANKORT - DINERS_CLUB - DISCOVER - EFTPOS - ENROUTE - ELO - HIPER - INTERAC - JCB - MAESTRO - MASTERCARD - MIR - PRIVATE_LABEL - UNIONPAY - VISA - CARTES_BANCAIRES - OTHER type: string description: 'The list of available card networks. ' KlarnaSessionDetailsAPISchema: title: KlarnaSessionDetailsAPISchema required: - billingAddress - purchaseCountry - purchaseCurrency - locale - orderLines type: object properties: recurringDescription: title: Recurringdescription type: string billingAddress: $ref: '#/components/schemas/KlarnaAddressAPISchema' shippingAddress: $ref: '#/components/schemas/KlarnaAddressAPISchema' purchaseCountry: title: Purchasecountry type: string purchaseCurrency: title: Purchasecurrency type: string locale: title: Locale type: string orderLines: title: Orderlines type: array items: {} tokenDetails: $ref: '#/components/schemas/KlarnaTokenDetails' KlarnaTokenDetails: title: KlarnaTokenDetails required: - type type: object properties: type: title: Type type: string brand: title: Brand type: string masked_number: title: Masked Number type: string expiry_date: title: Expiry Date type: string CountryCodeEnum: title: CountryCodeEnum enum: - AW - AF - AO - AI - AX - AL - AD - AE - AR - AM - AS - AQ - TF - AG - AU - AT - AZ - BI - BE - BJ - BQ - BF - BD - BG - BH - BS - BA - BL - BY - BZ - BM - BO - BR - BB - BN - BT - BV - BW - CF - CA - CC - CH - CL - CN - CI - CM - CD - CG - CK - CO - KM - CV - CR - CU - CW - CX - KY - CY - CZ - DE - DJ - DM - DK - DO - DZ - EC - EG - ER - EH - ES - EE - ET - FI - FJ - FK - FR - FO - FM - GA - GB - GE - GG - GH - GI - GN - GP - GM - GW - GQ - GR - GD - GL - GT - GF - GU - GY - HK - HM - HN - HR - HT - HU - ID - IM - IN - IO - IE - IR - IQ - IS - IL - IT - JM - JE - JO - JP - KZ - KE - KG - KH - KI - KN - KR - KW - LA - LB - LR - LY - LC - LI - LK - LS - LT - LU - LV - MO - MF - MA - MC - MD - MG - MV - MX - MH - MK - ML - MT - MM - ME - MN - MP - MZ - MR - MS - MQ - MU - MW - MY - YT - NA - NC - NE - NF - NG - NI - NU - NL - 'NO' - NP - NR - NZ - OM - PK - PA - PN - PE - PH - PW - PG - PL - PR - KP - PT - PY - PS - PF - QA - RE - RO - RU - RW - SA - SD - SN - SG - GS - SH - SJ - SB - SL - SV - SM - SO - PM - RS - SS - ST - SR - SK - SI - SE - SZ - SX - SC - SY - TC - TD - TG - TH - TJ - TK - TM - TL - TO - TT - TN - TR - TV - TW - TZ - UG - UA - UM - UY - US - UZ - VA - VC - VE - VG - VI - VN - VU - WF - WS - YE - ZA - ZM - ZW description: "2-letter country code in ISO 3166-1 alpha format, \ne.g. FR for France and GB for the United Kingdom.\n" MerchantPaymentMethodTokenListAPIResponse: title: MerchantPaymentMethodTokenListAPIResponse type: object properties: data: title: Data type: array items: $ref: '#/components/schemas/MerchantPaymentMethodTokenAPIResponse' 400ErrorResponse: title: 400ErrorResponse type: object required: - error properties: error: allOf: - $ref: '#/components/schemas/ErrorObject' - type: object properties: paymentId: title: Payment ID type: string description: Payment ID of the related pay paymentStatus: title: Status type: string description: Status of the related payment ApayaCustomerTokenAPISchema: title: ApayaCustomerTokenAPISchema required: - mx type: object properties: mx: title: Mx type: string mnc: title: Mnc type: integer format: int64 mcc: title: Mcc type: integer format: int64 CardRegionRestrictionEnum: title: CardRegionRestrictionEnum enum: - DOMESTIC_USE_ONLY - NONE - UNKNOWN type: string description: An enumeration. AccountFundingTypeEnum: title: AccountFundingTypeEnum enum: - CREDIT - DEBIT - PREPAID - CHARGE - DEFERRED_DEBIT - UNKNOWN type: string description: An enumeration. BinDataAPISchema: title: BinDataAPISchema required: - network - regionalRestriction - accountNumberType - accountFundingType - prepaidReloadableIndicator - productUsageType - productCode - productName type: object properties: network: $ref: '#/components/schemas/CardNetworkEnum' issuerCountryCode: $ref: '#/components/schemas/CountryCodeEnum' issuerName: title: Issuername type: string issuerCurrencyCode: $ref: '#/components/schemas/Currency' regionalRestriction: $ref: '#/components/schemas/CardRegionRestrictionEnum' accountNumberType: $ref: '#/components/schemas/CardAccountNumberTypeEnum' accountFundingType: $ref: '#/components/schemas/AccountFundingTypeEnum' prepaidReloadableIndicator: $ref: '#/components/schemas/PrepaidReloadableEnum' productUsageType: $ref: '#/components/schemas/CardProductTypeEnum' productCode: title: Productcode type: string productName: title: Productname type: string MerchantPaymentMethodTokenAPIResponse: title: MerchantPaymentMethodTokenAPIResponse type: object properties: createdAt: title: Creation date type: string description: Creation date & time of the object (UTC) format: date-time deletedAt: title: Revocation date type: string description: Date & time when this object was revoked. (UTC) format: date-time deleted: title: Revoked type: boolean description: Whether or not this object has been revoked. token: title: Token type: string description: The vaulted payment method token. tokenType: title: Token type type: string description: '* `MULTI_USE` a vaulted token that can be re-used with subsequent payments' analyticsId: title: Unique analytics ID type: string description: Unique analytics identifier corresponding to a payment method paymentMethodType: $ref: '#/components/schemas/PaymentMethodTypeEnum' title: Payment method type description: Payment method type associated with a token. paymentMethodData: title: Payment method data anyOf: - $ref: '#/components/schemas/PaymentCardTokenAPISchema' - $ref: '#/components/schemas/PayPalBillingAgreementAPISchema' - $ref: '#/components/schemas/GoCardlessMandateAPISchema' - $ref: '#/components/schemas/KlarnaCustomerTokenAPISchema' - $ref: '#/components/schemas/ApayaCustomerTokenAPISchema' description: Payment method data customerId: title: Customer ID type: string description: The ID representing the customer description: title: Description type: string description: A friendly description given by the user default: title: Default type: boolean description: Whether or not this payment method is the default default: false example: createdAt: '2021-03-01T12:00:00.123456' token: _xlXlmBcTnuFxc2N3HAI73wxNjE1NTU5ODY5 tokenType: MULTI_USE analyticsId: vuXhpZouWxaZpRZ-x_brZmtT paymentMethodType: PAYMENT_CARD payment_method_data: last4Digits: '1111' expirationMonth: '12' expirationYear: '2030' cardholderName: John Biggins network: Visa networkTransactionId: 020210628190752 accountFundingType: DEBIT customerId: customer-123 description: My first card deleted: false default: true PaymentMethodTypeEnum: title: PaymentMethodTypeEnum enum: - PAYMENT_CARD - GOOGLE_PAY - APPLE_PAY - PAYPAL - BANK_ACCOUNT - KLARNA - APAYA - OPENNODE - HOOLAH - ATOME - COINBASE - NETS - TWOC2P - CLEARPAY - SHOPEEPAY - TRIPLE_A - AFTERPAY - NOL_PAY - PAY_NL_IDEAL - PAY_NL_BANCONTACT - PAY_NL_DIRECT_DEBIT - PAY_NL_SOFORT_BANKING - PAY_NL_PAYPAL - PAY_NL_PAYCONIQ - PAY_NL_GIROPAY - PAY_NL_P24 - PAY_NL_EPS - PAY_NL_KAARTDIRECT - ADYEN_SOFORT - ADYEN_TWINT - ADYEN_GIROPAY - ADYEN_TRUSTLY - ADYEN_ALIPAY - ADYEN_MOBILEPAY - ADYEN_MULTIBANCO - ADYEN_VIPPS - ADYEN_DOTPAY - ADYEN_IDEAL - ADYEN_BLIK - ADYEN_PAYTRAIL - ADYEN_INTERAC - ADYEN_PAYSHOP - ADYEN_MBWAY - ADYEN_AFFIRM - ADYEN_KLARNA - ADYEN_BANCONTACT_PAYCONIQ - ADYEN_EPS - ADYEN_BANCONTACT_CARD - ADYEN_SWISH - MOLLIE_IDEAL - MOLLIE_BANCONTACT - MOLLIE_P24 - MOLLIE_GIROPAY - MOLLIE_EPS - MOLLIE_GIFTCARD - MOLLIE_SOFORT - NETAXEPT_PAYTRAIL - BUCKAROO_IDEAL - BUCKAROO_BANCONTACT - BUCKAROO_SOFORT - BUCKAROO_GIROPAY - BUCKAROO_EPS - RAPYD_GCASH - RAPYD_PROMPTPAY - RAPYD_GRABPAY - RAPYD_POLI - RAPYD_FAST - XFERS_PAYNOW - STRIPE_GIROPAY - STRIPE_IDEAL - ALIPAY_CN - CHAI_KAKAOPAY - CHAI_NAVER - CHAI_TOSS - XENDIT_DANA - XENDIT_OVO - XENDIT_SHOPEEPAY - XENDIT_RETAIL_OUTLETS - OMISE_PROMPTPAY - OMISE_TRUEMONEY - EBANX_PAGOFACIL - PACYPAY_WECHAT - PACYPAY_ALIPAY - PACYPAY_ALIPAY_PLUS - WORLDPAY_IDEAL - IPAY88_CARD - INGENICO_PAYPAL - VOLT_PIX - VOLT_BANK_TRANSFER - BRAINTREE_VENMO - THUNES_SPIRIT_OF_CADEAU - THUNES_ILLICADO - THUNES_CARTE_CADEAU_CONFORAMA - THUNES_CHEQUE_FIDELITE_CONFORAMA - SIPS_CPAY - SIPS_CPAYCONFORAMA - MONEXT_CETELEM - MONEXT_CPAY type: string description: Payment method type, where `OFF_SESSION_PAYMENT` is used for APM (Alternative Payment Method) payments and `PAYMENT_CARD` for traditional debit or credit cards. Please note that this list is different from one indicated on [available payment methods](/docs/connections/payment-methods/available-payment-methods) page and values of this field will be changed in the future versions of the API. parameters: ApiVersionHeader: required: true schema: title: X-API-VERSION type: string example: '2.4' name: X-API-VERSION description: Specifies the version of the API to use. This must be set to `2.4`. in: header securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-API-KEY x-readme: explorer-enabled: true samples-languages: - curl - javascript - python - kotlin - swift headers: - key: X-API-VERSION value: '2.4'