Skip to content
Docs
Reference

BackstageClient.paymentProviders

BackstageClient.paymentProviders in @ticketlayer/backstage.

@ticketlayer/backstage


@ticketlayer/backstage / BackstageClient / paymentProviders

paymentProviders: {
  balances: (providerId: string, options?: {
     book?: "live" | "test";
   }, requestOptions?: RequestOptions) => Promise<{
     balances: {
        book: "live" | "test";
        clearing: {
           amount: number;
           currency: string;
           postingCount: number;
        }[];
        createdAt: string;
        externalAccountId: string;
        holderId: string;
        lastPayout:   | {
           amount: number;
           arrivalDate: string;
           currency: string;
           externalId: string;
           id: string;
           paidAt: string | null;
           reconciled: boolean;
           reconciledAt: string | null;
           status: "failed" | "paid" | "pending" | "in_transit" | "canceled";
           unmatchedCount: number;
         }
           | null;
        providerAccountId: string | null;
        pspBalanceId: string;
        suspense: {
           amount: number;
           currency: string;
           postingCount: number;
        }[];
        unmatchedCount: number;
     }[];
     book: "live" | "test";
     providerId: string;
  }>;
  connectAdyen: (request: {
     accountId?: string;
     apiKey: string;
     clientKey: string;
     countryCode?: string;
     currencies: string[];
     environment: "live" | "test";
     hmacKey: string;
     isDefault?: boolean;
     liveEndpointUrlPrefix?: string;
     merchantAccount: string;
     name?: string;
     priority?: number;
     providerId?: string;
     reportApiKey?: string;
     supportedPaymentTypes?: (
        | "other"
        | "in_person_cash"
        | "in_person_card"
        | "online_card"
        | "bank_transfer"
        | "cheque"
        | "voucher"
        | "stored_value"
        | "online_bank_transfer"
       | "online_wallet")[];
     terminalRegion?: "eu" | "us" | "au" | "apse";
   }, requestOptions?: RequestOptions) => Promise<{
     created: boolean;
     currencies: {
        accepted: boolean;
        brands: string[];
        currency: string;
     }[];
     provider: {
        accountId: string | null;
        clientKey: string;
        createdAt: string;
        environment: "live" | "test";
        hasReportApiKey: boolean;
        id: string;
        liveEndpointUrlPrefix: string | null;
        merchantAccount: string;
        name: string;
        status: "active" | "inactive" | "pending_setup";
        supportedCurrencies: string[];
        supportedPaymentTypes: string[];
        terminalRegion: "eu" | "us" | "au" | "apse";
        updatedAt: string;
        verifiedAt: string | null;
        webhookPath: string;
     };
  }>;
  connectPaypal: (request: {
     clientId: string;
     clientSecret: string;
     currencies?: string[];
     environment: "sandbox" | "live";
     name?: string;
   }, requestOptions?: RequestOptions) => Promise<{
     connection: {
        clientId: string | null;
        createdAt: string;
        currencies: string[];
        environment: "sandbox" | "live";
        id: string;
        merchantId: string | null;
        name: string;
        status: "active" | "inactive" | "pending_setup";
        updatedAt: string;
        webhookRegistered: boolean;
        webhookRegistrationError: string | null;
     };
     created: boolean;
     refusedCurrencies: string[];
  }>;
  create: (request: {
     accountId?: string;
     applicationFee?: any;
     capabilities?: {
        maxAmount?: number;
        minAmount?: number;
        requiresCustomerAction?: boolean;
        supportedCurrencies?: string[];
        supportsDelayedCapture?: boolean;
        supportsInstantCapture?: boolean;
        supportsPartialRefunds?: boolean;
        supportsRefunds?: boolean;
     };
     configuration: Record<string, any>;
     description?: string;
     feeStructure?: {
        currency?: string;
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
     };
     integrationServiceUrl?: string;
     integrationServiceVersion?: string;
     integrationType?: "ticketlayer_pay" | "self_service";
     isDefault?: boolean;
     metadata?: Record<string, any>;
     name: string;
     passOnProcessingCosts?: boolean;
     priority?: number;
     processingCostBearer?: "holder" | "beneficiaries";
     supportedPaymentTypes: (
        | "in_person_cash"
        | "in_person_card"
        | "online_card"
        | "bank_transfer"
        | "cheque"
        | "online_bank_transfer"
       | "online_wallet")[];
     type:   | "bank_transfer"
        | "paypal"
        | "cash"
        | "sandbox"
        | "stripe_connect"
        | "stripe_direct"
        | "adyen"
        | "square";
   }, requestOptions?: RequestOptions) => Promise<{
     accountId: string | null;
     applicationFee: {
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
        value?: number;
     } & Record<string, never>;
     capabilities:   | {
        maxAmount?: number;
        minAmount?: number;
        requiresCustomerAction?: boolean;
        supportedCurrencies?: string[];
        supportsDelayedCapture?: boolean;
        supportsInstantCapture?: boolean;
        supportsPartialRefunds?: boolean;
        supportsRefunds?: boolean;
      }
        | null;
     configuration: {
      [key: string]: unknown;
     };
     createdAt: string;
     description: string | null;
     feeStructure:   | {
        currency?: string;
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
      }
        | null;
     id: string;
     integrationServiceUrl: string | null;
     integrationServiceVersion: string;
     isDefault: boolean;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     name: string;
     organisationId: string;
     passOnProcessingCosts: boolean;
     priority: number;
     processingCostBearer: "holder" | "beneficiaries";
     status: "active" | "inactive" | "pending_setup";
     supportedPaymentTypes: (
        | "in_person_cash"
        | "in_person_card"
        | "online_card"
        | "bank_transfer"
        | "cheque"
        | "online_bank_transfer"
       | "online_wallet")[];
     type:   | "bank_transfer"
        | "paypal"
        | "cash"
        | "stripe_connect"
        | "stripe_direct"
        | "adyen"
        | "square"
        | "external";
     updatedAt: string;
  }>;
  createAccountOnboardingLink: (providerId: string, accountId: string, request: {
     refreshUrl: string;
     returnUrl: string;
   }, requestOptions?: RequestOptions) => Promise<{
     connectedAccountId: string;
     expiresAt: string;
     url: string;
  }>;
  createAccountOnboardingSession: (providerId: string, accountId: string, requestOptions?: RequestOptions) => Promise<{
     clientSecret: string;
     connectedAccountId: string;
     expiresAt: string;
     publishableKey: string;
  }>;
  createTicketlayerPayOnboardingLink: (request: {
     refreshUrl: string;
     returnUrl: string;
   }, requestOptions?: RequestOptions) => Promise<{
     connectedAccountId: string;
     expiresAt: string;
     url: string;
  }>;
  createTicketlayerPayOnboardingSession: (requestOptions?: RequestOptions) => Promise<{
     clientSecret: string;
     connectedAccountId: string;
     expiresAt: string;
     publishableKey: string;
  }>;
  delete: (providerId: string, requestOptions?: RequestOptions) => Promise<{
     id: string;
     success: boolean;
  }>;
  enableTicketlayerPay: (request: {
     contactEmail?: string;
     country?: string;
     currency?: string;
     displayName?: string;
     metadata?: Record<string, any>;
   }, requestOptions?: RequestOptions) => Promise<{
     created: boolean;
     status: {
        applicationFee: {
           fixed?: number;
           percentage?: number;
           type: "fixed" | "percentage" | "percentage_plus_fixed";
           value?: number;
        };
        chargesEnabled: boolean;
        connectedAccountId: string | null;
        detailsSubmitted: boolean;
        disabledReason: string | null;
        enabled: boolean;
        lastSyncedAt: string | null;
        onboardingStatus:   | "restricted"
           | "not_started"
           | "in_progress"
           | "pending_verification"
           | "complete"
           | "disabled"
           | null;
        payoutsEnabled: boolean;
        providerId: string | null;
        providerStatus: "active" | "inactive" | "pending_setup" | null;
        requirements:   | {
           deadline: string | null;
           entries: {
              code: string;
              deadline: string | null;
              description: string;
           }[];
           status: "past_due" | "currently_due" | "eventually_due" | null;
         }
           | null;
     };
  }>;
  get: (providerId: string, requestOptions?: RequestOptions) => Promise<{
     accountId: string | null;
     applicationFee: {
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
        value?: number;
     } & Record<string, never>;
     capabilities:   | {
        maxAmount?: number;
        minAmount?: number;
        requiresCustomerAction?: boolean;
        supportedCurrencies?: string[];
        supportsDelayedCapture?: boolean;
        supportsInstantCapture?: boolean;
        supportsPartialRefunds?: boolean;
        supportsRefunds?: boolean;
      }
        | null;
     configuration: {
      [key: string]: unknown;
     };
     createdAt: string;
     description: string | null;
     feeStructure:   | {
        currency?: string;
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
      }
        | null;
     id: string;
     integrationServiceUrl: string | null;
     integrationServiceVersion: string;
     isDefault: boolean;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     name: string;
     organisationId: string;
     passOnProcessingCosts: boolean;
     priority: number;
     processingCostBearer: "holder" | "beneficiaries";
     status: "active" | "inactive" | "pending_setup";
     supportedPaymentTypes: (
        | "in_person_cash"
        | "in_person_card"
        | "online_card"
        | "bank_transfer"
        | "cheque"
        | "online_bank_transfer"
       | "online_wallet")[];
     type:   | "bank_transfer"
        | "paypal"
        | "cash"
        | "stripe_connect"
        | "stripe_direct"
        | "adyen"
        | "square"
        | "external";
     updatedAt: string;
  }>;
  getAccount: (providerId: string, accountId: string, options?: {
     refresh?: "true" | "false" | "0" | "1";
   }, requestOptions?: RequestOptions) => Promise<{
     accountId: string;
     chargesEnabled: boolean;
     connectedAccountId: string | null;
     createdAt: string;
     detailsSubmitted: boolean;
     disabledReason: string | null;
     id: string;
     lastSyncedAt: string | null;
     mode: "direct" | "connected";
     onboardingStatus:   | "restricted"
        | "not_started"
        | "in_progress"
        | "pending_verification"
        | "complete"
        | "disabled"
        | null;
     payoutsEnabled: boolean;
     providerId: string;
     requirements:   | {
        deadline: string | null;
        entries: {
           code: string;
           deadline: string | null;
           description: string;
        }[];
        status: "past_due" | "currently_due" | "eventually_due" | null;
      }
        | null;
     updatedAt: string;
  } & Record<string, never>>;
  getAdyen: (providerId: string, requestOptions?: RequestOptions) => Promise<{
     accountId: string | null;
     clientKey: string;
     createdAt: string;
     environment: "live" | "test";
     hasReportApiKey: boolean;
     id: string;
     liveEndpointUrlPrefix: string | null;
     merchantAccount: string;
     name: string;
     status: "active" | "inactive" | "pending_setup";
     supportedCurrencies: string[];
     supportedPaymentTypes: string[];
     terminalRegion: "eu" | "us" | "au" | "apse";
     updatedAt: string;
     verifiedAt: string | null;
     webhookPath: string;
  }>;
  getDefault: (requestOptions?: RequestOptions) => Promise<{
     accountId: string | null;
     applicationFee: {
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
        value?: number;
     } & Record<string, never>;
     capabilities:   | {
        maxAmount?: number;
        minAmount?: number;
        requiresCustomerAction?: boolean;
        supportedCurrencies?: string[];
        supportsDelayedCapture?: boolean;
        supportsInstantCapture?: boolean;
        supportsPartialRefunds?: boolean;
        supportsRefunds?: boolean;
      }
        | null;
     configuration: {
      [key: string]: unknown;
     };
     createdAt: string;
     description: string | null;
     feeStructure:   | {
        currency?: string;
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
      }
        | null;
     id: string;
     integrationServiceUrl: string | null;
     integrationServiceVersion: string;
     isDefault: boolean;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     name: string;
     organisationId: string;
     passOnProcessingCosts: boolean;
     priority: number;
     processingCostBearer: "holder" | "beneficiaries";
     status: "active" | "inactive" | "pending_setup";
     supportedPaymentTypes: (
        | "in_person_cash"
        | "in_person_card"
        | "online_card"
        | "bank_transfer"
        | "cheque"
        | "online_bank_transfer"
       | "online_wallet")[];
     type:   | "bank_transfer"
        | "paypal"
        | "cash"
        | "stripe_connect"
        | "stripe_direct"
        | "adyen"
        | "square"
        | "external";
     updatedAt: string;
  }>;
  getStripeConnect: (requestOptions?: RequestOptions) => Promise<{
     applicationFee: {
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
        value?: number;
     } & Record<string, never>;
     connectWebhookRegistered: boolean;
     createdAt: string;
     defaultMode: "direct" | "connected";
     id: string;
     livemode: boolean;
     name: string;
     platformAccountId: string | null;
     platformCountry: string | null;
     platformCurrency: string | null;
     publishableKey: string | null;
     refundApplicationFee: boolean;
     status: "active" | "inactive" | "pending_setup";
     updatedAt: string;
     webhookRegistered: boolean;
     webhookRegistrationError: string | null;
  } & Record<string, never>>;
  getTicketlayerPay: (options?: {
     refresh?: "true" | "false" | "0" | "1";
   }, requestOptions?: RequestOptions) => Promise<{
     applicationFee: {
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
        value?: number;
     };
     chargesEnabled: boolean;
     connectedAccountId: string | null;
     detailsSubmitted: boolean;
     disabledReason: string | null;
     enabled: boolean;
     lastSyncedAt: string | null;
     onboardingStatus:   | "restricted"
        | "not_started"
        | "in_progress"
        | "pending_verification"
        | "complete"
        | "disabled"
        | null;
     payoutsEnabled: boolean;
     providerId: string | null;
     providerStatus: "active" | "inactive" | "pending_setup" | null;
     requirements:   | {
        deadline: string | null;
        entries: {
           code: string;
           deadline: string | null;
           description: string;
        }[];
        status: "past_due" | "currently_due" | "eventually_due" | null;
      }
        | null;
  }>;
  linkStripeConnect: (request: {
     applicationFee?: any;
     defaultMode: "direct" | "connected";
     name?: string;
     publishableKey: string;
     refundApplicationFee?: boolean;
     secretKey: string;
   }, requestOptions?: RequestOptions) => Promise<{
     created: boolean;
     provider: {
        applicationFee: {
           fixed?: number;
           percentage?: number;
           type: "fixed" | "percentage" | "percentage_plus_fixed";
           value?: number;
        } & Record<string, never>;
        connectWebhookRegistered: boolean;
        createdAt: string;
        defaultMode: "direct" | "connected";
        id: string;
        livemode: boolean;
        name: string;
        platformAccountId: string | null;
        platformCountry: string | null;
        platformCurrency: string | null;
        publishableKey: string | null;
        refundApplicationFee: boolean;
        status: "active" | "inactive" | "pending_setup";
        updatedAt: string;
        webhookRegistered: boolean;
        webhookRegistrationError: string | null;
     };
  }>;
  list: (options?: {
     accountId?: string;
     integrationType?: "ticketlayer_pay" | "self_service";
     isDefault?: string;
     limit?: string;
     page?: string;
     paymentType?:   | "in_person_cash"
        | "in_person_card"
        | "online_card"
        | "bank_transfer"
        | "cheque"
        | "online_bank_transfer"
        | "online_wallet";
     status?: "active" | "inactive" | "pending_setup";
     type?:   | "bank_transfer"
        | "paypal"
        | "cash"
        | "sandbox"
        | "stripe_connect"
        | "stripe_direct"
        | "adyen"
        | "square";
   }, requestOptions?: RequestOptions) => Promise<{
     pagination: {
        limit: number;
        page: number;
        total: number;
        totalPages: number;
     };
     providers: {
        accountId: string | null;
        applicationFee: {
           fixed?: number;
           percentage?: number;
           type: "fixed" | "percentage" | "percentage_plus_fixed";
           value?: number;
        } & Record<string, never>;
        capabilities:   | {
           maxAmount?: number;
           minAmount?: number;
           requiresCustomerAction?: boolean;
           supportedCurrencies?: string[];
           supportsDelayedCapture?: boolean;
           supportsInstantCapture?: boolean;
           supportsPartialRefunds?: boolean;
           supportsRefunds?: boolean;
         }
           | null;
        configuration: {
         [key: string]: unknown;
        };
        createdAt: string;
        description: string | null;
        feeStructure:   | {
           currency?: string;
           fixed?: number;
           percentage?: number;
           type: "fixed" | "percentage" | "percentage_plus_fixed";
         }
           | null;
        id: string;
        integrationServiceUrl: string | null;
        integrationServiceVersion: string;
        isDefault: boolean;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        name: string;
        organisationId: string;
        passOnProcessingCosts: boolean;
        priority: number;
        processingCostBearer: "holder" | "beneficiaries";
        status: "active" | "inactive" | "pending_setup";
        supportedPaymentTypes: (
           | "in_person_cash"
           | "in_person_card"
           | "online_card"
           | "bank_transfer"
           | "cheque"
           | "online_bank_transfer"
          | "online_wallet")[];
        type:   | "bank_transfer"
           | "paypal"
           | "cash"
           | "stripe_connect"
           | "stripe_direct"
           | "adyen"
           | "square"
           | "external";
        updatedAt: string;
     }[];
  }>;
  listAccounts: (providerId: string, requestOptions?: RequestOptions) => Promise<{
     accountId: string;
     chargesEnabled: boolean;
     connectedAccountId: string | null;
     createdAt: string;
     detailsSubmitted: boolean;
     disabledReason: string | null;
     id: string;
     lastSyncedAt: string | null;
     mode: "direct" | "connected";
     onboardingStatus:   | "restricted"
        | "not_started"
        | "in_progress"
        | "pending_verification"
        | "complete"
        | "disabled"
        | null;
     payoutsEnabled: boolean;
     providerId: string;
     requirements:   | {
        deadline: string | null;
        entries: {
           code: string;
           deadline: string | null;
           description: string;
        }[];
        status: "past_due" | "currently_due" | "eventually_due" | null;
      }
        | null;
     updatedAt: string;
  }[]>;
  listPaypalConnections: (requestOptions?: RequestOptions) => Promise<{
     clientId: string | null;
     createdAt: string;
     currencies: string[];
     environment: "sandbox" | "live";
     id: string;
     merchantId: string | null;
     name: string;
     status: "active" | "inactive" | "pending_setup";
     updatedAt: string;
     webhookRegistered: boolean;
     webhookRegistrationError: string | null;
  }[]>;
  reportStatus: (providerId: string, request: {
     chargesEnabled?: boolean;
     externalAccountId?: string;
     metadata?: Record<string, any>;
     onboardingStatus?: "restricted" | "pending" | "in_progress" | "complete";
     payoutsEnabled?: boolean;
     status: "active" | "inactive" | "pending_setup";
   }, requestOptions?: RequestOptions) => Promise<{
     accountId: string | null;
     applicationFee: {
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
        value?: number;
     } & Record<string, never>;
     capabilities:   | {
        maxAmount?: number;
        minAmount?: number;
        requiresCustomerAction?: boolean;
        supportedCurrencies?: string[];
        supportsDelayedCapture?: boolean;
        supportsInstantCapture?: boolean;
        supportsPartialRefunds?: boolean;
        supportsRefunds?: boolean;
      }
        | null;
     configuration: {
      [key: string]: unknown;
     };
     createdAt: string;
     description: string | null;
     feeStructure:   | {
        currency?: string;
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
      }
        | null;
     id: string;
     integrationServiceUrl: string | null;
     integrationServiceVersion: string;
     isDefault: boolean;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     name: string;
     organisationId: string;
     passOnProcessingCosts: boolean;
     priority: number;
     processingCostBearer: "holder" | "beneficiaries";
     status: "active" | "inactive" | "pending_setup";
     supportedPaymentTypes: (
        | "in_person_cash"
        | "in_person_card"
        | "online_card"
        | "bank_transfer"
        | "cheque"
        | "online_bank_transfer"
       | "online_wallet")[];
     type:   | "bank_transfer"
        | "paypal"
        | "cash"
        | "stripe_connect"
        | "stripe_direct"
        | "adyen"
        | "square"
        | "external";
     updatedAt: string;
  }>;
  setAccountMode: (providerId: string, accountId: string, request: {
     connectedAccountId?: string;
     contactEmail?: string;
     country?: string;
     currency?: string;
     displayName?: string;
     mode: "direct" | "connected";
   }, requestOptions?: RequestOptions) => Promise<{
     accountId: string;
     chargesEnabled: boolean;
     connectedAccountId: string | null;
     createdAt: string;
     detailsSubmitted: boolean;
     disabledReason: string | null;
     id: string;
     lastSyncedAt: string | null;
     mode: "direct" | "connected";
     onboardingStatus:   | "restricted"
        | "not_started"
        | "in_progress"
        | "pending_verification"
        | "complete"
        | "disabled"
        | null;
     payoutsEnabled: boolean;
     providerId: string;
     requirements:   | {
        deadline: string | null;
        entries: {
           code: string;
           deadline: string | null;
           description: string;
        }[];
        status: "past_due" | "currently_due" | "eventually_due" | null;
      }
        | null;
     updatedAt: string;
  }>;
  update: (providerId: string, request: {
     applicationFee?: any;
     capabilities?: {
        maxAmount?: number;
        minAmount?: number;
        requiresCustomerAction?: boolean;
        supportedCurrencies?: string[];
        supportsDelayedCapture?: boolean;
        supportsInstantCapture?: boolean;
        supportsPartialRefunds?: boolean;
        supportsRefunds?: boolean;
     };
     configuration?: Record<string, any>;
     description?: string;
     feeStructure?: {
        currency?: string;
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
     };
     integrationServiceUrl?: string;
     integrationServiceVersion?: string;
     isDefault?: boolean;
     metadata?: Record<string, any>;
     name?: string;
     passOnProcessingCosts?: boolean;
     priority?: number;
     processingCostBearer?: "holder" | "beneficiaries";
     status?: "active" | "inactive" | "pending_setup";
     supportedPaymentTypes?: (
        | "in_person_cash"
        | "in_person_card"
        | "online_card"
        | "bank_transfer"
        | "cheque"
        | "online_bank_transfer"
       | "online_wallet")[];
   }, requestOptions?: RequestOptions) => Promise<{
     accountId: string | null;
     applicationFee: {
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
        value?: number;
     } & Record<string, never>;
     capabilities:   | {
        maxAmount?: number;
        minAmount?: number;
        requiresCustomerAction?: boolean;
        supportedCurrencies?: string[];
        supportsDelayedCapture?: boolean;
        supportsInstantCapture?: boolean;
        supportsPartialRefunds?: boolean;
        supportsRefunds?: boolean;
      }
        | null;
     configuration: {
      [key: string]: unknown;
     };
     createdAt: string;
     description: string | null;
     feeStructure:   | {
        currency?: string;
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
      }
        | null;
     id: string;
     integrationServiceUrl: string | null;
     integrationServiceVersion: string;
     isDefault: boolean;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     name: string;
     organisationId: string;
     passOnProcessingCosts: boolean;
     priority: number;
     processingCostBearer: "holder" | "beneficiaries";
     status: "active" | "inactive" | "pending_setup";
     supportedPaymentTypes: (
        | "in_person_cash"
        | "in_person_card"
        | "online_card"
        | "bank_transfer"
        | "cheque"
        | "online_bank_transfer"
       | "online_wallet")[];
     type:   | "bank_transfer"
        | "paypal"
        | "cash"
        | "stripe_connect"
        | "stripe_direct"
        | "adyen"
        | "square"
        | "external";
     updatedAt: string;
  }>;
};

Defined in: client.ts:6069

Payment Providers methods

balances()#

balances: (providerId: string, options?: {
  book?: "live" | "test";
}, requestOptions?: RequestOptions) => Promise<{
  balances: {
     book: "live" | "test";
     clearing: {
        amount: number;
        currency: string;
        postingCount: number;
     }[];
     createdAt: string;
     externalAccountId: string;
     holderId: string;
     lastPayout:   | {
        amount: number;
        arrivalDate: string;
        currency: string;
        externalId: string;
        id: string;
        paidAt: string | null;
        reconciled: boolean;
        reconciledAt: string | null;
        status: "failed" | "paid" | "pending" | "in_transit" | "canceled";
        unmatchedCount: number;
      }
        | null;
     providerAccountId: string | null;
     pspBalanceId: string;
     suspense: {
        amount: number;
        currency: string;
        postingCount: number;
     }[];
     unmatchedCount: number;
  }[];
  book: "live" | "test";
  providerId: string;
}>;

Read a payment provider's balances: clearing and the last payout What the ledger says the provider holds, per balance it holds money in: the clearing figure per currency (Psp:{pspBalanceId}:Clearing, derived from the postings every time, never cached), what is in suspense, the last payout with whether it reconciled, and how many of its balance transactions matched nothing. Nothing here asks the provider; it is the figure a payout is reconciled against. Reads one book: live unless book=test is asked for (the sandbox's balances are in test). Requires paymentproviders.read, on the provider's Account when it has one, AND ledger.read: the figures are the ledger's, so a credential that may read the provider but not the books (an organisation API key holding only paymentproviders.accounts.write) is refused. A balance is listed only when you may read its holder under both: an Account-scoped reader sees the balances held for its Accounts, and one the organisation holds needs both permissions across the whole organisation. An organisation API key's ledger.read counts only while its organisation allows API keys to read the ledger (allowApiKeyLedgerRead); otherwise 403 API_KEY_LEDGER_READ_NOT_ALLOWED. Amounts are integer MINOR UNITS.

Parameters#

ParameterType
providerIdstring
options?{ book?: "live" | "test"; }
options.book?"live" | "test"
requestOptions?RequestOptions

Returns#

Promise<{ balances: { book: "live" | "test"; clearing: { amount: number; currency: string; postingCount: number; }[]; createdAt: string; externalAccountId: string; holderId: string; lastPayout: | { amount: number; arrivalDate: string; currency: string; externalId: string; id: string; paidAt: string | null; reconciled: boolean; reconciledAt: string | null; status: "failed" | "paid" | "pending" | "in_transit" | "canceled"; unmatchedCount: number; } | null; providerAccountId: string | null; pspBalanceId: string; suspense: { amount: number; currency: string; postingCount: number; }[]; unmatchedCount: number; }[]; book: "live" | "test"; providerId: string; }>

Operation Id#

getPaymentProviderBalances

connectAdyen()#

connectAdyen: (request: {
  accountId?: string;
  apiKey: string;
  clientKey: string;
  countryCode?: string;
  currencies: string[];
  environment: "live" | "test";
  hmacKey: string;
  isDefault?: boolean;
  liveEndpointUrlPrefix?: string;
  merchantAccount: string;
  name?: string;
  priority?: number;
  providerId?: string;
  reportApiKey?: string;
  supportedPaymentTypes?: (
     | "other"
     | "in_person_cash"
     | "in_person_card"
     | "online_card"
     | "bank_transfer"
     | "cheque"
     | "voucher"
     | "stored_value"
     | "online_bank_transfer"
    | "online_wallet")[];
  terminalRegion?: "eu" | "us" | "au" | "apse";
}, requestOptions?: RequestOptions) => Promise<{
  created: boolean;
  currencies: {
     accepted: boolean;
     brands: string[];
     currency: string;
  }[];
  provider: {
     accountId: string | null;
     clientKey: string;
     createdAt: string;
     environment: "live" | "test";
     hasReportApiKey: boolean;
     id: string;
     liveEndpointUrlPrefix: string | null;
     merchantAccount: string;
     name: string;
     status: "active" | "inactive" | "pending_setup";
     supportedCurrencies: string[];
     supportedPaymentTypes: string[];
     terminalRegion: "eu" | "us" | "au" | "apse";
     updatedAt: string;
     verifiedAt: string | null;
     webhookPath: string;
  };
}>;

Connect the organisation's own Adyen account Merchant-credentials mode: the organisation's own Adyen merchant account, API key, client key and webhook HMAC key. Before anything is stored, Adyen is asked whether it accepts the key and, for each currency in currencies, whether the merchant account offers card payments in it; only the currencies Adyen confirms are taken, and none confirmed is 400 ADYEN_CURRENCY_NOT_SUPPORTED. The keys are stored encrypted and never returned. Point the merchant account's standard webhook, with HMAC signing on, at webhookPath. Ticketlayer takes no fee in the payment flow: its fee comes from prepaid credits. A first connection needs the plan to include an own payment provider (403 PLAN_ENTITLEMENT_REQUIRED otherwise); send providerId to change the keys or currencies of an existing one.

Parameters#

ParameterTypeDescription
request{ accountId?: string; apiKey: string; clientKey: string; countryCode?: string; currencies: string[]; environment: "live" | "test"; hmacKey: string; isDefault?: boolean; liveEndpointUrlPrefix?: string; merchantAccount: string; name?: string; priority?: number; providerId?: string; reportApiKey?: string; supportedPaymentTypes?: ( | "other" | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "voucher" | "stored_value" | "online_bank_transfer" | "online_wallet")[]; terminalRegion?: "eu" | "us" | "au" | "apse"; }-
request.accountId?stringDescription The Ticketlayer Account the connection is for; omit for the whole organisation. Ignored on a reconnect. Example acc_abc123
request.apiKey?stringDescription A web service user's API key (stored encrypted, never returned) Example AQEyhmfxK...
request.clientKey?stringDescription The client key Drop-in starts with (public) Example test_ABCDEF1234567890
request.countryCode?stringDescription The shopper country the currency check asks about Example GB
request.currencies?string[]Description The currencies to take; each is checked with Adyen Example [ "GBP" ]
request.environment?"live" | "test"Description Adyen's test platform (test orders only) or live (live orders only) Example test @enum {string}
request.hmacKey?stringDescription The standard webhook's HMAC key (stored encrypted, never returned) Example 44782DEF547AAA06C910C43932B1EB0C71FC68D9D0C057550C48EC2ACF6BA056
request.isDefault?boolean-
request.liveEndpointUrlPrefix?stringDescription Live only: the merchant's Checkout prefix, from the Customer Area Example 1797a841fbb37ca7-TheatreRoyal
request.merchantAccount?stringExample TheatreRoyalECOM
request.name?stringExample Adyen
request.priority?number-
request.providerId?stringDescription Reconnect this Adyen provider (new keys or currencies) instead of creating one Example ppr_adyenXxx123
request.reportApiKey?stringDescription A report user's API key, when settlement reports are downloaded with another user (stored encrypted)
request.supportedPaymentTypes?( | "other" | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "voucher" | "stored_value" | "online_bank_transfer" | "online_wallet")[]Example [ "online_card", "online_wallet", "in_person_card" ]
request.terminalRegion?"eu" | "us" | "au" | "apse"Description Where the live Cloud Terminal API is for this account Example eu @enum {string}
requestOptions?RequestOptions-

Returns#

Promise<{ created: boolean; currencies: { accepted: boolean; brands: string[]; currency: string; }[]; provider: { accountId: string | null; clientKey: string; createdAt: string; environment: "live" | "test"; hasReportApiKey: boolean; id: string; liveEndpointUrlPrefix: string | null; merchantAccount: string; name: string; status: "active" | "inactive" | "pending_setup"; supportedCurrencies: string[]; supportedPaymentTypes: string[]; terminalRegion: "eu" | "us" | "au" | "apse"; updatedAt: string; verifiedAt: string | null; webhookPath: string; }; }>

Operation Id#

connectAdyen

connectPaypal()#

connectPaypal: (request: {
  clientId: string;
  clientSecret: string;
  currencies?: string[];
  environment: "sandbox" | "live";
  name?: string;
}, requestOptions?: RequestOptions) => Promise<{
  connection: {
     clientId: string | null;
     createdAt: string;
     currencies: string[];
     environment: "sandbox" | "live";
     id: string;
     merchantId: string | null;
     name: string;
     status: "active" | "inactive" | "pending_setup";
     updatedAt: string;
     webhookRegistered: boolean;
     webhookRegistrationError: string | null;
  };
  created: boolean;
  refusedCurrencies: string[];
}>;

Connect the organisation's own PayPal REST app Merchant-credentials mode: the organisation's own REST app client id and secret, for one PayPal environment (sandbox for test mode, live). The credentials are checked by reading the PayPal account's balances, which also names the account (its payer id) and the currencies it holds. PayPal is offered only in currencies the account holds: PayPal leaves a payment in any other pending until the merchant accepts it by hand. The secret is stored encrypted and never returned. A webhook subscription to Ticketlayer is made on the REST app; if that fails the connection still takes payments and the error is shown. One connection per environment: connecting again re-keys it. Ticketlayer's fee is not taken in the payment (no platform fees): it is drawn from the organisation's prepaid credits. A first connection needs the organisation's plan to include its own payment provider (entitlements.payments.ownStripe on GET /plan); without it the answer is 403 PLAN_ENTITLEMENT_REQUIRED and the credentials are never sent to PayPal.

Parameters#

ParameterType
request{ clientId: string; clientSecret: string; currencies?: string[]; environment: "sandbox" | "live"; name?: string; }
request.clientIdstring
request.clientSecret?string
request.currencies?string[]
request.environment?"sandbox" | "live"
request.name?string
requestOptions?RequestOptions

Returns#

Promise<{ connection: { clientId: string | null; createdAt: string; currencies: string[]; environment: "sandbox" | "live"; id: string; merchantId: string | null; name: string; status: "active" | "inactive" | "pending_setup"; updatedAt: string; webhookRegistered: boolean; webhookRegistrationError: string | null; }; created: boolean; refusedCurrencies: string[]; }>

Operation Id#

connectPaypal

create()#

create: (request: {
  accountId?: string;
  applicationFee?: any;
  capabilities?: {
     maxAmount?: number;
     minAmount?: number;
     requiresCustomerAction?: boolean;
     supportedCurrencies?: string[];
     supportsDelayedCapture?: boolean;
     supportsInstantCapture?: boolean;
     supportsPartialRefunds?: boolean;
     supportsRefunds?: boolean;
  };
  configuration: Record<string, any>;
  description?: string;
  feeStructure?: {
     currency?: string;
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
  };
  integrationServiceUrl?: string;
  integrationServiceVersion?: string;
  integrationType?: "ticketlayer_pay" | "self_service";
  isDefault?: boolean;
  metadata?: Record<string, any>;
  name: string;
  passOnProcessingCosts?: boolean;
  priority?: number;
  processingCostBearer?: "holder" | "beneficiaries";
  supportedPaymentTypes: (
     | "in_person_cash"
     | "in_person_card"
     | "online_card"
     | "bank_transfer"
     | "cheque"
     | "online_bank_transfer"
    | "online_wallet")[];
  type:   | "bank_transfer"
     | "paypal"
     | "cash"
     | "sandbox"
     | "stripe_connect"
     | "stripe_direct"
     | "adyen"
     | "square";
}, requestOptions?: RequestOptions) => Promise<{
  accountId: string | null;
  applicationFee: {
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
     value?: number;
  } & Record<string, never>;
  capabilities:   | {
     maxAmount?: number;
     minAmount?: number;
     requiresCustomerAction?: boolean;
     supportedCurrencies?: string[];
     supportsDelayedCapture?: boolean;
     supportsInstantCapture?: boolean;
     supportsPartialRefunds?: boolean;
     supportsRefunds?: boolean;
   }
     | null;
  configuration: {
   [key: string]: unknown;
  };
  createdAt: string;
  description: string | null;
  feeStructure:   | {
     currency?: string;
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
   }
     | null;
  id: string;
  integrationServiceUrl: string | null;
  integrationServiceVersion: string;
  isDefault: boolean;
  metadata:   | {
   [key: string]: unknown;
   }
     | null;
  name: string;
  organisationId: string;
  passOnProcessingCosts: boolean;
  priority: number;
  processingCostBearer: "holder" | "beneficiaries";
  status: "active" | "inactive" | "pending_setup";
  supportedPaymentTypes: (
     | "in_person_cash"
     | "in_person_card"
     | "online_card"
     | "bank_transfer"
     | "cheque"
     | "online_bank_transfer"
    | "online_wallet")[];
  type:   | "bank_transfer"
     | "paypal"
     | "cash"
     | "stripe_connect"
     | "stripe_direct"
     | "adyen"
     | "square"
     | "external";
  updatedAt: string;
}>;

Create payment provider Create a new payment provider configuration. A self-service card gateway (stripe_connect, stripe_direct, adyen, square, paypal) is the organisation bringing its own payment provider, and needs its plan to include that (entitlements.payments.ownStripe on GET /plan); without it the answer is 403 PLAN_ENTITLEMENT_REQUIRED. The sandbox, cash and bank transfer are available on every plan. Ticketlayer Pay, also on every plan, is not created here: integrationType: ticketlayer_pay is refused with 400 TICKETLAYER_PAY_MANAGED, because its configuration is written by Ticketlayer from the connected account it vends. Use POST /payment-providers/ticketlayer-pay/enable, then an onboarding session. An Adyen connection is not created here either (400 ADYEN_CONNECT_REQUIRED): POST /payment-providers/adyen/connect checks its keys and currencies with Adyen first.

Parameters#

ParameterType
request{ accountId?: string; applicationFee?: any; capabilities?: { maxAmount?: number; minAmount?: number; requiresCustomerAction?: boolean; supportedCurrencies?: string[]; supportsDelayedCapture?: boolean; supportsInstantCapture?: boolean; supportsPartialRefunds?: boolean; supportsRefunds?: boolean; }; configuration: Record<string, any>; description?: string; feeStructure?: { currency?: string; fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; }; integrationServiceUrl?: string; integrationServiceVersion?: string; integrationType?: "ticketlayer_pay" | "self_service"; isDefault?: boolean; metadata?: Record<string, any>; name: string; passOnProcessingCosts?: boolean; priority?: number; processingCostBearer?: "holder" | "beneficiaries"; supportedPaymentTypes: ( | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet")[]; type: | "bank_transfer" | "paypal" | "cash" | "sandbox" | "stripe_connect" | "stripe_direct" | "adyen" | "square"; }
request.accountId?string
request.applicationFee?any
request.capabilities?{ maxAmount?: number; minAmount?: number; requiresCustomerAction?: boolean; supportedCurrencies?: string[]; supportsDelayedCapture?: boolean; supportsInstantCapture?: boolean; supportsPartialRefunds?: boolean; supportsRefunds?: boolean; }
request.capabilities.maxAmount?number
request.capabilities.minAmount?number
request.capabilities.requiresCustomerAction?boolean
request.capabilities.supportedCurrencies?string[]
request.capabilities.supportsDelayedCapture?boolean
request.capabilities.supportsInstantCapture?boolean
request.capabilities.supportsPartialRefunds?boolean
request.capabilities.supportsRefunds?boolean
request.configuration?Record<string, any>
request.description?string
request.feeStructure?{ currency?: string; fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; }
request.feeStructure.currency?string
request.feeStructure.fixed?number
request.feeStructure.percentage?number
request.feeStructure.type?"fixed" | "percentage" | "percentage_plus_fixed"
request.integrationServiceUrl?string
request.integrationServiceVersion?string
request.integrationType?"ticketlayer_pay" | "self_service"
request.isDefault?boolean
request.metadata?Record<string, any>
request.name?string
request.passOnProcessingCosts?boolean
request.priority?number
request.processingCostBearer?"holder" | "beneficiaries"
request.supportedPaymentTypes?( | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet")[]
request.type?| "bank_transfer" | "paypal" | "cash" | "sandbox" | "stripe_connect" | "stripe_direct" | "adyen" | "square"
requestOptions?RequestOptions

Returns#

Promise<{ accountId: string | null; applicationFee: { fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; value?: number; } & Record<string, never>; capabilities: | { maxAmount?: number; minAmount?: number; requiresCustomerAction?: boolean; supportedCurrencies?: string[]; supportsDelayedCapture?: boolean; supportsInstantCapture?: boolean; supportsPartialRefunds?: boolean; supportsRefunds?: boolean; } | null; configuration: { [key: string]: unknown; }; createdAt: string; description: string | null; feeStructure: | { currency?: string; fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; } | null; id: string; integrationServiceUrl: string | null; integrationServiceVersion: string; isDefault: boolean; metadata: | { [key: string]: unknown; } | null; name: string; organisationId: string; passOnProcessingCosts: boolean; priority: number; processingCostBearer: "holder" | "beneficiaries"; status: "active" | "inactive" | "pending_setup"; supportedPaymentTypes: ( | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet")[]; type: | "bank_transfer" | "paypal" | "cash" | "stripe_connect" | "stripe_direct" | "adyen" | "square" | "external"; updatedAt: string; }>

Operation Id#

createPaymentProvider

createAccountOnboardingLink: (providerId: string, accountId: string, request: {
  refreshUrl: string;
  returnUrl: string;
}, requestOptions?: RequestOptions) => Promise<{
  connectedAccountId: string;
  expiresAt: string;
  url: string;
}>;

Hosted onboarding link for an Account's connected account

Parameters#

ParameterType
providerIdstring
accountIdstring
request{ refreshUrl: string; returnUrl: string; }
request.refreshUrlstring
request.returnUrl?string
requestOptions?RequestOptions

Returns#

Promise<{ connectedAccountId: string; expiresAt: string; url: string; }>

Operation Id#

createPaymentProviderAccountOnboardingLink

createAccountOnboardingSession()#

createAccountOnboardingSession: (providerId: string, accountId: string, requestOptions?: RequestOptions) => Promise<{
  clientSecret: string;
  connectedAccountId: string;
  expiresAt: string;
  publishableKey: string;
}>;

Account Session for embedded onboarding of an Account's connected account

Parameters#

ParameterType
providerIdstring
accountIdstring
requestOptions?RequestOptions

Returns#

Promise<{ clientSecret: string; connectedAccountId: string; expiresAt: string; publishableKey: string; }>

Operation Id#

createPaymentProviderAccountOnboardingSession

createTicketlayerPayOnboardingLink: (request: {
  refreshUrl: string;
  returnUrl: string;
}, requestOptions?: RequestOptions) => Promise<{
  connectedAccountId: string;
  expiresAt: string;
  url: string;
}>;

Hosted onboarding link for Ticketlayer Pay

Parameters#

ParameterType
request{ refreshUrl: string; returnUrl: string; }
request.refreshUrlstring
request.returnUrl?string
requestOptions?RequestOptions

Returns#

Promise<{ connectedAccountId: string; expiresAt: string; url: string; }>

Operation Id#

createTicketlayerPayOnboardingLink

createTicketlayerPayOnboardingSession()#

createTicketlayerPayOnboardingSession: (requestOptions?: RequestOptions) => Promise<{
  clientSecret: string;
  connectedAccountId: string;
  expiresAt: string;
  publishableKey: string;
}>;

Account Session for embedded Ticketlayer Pay onboarding Mints a Stripe Account Session for the embedded account-onboarding, account-management and notification-banner components.

Parameters#

ParameterType
requestOptions?RequestOptions

Returns#

Promise<{ clientSecret: string; connectedAccountId: string; expiresAt: string; publishableKey: string; }>

Operation Id#

createTicketlayerPayOnboardingSession

delete()#

delete: (providerId: string, requestOptions?: RequestOptions) => Promise<{
  id: string;
  success: boolean;
}>;

Delete payment provider Delete a payment provider (soft delete)

Parameters#

ParameterType
providerIdstring
requestOptions?RequestOptions

Returns#

Promise<{ id: string; success: boolean; }>

Operation Id#

deletePaymentProvider

enableTicketlayerPay()#

enableTicketlayerPay: (request: {
  contactEmail?: string;
  country?: string;
  currency?: string;
  displayName?: string;
  metadata?: Record<string, any>;
}, requestOptions?: RequestOptions) => Promise<{
  created: boolean;
  status: {
     applicationFee: {
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
        value?: number;
     };
     chargesEnabled: boolean;
     connectedAccountId: string | null;
     detailsSubmitted: boolean;
     disabledReason: string | null;
     enabled: boolean;
     lastSyncedAt: string | null;
     onboardingStatus:   | "restricted"
        | "not_started"
        | "in_progress"
        | "pending_verification"
        | "complete"
        | "disabled"
        | null;
     payoutsEnabled: boolean;
     providerId: string | null;
     providerStatus: "active" | "inactive" | "pending_setup" | null;
     requirements:   | {
        deadline: string | null;
        entries: {
           code: string;
           deadline: string | null;
           description: string;
        }[];
        status: "past_due" | "currently_due" | "eventually_due" | null;
      }
        | null;
  };
}>;

Enable Ticketlayer Pay Vend the organisation's connected account on Ticketlayer's Stripe platform and create its Ticketlayer Pay provider. Idempotent: a second call returns the existing provider.

Parameters#

ParameterType
request{ contactEmail?: string; country?: string; currency?: string; displayName?: string; metadata?: Record<string, any>; }
request.contactEmail?string
request.country?string
request.currency?string
request.displayName?string
request.metadata?Record<string, any>
requestOptions?RequestOptions

Returns#

Promise<{ created: boolean; status: { applicationFee: { fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; value?: number; }; chargesEnabled: boolean; connectedAccountId: string | null; detailsSubmitted: boolean; disabledReason: string | null; enabled: boolean; lastSyncedAt: string | null; onboardingStatus: | "restricted" | "not_started" | "in_progress" | "pending_verification" | "complete" | "disabled" | null; payoutsEnabled: boolean; providerId: string | null; providerStatus: "active" | "inactive" | "pending_setup" | null; requirements: | { deadline: string | null; entries: { code: string; deadline: string | null; description: string; }[]; status: "past_due" | "currently_due" | "eventually_due" | null; } | null; }; }>

Operation Id#

enableTicketlayerPay

get()#

get: (providerId: string, requestOptions?: RequestOptions) => Promise<{
  accountId: string | null;
  applicationFee: {
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
     value?: number;
  } & Record<string, never>;
  capabilities:   | {
     maxAmount?: number;
     minAmount?: number;
     requiresCustomerAction?: boolean;
     supportedCurrencies?: string[];
     supportsDelayedCapture?: boolean;
     supportsInstantCapture?: boolean;
     supportsPartialRefunds?: boolean;
     supportsRefunds?: boolean;
   }
     | null;
  configuration: {
   [key: string]: unknown;
  };
  createdAt: string;
  description: string | null;
  feeStructure:   | {
     currency?: string;
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
   }
     | null;
  id: string;
  integrationServiceUrl: string | null;
  integrationServiceVersion: string;
  isDefault: boolean;
  metadata:   | {
   [key: string]: unknown;
   }
     | null;
  name: string;
  organisationId: string;
  passOnProcessingCosts: boolean;
  priority: number;
  processingCostBearer: "holder" | "beneficiaries";
  status: "active" | "inactive" | "pending_setup";
  supportedPaymentTypes: (
     | "in_person_cash"
     | "in_person_card"
     | "online_card"
     | "bank_transfer"
     | "cheque"
     | "online_bank_transfer"
    | "online_wallet")[];
  type:   | "bank_transfer"
     | "paypal"
     | "cash"
     | "stripe_connect"
     | "stripe_direct"
     | "adyen"
     | "square"
     | "external";
  updatedAt: string;
}>;

Get payment provider Get a specific payment provider by ID

Parameters#

ParameterType
providerIdstring
requestOptions?RequestOptions

Returns#

Promise<{ accountId: string | null; applicationFee: { fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; value?: number; } & Record<string, never>; capabilities: | { maxAmount?: number; minAmount?: number; requiresCustomerAction?: boolean; supportedCurrencies?: string[]; supportsDelayedCapture?: boolean; supportsInstantCapture?: boolean; supportsPartialRefunds?: boolean; supportsRefunds?: boolean; } | null; configuration: { [key: string]: unknown; }; createdAt: string; description: string | null; feeStructure: | { currency?: string; fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; } | null; id: string; integrationServiceUrl: string | null; integrationServiceVersion: string; isDefault: boolean; metadata: | { [key: string]: unknown; } | null; name: string; organisationId: string; passOnProcessingCosts: boolean; priority: number; processingCostBearer: "holder" | "beneficiaries"; status: "active" | "inactive" | "pending_setup"; supportedPaymentTypes: ( | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet")[]; type: | "bank_transfer" | "paypal" | "cash" | "stripe_connect" | "stripe_direct" | "adyen" | "square" | "external"; updatedAt: string; }>

Operation Id#

getPaymentProvider

getAccount()#

getAccount: (providerId: string, accountId: string, options?: {
  refresh?: "true" | "false" | "0" | "1";
}, requestOptions?: RequestOptions) => Promise<{
  accountId: string;
  chargesEnabled: boolean;
  connectedAccountId: string | null;
  createdAt: string;
  detailsSubmitted: boolean;
  disabledReason: string | null;
  id: string;
  lastSyncedAt: string | null;
  mode: "direct" | "connected";
  onboardingStatus:   | "restricted"
     | "not_started"
     | "in_progress"
     | "pending_verification"
     | "complete"
     | "disabled"
     | null;
  payoutsEnabled: boolean;
  providerId: string;
  requirements:   | {
     deadline: string | null;
     entries: {
        code: string;
        deadline: string | null;
        description: string;
     }[];
     status: "past_due" | "currently_due" | "eventually_due" | null;
   }
     | null;
  updatedAt: string;
} & Record<string, never>>;

One Account's routing on a Stripe Connect provider

Parameters#

ParameterType
providerIdstring
accountIdstring
options?{ refresh?: "true" | "false" | "0" | "1"; }
options.refresh?"true" | "false" | "0" | "1"
requestOptions?RequestOptions

Returns#

Promise<{ accountId: string; chargesEnabled: boolean; connectedAccountId: string | null; createdAt: string; detailsSubmitted: boolean; disabledReason: string | null; id: string; lastSyncedAt: string | null; mode: "direct" | "connected"; onboardingStatus: | "restricted" | "not_started" | "in_progress" | "pending_verification" | "complete" | "disabled" | null; payoutsEnabled: boolean; providerId: string; requirements: | { deadline: string | null; entries: { code: string; deadline: string | null; description: string; }[]; status: "past_due" | "currently_due" | "eventually_due" | null; } | null; updatedAt: string; } & Record<string, never>>

Operation Id#

getPaymentProviderAccount

getAdyen()#

getAdyen: (providerId: string, requestOptions?: RequestOptions) => Promise<{
  accountId: string | null;
  clientKey: string;
  createdAt: string;
  environment: "live" | "test";
  hasReportApiKey: boolean;
  id: string;
  liveEndpointUrlPrefix: string | null;
  merchantAccount: string;
  name: string;
  status: "active" | "inactive" | "pending_setup";
  supportedCurrencies: string[];
  supportedPaymentTypes: string[];
  terminalRegion: "eu" | "us" | "au" | "apse";
  updatedAt: string;
  verifiedAt: string | null;
  webhookPath: string;
}>;

An Adyen connection The connection as stored: merchant account, platform, client key, the currencies Adyen confirmed, and where its webhook points. Never a key.

Parameters#

ParameterType
providerIdstring
requestOptions?RequestOptions

Returns#

Promise<{ accountId: string | null; clientKey: string; createdAt: string; environment: "live" | "test"; hasReportApiKey: boolean; id: string; liveEndpointUrlPrefix: string | null; merchantAccount: string; name: string; status: "active" | "inactive" | "pending_setup"; supportedCurrencies: string[]; supportedPaymentTypes: string[]; terminalRegion: "eu" | "us" | "au" | "apse"; updatedAt: string; verifiedAt: string | null; webhookPath: string; }>

Operation Id#

getAdyenConnection

getDefault()#

getDefault: (requestOptions?: RequestOptions) => Promise<{
  accountId: string | null;
  applicationFee: {
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
     value?: number;
  } & Record<string, never>;
  capabilities:   | {
     maxAmount?: number;
     minAmount?: number;
     requiresCustomerAction?: boolean;
     supportedCurrencies?: string[];
     supportsDelayedCapture?: boolean;
     supportsInstantCapture?: boolean;
     supportsPartialRefunds?: boolean;
     supportsRefunds?: boolean;
   }
     | null;
  configuration: {
   [key: string]: unknown;
  };
  createdAt: string;
  description: string | null;
  feeStructure:   | {
     currency?: string;
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
   }
     | null;
  id: string;
  integrationServiceUrl: string | null;
  integrationServiceVersion: string;
  isDefault: boolean;
  metadata:   | {
   [key: string]: unknown;
   }
     | null;
  name: string;
  organisationId: string;
  passOnProcessingCosts: boolean;
  priority: number;
  processingCostBearer: "holder" | "beneficiaries";
  status: "active" | "inactive" | "pending_setup";
  supportedPaymentTypes: (
     | "in_person_cash"
     | "in_person_card"
     | "online_card"
     | "bank_transfer"
     | "cheque"
     | "online_bank_transfer"
    | "online_wallet")[];
  type:   | "bank_transfer"
     | "paypal"
     | "cash"
     | "stripe_connect"
     | "stripe_direct"
     | "adyen"
     | "square"
     | "external";
  updatedAt: string;
}>;

Get default payment provider Get the default payment provider for the account/organisation

Parameters#

ParameterType
requestOptions?RequestOptions

Returns#

Promise<{ accountId: string | null; applicationFee: { fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; value?: number; } & Record<string, never>; capabilities: | { maxAmount?: number; minAmount?: number; requiresCustomerAction?: boolean; supportedCurrencies?: string[]; supportsDelayedCapture?: boolean; supportsInstantCapture?: boolean; supportsPartialRefunds?: boolean; supportsRefunds?: boolean; } | null; configuration: { [key: string]: unknown; }; createdAt: string; description: string | null; feeStructure: | { currency?: string; fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; } | null; id: string; integrationServiceUrl: string | null; integrationServiceVersion: string; isDefault: boolean; metadata: | { [key: string]: unknown; } | null; name: string; organisationId: string; passOnProcessingCosts: boolean; priority: number; processingCostBearer: "holder" | "beneficiaries"; status: "active" | "inactive" | "pending_setup"; supportedPaymentTypes: ( | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet")[]; type: | "bank_transfer" | "paypal" | "cash" | "stripe_connect" | "stripe_direct" | "adyen" | "square" | "external"; updatedAt: string; }>

Operation Id#

getDefaultPaymentProvider

getStripeConnect()#

getStripeConnect: (requestOptions?: RequestOptions) => Promise<{
  applicationFee: {
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
     value?: number;
  } & Record<string, never>;
  connectWebhookRegistered: boolean;
  createdAt: string;
  defaultMode: "direct" | "connected";
  id: string;
  livemode: boolean;
  name: string;
  platformAccountId: string | null;
  platformCountry: string | null;
  platformCurrency: string | null;
  publishableKey: string | null;
  refundApplicationFee: boolean;
  status: "active" | "inactive" | "pending_setup";
  updatedAt: string;
  webhookRegistered: boolean;
  webhookRegistrationError: string | null;
} & Record<string, never>>;

The organisation's Stripe Connect provider

Parameters#

ParameterType
requestOptions?RequestOptions

Returns#

Promise<{ applicationFee: { fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; value?: number; } & Record<string, never>; connectWebhookRegistered: boolean; createdAt: string; defaultMode: "direct" | "connected"; id: string; livemode: boolean; name: string; platformAccountId: string | null; platformCountry: string | null; platformCurrency: string | null; publishableKey: string | null; refundApplicationFee: boolean; status: "active" | "inactive" | "pending_setup"; updatedAt: string; webhookRegistered: boolean; webhookRegistrationError: string | null; } & Record<string, never>>

Operation Id#

getStripeConnect

getTicketlayerPay()#

getTicketlayerPay: (options?: {
  refresh?: "true" | "false" | "0" | "1";
}, requestOptions?: RequestOptions) => Promise<{
  applicationFee: {
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
     value?: number;
  };
  chargesEnabled: boolean;
  connectedAccountId: string | null;
  detailsSubmitted: boolean;
  disabledReason: string | null;
  enabled: boolean;
  lastSyncedAt: string | null;
  onboardingStatus:   | "restricted"
     | "not_started"
     | "in_progress"
     | "pending_verification"
     | "complete"
     | "disabled"
     | null;
  payoutsEnabled: boolean;
  providerId: string | null;
  providerStatus: "active" | "inactive" | "pending_setup" | null;
  requirements:   | {
     deadline: string | null;
     entries: {
        code: string;
        deadline: string | null;
        description: string;
     }[];
     status: "past_due" | "currently_due" | "eventually_due" | null;
   }
     | null;
}>;

Ticketlayer Pay status Onboarding and charge state of the organisation's Ticketlayer Pay account; refresh=true re-reads Stripe first.

Parameters#

ParameterType
options?{ refresh?: "true" | "false" | "0" | "1"; }
options.refresh?"true" | "false" | "0" | "1"
requestOptions?RequestOptions

Returns#

Promise<{ applicationFee: { fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; value?: number; }; chargesEnabled: boolean; connectedAccountId: string | null; detailsSubmitted: boolean; disabledReason: string | null; enabled: boolean; lastSyncedAt: string | null; onboardingStatus: | "restricted" | "not_started" | "in_progress" | "pending_verification" | "complete" | "disabled" | null; payoutsEnabled: boolean; providerId: string | null; providerStatus: "active" | "inactive" | "pending_setup" | null; requirements: | { deadline: string | null; entries: { code: string; deadline: string | null; description: string; }[]; status: "past_due" | "currently_due" | "eventually_due" | null; } | null; }>

Operation Id#

getTicketlayerPay

linkStripeConnect()#

linkStripeConnect: (request: {
  applicationFee?: any;
  defaultMode: "direct" | "connected";
  name?: string;
  publishableKey: string;
  refundApplicationFee?: boolean;
  secretKey: string;
}, requestOptions?: RequestOptions) => Promise<{
  created: boolean;
  provider: {
     applicationFee: {
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
        value?: number;
     } & Record<string, never>;
     connectWebhookRegistered: boolean;
     createdAt: string;
     defaultMode: "direct" | "connected";
     id: string;
     livemode: boolean;
     name: string;
     platformAccountId: string | null;
     platformCountry: string | null;
     platformCurrency: string | null;
     publishableKey: string | null;
     refundApplicationFee: boolean;
     status: "active" | "inactive" | "pending_setup";
     updatedAt: string;
     webhookRegistered: boolean;
     webhookRegistrationError: string | null;
  };
}>;

Link the organisation's own Stripe account Validates the keys against Stripe, stores them encrypted, registers the webhook endpoints and creates (or re-keys) the organisation's stripe_connect provider. Linking a first provider needs the organisation's plan to include its own payment provider (entitlements.payments.ownStripe on GET /plan); without it the answer is 403 PLAN_ENTITLEMENT_REQUIRED and the keys are never sent to Stripe. Re-keying a provider the organisation already has is not refused on any plan.

Parameters#

ParameterType
request{ applicationFee?: any; defaultMode: "direct" | "connected"; name?: string; publishableKey: string; refundApplicationFee?: boolean; secretKey: string; }
request.applicationFee?any
request.defaultMode?"direct" | "connected"
request.name?string
request.publishableKey?string
request.refundApplicationFee?boolean
request.secretKey?string
requestOptions?RequestOptions

Returns#

Promise<{ created: boolean; provider: { applicationFee: { fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; value?: number; } & Record<string, never>; connectWebhookRegistered: boolean; createdAt: string; defaultMode: "direct" | "connected"; id: string; livemode: boolean; name: string; platformAccountId: string | null; platformCountry: string | null; platformCurrency: string | null; publishableKey: string | null; refundApplicationFee: boolean; status: "active" | "inactive" | "pending_setup"; updatedAt: string; webhookRegistered: boolean; webhookRegistrationError: string | null; }; }>

Operation Id#

linkStripeConnect

list()#

list: (options?: {
  accountId?: string;
  integrationType?: "ticketlayer_pay" | "self_service";
  isDefault?: string;
  limit?: string;
  page?: string;
  paymentType?:   | "in_person_cash"
     | "in_person_card"
     | "online_card"
     | "bank_transfer"
     | "cheque"
     | "online_bank_transfer"
     | "online_wallet";
  status?: "active" | "inactive" | "pending_setup";
  type?:   | "bank_transfer"
     | "paypal"
     | "cash"
     | "sandbox"
     | "stripe_connect"
     | "stripe_direct"
     | "adyen"
     | "square";
}, requestOptions?: RequestOptions) => Promise<{
  pagination: {
     limit: number;
     page: number;
     total: number;
     totalPages: number;
  };
  providers: {
     accountId: string | null;
     applicationFee: {
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
        value?: number;
     } & Record<string, never>;
     capabilities:   | {
        maxAmount?: number;
        minAmount?: number;
        requiresCustomerAction?: boolean;
        supportedCurrencies?: string[];
        supportsDelayedCapture?: boolean;
        supportsInstantCapture?: boolean;
        supportsPartialRefunds?: boolean;
        supportsRefunds?: boolean;
      }
        | null;
     configuration: {
      [key: string]: unknown;
     };
     createdAt: string;
     description: string | null;
     feeStructure:   | {
        currency?: string;
        fixed?: number;
        percentage?: number;
        type: "fixed" | "percentage" | "percentage_plus_fixed";
      }
        | null;
     id: string;
     integrationServiceUrl: string | null;
     integrationServiceVersion: string;
     isDefault: boolean;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     name: string;
     organisationId: string;
     passOnProcessingCosts: boolean;
     priority: number;
     processingCostBearer: "holder" | "beneficiaries";
     status: "active" | "inactive" | "pending_setup";
     supportedPaymentTypes: (
        | "in_person_cash"
        | "in_person_card"
        | "online_card"
        | "bank_transfer"
        | "cheque"
        | "online_bank_transfer"
       | "online_wallet")[];
     type:   | "bank_transfer"
        | "paypal"
        | "cash"
        | "stripe_connect"
        | "stripe_direct"
        | "adyen"
        | "square"
        | "external";
     updatedAt: string;
  }[];
}>;

List payment providers List all payment providers with optional filtering and pagination

Parameters#

ParameterType
options?{ accountId?: string; integrationType?: "ticketlayer_pay" | "self_service"; isDefault?: string; limit?: string; page?: string; paymentType?: | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet"; status?: "active" | "inactive" | "pending_setup"; type?: | "bank_transfer" | "paypal" | "cash" | "sandbox" | "stripe_connect" | "stripe_direct" | "adyen" | "square"; }
options.accountId?string
options.integrationType?"ticketlayer_pay" | "self_service"
options.isDefault?string
options.limit?string
options.page?string
options.paymentType?| "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet"
options.status?"active" | "inactive" | "pending_setup"
options.type?| "bank_transfer" | "paypal" | "cash" | "sandbox" | "stripe_connect" | "stripe_direct" | "adyen" | "square"
requestOptions?RequestOptions

Returns#

Promise<{ pagination: { limit: number; page: number; total: number; totalPages: number; }; providers: { accountId: string | null; applicationFee: { fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; value?: number; } & Record<string, never>; capabilities: | { maxAmount?: number; minAmount?: number; requiresCustomerAction?: boolean; supportedCurrencies?: string[]; supportsDelayedCapture?: boolean; supportsInstantCapture?: boolean; supportsPartialRefunds?: boolean; supportsRefunds?: boolean; } | null; configuration: { [key: string]: unknown; }; createdAt: string; description: string | null; feeStructure: | { currency?: string; fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; } | null; id: string; integrationServiceUrl: string | null; integrationServiceVersion: string; isDefault: boolean; metadata: | { [key: string]: unknown; } | null; name: string; organisationId: string; passOnProcessingCosts: boolean; priority: number; processingCostBearer: "holder" | "beneficiaries"; status: "active" | "inactive" | "pending_setup"; supportedPaymentTypes: ( | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet")[]; type: | "bank_transfer" | "paypal" | "cash" | "stripe_connect" | "stripe_direct" | "adyen" | "square" | "external"; updatedAt: string; }[]; }>

Operation Id#

listPaymentProviders

listAccounts()#

listAccounts: (providerId: string, requestOptions?: RequestOptions) => Promise<{
  accountId: string;
  chargesEnabled: boolean;
  connectedAccountId: string | null;
  createdAt: string;
  detailsSubmitted: boolean;
  disabledReason: string | null;
  id: string;
  lastSyncedAt: string | null;
  mode: "direct" | "connected";
  onboardingStatus:   | "restricted"
     | "not_started"
     | "in_progress"
     | "pending_verification"
     | "complete"
     | "disabled"
     | null;
  payoutsEnabled: boolean;
  providerId: string;
  requirements:   | {
     deadline: string | null;
     entries: {
        code: string;
        deadline: string | null;
        description: string;
     }[];
     status: "past_due" | "currently_due" | "eventually_due" | null;
   }
     | null;
  updatedAt: string;
}[]>;

Per-Account routing rows on a Stripe Connect provider

Parameters#

ParameterType
providerIdstring
requestOptions?RequestOptions

Returns#

Promise<{ accountId: string; chargesEnabled: boolean; connectedAccountId: string | null; createdAt: string; detailsSubmitted: boolean; disabledReason: string | null; id: string; lastSyncedAt: string | null; mode: "direct" | "connected"; onboardingStatus: | "restricted" | "not_started" | "in_progress" | "pending_verification" | "complete" | "disabled" | null; payoutsEnabled: boolean; providerId: string; requirements: | { deadline: string | null; entries: { code: string; deadline: string | null; description: string; }[]; status: "past_due" | "currently_due" | "eventually_due" | null; } | null; updatedAt: string; }[]>

Operation Id#

listPaymentProviderAccounts

listPaypalConnections()#

listPaypalConnections: (requestOptions?: RequestOptions) => Promise<{
  clientId: string | null;
  createdAt: string;
  currencies: string[];
  environment: "sandbox" | "live";
  id: string;
  merchantId: string | null;
  name: string;
  status: "active" | "inactive" | "pending_setup";
  updatedAt: string;
  webhookRegistered: boolean;
  webhookRegistrationError: string | null;
}[]>;

The organisation's PayPal connections At most one per PayPal environment. The secret is never returned.

Parameters#

ParameterType
requestOptions?RequestOptions

Returns#

Promise<{ clientId: string | null; createdAt: string; currencies: string[]; environment: "sandbox" | "live"; id: string; merchantId: string | null; name: string; status: "active" | "inactive" | "pending_setup"; updatedAt: string; webhookRegistered: boolean; webhookRegistrationError: string | null; }[]>

Operation Id#

listPaypalConnections

reportStatus()#

reportStatus: (providerId: string, request: {
  chargesEnabled?: boolean;
  externalAccountId?: string;
  metadata?: Record<string, any>;
  onboardingStatus?: "restricted" | "pending" | "in_progress" | "complete";
  payoutsEnabled?: boolean;
  status: "active" | "inactive" | "pending_setup";
}, requestOptions?: RequestOptions) => Promise<{
  accountId: string | null;
  applicationFee: {
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
     value?: number;
  } & Record<string, never>;
  capabilities:   | {
     maxAmount?: number;
     minAmount?: number;
     requiresCustomerAction?: boolean;
     supportedCurrencies?: string[];
     supportsDelayedCapture?: boolean;
     supportsInstantCapture?: boolean;
     supportsPartialRefunds?: boolean;
     supportsRefunds?: boolean;
   }
     | null;
  configuration: {
   [key: string]: unknown;
  };
  createdAt: string;
  description: string | null;
  feeStructure:   | {
     currency?: string;
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
   }
     | null;
  id: string;
  integrationServiceUrl: string | null;
  integrationServiceVersion: string;
  isDefault: boolean;
  metadata:   | {
   [key: string]: unknown;
   }
     | null;
  name: string;
  organisationId: string;
  passOnProcessingCosts: boolean;
  priority: number;
  processingCostBearer: "holder" | "beneficiaries";
  status: "active" | "inactive" | "pending_setup";
  supportedPaymentTypes: (
     | "in_person_cash"
     | "in_person_card"
     | "online_card"
     | "bank_transfer"
     | "cheque"
     | "online_bank_transfer"
    | "online_wallet")[];
  type:   | "bank_transfer"
     | "paypal"
     | "cash"
     | "stripe_connect"
     | "stripe_direct"
     | "adyen"
     | "square"
     | "external";
  updatedAt: string;
}>;

Report integration status Called by a payment integration service to report its readiness back to the payments service: whether charges and payouts are enabled, where onboarding has got to, and the external account it is bound to. Not for Ticketlayer Pay, whose state Ticketlayer reads from Stripe itself: a Ticketlayer Pay provider is refused with 400 TICKETLAYER_PAY_MANAGED.

Parameters#

ParameterType
providerIdstring
request{ chargesEnabled?: boolean; externalAccountId?: string; metadata?: Record<string, any>; onboardingStatus?: "restricted" | "pending" | "in_progress" | "complete"; payoutsEnabled?: boolean; status: "active" | "inactive" | "pending_setup"; }
request.chargesEnabled?boolean
request.externalAccountId?string
request.metadata?Record<string, any>
request.onboardingStatus?"restricted" | "pending" | "in_progress" | "complete"
request.payoutsEnabled?boolean
request.status?"active" | "inactive" | "pending_setup"
requestOptions?RequestOptions

Returns#

Promise<{ accountId: string | null; applicationFee: { fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; value?: number; } & Record<string, never>; capabilities: | { maxAmount?: number; minAmount?: number; requiresCustomerAction?: boolean; supportedCurrencies?: string[]; supportsDelayedCapture?: boolean; supportsInstantCapture?: boolean; supportsPartialRefunds?: boolean; supportsRefunds?: boolean; } | null; configuration: { [key: string]: unknown; }; createdAt: string; description: string | null; feeStructure: | { currency?: string; fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; } | null; id: string; integrationServiceUrl: string | null; integrationServiceVersion: string; isDefault: boolean; metadata: | { [key: string]: unknown; } | null; name: string; organisationId: string; passOnProcessingCosts: boolean; priority: number; processingCostBearer: "holder" | "beneficiaries"; status: "active" | "inactive" | "pending_setup"; supportedPaymentTypes: ( | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet")[]; type: | "bank_transfer" | "paypal" | "cash" | "stripe_connect" | "stripe_direct" | "adyen" | "square" | "external"; updatedAt: string; }>

Operation Id#

reportPaymentProviderStatus

setAccountMode()#

setAccountMode: (providerId: string, accountId: string, request: {
  connectedAccountId?: string;
  contactEmail?: string;
  country?: string;
  currency?: string;
  displayName?: string;
  mode: "direct" | "connected";
}, requestOptions?: RequestOptions) => Promise<{
  accountId: string;
  chargesEnabled: boolean;
  connectedAccountId: string | null;
  createdAt: string;
  detailsSubmitted: boolean;
  disabledReason: string | null;
  id: string;
  lastSyncedAt: string | null;
  mode: "direct" | "connected";
  onboardingStatus:   | "restricted"
     | "not_started"
     | "in_progress"
     | "pending_verification"
     | "complete"
     | "disabled"
     | null;
  payoutsEnabled: boolean;
  providerId: string;
  requirements:   | {
     deadline: string | null;
     entries: {
        code: string;
        deadline: string | null;
        description: string;
     }[];
     status: "past_due" | "currently_due" | "eventually_due" | null;
   }
     | null;
  updatedAt: string;
}>;

Set how an Account charges through a Stripe Connect provider direct charges the organisation's own Stripe account; connected links the given connected account, reuses the one already on the row, or vends a new Stripe v2 account (Stripe liable, no dashboard) for this Account. Needs paymentproviders.update, or the narrower paymentproviders.set_account_mode (the paymentproviders.accounts.write scope on an organisation API key), which may link an existing connected account or reuse the row's but never vends one: without connectedAccountId it answers 403 CONNECTED_ACCOUNT_ID_REQUIRED. An account-pinned key sets only its own account.

Parameters#

ParameterType
providerIdstring
accountIdstring
request{ connectedAccountId?: string; contactEmail?: string; country?: string; currency?: string; displayName?: string; mode: "direct" | "connected"; }
request.connectedAccountId?string
request.contactEmail?string
request.country?string
request.currency?string
request.displayName?string
request.mode?"direct" | "connected"
requestOptions?RequestOptions

Returns#

Promise<{ accountId: string; chargesEnabled: boolean; connectedAccountId: string | null; createdAt: string; detailsSubmitted: boolean; disabledReason: string | null; id: string; lastSyncedAt: string | null; mode: "direct" | "connected"; onboardingStatus: | "restricted" | "not_started" | "in_progress" | "pending_verification" | "complete" | "disabled" | null; payoutsEnabled: boolean; providerId: string; requirements: | { deadline: string | null; entries: { code: string; deadline: string | null; description: string; }[]; status: "past_due" | "currently_due" | "eventually_due" | null; } | null; updatedAt: string; }>

Operation Id#

setPaymentProviderAccountMode

update()#

update: (providerId: string, request: {
  applicationFee?: any;
  capabilities?: {
     maxAmount?: number;
     minAmount?: number;
     requiresCustomerAction?: boolean;
     supportedCurrencies?: string[];
     supportsDelayedCapture?: boolean;
     supportsInstantCapture?: boolean;
     supportsPartialRefunds?: boolean;
     supportsRefunds?: boolean;
  };
  configuration?: Record<string, any>;
  description?: string;
  feeStructure?: {
     currency?: string;
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
  };
  integrationServiceUrl?: string;
  integrationServiceVersion?: string;
  isDefault?: boolean;
  metadata?: Record<string, any>;
  name?: string;
  passOnProcessingCosts?: boolean;
  priority?: number;
  processingCostBearer?: "holder" | "beneficiaries";
  status?: "active" | "inactive" | "pending_setup";
  supportedPaymentTypes?: (
     | "in_person_cash"
     | "in_person_card"
     | "online_card"
     | "bank_transfer"
     | "cheque"
     | "online_bank_transfer"
    | "online_wallet")[];
}, requestOptions?: RequestOptions) => Promise<{
  accountId: string | null;
  applicationFee: {
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
     value?: number;
  } & Record<string, never>;
  capabilities:   | {
     maxAmount?: number;
     minAmount?: number;
     requiresCustomerAction?: boolean;
     supportedCurrencies?: string[];
     supportsDelayedCapture?: boolean;
     supportsInstantCapture?: boolean;
     supportsPartialRefunds?: boolean;
     supportsRefunds?: boolean;
   }
     | null;
  configuration: {
   [key: string]: unknown;
  };
  createdAt: string;
  description: string | null;
  feeStructure:   | {
     currency?: string;
     fixed?: number;
     percentage?: number;
     type: "fixed" | "percentage" | "percentage_plus_fixed";
   }
     | null;
  id: string;
  integrationServiceUrl: string | null;
  integrationServiceVersion: string;
  isDefault: boolean;
  metadata:   | {
   [key: string]: unknown;
   }
     | null;
  name: string;
  organisationId: string;
  passOnProcessingCosts: boolean;
  priority: number;
  processingCostBearer: "holder" | "beneficiaries";
  status: "active" | "inactive" | "pending_setup";
  supportedPaymentTypes: (
     | "in_person_cash"
     | "in_person_card"
     | "online_card"
     | "bank_transfer"
     | "cheque"
     | "online_bank_transfer"
    | "online_wallet")[];
  type:   | "bank_transfer"
     | "paypal"
     | "cash"
     | "stripe_connect"
     | "stripe_direct"
     | "adyen"
     | "square"
     | "external";
  updatedAt: string;
}>;

Update payment provider Update an existing payment provider configuration. The type and integration type cannot be changed. On a Ticketlayer Pay provider the fields Ticketlayer writes (configuration, status, applicationFee, integrationServiceUrl, integrationServiceVersion) are refused with 400 TICKETLAYER_PAY_MANAGED; the name, description, payment types, capabilities, default flag, priority, fee description and metadata can still be edited. On an Adyen provider the configuration, capabilities and integration service fields are refused with 400 ADYEN_CONNECT_REQUIRED: reconnect through POST /payment-providers/adyen/connect with its providerId.

Parameters#

ParameterType
providerIdstring
request{ applicationFee?: any; capabilities?: { maxAmount?: number; minAmount?: number; requiresCustomerAction?: boolean; supportedCurrencies?: string[]; supportsDelayedCapture?: boolean; supportsInstantCapture?: boolean; supportsPartialRefunds?: boolean; supportsRefunds?: boolean; }; configuration?: Record<string, any>; description?: string; feeStructure?: { currency?: string; fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; }; integrationServiceUrl?: string; integrationServiceVersion?: string; isDefault?: boolean; metadata?: Record<string, any>; name?: string; passOnProcessingCosts?: boolean; priority?: number; processingCostBearer?: "holder" | "beneficiaries"; status?: "active" | "inactive" | "pending_setup"; supportedPaymentTypes?: ( | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet")[]; }
request.applicationFee?any
request.capabilities?{ maxAmount?: number; minAmount?: number; requiresCustomerAction?: boolean; supportedCurrencies?: string[]; supportsDelayedCapture?: boolean; supportsInstantCapture?: boolean; supportsPartialRefunds?: boolean; supportsRefunds?: boolean; }
request.capabilities.maxAmount?number
request.capabilities.minAmount?number
request.capabilities.requiresCustomerAction?boolean
request.capabilities.supportedCurrencies?string[]
request.capabilities.supportsDelayedCapture?boolean
request.capabilities.supportsInstantCapture?boolean
request.capabilities.supportsPartialRefunds?boolean
request.capabilities.supportsRefunds?boolean
request.configuration?Record<string, any>
request.description?string
request.feeStructure?{ currency?: string; fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; }
request.feeStructure.currency?string
request.feeStructure.fixed?number
request.feeStructure.percentage?number
request.feeStructure.type?"fixed" | "percentage" | "percentage_plus_fixed"
request.integrationServiceUrl?string
request.integrationServiceVersion?string
request.isDefault?boolean
request.metadata?Record<string, any>
request.name?string
request.passOnProcessingCosts?boolean
request.priority?number
request.processingCostBearer?"holder" | "beneficiaries"
request.status?"active" | "inactive" | "pending_setup"
request.supportedPaymentTypes?( | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet")[]
requestOptions?RequestOptions

Returns#

Promise<{ accountId: string | null; applicationFee: { fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; value?: number; } & Record<string, never>; capabilities: | { maxAmount?: number; minAmount?: number; requiresCustomerAction?: boolean; supportedCurrencies?: string[]; supportsDelayedCapture?: boolean; supportsInstantCapture?: boolean; supportsPartialRefunds?: boolean; supportsRefunds?: boolean; } | null; configuration: { [key: string]: unknown; }; createdAt: string; description: string | null; feeStructure: | { currency?: string; fixed?: number; percentage?: number; type: "fixed" | "percentage" | "percentage_plus_fixed"; } | null; id: string; integrationServiceUrl: string | null; integrationServiceVersion: string; isDefault: boolean; metadata: | { [key: string]: unknown; } | null; name: string; organisationId: string; passOnProcessingCosts: boolean; priority: number; processingCostBearer: "holder" | "beneficiaries"; status: "active" | "inactive" | "pending_setup"; supportedPaymentTypes: ( | "in_person_cash" | "in_person_card" | "online_card" | "bank_transfer" | "cheque" | "online_bank_transfer" | "online_wallet")[]; type: | "bank_transfer" | "paypal" | "cash" | "stripe_connect" | "stripe_direct" | "adyen" | "square" | "external"; updatedAt: string; }>

Operation Id#

updatePaymentProvider