Variable productFeeConfigApiConst
productFeeConfigApi: {
"/v1/product/fee-config": {
get: {
querystring: TObject<
{ products: TOptional<TString>; statuses: TOptional<TString> },
>;
response: {
"200": TObject<
{
items: TArray<
TObject<
{
createdAt: TString;
product: TUnsafe<
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...),
>;
rules: TArray<TObject<(...)>>;
status: TUnsafe<(...) | (...)>;
updatedAt: TString;
},
>,
>;
},
>;
};
summary: "Search all existing product fee configurations";
tags: readonly ["Product fee config"];
};
post: {
body: TObject<
{
product: TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>;
rules: TArray<
TObject<
{
matcher: TObject<{}>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
value: TArray<TUnion<[(...), (...)]>>;
},
>,
>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
},
>;
description: "A customer can configure additional fees to be charged during product transactions.\nThese fees will be sent to the customer's fee wallet.\n\nThese fees are separate from fees charged by CFX and the downstream providers.\n\nIf the configuration already exists, this operation completely replaces with the newly provided configurations. See the [configuration guide](https://docs.moveusd.com/docs/product-configurations) for an introduction on how to use rules.\n\nCurrently supported fields for the matcher are:\n\n* `entityType`: `IDENTITY` or `ORGANIZATION`\n* `countryCode`: 2-letter ISO country code, e.g. `US`, `MX`\n* `sourceCurrency`: The currency code, e.g. `MOVEUSD`, `USDC`, `USD`, etc.\n* `targetCurrency`: The currency code, e.g. `MOVEUSD`, `USDC`, `USD`, etc.\n* `sourceAmount`: The amount in `sourceCurrency` denomination\n * Optional: some products may not have knowledge of the amount upfront\n* `cashDepositRetailerId`: The retailer ID where a cash deposit is taking place\n * Only applicable to `deposit.us_cash.*` products\n\nThe fee currency depends on the product where it is being applied. The rule of thumb is:\n\n* Deposit products: the fee currency is the same as the target currency.\n* Withdrawal products: the fee currency is the same as the source currency.\n* Swap product: the fee currency is the same as the source currency.\n\nUnderstanding which fee currency is being used is important, especially when configuring `FIXED`-type fees. Please reach out to support if you have any doubts.";
response: {
"200": TObject<
{
createdAt: TString;
product: TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>;
rules: TArray<
TObject<
{
matcher: TObject<{}>;
status: TUnsafe<(...) | (...)>;
value: TArray<TUnion<(...)>>;
},
>,
>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
updatedAt: TString;
},
>;
"400": TIntersect<
[
TObject<{ code: TLiteral<"INVALID_FIELD">; message: TString }>,
TObject<{ fields: TArray<TUnsafe<(...) | (...)>> }>,
],
>;
};
summary: "Create or update a product fee configuration";
tags: readonly ["Product fee config"];
};
};
"/v1/product/fee-config/{product}": {
delete: {
params: TObject<
{
product: TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>;
},
>;
response: {
"204": TNull;
"404": TObject<{ code: TLiteral<"NOT_FOUND">; message: TString }>;
};
summary: "Delete an existing product fee configuration";
tags: readonly ["Product fee config"];
};
};
"/v1/product/fee-config/test": {
post: {
body: TIntersect<
[
TObject<
{
countryCode: TString;
entityType: TUnsafe<"ORGANIZATION" | "IDENTITY">;
sourceAmount: TOptional<TString>;
sourceCurrency: TString;
targetCurrency: TString;
},
>,
TUnion<
[
TObject<
{
cashDepositRetailerId: TString;
product: TUnsafe<"deposit.us_cash.v1">;
},
>,
TObject<
{
product: TUnsafe<
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...),
>;
},
>,
],
>,
],
>;
description: "This operation simulates the calculation of fees for the provided criteria. Both customer and admin configurations are taken into account.\n\nUse this operation to test whether the desired outcome is achieved after making configuration changes.";
response: {
"200": TObject<
{
applicableRules: TArray<
TIntersect<
[
TObject<{ matcher: ...; status: ...; value: ... }>,
TObject<{ type: ... }>,
],
>,
>;
effective: TArray<
TUnion<
[
TObject<{ feeAmount: ...; type: ... }>,
TObject<{ feeBps: ...; type: ... }>,
],
>,
>;
},
>;
};
summary: "Test the product fee configurations";
tags: readonly ["Product fee config"];
};
};
} = ...
Type Declaration
Readonly/v1/product/fee-config: {
get: {
querystring: TObject<
{ products: TOptional<TString>; statuses: TOptional<TString> },
>;
response: {
"200": TObject<
{
items: TArray<
TObject<
{
createdAt: TString;
product: TUnsafe<
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...),
>;
rules: TArray<TObject<(...)>>;
status: TUnsafe<(...) | (...)>;
updatedAt: TString;
},
>,
>;
},
>;
};
summary: "Search all existing product fee configurations";
tags: readonly ["Product fee config"];
};
post: {
body: TObject<
{
product: TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>;
rules: TArray<
TObject<
{
matcher: TObject<{}>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
value: TArray<TUnion<[(...), (...)]>>;
},
>,
>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
},
>;
description: "A customer can configure additional fees to be charged during product transactions.\nThese fees will be sent to the customer's fee wallet.\n\nThese fees are separate from fees charged by CFX and the downstream providers.\n\nIf the configuration already exists, this operation completely replaces with the newly provided configurations. See the [configuration guide](https://docs.moveusd.com/docs/product-configurations) for an introduction on how to use rules.\n\nCurrently supported fields for the matcher are:\n\n* `entityType`: `IDENTITY` or `ORGANIZATION`\n* `countryCode`: 2-letter ISO country code, e.g. `US`, `MX`\n* `sourceCurrency`: The currency code, e.g. `MOVEUSD`, `USDC`, `USD`, etc.\n* `targetCurrency`: The currency code, e.g. `MOVEUSD`, `USDC`, `USD`, etc.\n* `sourceAmount`: The amount in `sourceCurrency` denomination\n * Optional: some products may not have knowledge of the amount upfront\n* `cashDepositRetailerId`: The retailer ID where a cash deposit is taking place\n * Only applicable to `deposit.us_cash.*` products\n\nThe fee currency depends on the product where it is being applied. The rule of thumb is:\n\n* Deposit products: the fee currency is the same as the target currency.\n* Withdrawal products: the fee currency is the same as the source currency.\n* Swap product: the fee currency is the same as the source currency.\n\nUnderstanding which fee currency is being used is important, especially when configuring `FIXED`-type fees. Please reach out to support if you have any doubts.";
response: {
"200": TObject<
{
createdAt: TString;
product: TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>;
rules: TArray<
TObject<
{
matcher: TObject<{}>;
status: TUnsafe<(...) | (...)>;
value: TArray<TUnion<(...)>>;
},
>,
>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
updatedAt: TString;
},
>;
"400": TIntersect<
[
TObject<{ code: TLiteral<"INVALID_FIELD">; message: TString }>,
TObject<{ fields: TArray<TUnsafe<(...) | (...)>> }>,
],
>;
};
summary: "Create or update a product fee configuration";
tags: readonly ["Product fee config"];
};
}
Readonly/v1/product/fee-config/{product}: {
delete: {
params: TObject<
{
product: TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>;
},
>;
response: {
"204": TNull;
"404": TObject<{ code: TLiteral<"NOT_FOUND">; message: TString }>;
};
summary: "Delete an existing product fee configuration";
tags: readonly ["Product fee config"];
};
}
Readonly/v1/product/fee-config/test: {
post: {
body: TIntersect<
[
TObject<
{
countryCode: TString;
entityType: TUnsafe<"ORGANIZATION" | "IDENTITY">;
sourceAmount: TOptional<TString>;
sourceCurrency: TString;
targetCurrency: TString;
},
>,
TUnion<
[
TObject<
{
cashDepositRetailerId: TString;
product: TUnsafe<"deposit.us_cash.v1">;
},
>,
TObject<
{
product: TUnsafe<
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...),
>;
},
>,
],
>,
],
>;
description: "This operation simulates the calculation of fees for the provided criteria. Both customer and admin configurations are taken into account.\n\nUse this operation to test whether the desired outcome is achieved after making configuration changes.";
response: {
"200": TObject<
{
applicableRules: TArray<
TIntersect<
[
TObject<{ matcher: ...; status: ...; value: ... }>,
TObject<{ type: ... }>,
],
>,
>;
effective: TArray<
TUnion<
[
TObject<{ feeAmount: ...; type: ... }>,
TObject<{ feeBps: ...; type: ... }>,
],
>,
>;
},
>;
};
summary: "Test the product fee configurations";
tags: readonly ["Product fee config"];
};
}