squarefi-bff-api-module 1.36.57 → 1.36.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Squarefi BFF API SDK
2
2
 
3
- A fully-typed TypeScript / JavaScript SDK for effortless interaction with the Squarefi **Back-For-Front** (BFF) API.
3
+ A fully-typed TypeScript / JavaScript SDK for effortless interaction with the Squarefi **Back-For-Front** (BFF) API
4
4
 
5
5
  ---
6
6
 
@@ -6525,6 +6525,15 @@ export interface paths {
6525
6525
  "application/json": components["schemas"]["ApiErrorResponse"];
6526
6526
  };
6527
6527
  };
6528
+ /** @description KYC rail gate failed (KYC-enabled tenants) — `RAIL_NOT_CONFIGURED`, `RAIL_NOT_ENABLED`, `DEPOSITS_DISABLED`, `WALLET_RAIL_NOT_ONBOARDED` or `WALLET_RAIL_NOT_APPROVED`: the program's rail must be enabled and the wallet APPROVED on it */
6529
+ 422: {
6530
+ headers: {
6531
+ [name: string]: unknown;
6532
+ };
6533
+ content: {
6534
+ "application/json": components["schemas"]["ApiErrorResponse"];
6535
+ };
6536
+ };
6528
6537
  /** @description Server error */
6529
6538
  500: {
6530
6539
  headers: {
@@ -6538,6 +6538,15 @@ export interface paths {
6538
6538
  "application/json": components["schemas"]["ErrorResponse"];
6539
6539
  };
6540
6540
  };
6541
+ /** @description A recipient is not in the wallet's address book (DESTINATION_NOT_FOUND, details.destination_ids) */
6542
+ 404: {
6543
+ headers: {
6544
+ [name: string]: unknown;
6545
+ };
6546
+ content: {
6547
+ "application/json": components["schemas"]["ErrorResponse"];
6548
+ };
6549
+ };
6541
6550
  };
6542
6551
  };
6543
6552
  delete?: never;
@@ -6632,7 +6641,7 @@ export interface paths {
6632
6641
  };
6633
6642
  };
6634
6643
  };
6635
- /** @description Template not found */
6644
+ /** @description Template not found, or a recipient is not in the wallet's address book (DESTINATION_NOT_FOUND, details.destination_ids) */
6636
6645
  404: {
6637
6646
  headers: {
6638
6647
  [name: string]: unknown;
@@ -6772,7 +6781,14 @@ export interface paths {
6772
6781
  requestBody: {
6773
6782
  content: {
6774
6783
  "application/json": {
6775
- /** Format: uuid */
6784
+ /**
6785
+ * Format: uuid
6786
+ * @description Batch source currency. Crypto recipients are paid with it
6787
+ * on-chain, so it must be an on-chain asset; a fiat source
6788
+ * currency cannot fund crypto recipients. Preview reports such
6789
+ * a row as a problem and submit/approve refuse the batch.
6790
+ *
6791
+ */
6776
6792
  currency_id: string;
6777
6793
  /** Format: uuid */
6778
6794
  virtual_account_id?: string;
@@ -6818,6 +6834,15 @@ export interface paths {
6818
6834
  "application/json": components["schemas"]["ErrorResponse"];
6819
6835
  };
6820
6836
  };
6837
+ /** @description A recipient is not in the wallet's address book (DESTINATION_NOT_FOUND, details.destination_ids) */
6838
+ 404: {
6839
+ headers: {
6840
+ [name: string]: unknown;
6841
+ };
6842
+ content: {
6843
+ "application/json": components["schemas"]["ErrorResponse"];
6844
+ };
6845
+ };
6821
6846
  /** @description Rate limit exceeded */
6822
6847
  429: {
6823
6848
  headers: {
@@ -6856,7 +6881,7 @@ export interface paths {
6856
6881
  };
6857
6882
  requestBody?: never;
6858
6883
  responses: {
6859
- /** @description Batch details with progress counters and totals */
6884
+ /** @description Batch details with progress counters and totals, plus the in-flight count and the per-destination-type breakdown (whole batch, independent of the item list paging) */
6860
6885
  200: {
6861
6886
  headers: {
6862
6887
  [name: string]: unknown;
@@ -6865,7 +6890,7 @@ export interface paths {
6865
6890
  "application/json": {
6866
6891
  /** @example true */
6867
6892
  success?: boolean;
6868
- data?: components["schemas"]["MassPayout"];
6893
+ data?: components["schemas"]["MassPayoutDetail"];
6869
6894
  };
6870
6895
  };
6871
6896
  };
@@ -6921,6 +6946,15 @@ export interface paths {
6921
6946
  };
6922
6947
  };
6923
6948
  };
6949
+ /** @description Mass payout not found, or a recipient is not in the wallet's address book (DESTINATION_NOT_FOUND, details.destination_ids) */
6950
+ 404: {
6951
+ headers: {
6952
+ [name: string]: unknown;
6953
+ };
6954
+ content: {
6955
+ "application/json": components["schemas"]["ErrorResponse"];
6956
+ };
6957
+ };
6924
6958
  /** @description Batch is not editable anymore (already submitted) */
6925
6959
  409: {
6926
6960
  headers: {
@@ -6948,7 +6982,7 @@ export interface paths {
6948
6982
  };
6949
6983
  /**
6950
6984
  * List items of a mass payout
6951
- * @description Items in upload order, paginated with limit/offset like the batch list. The optional status filter narrows the tracker view (e.g. failed rows only).
6985
+ * @description Items in upload order, paginated with limit/offset like the batch list. The optional status filter narrows the tracker view (e.g. failed rows only). Every row carries the address-book destination it pays (with its owning account), joined in the same query — a batch page needs no address-book lookups.
6952
6986
  */
6953
6987
  get: {
6954
6988
  parameters: {
@@ -10310,7 +10344,7 @@ export interface paths {
10310
10344
  "application/json": components["schemas"]["ErrorResponse"];
10311
10345
  };
10312
10346
  };
10313
- /** @description Rail pre-check failed — `VENDOR_NOT_CONFIGURED`, `RAIL_NOT_CONFIGURED`, `DEPOSITS_DISABLED`, `WALLET_RAIL_NOT_ONBOARDED` or `WALLET_RAIL_NOT_APPROVED` */
10347
+ /** @description KYC rail gate failed (KYC-enabled tenants, demo programs included) — `VENDOR_NOT_CONFIGURED`, `RAIL_NOT_CONFIGURED`, `RAIL_NOT_ENABLED`, `DEPOSITS_DISABLED`, `WALLET_RAIL_NOT_ONBOARDED`, `WALLET_RAIL_NOT_APPROVED` or `RAIL_GATE_CHECK_FAILED` */
10314
10348
  422: {
10315
10349
  headers: {
10316
10350
  [name: string]: unknown;
@@ -12537,6 +12571,10 @@ export interface paths {
12537
12571
  * @enum {string}
12538
12572
  */
12539
12573
  identity_verification_status?: "APPROVED" | "DECLINED" | "PENDING" | "PROCESSING" | "HOLD" | "NEEDS_ATTENTION" | "DOUBLE" | "SOFT_REJECT" | "REJECT" | "UNVERIFIED" | "WAITING_ON_UBOS" | "WAITING_ON_REVIEW";
12574
+ /** @description The member deleted their account. They keep their row and role in the
12575
+ * team, but have no access and receive no notifications.
12576
+ * */
12577
+ is_deleted?: boolean;
12540
12578
  };
12541
12579
  }[];
12542
12580
  pagination?: components["schemas"]["PaginationResponse"];
@@ -14267,6 +14305,73 @@ export interface components {
14267
14305
  }[];
14268
14306
  kyc_rails?: components["schemas"]["KycRail"] | null;
14269
14307
  };
14308
+ /** @description Bank requisites of a virtual account, grouped per rail. Derived from `deposit_instructions` — a rail key is present only when the account carries an instruction for it, and an account with no instructions serializes as `{}`. */
14309
+ VirtualAccountAccountDetails: {
14310
+ ach?: {
14311
+ accountNumber?: string;
14312
+ routingNumber?: string;
14313
+ } | null;
14314
+ wire?: {
14315
+ accountNumber?: string;
14316
+ routingNumber?: string;
14317
+ } | null;
14318
+ swift?: {
14319
+ swiftCode?: string;
14320
+ accountNumber?: string;
14321
+ } | null;
14322
+ sepa?: {
14323
+ iban?: string;
14324
+ swiftCode?: string;
14325
+ } | null;
14326
+ ukPayments?: {
14327
+ accountNumber?: string;
14328
+ sortCode?: string;
14329
+ } | null;
14330
+ swiftCode?: string | null;
14331
+ bankName?: string | null;
14332
+ bankAddress?: string | null;
14333
+ beneficiary?: {
14334
+ name?: string;
14335
+ address?: string | null;
14336
+ } | null;
14337
+ };
14338
+ /** @description Postal address carried by a deposit instruction. Note `country_code` — the originator address block spells the same idea `country`. */
14339
+ DepositInstructionAddress: {
14340
+ address_line1?: string | null;
14341
+ address_line2?: string | null;
14342
+ city?: string | null;
14343
+ state?: string | null;
14344
+ postal_code?: string | null;
14345
+ /** @description ISO country code */
14346
+ country_code?: string | null;
14347
+ };
14348
+ /** @description One way to fund a virtual account: the requisites of a single payment rail. An account issues one instruction per rail its program enables, so the same bank details may appear twice under different `instruction_type` values. Only `instruction_type` is guaranteed — which identifiers a rail carries differs (an IBAN rail has no routing number, a US rail has no IBAN). An element may carry further keys that are provider bookkeeping rather than payment requisites — they are not part of this contract. */
14349
+ DepositInstruction: {
14350
+ /**
14351
+ * @description Rail discriminator. Uppercase; a new provider rail is added to this list when it ships.
14352
+ * @enum {string}
14353
+ */
14354
+ instruction_type: "ACH" | "FEDWIRE" | "SWIFT" | "SEPA_CT" | "CHAPS" | "FPS";
14355
+ /** @description Domestic account number (some IBAN-only rails repeat the IBAN here) */
14356
+ account_number?: string | null;
14357
+ /** @description ABA / sort-code style routing number */
14358
+ account_routing_number?: string | null;
14359
+ iban?: string | null;
14360
+ swift_bic?: string | null;
14361
+ sort_code?: string | null;
14362
+ /** @description Receiving bank */
14363
+ institution_name?: string | null;
14364
+ institution_address?: components["schemas"]["DepositInstructionAddress"] | null;
14365
+ intermediary_institution_name?: string | null;
14366
+ intermediary_institution_swift_bic?: string | null;
14367
+ /** @description Beneficiary the payment must be addressed to */
14368
+ account_holder_name?: string | null;
14369
+ account_holder_address?: components["schemas"]["DepositInstructionAddress"] | null;
14370
+ /** @description Reference the payer must quote, when the rail requires one */
14371
+ memo?: string | null;
14372
+ } & {
14373
+ [key: string]: unknown;
14374
+ };
14270
14375
  /** @description Fields shared by every virtual-account read shape. */
14271
14376
  VirtualAccountBase: {
14272
14377
  /** Format: uuid */
@@ -14290,40 +14395,13 @@ export interface components {
14290
14395
  /** @description Customer name the account is held under */
14291
14396
  customer_name?: string | null;
14292
14397
  /** @description Bank requisites summary derived from deposit_instructions. Empty object when the account has no instructions; null when deposits are disabled on the program's KYC rail. */
14293
- account_details?: {
14294
- ach?: {
14295
- accountNumber?: string;
14296
- routingNumber?: string;
14297
- } | null;
14298
- wire?: {
14299
- accountNumber?: string;
14300
- routingNumber?: string;
14301
- } | null;
14302
- swift?: {
14303
- swiftCode?: string;
14304
- accountNumber?: string;
14305
- } | null;
14306
- sepa?: {
14307
- iban?: string;
14308
- swiftCode?: string;
14309
- } | null;
14310
- ukPayments?: {
14311
- accountNumber?: string;
14312
- sortCode?: string;
14313
- } | null;
14314
- swiftCode?: string | null;
14315
- bankName?: string | null;
14316
- bankAddress?: string | null;
14317
- beneficiary?: {
14318
- name?: string;
14319
- address?: string | null;
14320
- } | null;
14321
- } | null;
14398
+ account_details?: components["schemas"]["VirtualAccountAccountDetails"] | null;
14322
14399
  /** @description Deposit requisites (source of truth). Emptied to [] (never null) when deposits are disabled on the program's KYC rail. */
14323
- deposit_instructions?: {
14400
+ deposit_instructions?: components["schemas"]["DepositInstruction"][] | null;
14401
+ /** @description Provider bookkeeping for the account. Deliberately left opaque — the keys are per-vendor internals, not a contract to code against. */
14402
+ meta?: {
14324
14403
  [key: string]: unknown;
14325
- }[] | null;
14326
- meta?: Record<string, never> | null;
14404
+ } | null;
14327
14405
  };
14328
14406
  /** @description Virtual bank account as returned by the list read. Currencies come embedded as full objects; the raw uuids are exposed as `account_currency_id` / `destination_currency_id`. Only ACTIVE accounts are listed. */
14329
14407
  VirtualAccount: components["schemas"]["VirtualAccountBase"] & {
@@ -14416,10 +14494,13 @@ export interface components {
14416
14494
  /** @description Customer name the account is held under */
14417
14495
  customer_name?: string | null;
14418
14496
  /** @description Bank account details for deposits, derived from deposit_instructions. Returned null when deposits are disabled on the program's KYC rail. */
14419
- account_details?: Record<string, never> | null;
14497
+ account_details?: components["schemas"]["VirtualAccountAccountDetails"] | null;
14420
14498
  /** @description Deposit requisites (source of truth). Emptied to [] (never null) when deposits are disabled on the program's KYC rail. */
14421
- deposit_instructions?: Record<string, never>[];
14422
- meta?: Record<string, never> | null;
14499
+ deposit_instructions?: components["schemas"]["DepositInstruction"][];
14500
+ /** @description Provider bookkeeping for the account. Deliberately left opaque — the keys are per-vendor internals, not a contract to code against. */
14501
+ meta?: {
14502
+ [key: string]: unknown;
14503
+ } | null;
14423
14504
  /** @description Account currency details */
14424
14505
  account_currency_details?: components["schemas"]["CurrencyDetails"] | null;
14425
14506
  /** @description Destination currency details */
@@ -14445,6 +14526,61 @@ export interface components {
14445
14526
  /** @description Number of minor-unit decimals */
14446
14527
  decimal: number;
14447
14528
  };
14529
+ /** @description Postal address of the sender, as the rail reported it. */
14530
+ OrderOriginatorAddress: {
14531
+ address_line1?: string | null;
14532
+ address_line2?: string | null;
14533
+ city?: string | null;
14534
+ state?: string | null;
14535
+ postal_code?: string | null;
14536
+ /** @description ISO country code */
14537
+ country?: string | null;
14538
+ };
14539
+ /** @description Who sent the money. `name` is the only key every rail supplies. */
14540
+ OrderOriginatorProfile: {
14541
+ /** @description Sender name as reported by the rail (rails may truncate it) */
14542
+ name: string;
14543
+ /**
14544
+ * @description Kind of sender. Present on internal transfers, where it comes from the sending wallet's KYC entity — `unknown` when the wallet has none. Bank rails do not report it.
14545
+ * @enum {string}
14546
+ */
14547
+ type?: "individual" | "business" | "universal" | "unknown";
14548
+ address?: components["schemas"]["OrderOriginatorAddress"] | null;
14549
+ };
14550
+ /** @description Bank identifiers of the sending account. Normalized on read: rails disagree about which slot an IBAN or a BIC belongs in, so a value is filed by its shape rather than by the slot it was stored in. The block is all-or-nothing — when it is present every key below is present too, with an empty string standing for "not supplied" (so `swift_bic: ''` means unknown, not "no BIC exists"). */
14551
+ OrderOriginatorAccountInformation: {
14552
+ /** @description Domestic account number. Empty when the stored value turned out to be an IBAN — read `iban` then. */
14553
+ account_number: string;
14554
+ /** @description ABA-style routing number. Empty when the stored value turned out to be a BIC — read `swift_bic` then. */
14555
+ routing_number: string;
14556
+ iban: string;
14557
+ swift_bic: string;
14558
+ sort_code: string;
14559
+ currency_code: string;
14560
+ /** @description Sending bank. Empty when the rail merely echoed the sender name here. */
14561
+ institution_name: string;
14562
+ intermediary_institution_name: string;
14563
+ };
14564
+ /** @description Crypto counterpart of `account_information`: present on internal (on-platform) transfers, where the sender is a wallet rather than a bank account. */
14565
+ OrderOriginatorWalletInformation: {
14566
+ /**
14567
+ * Format: uuid
14568
+ * @description Sending wallet
14569
+ */
14570
+ wallet_uuid: string;
14571
+ wallet_name?: string | null;
14572
+ crypto_address?: string | null;
14573
+ };
14574
+ /** @description Sender of an inbound order, normalized to one shape across every rail (bank deposits, on-ramps, internal transfers). Rendered from an allowlist, so no key beyond the five below is ever returned; which of them appear depends on the rail — a bank deposit carries `profile` + `account_information`, an internal transfer carries `profile` + `wallet_information`. Surfaced in the transaction panel (Sender, Account number, SWIFT / BIC, Bank name, Routing number) and in the PDF statement. */
14575
+ OrderOriginator: {
14576
+ profile?: components["schemas"]["OrderOriginatorProfile"];
14577
+ account_information?: components["schemas"]["OrderOriginatorAccountInformation"];
14578
+ wallet_information?: components["schemas"]["OrderOriginatorWalletInformation"];
14579
+ /** @description Payment reference quoted by the sender */
14580
+ reference?: string | null;
14581
+ /** @description Free-text memo carried by the rail */
14582
+ memo?: string | null;
14583
+ };
14448
14584
  /** @description Public order metadata. List and single-read responses reduce the stored `meta` JSONB to a fixed allowlist of public keys; create/approve/cancel responses return the stored meta minus scheduler-internal keys. Every field is optional: presence depends on the order type (crypto transfer, fiat off-ramp, exchange, internal transfer, card top-up, deposit). */
14449
14585
  OrderMeta: {
14450
14586
  /** @description Legacy idempotency key — null on orders created by the current flow */
@@ -14516,10 +14652,8 @@ export interface components {
14516
14652
  * @description Card sub-account (card top-up orders)
14517
14653
  */
14518
14654
  sub_account_id?: string | null;
14519
- /** @description Sender details on inbound (deposit) orders, normalized to one canonical shape across rails. Keys: `profile` (sender identity), `account_information` (bank identifiers: account_number, routing_number, iban, swift_bic, sort_code, currency_code, institution_name, intermediary_institution_name), `wallet_information` (crypto counterpart on internal transfers), `reference`, `memo`. */
14520
- originator?: {
14521
- [key: string]: unknown;
14522
- } | null;
14655
+ /** @description Sender details on inbound (deposit) and internal-transfer orders. */
14656
+ originator?: components["schemas"]["OrderOriginator"] | null;
14523
14657
  /** @description Card authorizations: card id */
14524
14658
  card_id?: string | null;
14525
14659
  /** @description Card authorizations: merchant name */
@@ -14541,25 +14675,28 @@ export interface components {
14541
14675
  /** Format: date-time */
14542
14676
  completed_at?: string | null;
14543
14677
  };
14544
- /** @description Order record */
14678
+ /** @description Order record. The `required` list below is what every order response carries, on every route that returns an order. `required` is about presence, not about value: a field marked both required and nullable is always in the payload and may be `null`. Everything outside that list is genuinely conditional — `is_threshold_amount` comes with the list read, `mass_payout` with the list and single reads, and the fee / compliance fields are absent from the create, approve, cancel and comment responses. */
14545
14679
  Order: {
14546
14680
  /** Format: uuid */
14547
- id?: string;
14681
+ id: string;
14548
14682
  /** Format: uuid */
14549
- order_uuid?: string;
14683
+ order_uuid: string;
14550
14684
  /** Format: uuid */
14551
14685
  request_id?: string | null;
14552
14686
  /** Format: uuid */
14553
- wallet_uuid?: string;
14687
+ wallet_uuid: string;
14554
14688
  /** Format: uuid */
14555
- from_uuid?: string;
14689
+ from_uuid: string;
14556
14690
  /** Format: uuid */
14557
- to_uuid?: string;
14558
- amount_from?: number;
14559
- amount_to?: number | null;
14560
- order_type?: string;
14561
- /** @enum {string} */
14562
- status?: "NEW" | "PENDING" | "EXPECTED" | "PROCESSING" | "COMPLETE" | "FAILED" | "CANCELED" | "REFUNDED";
14691
+ to_uuid: string;
14692
+ amount_from: number;
14693
+ amount_to: number | null;
14694
+ order_type: string;
14695
+ /**
14696
+ * @description Complete set for these routes — a failure is always `FAILED`, there is no second failure status. `EXPECTED` is a scheduled payment waiting for its `scheduled_at`; `REFUNDED` is a failed order whose funds were paid back, as opposed to `CANCELED`, where nothing ever moved.
14697
+ * @enum {string}
14698
+ */
14699
+ status: "NEW" | "PENDING" | "EXPECTED" | "PROCESSING" | "COMPLETE" | "FAILED" | "CANCELED" | "REFUNDED";
14563
14700
  /**
14564
14701
  * @description Compliance (transaction monitoring) state. Orthogonal to `status`: a `held` order is still PENDING and nothing has been credited — it resolves to COMPLETE or FAILED once the review finishes. `null` means the order was never subject to a compliance hold.
14565
14702
  * @enum {string|null}
@@ -14610,7 +14747,8 @@ export interface components {
14610
14747
  sig_key_version?: string | null;
14611
14748
  /** @description Computed dust flag — amount below the render threshold for either currency. Returned by the list endpoint (GET /frontend/orders/wallet/{wallet_uuid}); absent from single-order reads. */
14612
14749
  is_threshold_amount?: boolean;
14613
- meta?: components["schemas"]["OrderMeta"];
14750
+ /** @description Always present; `null` for an order that carries no metadata at all. */
14751
+ meta: components["schemas"]["OrderMeta"] | null;
14614
14752
  /** @description Batch this order was created by, when it was sent as part of a mass payout; null for a standalone order. Filter the list by it with `filters=[{"mass_payout_id":"<uuid>"}]`. */
14615
14753
  mass_payout?: {
14616
14754
  /** Format: uuid */
@@ -14624,9 +14762,9 @@ export interface components {
14624
14762
  */
14625
14763
  scheduled_at?: string | null;
14626
14764
  /** Format: date-time */
14627
- created_at?: string;
14765
+ created_at: string;
14628
14766
  /** Format: date-time */
14629
- updated_at?: string | null;
14767
+ updated_at: string | null;
14630
14768
  };
14631
14769
  /** @description Single-order read shape (GET /orders/id/{order_id} and GET /orders/uuid/{order_uuid}) — the base Order plus context objects hydrated from its `meta` references. */
14632
14770
  OrderDetail: components["schemas"]["Order"] & {
@@ -14913,6 +15051,8 @@ export interface components {
14913
15051
  record_type: string;
14914
15052
  /** Format: uuid */
14915
15053
  wallet_id: string;
15054
+ /** @description Computed dust flag — amount below the render threshold for the currency. Hidden from the list unless `show_low_balance=true`. */
15055
+ is_threshold_amount?: boolean;
14916
15056
  currency: components["schemas"]["Currency"];
14917
15057
  meta: components["schemas"]["TransactionMeta"];
14918
15058
  };
@@ -15032,7 +15172,10 @@ export interface components {
15032
15172
  wallet_id?: string;
15033
15173
  /**
15034
15174
  * Format: uuid
15035
- * @description Source currency the batch is funded in
15175
+ * @description Source currency the batch is funded in. Crypto recipients are
15176
+ * paid with it on-chain, so it must be an on-chain asset; a fiat
15177
+ * source currency cannot fund crypto recipients.
15178
+ *
15036
15179
  */
15037
15180
  currency_id?: string;
15038
15181
  /**
@@ -15117,11 +15260,32 @@ export interface components {
15117
15260
  created_at?: string;
15118
15261
  /** Format: date-time */
15119
15262
  processed_at?: string | null;
15263
+ /** @description The address-book destination this row pays, with its owning account under counterparty_account — the same shape the counterparty endpoints return, raw data (no formatting). Always present; a destination deleted from the address book after the batch was made is still returned. Null only if the destination row no longer exists at all. */
15264
+ destination?: components["schemas"]["CounterpartyDestination"] | null;
15265
+ };
15266
+ /** @description Progress of the batch for one destination type. total minus completed, failed and cancelled is what is still in flight for that type. */
15267
+ MassPayoutMethodBreakdown: {
15268
+ /**
15269
+ * @description Type of the destinations the rows pay (CounterpartyDestination.type)
15270
+ * @enum {string}
15271
+ */
15272
+ destination_type: "ACH" | "RTP" | "SWIFT" | "SEPA" | "CRYPTO_EXTERNAL" | "CRYPTO_INTERNAL" | "CHAPS" | "FPS" | "FEDWIRE" | "INTERNAL";
15273
+ total: number;
15274
+ completed: number;
15275
+ failed: number;
15276
+ cancelled: number;
15277
+ };
15278
+ /** @description The batch as returned by the single-batch read: the MassPayout fields plus the progress cuts a tracker page draws from. Both are computed over the whole batch and never depend on how the item list is paged or filtered. */
15279
+ MassPayoutDetail: components["schemas"]["MassPayout"] & {
15280
+ /** @description Payments not yet finished: total_items minus completed_count, failed_count and cancelled_count */
15281
+ processing_count: number;
15282
+ /** @description Progress per destination type: one entry per type present in the batch (a type without rows is not listed), in order of first appearance; the totals add up to total_items */
15283
+ method_breakdown: components["schemas"]["MassPayoutMethodBreakdown"][];
15120
15284
  };
15121
15285
  MassPayoutItemInput: {
15122
15286
  /**
15123
15287
  * Format: uuid
15124
- * @description Existing counterparty destination of the source wallet
15288
+ * @description Counterparty destination from the source wallet's own address book. A destination of another wallet, or an unknown id, is refused with 404 DESTINATION_NOT_FOUND (details.destination_ids lists the offending ids); the two cases are deliberately not distinguished.
15125
15289
  */
15126
15290
  destination_id: string;
15127
15291
  /** @description The amount the recipient receives, in the payout currency of this row */
@@ -15147,7 +15311,10 @@ export interface components {
15147
15311
  * documents to the rows of a batch instead.
15148
15312
  * */
15149
15313
  MassPayoutTemplateItemInput: {
15150
- /** Format: uuid */
15314
+ /**
15315
+ * Format: uuid
15316
+ * @description Counterparty destination from the wallet's own address book; a destination of another wallet, or an unknown id, is refused with 404 DESTINATION_NOT_FOUND
15317
+ */
15151
15318
  destination_id: string;
15152
15319
  /** @description Optional in a template: omit it (or send null) to save a recipient
15153
15320
  * list whose amounts are filled in later. When present it must be
@@ -1639,224 +1639,6 @@ export interface paths {
1639
1639
  patch?: never;
1640
1640
  trace?: never;
1641
1641
  };
1642
- "/issuing/cards/prepaid": {
1643
- parameters: {
1644
- query?: never;
1645
- header?: never;
1646
- path?: never;
1647
- cookie?: never;
1648
- };
1649
- get?: never;
1650
- put?: never;
1651
- /**
1652
- * Create a new prepaid card
1653
- * @deprecated
1654
- * @description **Deprecated.** Use `POST /frontend/issuing/cards` (unified, routes by the program's
1655
- * `sub_account_type`) instead — it carries the same fee/top-up handling.
1656
- *
1657
- * Creates a new prepaid card for the user. Initial topup amount is determined by user group settings.
1658
- *
1659
- * **Cardholder is required**: Every card must be associated with a cardholder.
1660
- * Create a cardholder first, then pass the `cardholder_id` here.
1661
- *
1662
- */
1663
- post: {
1664
- parameters: {
1665
- query?: never;
1666
- header?: never;
1667
- path?: never;
1668
- cookie?: never;
1669
- };
1670
- requestBody: {
1671
- content: {
1672
- "application/json": {
1673
- /** @description Card nickname */
1674
- nick_name: string;
1675
- /**
1676
- * Format: uuid
1677
- * @description Issuing program ID
1678
- */
1679
- program_id: string;
1680
- /**
1681
- * Format: uuid
1682
- * @description Wallet ID
1683
- */
1684
- wallet_id: string;
1685
- /**
1686
- * Format: uuid
1687
- * @description ID of the cardholder to associate with this card. **Required.**
1688
- *
1689
- */
1690
- cardholder_id: string;
1691
- /**
1692
- * Format: uuid
1693
- * @description Currency ID for card fees (required if program has issuing fee or initial topup)
1694
- */
1695
- currency_id?: string;
1696
- /**
1697
- * @deprecated
1698
- * @description **Deprecated.** Use `cardholder_id` instead.
1699
- */
1700
- email?: string;
1701
- /**
1702
- * @deprecated
1703
- * @description **Deprecated.** Use `cardholder_id` instead.
1704
- */
1705
- vendor_user_id?: string;
1706
- /** @description User data ID (optional) */
1707
- user_data_id?: string;
1708
- };
1709
- };
1710
- };
1711
- responses: {
1712
- /** @description Prepaid card created successfully */
1713
- 200: {
1714
- headers: {
1715
- [name: string]: unknown;
1716
- };
1717
- content: {
1718
- "application/json": {
1719
- card_id?: string;
1720
- /** @enum {string} */
1721
- status?: "ACTIVE";
1722
- };
1723
- };
1724
- };
1725
- /** @description Bad Request - missing required fields or validation error */
1726
- 400: {
1727
- headers: {
1728
- [name: string]: unknown;
1729
- };
1730
- content: {
1731
- "application/json": components["schemas"]["Error"];
1732
- };
1733
- };
1734
- /** @description Server Error */
1735
- 500: {
1736
- headers: {
1737
- [name: string]: unknown;
1738
- };
1739
- content: {
1740
- "application/json": components["schemas"]["Error"];
1741
- };
1742
- };
1743
- };
1744
- };
1745
- delete?: never;
1746
- options?: never;
1747
- head?: never;
1748
- patch?: never;
1749
- trace?: never;
1750
- };
1751
- "/issuing/cards/balance": {
1752
- parameters: {
1753
- query?: never;
1754
- header?: never;
1755
- path?: never;
1756
- cookie?: never;
1757
- };
1758
- get?: never;
1759
- put?: never;
1760
- /**
1761
- * Create a new balance card
1762
- * @deprecated
1763
- * @description **Deprecated.** Use `POST /frontend/issuing/cards` (unified, routes by the program's
1764
- * `sub_account_type`) instead — it carries the same fee/top-up handling.
1765
- *
1766
- * Creates a new card linked to an existing balance account for the user. Card fees and initial topup are determined by user group settings.
1767
- *
1768
- * **Cardholder is required**: Every card must be associated with a cardholder.
1769
- * Create a cardholder first, then pass the `cardholder_id` here.
1770
- *
1771
- */
1772
- post: {
1773
- parameters: {
1774
- query?: never;
1775
- header?: never;
1776
- path?: never;
1777
- cookie?: never;
1778
- };
1779
- requestBody: {
1780
- content: {
1781
- "application/json": {
1782
- /** @description Card nickname */
1783
- nick_name: string;
1784
- /**
1785
- * Format: uuid
1786
- * @description Issuing program ID
1787
- */
1788
- program_id: string;
1789
- /**
1790
- * Format: uuid
1791
- * @description Wallet ID
1792
- */
1793
- wallet_id: string;
1794
- /**
1795
- * Format: uuid
1796
- * @description Fiat account (sub-account) ID to link the card to
1797
- */
1798
- fiat_account_id: string;
1799
- /**
1800
- * Format: uuid
1801
- * @description ID of the cardholder to associate with this card. **Required.**
1802
- *
1803
- */
1804
- cardholder_id: string;
1805
- /**
1806
- * Format: uuid
1807
- * @description Currency ID for card fees (required if program has issuing fee)
1808
- */
1809
- currency_id?: string;
1810
- /**
1811
- * @deprecated
1812
- * @description **Deprecated.** Use `cardholder_id` instead.
1813
- */
1814
- vendor_user_id?: string;
1815
- /** @description User data ID (optional) */
1816
- user_data_id?: string;
1817
- };
1818
- };
1819
- };
1820
- responses: {
1821
- /** @description Balance card created successfully */
1822
- 200: {
1823
- headers: {
1824
- [name: string]: unknown;
1825
- };
1826
- content: {
1827
- "application/json": {
1828
- card_id?: string;
1829
- /** @enum {string} */
1830
- status?: "ACTIVE";
1831
- };
1832
- };
1833
- };
1834
- /** @description Bad Request - missing required fields, validation error, or cards limit reached */
1835
- 400: {
1836
- headers: {
1837
- [name: string]: unknown;
1838
- };
1839
- content: {
1840
- "application/json": components["schemas"]["Error"];
1841
- };
1842
- };
1843
- /** @description Server Error */
1844
- 500: {
1845
- headers: {
1846
- [name: string]: unknown;
1847
- };
1848
- content: {
1849
- "application/json": components["schemas"]["Error"];
1850
- };
1851
- };
1852
- };
1853
- };
1854
- delete?: never;
1855
- options?: never;
1856
- head?: never;
1857
- patch?: never;
1858
- trace?: never;
1859
- };
1860
1642
  "/issuing/cards/{card_id}/freeze": {
1861
1643
  parameters: {
1862
1644
  query?: never;
@@ -2547,7 +2329,7 @@ export interface paths {
2547
2329
  "application/json": components["schemas"]["ErrorResponse"];
2548
2330
  };
2549
2331
  };
2550
- /** @description Forbidden - KYC not approved for this wallet */
2332
+ /** @description Forbidden - KYC not approved for this wallet, or (KYC-enabled tenants) the wallet is not APPROVED on the program's KYC rail / the rail is disabled — `code` carries WALLET_RAIL_NOT_ONBOARDED, WALLET_RAIL_NOT_APPROVED, RAIL_NOT_ENABLED or RAIL_NOT_CONFIGURED */
2551
2333
  403: {
2552
2334
  headers: {
2553
2335
  [name: string]: unknown;
@@ -3943,6 +3725,12 @@ export interface paths {
3943
3725
  * @example 123e4567-e89b-12d3-a456-426614174000
3944
3726
  */
3945
3727
  card_id?: string;
3728
+ /**
3729
+ * Format: uuid
3730
+ * @description Optional client-generated UUID for idempotency. Retrying with the same reference_id returns the original order instead of debiting the wallet again.
3731
+ * @example 3f0b8f61-52a4-4f0e-9f0d-2f6f4f1b9a11
3732
+ */
3733
+ reference_id?: string;
3946
3734
  };
3947
3735
  };
3948
3736
  };
@@ -4013,119 +3801,6 @@ export interface paths {
4013
3801
  patch?: never;
4014
3802
  trace?: never;
4015
3803
  };
4016
- "/orders/TRANSFER_CARD_PREPAID": {
4017
- parameters: {
4018
- query?: never;
4019
- header?: never;
4020
- path?: never;
4021
- cookie?: never;
4022
- };
4023
- get?: never;
4024
- put?: never;
4025
- /**
4026
- * Create a wholesale card deposit order
4027
- * @description Transfer funds from crypto to a wholesale card vendor
4028
- */
4029
- post: {
4030
- parameters: {
4031
- query?: never;
4032
- header?: never;
4033
- path?: never;
4034
- cookie?: never;
4035
- };
4036
- requestBody: {
4037
- content: {
4038
- "application/json": {
4039
- /**
4040
- * @description Amount to transfer
4041
- * @example 100
4042
- */
4043
- amount: number;
4044
- /**
4045
- * @description Source wallet UUID
4046
- * @example 8205c701-cd41-4929-910f-fccbb949729a
4047
- */
4048
- wallet_uuid: string;
4049
- /**
4050
- * @description UUID of cryptocurrency from currency table to withdraw from
4051
- * @example c6d0c728-2624-403d-8e42-0c3f8b1e5e41
4052
- */
4053
- from_uuid: string;
4054
- /**
4055
- * @description Card ID
4056
- * @example 509eca03-bc0d-4a38-b7dc-d136d2bdaa43
4057
- */
4058
- card_id: string;
4059
- };
4060
- };
4061
- };
4062
- responses: {
4063
- /** @description Order successfully created */
4064
- 200: {
4065
- headers: {
4066
- [name: string]: unknown;
4067
- };
4068
- content: {
4069
- "application/json": {
4070
- /** Format: date-time */
4071
- created_at?: string;
4072
- order_uuid?: string;
4073
- wallet_uuid?: string;
4074
- from_uuid?: string;
4075
- to_uuid?: string;
4076
- amount_from?: number;
4077
- /** @example TRANSFER_CARD_PREPAID */
4078
- order_type?: string;
4079
- /** @enum {string} */
4080
- status?: "PENDING" | "COMPLETE" | "FAILED";
4081
- amount_to?: number;
4082
- info?: string;
4083
- meta?: {
4084
- fee?: number;
4085
- order_uuid?: string;
4086
- fee_currency?: string;
4087
- exchange_rate?: number;
4088
- billing_amount?: number;
4089
- vendor_id?: string;
4090
- transaction_amount?: number;
4091
- billing_currency?: string;
4092
- transaction_currency?: string;
4093
- network_fee?: number;
4094
- };
4095
- id?: string;
4096
- };
4097
- };
4098
- };
4099
- /** @description Bad request - validation error */
4100
- 400: {
4101
- headers: {
4102
- [name: string]: unknown;
4103
- };
4104
- content: {
4105
- "application/json": {
4106
- error?: string;
4107
- };
4108
- };
4109
- };
4110
- /** @description Server error */
4111
- 500: {
4112
- headers: {
4113
- [name: string]: unknown;
4114
- };
4115
- content: {
4116
- "application/json": {
4117
- error?: string;
4118
- };
4119
- };
4120
- };
4121
- };
4122
- };
4123
- delete?: never;
4124
- options?: never;
4125
- head?: never;
4126
- patch?: never;
4127
- trace?: never;
4128
- };
4129
3804
  "/orders/EXCHANGE_CRYPTO_INTERNAL": {
4130
3805
  parameters: {
4131
3806
  query?: never;
@@ -7101,6 +6776,23 @@ export interface paths {
7101
6776
  };
7102
6777
  };
7103
6778
  };
6779
+ /** @description KYC rail gate (KYC-enabled tenants) — the program's rail is disabled, deposits are disabled, or the wallet is not APPROVED on that rail */
6780
+ 422: {
6781
+ headers: {
6782
+ [name: string]: unknown;
6783
+ };
6784
+ content: {
6785
+ "application/json": {
6786
+ /** @example This wallet is not onboarded on this rail yet. */
6787
+ error?: string;
6788
+ /**
6789
+ * @example WALLET_RAIL_NOT_ONBOARDED
6790
+ * @enum {string}
6791
+ */
6792
+ code?: "RAIL_NOT_CONFIGURED" | "RAIL_NOT_ENABLED" | "DEPOSITS_DISABLED" | "WALLET_RAIL_NOT_ONBOARDED" | "WALLET_RAIL_NOT_APPROVED" | "RAIL_GATE_CHECK_FAILED";
6793
+ };
6794
+ };
6795
+ };
7104
6796
  /** @description Server error */
7105
6797
  500: {
7106
6798
  headers: {
@@ -4982,6 +4982,11 @@ export interface paths {
4982
4982
  /**
4983
4983
  * Create virtual account
4984
4984
  * @description Create a virtual account for a specific wallet. Tenant API can create VA for any user. Supports force_create to bypass existing VA check.
4985
+ *
4986
+ * On KYC-enabled tenants the program's KYC rail gate applies exactly as on the client API — the rail must be enabled
4987
+ * (`kyc_rails.is_active`, `is_deposit_enabled`) and the wallet must be APPROVED on it (`wallet_kyc_rails`); otherwise 422 with
4988
+ * `RAIL_NOT_ENABLED`, `DEPOSITS_DISABLED`, `WALLET_RAIL_NOT_ONBOARDED` or `WALLET_RAIL_NOT_APPROVED`. `force_create` never bypasses it.
4989
+ *
4985
4990
  */
4986
4991
  post: {
4987
4992
  parameters: {
@@ -5055,6 +5060,13 @@ export interface paths {
5055
5060
  };
5056
5061
  content?: never;
5057
5062
  };
5063
+ /** @description KYC rail gate — rail disabled, deposits disabled, or wallet not APPROVED on the program's rail */
5064
+ 422: {
5065
+ headers: {
5066
+ [name: string]: unknown;
5067
+ };
5068
+ content?: never;
5069
+ };
5058
5070
  /** @description Internal server error */
5059
5071
  500: {
5060
5072
  headers: {
@@ -260,6 +260,23 @@ export interface paths {
260
260
  patch?: never;
261
261
  trace?: never;
262
262
  };
263
+ "/user/account": {
264
+ parameters: {
265
+ query?: never;
266
+ header?: never;
267
+ path?: never;
268
+ cookie?: never;
269
+ };
270
+ get?: never;
271
+ put?: never;
272
+ post?: never;
273
+ /** Delete own account */
274
+ delete: operations["UserController_deleteOwnAccount"];
275
+ options?: never;
276
+ head?: never;
277
+ patch?: never;
278
+ trace?: never;
279
+ };
263
280
  "/user/email": {
264
281
  parameters: {
265
282
  query?: never;
@@ -2667,6 +2684,30 @@ export interface operations {
2667
2684
  };
2668
2685
  };
2669
2686
  };
2687
+ UserController_deleteOwnAccount: {
2688
+ parameters: {
2689
+ query?: never;
2690
+ header?: never;
2691
+ path?: never;
2692
+ cookie?: never;
2693
+ };
2694
+ requestBody?: never;
2695
+ responses: {
2696
+ 204: {
2697
+ headers: {
2698
+ [name: string]: unknown;
2699
+ };
2700
+ content?: never;
2701
+ };
2702
+ /** @description Unauthorized */
2703
+ 401: {
2704
+ headers: {
2705
+ [name: string]: unknown;
2706
+ };
2707
+ content?: never;
2708
+ };
2709
+ };
2710
+ };
2670
2711
  AuthenticatedUserController_changeEmailConfirm: {
2671
2712
  parameters: {
2672
2713
  query?: never;
@@ -1434,6 +1434,16 @@ export declare namespace API {
1434
1434
  type TemplateRoot = pathsV1Frontend['/frontend/mass-payouts/{wallet_id}/templates/{template_id}'];
1435
1435
  /** The batch itself: progress counters, totals and the approval/schedule state. */
1436
1436
  export type MassPayout = componentsV1Frontend['schemas']['MassPayout'];
1437
+ /**
1438
+ * The batch as the single read returns it (`getById`) — the base `MassPayout` plus the two
1439
+ * progress cuts a tracker page draws from. Both are computed over the whole batch and ignore
1440
+ * how the item list is paged or filtered. The list read and every mutation still answer with
1441
+ * the plain `MassPayout`, so a page that needs the breakdown after `approve` / `cancel` must
1442
+ * re-read the batch.
1443
+ */
1444
+ export type MassPayoutDetail = componentsV1Frontend['schemas']['MassPayoutDetail'];
1445
+ /** Progress of the batch for one destination type; `total` minus the three counters is in flight. */
1446
+ export type MassPayoutMethodBreakdown = componentsV1Frontend['schemas']['MassPayoutMethodBreakdown'];
1437
1447
  /** A stored recipient row, with its own status and the order created for it at execution. */
1438
1448
  export type MassPayoutItem = componentsV1Frontend['schemas']['MassPayoutItem'];
1439
1449
  /** A recipient row as written on create/update. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "squarefi-bff-api-module",
3
- "version": "1.36.57",
3
+ "version": "1.36.58",
4
4
  "description": "Squarefi BFF API client module",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",