squarefi-bff-api-module 1.36.31 → 1.36.32

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.
@@ -845,6 +845,12 @@ export interface paths {
845
845
  currency_id?: string;
846
846
  /** @description Memo/tag (for XRP, XLM, etc.) */
847
847
  memo?: string;
848
+ /**
849
+ * @description Hosting classification of the address (custodial VASP, self-hosted/unhosted, or unknown)
850
+ * @default unknown
851
+ * @enum {string}
852
+ */
853
+ wallet_custody_type?: "custodial" | "selfhosted" | "unknown";
848
854
  };
849
855
  /** @description Required for type INTERNAL — points at the receiver wallet on the same platform. */
850
856
  internal_data?: {
@@ -2746,6 +2752,204 @@ export interface paths {
2746
2752
  patch?: never;
2747
2753
  trace?: never;
2748
2754
  };
2755
+ "/api/issuing/cards/{card_id}/deposit": {
2756
+ parameters: {
2757
+ query?: never;
2758
+ header?: never;
2759
+ path?: never;
2760
+ cookie?: never;
2761
+ };
2762
+ get?: never;
2763
+ put?: never;
2764
+ /**
2765
+ * Deposit funds to card
2766
+ * @description Thin wrapper over the sub-account deposit: the card's sub-account is
2767
+ * resolved from `card_id` and the request is processed by the same
2768
+ * implementation as POST /api/issuing/sub-accounts/{sub_account_id}/deposit
2769
+ * (same order types, validation and program routing).
2770
+ *
2771
+ * Deposits through a non-ACTIVE (frozen/canceled) card are rejected
2772
+ * with 409 CARD_INACTIVE.
2773
+ *
2774
+ * **Authentication**: x-api-key header required
2775
+ *
2776
+ * **Access Control**: User must have access to the card
2777
+ *
2778
+ */
2779
+ post: {
2780
+ parameters: {
2781
+ query?: never;
2782
+ header?: never;
2783
+ path: {
2784
+ /** @description The ID of the card */
2785
+ card_id: string;
2786
+ };
2787
+ cookie?: never;
2788
+ };
2789
+ requestBody: {
2790
+ content: {
2791
+ "application/json": {
2792
+ /**
2793
+ * Format: uuid
2794
+ * @description Unique reference ID for idempotency
2795
+ */
2796
+ reference_id: string;
2797
+ /**
2798
+ * Format: uuid
2799
+ * @description UUID of the currency to deduct from the wallet
2800
+ */
2801
+ from_currency_id: string;
2802
+ amount: number;
2803
+ note?: string;
2804
+ };
2805
+ };
2806
+ };
2807
+ responses: {
2808
+ /** @description Deposit order created (COMPLETE, FAILED, or PROCESSING for workflow-routed programs) */
2809
+ 200: {
2810
+ headers: {
2811
+ [name: string]: unknown;
2812
+ };
2813
+ content?: never;
2814
+ };
2815
+ /** @description Validation error */
2816
+ 400: {
2817
+ headers: {
2818
+ [name: string]: unknown;
2819
+ };
2820
+ content: {
2821
+ "application/json": components["schemas"]["ApiErrorResponse"];
2822
+ };
2823
+ };
2824
+ /** @description Access denied to this card */
2825
+ 403: {
2826
+ headers: {
2827
+ [name: string]: unknown;
2828
+ };
2829
+ content: {
2830
+ "application/json": components["schemas"]["ApiErrorResponse"];
2831
+ };
2832
+ };
2833
+ /** @description Card or sub-account not found */
2834
+ 404: {
2835
+ headers: {
2836
+ [name: string]: unknown;
2837
+ };
2838
+ content: {
2839
+ "application/json": components["schemas"]["ApiErrorResponse"];
2840
+ };
2841
+ };
2842
+ /** @description Card is not active (CARD_INACTIVE) */
2843
+ 409: {
2844
+ headers: {
2845
+ [name: string]: unknown;
2846
+ };
2847
+ content: {
2848
+ "application/json": components["schemas"]["ApiErrorResponse"];
2849
+ };
2850
+ };
2851
+ };
2852
+ };
2853
+ delete?: never;
2854
+ options?: never;
2855
+ head?: never;
2856
+ patch?: never;
2857
+ trace?: never;
2858
+ };
2859
+ "/api/issuing/cards/{card_id}/withdraw": {
2860
+ parameters: {
2861
+ query?: never;
2862
+ header?: never;
2863
+ path?: never;
2864
+ cookie?: never;
2865
+ };
2866
+ get?: never;
2867
+ put?: never;
2868
+ /**
2869
+ * Withdraw funds from card
2870
+ * @description Thin wrapper over the sub-account withdraw: the card's sub-account is
2871
+ * resolved from `card_id` and the request is processed by the same
2872
+ * implementation as POST /api/issuing/sub-accounts/{sub_account_id}/withdraw
2873
+ * (same order types and validation; concurrent withdrawals on the same
2874
+ * sub-account are rejected with 409). Allowed for non-ACTIVE cards —
2875
+ * returning funds from a frozen/canceled card's sub-account is a valid
2876
+ * recovery path.
2877
+ *
2878
+ * **Authentication**: x-api-key header required
2879
+ *
2880
+ * **Access Control**: User must have access to the card
2881
+ *
2882
+ */
2883
+ post: {
2884
+ parameters: {
2885
+ query?: never;
2886
+ header?: never;
2887
+ path: {
2888
+ /** @description The ID of the card */
2889
+ card_id: string;
2890
+ };
2891
+ cookie?: never;
2892
+ };
2893
+ requestBody: {
2894
+ content: {
2895
+ "application/json": {
2896
+ /** @description Amount to withdraw back to the wallet */
2897
+ amount: number;
2898
+ };
2899
+ };
2900
+ };
2901
+ responses: {
2902
+ /** @description Withdrawal completed */
2903
+ 200: {
2904
+ headers: {
2905
+ [name: string]: unknown;
2906
+ };
2907
+ content?: never;
2908
+ };
2909
+ /** @description Validation error */
2910
+ 400: {
2911
+ headers: {
2912
+ [name: string]: unknown;
2913
+ };
2914
+ content: {
2915
+ "application/json": components["schemas"]["ApiErrorResponse"];
2916
+ };
2917
+ };
2918
+ /** @description Access denied to this card */
2919
+ 403: {
2920
+ headers: {
2921
+ [name: string]: unknown;
2922
+ };
2923
+ content: {
2924
+ "application/json": components["schemas"]["ApiErrorResponse"];
2925
+ };
2926
+ };
2927
+ /** @description Card or sub-account not found */
2928
+ 404: {
2929
+ headers: {
2930
+ [name: string]: unknown;
2931
+ };
2932
+ content: {
2933
+ "application/json": components["schemas"]["ApiErrorResponse"];
2934
+ };
2935
+ };
2936
+ /** @description Another withdrawal for this sub-account is in progress */
2937
+ 409: {
2938
+ headers: {
2939
+ [name: string]: unknown;
2940
+ };
2941
+ content: {
2942
+ "application/json": components["schemas"]["ApiErrorResponse"];
2943
+ };
2944
+ };
2945
+ };
2946
+ };
2947
+ delete?: never;
2948
+ options?: never;
2949
+ head?: never;
2950
+ patch?: never;
2951
+ trace?: never;
2952
+ };
2749
2953
  "/api/issuing/config/programs": {
2750
2954
  parameters: {
2751
2955
  query?: never;
@@ -3774,92 +3978,6 @@ export interface paths {
3774
3978
  patch?: never;
3775
3979
  trace?: never;
3776
3980
  };
3777
- "/api/orders/deposit/card": {
3778
- parameters: {
3779
- query?: never;
3780
- header?: never;
3781
- path?: never;
3782
- cookie?: never;
3783
- };
3784
- get?: never;
3785
- put?: never;
3786
- /**
3787
- * Card
3788
- * @description Returns funds from a card sub-account back to the wallet balance.
3789
- * The wallet is resolved from the API key.
3790
- *
3791
- */
3792
- post: {
3793
- parameters: {
3794
- query?: never;
3795
- header?: never;
3796
- path?: never;
3797
- cookie?: never;
3798
- };
3799
- requestBody: {
3800
- content: {
3801
- "application/json": {
3802
- /** @example 50 */
3803
- amount: number;
3804
- /**
3805
- * Format: uuid
3806
- * @example aaaaaaaa-bbbb-4ccc-9ddd-eeeeeeeeeeee
3807
- */
3808
- sub_account_id: string;
3809
- };
3810
- };
3811
- };
3812
- responses: {
3813
- /** @description Card return order created */
3814
- 200: {
3815
- headers: {
3816
- [name: string]: unknown;
3817
- };
3818
- content: {
3819
- "application/json": {
3820
- /** @example true */
3821
- success?: boolean;
3822
- data?: components["schemas"]["Order"];
3823
- /** @example Card return order created */
3824
- message?: string;
3825
- };
3826
- };
3827
- };
3828
- /** @description Missing required fields or invalid amount */
3829
- 400: {
3830
- headers: {
3831
- [name: string]: unknown;
3832
- };
3833
- content: {
3834
- "application/json": components["schemas"]["ApiErrorResponse"];
3835
- };
3836
- };
3837
- /** @description Authentication required */
3838
- 401: {
3839
- headers: {
3840
- [name: string]: unknown;
3841
- };
3842
- content: {
3843
- "application/json": components["schemas"]["ApiErrorResponse"];
3844
- };
3845
- };
3846
- /** @description Card return failed */
3847
- 500: {
3848
- headers: {
3849
- [name: string]: unknown;
3850
- };
3851
- content: {
3852
- "application/json": components["schemas"]["ApiErrorResponse"];
3853
- };
3854
- };
3855
- };
3856
- };
3857
- delete?: never;
3858
- options?: never;
3859
- head?: never;
3860
- patch?: never;
3861
- trace?: never;
3862
- };
3863
3981
  "/api/orders/exchange": {
3864
3982
  parameters: {
3865
3983
  query?: never;
@@ -3871,14 +3989,16 @@ export interface paths {
3871
3989
  put?: never;
3872
3990
  /**
3873
3991
  * Exchange
3874
- * @description Crypto-to-crypto exchange within the wallet bound to the API key.
3992
+ * @description Currency exchange within the wallet bound to the API key — a pure ledger
3993
+ * swap for any enabled currency pair (crypto and fiat alike). Pair
3994
+ * availability is governed by the exchange calculation config: a disabled
3995
+ * pair is rejected at create.
3875
3996
  *
3876
3997
  * Two-phase, like the banking withdrawals: the order is created in status
3877
- * `NEW` with the source funds blocked. Call `POST /api/orders/{order_id}/approve`
3878
- * to execute the swap (the order lands in `COMPLETE` synchronously), or
3879
- * `POST /api/orders/{order_id}/cancel` to release the blocked funds.
3880
- *
3881
- * Fiat legs are not supported — only crypto-to-crypto pairs are accepted.
3998
+ * `NEW` without touching the balance. Call `POST /api/orders/{order_id}/approve`
3999
+ * to check the balance, debit the source funds and execute the swap (the
4000
+ * order lands in `COMPLETE` synchronously), or
4001
+ * `POST /api/orders/{order_id}/cancel` to discard the order.
3882
4002
  *
3883
4003
  */
3884
4004
  post: {
@@ -3894,7 +4014,7 @@ export interface paths {
3894
4014
  };
3895
4015
  };
3896
4016
  responses: {
3897
- /** @description Exchange order created (status NEW, funds blocked — approve to execute) */
4017
+ /** @description Exchange order created (status NEW — approve to debit and execute) */
3898
4018
  200: {
3899
4019
  headers: {
3900
4020
  [name: string]: unknown;
@@ -4220,10 +4340,14 @@ export interface paths {
4220
4340
  put?: never;
4221
4341
  /**
4222
4342
  * Approve order
4223
- * @description Transitions the order from NEW to PROCESSING and triggers the order execution pipeline.
4224
- * Exchange orders (EXCHANGE_OMNI) and internal transfers (TRANSFER_INTERNAL /
4225
- * OMNIBUS_INTERNAL_TRANSFER) settle synchronously and land in COMPLETE.
4226
- * Only orders with status NEW can be approved.
4343
+ * @description Transitions the order from NEW to PROCESSING: checks the balance,
4344
+ * debits the funds (transaction written as `complete`) and triggers the
4345
+ * order execution pipeline. Exchange orders (EXCHANGE_OMNI) and internal
4346
+ * transfers (TRANSFER_INTERNAL / OMNIBUS_INTERNAL_TRANSFER) settle
4347
+ * synchronously and land in COMPLETE. An insufficient balance fails the
4348
+ * order (FAILED). Only orders with status NEW can be approved. Orders
4349
+ * created with `scheduled_at` move to EXPECTED instead — no funds are
4350
+ * debited until execution at the requested time.
4227
4351
  *
4228
4352
  */
4229
4353
  post: {
@@ -4296,8 +4420,13 @@ export interface paths {
4296
4420
  put?: never;
4297
4421
  /**
4298
4422
  * Cancel order
4299
- * @description Cancels an order. Orders in NEW or FAILED status can be canceled.
4300
- * Optionally provide a cancellation reason.
4423
+ * @description Cancels an order. Only NEW and EXPECTED orders can be canceled — neither
4424
+ * holds debited funds, so cancel never moves money. Optionally provide a
4425
+ * cancellation reason.
4426
+ *
4427
+ * BREAKING CHANGE (2026-07-26): FAILED is no longer cancelable and returns
4428
+ * 409. Paying back an order that was debited and then failed is now a
4429
+ * separate, admin-panel-only refund action.
4301
4430
  *
4302
4431
  */
4303
4432
  post: {
@@ -4371,16 +4500,13 @@ export interface paths {
4371
4500
  /**
4372
4501
  * Internal
4373
4502
  * @description Transfers funds between wallets within the platform. Two-phase: the
4374
- * order is created in `NEW` status with the sender's funds blocked;
4375
- * call `POST /api/orders/{id}/approve` to execute the transfer it
4376
- * settles synchronously (receiver credited, order `COMPLETE`). A `NEW`
4377
- * order can be canceled via `POST /api/orders/{id}/cancel` to refund
4378
- * the blocked funds.
4503
+ * order is created in `NEW` status without touching the balance;
4504
+ * call `POST /api/orders/{id}/approve` to check the balance, debit the
4505
+ * sender and execute the transfer it settles synchronously (receiver
4506
+ * credited, order `COMPLETE`). A `NEW` order can be canceled via
4507
+ * `POST /api/orders/{id}/cancel` (no funds are held).
4379
4508
  * Wallet ID is automatically resolved from the API key — do **not** pass `wallet_id`.
4380
4509
  *
4381
- * `request_id` is used for idempotency: re-posting the same `request_id`
4382
- * returns the original order instead of creating a new one.
4383
- *
4384
4510
  */
4385
4511
  post: {
4386
4512
  parameters: {
@@ -4406,16 +4532,17 @@ export interface paths {
4406
4532
  /** @example 50 */
4407
4533
  amount: number;
4408
4534
  /**
4409
- * @description Idempotency key (UUID v4 recommended).
4410
- * @example 550e8400-e29b-41d4-a716-446655440000
4535
+ * Format: date-time
4536
+ * @description Optional. Schedule the transfer for a future time (min 1 hour, max 90 days ahead). No funds are reserved; after approval the order waits in EXPECTED status and executes automatically.
4537
+ * @example 2026-07-20T12:00:00Z
4411
4538
  */
4412
- request_id: string;
4539
+ scheduled_at?: string;
4413
4540
  documents?: Record<string, never>[];
4414
4541
  };
4415
4542
  };
4416
4543
  };
4417
4544
  responses: {
4418
- /** @description Transfer created in NEW status (funds blocked, awaiting approve) */
4545
+ /** @description Transfer created in NEW status (awaiting approve; no funds held) */
4419
4546
  200: {
4420
4547
  headers: {
4421
4548
  [name: string]: unknown;
@@ -4487,23 +4614,22 @@ export interface paths {
4487
4614
  * address (or another internal wallet) via a previously-created counterparty
4488
4615
  * destination.
4489
4616
  *
4490
- * Two-phase: the order is created in `NEW` status with funds blocked;
4491
- * `POST /api/orders/{id}/approve` dispatches the on-chain send. If the
4492
- * destination address belongs to a wallet in the same tenant, the order is
4493
- * created as `OMNIBUS_INTERNAL_TRANSFER` (no on-chain transaction) still
4494
- * `NEW` at create, settled synchronously to `COMPLETE` at approve.
4617
+ * Two-phase: the order is created in `NEW` status without touching the
4618
+ * balance; `POST /api/orders/{id}/approve` checks the balance, debits the
4619
+ * funds and dispatches the on-chain send. If the destination address
4620
+ * belongs to a wallet in the same tenant, the order is created as
4621
+ * `OMNIBUS_INTERNAL_TRANSFER` (no on-chain transaction) still `NEW` at
4622
+ * create, debited + settled synchronously to `COMPLETE` at approve.
4495
4623
  *
4496
4624
  * **Prerequisites:**
4497
4625
  * - A counterparty destination of type `CRYPTO_EXTERNAL` or `CRYPTO_INTERNAL`
4498
4626
  * created via `POST /api/counterparty/destinations`.
4499
- * - Sufficient balance in `from_currency_id` on the wallet bound to the API key.
4627
+ * - Sufficient balance in `from_currency_id` at approve time on the wallet
4628
+ * bound to the API key.
4500
4629
  *
4501
4630
  * `wallet_id` is automatically resolved from the API key — do **not** pass it
4502
4631
  * in the body.
4503
4632
  *
4504
- * `request_id` is mandatory and used for idempotency: re-posting the same
4505
- * `request_id` returns the original order.
4506
- *
4507
4633
  */
4508
4634
  post: {
4509
4635
  parameters: {
@@ -5089,112 +5215,6 @@ export interface paths {
5089
5215
  patch?: never;
5090
5216
  trace?: never;
5091
5217
  };
5092
- "/api/orders/withdrawal/card": {
5093
- parameters: {
5094
- query?: never;
5095
- header?: never;
5096
- path?: never;
5097
- cookie?: never;
5098
- };
5099
- get?: never;
5100
- put?: never;
5101
- /**
5102
- * Card
5103
- * @description Tops up a card sub-account from the wallet balance. The wallet is resolved
5104
- * from the API key. If `card_id` is omitted, the platform uses the first card
5105
- * associated with the sub-account.
5106
- *
5107
- */
5108
- post: {
5109
- parameters: {
5110
- query?: never;
5111
- header?: never;
5112
- path?: never;
5113
- cookie?: never;
5114
- };
5115
- requestBody: {
5116
- content: {
5117
- "application/json": {
5118
- /** @example 250 */
5119
- amount: number;
5120
- /**
5121
- * Format: uuid
5122
- * @description Source currency UUID (deducted from the wallet balance).
5123
- * @example 509eca03-bc0d-4a38-b7dc-d136d2bdaa43
5124
- */
5125
- from_uuid: string;
5126
- /**
5127
- * Format: uuid
5128
- * @example aaaaaaaa-bbbb-4ccc-9ddd-eeeeeeeeeeee
5129
- */
5130
- sub_account_id: string;
5131
- /**
5132
- * Format: uuid
5133
- * @description Optional specific card ID. Defaults to the first card on the sub-account.
5134
- * @example 123e4567-e89b-12d3-a456-426614174000
5135
- */
5136
- card_id?: string;
5137
- /**
5138
- * @description Idempotency key (UUID v4 recommended).
5139
- * @example 550e8400-e29b-41d4-a716-446655440000
5140
- */
5141
- reference_id?: string;
5142
- /** @example Top up for travel expenses */
5143
- note?: string;
5144
- };
5145
- };
5146
- };
5147
- responses: {
5148
- /** @description Card topup order created */
5149
- 200: {
5150
- headers: {
5151
- [name: string]: unknown;
5152
- };
5153
- content: {
5154
- "application/json": {
5155
- /** @example true */
5156
- success?: boolean;
5157
- data?: components["schemas"]["Order"];
5158
- /** @example Card topup order created */
5159
- message?: string;
5160
- };
5161
- };
5162
- };
5163
- /** @description Missing required fields or invalid amount */
5164
- 400: {
5165
- headers: {
5166
- [name: string]: unknown;
5167
- };
5168
- content: {
5169
- "application/json": components["schemas"]["ApiErrorResponse"];
5170
- };
5171
- };
5172
- /** @description Authentication required */
5173
- 401: {
5174
- headers: {
5175
- [name: string]: unknown;
5176
- };
5177
- content: {
5178
- "application/json": components["schemas"]["ApiErrorResponse"];
5179
- };
5180
- };
5181
- /** @description Card topup failed */
5182
- 500: {
5183
- headers: {
5184
- [name: string]: unknown;
5185
- };
5186
- content: {
5187
- "application/json": components["schemas"]["ApiErrorResponse"];
5188
- };
5189
- };
5190
- };
5191
- };
5192
- delete?: never;
5193
- options?: never;
5194
- head?: never;
5195
- patch?: never;
5196
- trace?: never;
5197
- };
5198
5218
  "/api/reference/currencies": {
5199
5219
  parameters: {
5200
5220
  query?: never;
@@ -6391,7 +6411,7 @@ export interface components {
6391
6411
  * @example EXCHANGE_OMNI
6392
6412
  * @enum {string}
6393
6413
  */
6394
- OrderTypeId: "EXCHANGE_OMNI" | "EXCHANGE_OMNI_ONRAMP" | "EXCHANGE_OMNI_OFFRAMP" | "EXCHANGE_OMNI_CRYPTO" | "EXCHANGE_CRYPTO_INTERNAL" | "L2F_ACH_ONRAMP" | "L2F_ACH_OFFRAMP" | "L2F_SEPA_ONRAMP" | "L2F_SEPA_OFFRAMP" | "L2F_SWIFT_ONRAMP" | "L2F_SWIFT_OFFRAMP" | "L2F_WIRE_ONRAMP" | "L2F_WIRE_OFFRAMP" | "L2F_CHAPS_ONRAMP" | "L2F_CHAPS_OFFRAMP" | "L2F_FPS_ONRAMP" | "L2F_FPS_OFFRAMP" | "BRL_WIRE_ONRAMP" | "BRL_WIRE_OFFRAMP" | "BRL_ACH_ONRAMP" | "BRL_ACH_OFFRAMP" | "BRL_RTP_OFFRAMP" | "DLS_WIRE_ONRAMP" | "DLS_WIRE_OFFRAMP" | "DLS_ACH_ONRAMP" | "DLS_ACH_OFFRAMP" | "DLS_SEPA_ONRAMP" | "DLS_SEPA_OFFRAMP" | "DLS_SWIFT_ONRAMP" | "DLS_SWIFT_OFFRAMP" | "OMNIBUS_CRYPTO_TRANSFER" | "OMNIBUS_CRYPTO_WITHDRAWAL" | "OMNIBUS_INTERNAL_TRANSFER" | "SEGREGATED_CRYPTO_TRANSFER" | "TRANSFER_INTERNAL" | "TRANSFER_CARD_PREPAID" | "TRANSFER_CARD_SUBACCOUNT" | "TRANSFER_CARD_WHOLESALE" | "WITHDRAW_CARD_PREPAID" | "WITHDRAW_CARD_SUBACCOUNT" | "REFUND_CARD_PREPAID" | "REFUND_CARD_SUBACCOUNT" | "RN_CARDS_OFFRAMP" | "CARD_ISSUING_FEE";
6414
+ OrderTypeId: "EXCHANGE_OMNI" | "EXCHANGE_OMNI_ONRAMP" | "EXCHANGE_OMNI_OFFRAMP" | "EXCHANGE_OMNI_CRYPTO" | "EXCHANGE_CRYPTO_INTERNAL" | "L2F_ACH_ONRAMP" | "L2F_ACH_OFFRAMP" | "L2F_SEPA_ONRAMP" | "L2F_SEPA_OFFRAMP" | "L2F_SWIFT_ONRAMP" | "L2F_SWIFT_OFFRAMP" | "L2F_WIRE_ONRAMP" | "L2F_WIRE_OFFRAMP" | "L2F_CHAPS_ONRAMP" | "L2F_CHAPS_OFFRAMP" | "L2F_FPS_ONRAMP" | "L2F_FPS_OFFRAMP" | "BRL_WIRE_ONRAMP" | "BRL_WIRE_OFFRAMP" | "BRL_ACH_ONRAMP" | "BRL_ACH_OFFRAMP" | "BRL_RTP_OFFRAMP" | "DLS_WIRE_ONRAMP" | "DLS_WIRE_OFFRAMP" | "DLS_ACH_ONRAMP" | "DLS_ACH_OFFRAMP" | "DLS_SEPA_ONRAMP" | "DLS_SEPA_OFFRAMP" | "DLS_SWIFT_ONRAMP" | "DLS_SWIFT_OFFRAMP" | "BC1_SEPA_ONRAMP" | "BC1_SEPA_OFFRAMP" | "BC1_SWIFT_ONRAMP" | "BC1_SWIFT_OFFRAMP" | "BC3_SEPA_ONRAMP" | "BC3_SEPA_OFFRAMP" | "OMNIBUS_CRYPTO_TRANSFER" | "OMNIBUS_CRYPTO_WITHDRAWAL" | "OMNIBUS_INTERNAL_TRANSFER" | "SEGREGATED_CRYPTO_TRANSFER" | "TRANSFER_INTERNAL" | "TRANSFER_CARD_PREPAID" | "TRANSFER_CARD_SUBACCOUNT" | "TRANSFER_CARD_WHOLESALE" | "WITHDRAW_CARD_PREPAID" | "WITHDRAW_CARD_SUBACCOUNT" | "REFUND_CARD_PREPAID" | "REFUND_CARD_SUBACCOUNT" | "RN_CARDS_OFFRAMP" | "CARD_ISSUING_FEE";
6395
6415
  /** @description Card object with all properties */
6396
6416
  IssuingCard: {
6397
6417
  /**
@@ -6923,6 +6943,12 @@ export interface components {
6923
6943
  currency_id?: string;
6924
6944
  /** @description Memo/tag (for XRP, XLM, etc.) */
6925
6945
  memo?: string | null;
6946
+ /**
6947
+ * @description Hosting classification of the address (custodial VASP, self-hosted/unhosted, or unknown). Defaults to unknown.
6948
+ * @default unknown
6949
+ * @enum {string}
6950
+ */
6951
+ wallet_custody_type: "custodial" | "selfhosted" | "unknown";
6926
6952
  currency: components["schemas"]["CurrencyRef"];
6927
6953
  /** Format: date-time */
6928
6954
  created_at: string;
@@ -7326,11 +7352,16 @@ export interface components {
7326
7352
  amount_to?: number | null;
7327
7353
  order_type?: string;
7328
7354
  /** @enum {string} */
7329
- status?: "NEW" | "PROCESSING" | "COMPLETE" | "FAILED" | "CANCELED";
7355
+ status?: "NEW" | "EXPECTED" | "PROCESSING" | "COMPLETE" | "FAILED" | "CANCELED" | "REFUNDED";
7330
7356
  /** Format: uuid */
7331
7357
  sub_account_id?: string | null;
7332
7358
  info?: string | null;
7333
7359
  meta?: components["schemas"]["OrderMeta"];
7360
+ /**
7361
+ * Format: date-time
7362
+ * @description Requested execution time for scheduled payments (status EXPECTED); null for immediate orders
7363
+ */
7364
+ scheduled_at?: string | null;
7334
7365
  /** Format: date-time */
7335
7366
  created_at?: string;
7336
7367
  /** Format: date-time */
@@ -7365,11 +7396,6 @@ export interface components {
7365
7396
  * @description Optional wallet account override (advanced; rarely needed).
7366
7397
  */
7367
7398
  wallet_account_id?: string;
7368
- /**
7369
- * @description Idempotency key. Must be unique per order — re-sending the same `request_id` returns the original order instead of creating a new one. A UUID v4 is recommended.
7370
- * @example 550e8400-e29b-41d4-a716-446655440000
7371
- */
7372
- request_id: string;
7373
7399
  /**
7374
7400
  * @description Free-form reference visible in order/transaction listings.
7375
7401
  * @example invoice-2026-04-001
@@ -7380,6 +7406,12 @@ export interface components {
7380
7406
  * @example Payout to vendor partner
7381
7407
  */
7382
7408
  note?: string;
7409
+ /**
7410
+ * Format: date-time
7411
+ * @description Optional. Schedule the payment for a future time (min 1 hour, max 90 days ahead). No funds are reserved; after approval the order waits in `EXPECTED` status and executes automatically at the requested time (balance is checked then, with retries and email notifications on insufficient funds).
7412
+ * @example 2026-07-20T12:00:00Z
7413
+ */
7414
+ scheduled_at?: string;
7383
7415
  };
7384
7416
  ApiOfframpOrderRequest: {
7385
7417
  /**
@@ -7411,11 +7443,6 @@ export interface components {
7411
7443
  * @example b2f3d8c1-4a7e-4d22-9c5f-1e6a8d0b2a44
7412
7444
  */
7413
7445
  counterparty_destination_id: string;
7414
- /**
7415
- * @description Idempotency key (UUID v4 recommended).
7416
- * @example 550e8400-e29b-41d4-a716-446655440000
7417
- */
7418
- request_id: string;
7419
7446
  /**
7420
7447
  * @description Free-form reference visible in order/transaction listings.
7421
7448
  * @example invoice-2026-04-001
@@ -7426,6 +7453,12 @@ export interface components {
7426
7453
  * @example Monthly payout
7427
7454
  */
7428
7455
  note?: string;
7456
+ /**
7457
+ * Format: date-time
7458
+ * @description Optional. Schedule the payment for a future time (min 1 hour, max 90 days ahead). No funds are reserved; after approval the order waits in `EXPECTED` status and executes automatically at the requested time (balance is checked then, with retries and email notifications on insufficient funds).
7459
+ * @example 2026-07-20T12:00:00Z
7460
+ */
7461
+ scheduled_at?: string;
7429
7462
  };
7430
7463
  ApiExchangeOrderRequest: {
7431
7464
  /**
@@ -7445,12 +7478,6 @@ export interface components {
7445
7478
  * @example 7c8d4a2b-1e3f-4d59-9b6a-2c0e5f7d8a90
7446
7479
  */
7447
7480
  to_currency_id: string;
7448
- /**
7449
- * Format: uuid
7450
- * @description Idempotency key (UUID v4 recommended).
7451
- * @example 550e8400-e29b-41d4-a716-446655440000
7452
- */
7453
- request_id: string;
7454
7481
  };
7455
7482
  /** @description Virtual bank account */
7456
7483
  VirtualAccount: {