Update underwriting details (sunsetting)
Create or update the account's underwriting.
Read our underwriting guide to learn more.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/profile.write scope.
PUT
/accounts/{accountID}/underwriting
curl -X PUT "https://api.moov.io/accounts/{accountID}/underwriting" \
-H "Authorization: Bearer {token}" \
-H "x-moov-version: v2024.01.00" \
--data-raw '{
"averageTransactionSize":10000,
"maxTransactionSize":50000,
"averageMonthlyTransactionVolume":250000
}'\
mc, _ := moov.NewClient()
var accountID string
update := moov.UpdateUnderwriting{
AverageTransactionSize: 1_500,
MaxTransactionSize: 1_200,
AverageMonthlyTransactionVolume: 11_000,
VolumeByCustomerType: moov.VolumeByCustomerType{
BusinessToBusinessPercentage: 60,
ConsumerToBusinessPercentage: 40,
},
CardVolumeDistribution: moov.CardVolumeDistribution{
EcommercePercentage: 60,
CardPresentPercentage: 40,
MailOrPhonePercentage: 0,
DebtRepaymentPercentage: 0,
},
Fulfillment: moov.Fulfillment{
HasPhysicalGoods: true,
IsShippingProduct: true,
ShipmentDurationDays: 3,
ReturnPolicy: moov.EXCHANGE_ONLY,
},
}
mc.UpsertUnderwriting(ctx, accountID, update)
import { Moov } from "@moovio/sdk";
const moov = new Moov({
xMoovVersion: "v2024.01.00",
security: {
username: "",
password: "",
},
});
async function run() {
const result = await moov.underwriting.upsert({
accountID: "371bf394-45df-4ba8-a615-ad5483b1f963",
updateUnderwriting: {
averageTransactionSize: 622191,
maxTransactionSize: 123692,
averageMonthlyTransactionVolume: 438164,
volumeByCustomerType: {
businessToBusinessPercentage: 671399,
consumerToBusinessPercentage: 482010,
},
cardVolumeDistribution: {
ecommercePercentage: 47450,
cardPresentPercentage: 146275,
mailOrPhonePercentage: 309315,
debtRepaymentPercentage: 990303,
},
fulfillment: {
hasPhysicalGoods: true,
isShippingProduct: true,
shipmentDurationDays: 388451,
returnPolicy: "other",
},
},
});
console.log(result);
}
run();declare(strict_types=1);
require 'vendor/autoload.php';
use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;
$sdk = MoovPhp\Moov::builder()
->setXMoovVersion('v2024.01.00')
->setSecurity(
new Components\Security(
username: '',
password: '',
)
)
->build();
$updateUnderwriting = new Components\UpdateUnderwriting(
averageTransactionSize: 622191,
maxTransactionSize: 123692,
averageMonthlyTransactionVolume: 438164,
volumeByCustomerType: new Components\VolumeByCustomerType(
businessToBusinessPercentage: 671399,
consumerToBusinessPercentage: 482010,
),
cardVolumeDistribution: new Components\CardVolumeDistribution(
ecommercePercentage: 47450,
cardPresentPercentage: 146275,
mailOrPhonePercentage: 309315,
debtRepaymentPercentage: 990303,
),
fulfillment: new Components\FulfillmentDetails(
hasPhysicalGoods: true,
isShippingProduct: true,
shipmentDurationDays: 388451,
returnPolicy: Components\ReturnPolicyType::Other,
),
);
$response = $sdk->underwriting->upsert(
accountID: '371bf394-45df-4ba8-a615-ad5483b1f963',
updateUnderwriting: $updateUnderwriting
);
if ($response->underwriting !== null) {
// handle response
}package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.*;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.errors.UpdateUnderwritingError;
import io.moov.sdk.models.operations.UpsertUnderwritingResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws GenericError, UpdateUnderwritingError, Exception {
Moov sdk = Moov.builder()
.xMoovVersion("v2024.01.00")
.security(Security.builder()
.username("")
.password("")
.build())
.build();
UpsertUnderwritingResponse res = sdk.underwriting().upsert()
.accountID("371bf394-45df-4ba8-a615-ad5483b1f963")
.updateUnderwriting(UpdateUnderwriting.builder()
.averageTransactionSize(622191L)
.maxTransactionSize(123692L)
.averageMonthlyTransactionVolume(438164L)
.volumeByCustomerType(VolumeByCustomerType.builder()
.businessToBusinessPercentage(671399)
.consumerToBusinessPercentage(482010)
.build())
.cardVolumeDistribution(CardVolumeDistribution.builder()
.ecommercePercentage(47450)
.cardPresentPercentage(146275)
.mailOrPhonePercentage(309315)
.debtRepaymentPercentage(990303)
.build())
.fulfillment(FulfillmentDetails.builder()
.hasPhysicalGoods(true)
.isShippingProduct(true)
.shipmentDurationDays(388451L)
.returnPolicy(ReturnPolicyType.OTHER)
.build())
.build())
.call();
if (res.underwriting().isPresent()) {
System.out.println(res.underwriting().get());
}
}
}from moovio_sdk import Moov
from moovio_sdk.models import components
with Moov(
x_moov_version="v2024.01.00",
security=components.Security(
username="",
password="",
),
) as moov:
res = moov.underwriting.upsert(account_id="371bf394-45df-4ba8-a615-ad5483b1f963", average_transaction_size=622191, max_transaction_size=123692, average_monthly_transaction_volume=438164, volume_by_customer_type={
"business_to_business_percentage": 671399,
"consumer_to_business_percentage": 482010,
}, card_volume_distribution={
"ecommerce_percentage": 47450,
"card_present_percentage": 146275,
"mail_or_phone_percentage": 309315,
"debt_repayment_percentage": 990303,
}, fulfillment={
"has_physical_goods": True,
"is_shipping_product": True,
"shipment_duration_days": 388451,
"return_policy": components.ReturnPolicyType.OTHER,
})
# Handle response
print(res)require 'moov_ruby'
Models = ::Moov::Models
s = ::Moov::Client.new(
x_moov_version: 'v2024.01.00',
security: Models::Components::Security.new(
username: '',
password: ''
)
)
res = s.underwriting.upsert(account_id: '371bf394-45df-4ba8-a615-ad5483b1f963', update_underwriting: Models::Components::UpdateUnderwriting.new(
average_transaction_size: 622_191,
max_transaction_size: 123_692,
average_monthly_transaction_volume: 438_164,
volume_by_customer_type: Models::Components::VolumeByCustomerType.new(
business_to_business_percentage: 671_399,
consumer_to_business_percentage: 482_010
),
card_volume_distribution: Models::Components::CardVolumeDistribution.new(
ecommerce_percentage: 47_450,
card_present_percentage: 146_275,
mail_or_phone_percentage: 309_315,
debt_repayment_percentage: 990_303
),
fulfillment: Models::Components::FulfillmentDetails.new(
has_physical_goods: true,
is_shipping_product: true,
shipment_duration_days: 388_451,
return_policy: Models::Components::ReturnPolicyType::OTHER
)
))
unless res.underwriting.nil?
# handle response
endusing Moov.Sdk;
using Moov.Sdk.Models.Components;
var sdk = new MoovClient(
xMoovVersion: "<value>",
security: new Security() {
Username = "",
Password = "",
}
);
var res = await sdk.Underwriting.UpsertAsync(
accountID: "371bf394-45df-4ba8-a615-ad5483b1f963",
body: new UpdateUnderwriting() {
AverageTransactionSize = 622191,
MaxTransactionSize = 123692,
AverageMonthlyTransactionVolume = 438164,
VolumeByCustomerType = new VolumeByCustomerType() {
BusinessToBusinessPercentage = 671399,
ConsumerToBusinessPercentage = 482010,
},
CardVolumeDistribution = new CardVolumeDistribution() {
EcommercePercentage = 47450,
CardPresentPercentage = 146275,
MailOrPhonePercentage = 309315,
DebtRepaymentPercentage = 990303,
},
Fulfillment = new FulfillmentDetails() {
HasPhysicalGoods = true,
IsShippingProduct = true,
ShipmentDurationDays = 388451,
ReturnPolicy = ReturnPolicyType.Other,
},
}
);
// handle responseThe request completed successfully.
Describes underwriting values (in USD) used for card payment acceptance.
{
"averageTransactionSize": 0,
"maxTransactionSize": 0,
"averageMonthlyTransactionVolume": 0,
"status": "approved",
"volumeByCustomerType": {
"businessToBusinessPercentage": 0,
"consumerToBusinessPercentage": 0
},
"cardVolumeDistribution": {
"ecommercePercentage": 0,
"cardPresentPercentage": 0,
"mailOrPhonePercentage": 0,
"debtRepaymentPercentage": 0
},
"fulfillment": {
"hasPhysicalGoods": true,
"isShippingProduct": true,
"shipmentDurationDays": 0,
"returnPolicy": "none"
},
"geographicReach": "international-only",
"businessPresence": "commercial-office",
"pendingLitigation": "bankruptcy-or-insolvency",
"volumeShareByCustomerType": {
"business": 0,
"consumer": 0,
"p2p": 0
},
"collectFunds": {
"ach": {
"estimatedActivity": {
"averageTransactionAmount": 0,
"maximumTransactionAmount": 0,
"monthlyVolumeRange": "under-10k"
}
},
"cardPayments": {
"cardAcceptanceMethods": {
"inPersonPercentage": 0,
"mailOrPhonePercentage": 0,
"onlinePercentage": 0
},
"currentlyAcceptsCards": true,
"estimatedActivity": {
"averageTransactionAmount": 0,
"maximumTransactionAmount": 0,
"monthlyVolumeRange": "under-10k"
},
"fulfillment": {
"method": "bill-or-debt-payment",
"timeframe": "immediate"
},
"refundPolicy": "conditional-refund"
}
},
"moneyTransfer": {
"pullFromCard": {
"estimatedActivity": {
"averageTransactionAmount": 0,
"maximumTransactionAmount": 0,
"monthlyVolumeRange": "under-10k"
}
},
"pushToCard": {
"estimatedActivity": {
"averageTransactionAmount": 0,
"maximumTransactionAmount": 0,
"monthlyVolumeRange": "under-10k"
}
}
},
"sendFunds": {
"ach": {
"estimatedActivity": {
"averageTransactionAmount": 0,
"maximumTransactionAmount": 0,
"monthlyVolumeRange": "under-10k"
}
},
"pushToCard": {
"estimatedActivity": {
"averageTransactionAmount": 0,
"maximumTransactionAmount": 0,
"monthlyVolumeRange": "under-10k"
}
},
"rtp": {
"estimatedActivity": {
"averageTransactionAmount": 0,
"maximumTransactionAmount": 0,
"monthlyVolumeRange": "under-10k"
}
},
"instantBank": {
"estimatedActivity": {
"averageTransactionAmount": 0,
"maximumTransactionAmount": 0,
"monthlyVolumeRange": "under-10k"
}
}
}
}Response headers
x-request-id
string
required
A unique identifier used to trace requests.
The server could not understand the request due to invalid syntax.
{
"error": "string"
}Response headers
x-request-id
string
required
A unique identifier used to trace requests.
The request contained missing or expired authentication.
Response headers
x-request-id
string
required
A unique identifier used to trace requests.
The user is not authorized to make the request.
Response headers
x-request-id
string
required
A unique identifier used to trace requests.
The requested resource was not found.
Response headers
x-request-id
string
required
A unique identifier used to trace requests.
The request conflicted with the current state of the target resource.
{
"error": "string"
}Response headers
x-request-id
string
required
A unique identifier used to trace requests.
The request was well-formed, but the contents failed validation. Check the request for missing or invalid fields.
{
"error": {
"averageMonthlyTransactionVolume": "string",
"averageTransactionSize": "string",
"maxTransactionSize": "string",
"volumeByCustomerType": {
"businessToBusinessPercentage": "string",
"consumerToBusinessPercentage": "string"
},
"cardVolumeDistribution": {
"ecommercePercentage": "string",
"cardPresentPercentage": "string",
"mailOrPhonePercentage": "string",
"debtRepaymentPercentage": "string"
},
"fulfillment": {
"shipmentDurationDays": "string",
"returnPolicy": "string"
}
}
}Response headers
x-request-id
string
required
A unique identifier used to trace requests.
Request was refused due to rate limiting.
Response headers
x-request-id
string
required
A unique identifier used to trace requests.
The request failed due to an unexpected error.
Response headers
x-request-id
string
required
A unique identifier used to trace requests.
The request failed because a downstream service failed to respond.
Response headers
x-request-id
string
required
A unique identifier used to trace requests.
Headers
X-Moov-Version
string
Specify an API version.
API versioning follows the format vYYYY.QQ.BB, where
YYYYis the yearQQis the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)BBis the build number, starting at.01, for subsequent builds in the same quarter.- For example,
v2024.01.00is the initial release of the first quarter of 2024.
- For example,
The dev version represents the most recent development state. It may include breaking changes and should be treated as a beta release.
When no version is specified, the API defaults to v2024.01.00.
Path parameters
accountID
string
required
Body
application/json
averageMonthlyTransactionVolume
integer<int64>
required
averageTransactionSize
integer<int64>
required
cardVolumeDistribution
object
required
Show child attributes
cardPresentPercentage
integer<int32>
required
debtRepaymentPercentage
integer<int32>
required
ecommercePercentage
integer<int32>
required
mailOrPhonePercentage
integer<int32>
required
fulfillment
object
required
Show child attributes
hasPhysicalGoods
boolean
required
isShippingProduct
boolean
required
returnPolicy
string<enum>
required
Possible values:
none,
exchangeOnly,
withinThirtyDays,
other
shipmentDurationDays
integer<int64>
required
maxTransactionSize
integer<int64>
required
volumeByCustomerType
object
required
Show child attributes
businessToBusinessPercentage
integer<int32>
required
consumerToBusinessPercentage
integer<int32>
required
Response
averageMonthlyTransactionVolume
integer<int64>
averageTransactionSize
integer<int64>
businessPresence
string<enum>
Possible values:
commercial-office,
home-based,
mixed-presence,
mobile-business,
online-only,
retail-storefront
cardVolumeDistribution
object
Show child attributes
cardPresentPercentage
integer<int32>
required
debtRepaymentPercentage
integer<int32>
required
ecommercePercentage
integer<int32>
required
mailOrPhonePercentage
integer<int32>
required
collectFunds
object
Show child attributes
ach
object
Show child attributes
estimatedActivity
object
Show child attributes
averageTransactionAmount
integer<int64>
maximumTransactionAmount
integer<int64>
monthlyVolumeRange
string<enum>
The low value in each range is included. The high value in each range is excluded.
Possible values:
under-10k,
10k-50k,
50k-100k,
100k-250k,
250k-500k,
500k-1m,
1m-5m,
over-5m
cardPayments
object
Show child attributes
cardAcceptanceMethods
object
Describes the distribution of card transactions by payment method.
Show child attributes
inPersonPercentage
integer<int32>
Percentage of card transactions that are in-person payments. Minimum value is 0, maximum is 100.
mailOrPhonePercentage
integer<int32>
Percentage of card transactions that are mail or phone payments. Minimum value is 0, maximum is 100.
onlinePercentage
integer<int32>
Percentage of card transactions that are online payments. Minimum value is 0, maximum is 100.
currentlyAcceptsCards
boolean
estimatedActivity
object
Show child attributes
averageTransactionAmount
integer<int64>
maximumTransactionAmount
integer<int64>
monthlyVolumeRange
string<enum>
The low value in each range is included. The high value in each range is excluded.
Possible values:
under-10k,
10k-50k,
50k-100k,
100k-250k,
250k-500k,
500k-1m,
1m-5m,
over-5m
fulfillment
object
Show child attributes
method
string<enum>
Possible values:
bill-or-debt-payment,
digital-content,
donation,
in-person-service,
local-pickup-or-delivery,
other,
remote-service,
shipped-physical-goods,
subscription-or-membership
timeframe
string<enum>
Possible values:
immediate,
other,
over-30-days,
pre-order,
recurring-schedule,
scheduled-event,
within-30-days,
within-7-days
refundPolicy
string<enum>
Possible values:
conditional-refund,
custom-policy,
event-based-policy,
full-refund-extended-window,
full-refund-within-30-days,
no-refunds,
partial-refund,
prorated-refund,
store-credit-only
fulfillment
object
Show child attributes
hasPhysicalGoods
boolean
required
isShippingProduct
boolean
required
returnPolicy
string<enum>
required
Possible values:
none,
exchangeOnly,
withinThirtyDays,
other
shipmentDurationDays
integer<int64>
required
geographicReach
string<enum>
Possible values:
international-only,
us-and-international,
us-only
maxTransactionSize
integer<int64>
moneyTransfer
object
Show child attributes
pullFromCard
object
Show child attributes
estimatedActivity
object
Show child attributes
averageTransactionAmount
integer<int64>
maximumTransactionAmount
integer<int64>
monthlyVolumeRange
string<enum>
The low value in each range is included. The high value in each range is excluded.
Possible values:
under-10k,
10k-50k,
50k-100k,
100k-250k,
250k-500k,
500k-1m,
1m-5m,
over-5m
pushToCard
object
Show child attributes
estimatedActivity
object
Show child attributes
averageTransactionAmount
integer<int64>
maximumTransactionAmount
integer<int64>
monthlyVolumeRange
string<enum>
The low value in each range is included. The high value in each range is excluded.
Possible values:
under-10k,
10k-50k,
50k-100k,
100k-250k,
250k-500k,
500k-1m,
1m-5m,
over-5m
pendingLitigation
string<enum>
Possible values:
bankruptcy-or-insolvency,
consumer-protection-or-class-action,
data-breach-or-privacy,
employment-or-workplace-disputes,
fraud-or-financial-crime,
government-enforcement-or-investigation,
intellectual-property,
none,
other,
personal-injury-or-medical
sendFunds
object
Show child attributes
ach
object
Show child attributes
estimatedActivity
object
Show child attributes
averageTransactionAmount
integer<int64>
maximumTransactionAmount
integer<int64>
monthlyVolumeRange
string<enum>
The low value in each range is included. The high value in each range is excluded.
Possible values:
under-10k,
10k-50k,
50k-100k,
100k-250k,
250k-500k,
500k-1m,
1m-5m,
over-5m
instantBank
object
Show child attributes
estimatedActivity
object
Show child attributes
averageTransactionAmount
integer<int64>
maximumTransactionAmount
integer<int64>
monthlyVolumeRange
string<enum>
The low value in each range is included. The high value in each range is excluded.
Possible values:
under-10k,
10k-50k,
50k-100k,
100k-250k,
250k-500k,
500k-1m,
1m-5m,
over-5m
pushToCard
object
Show child attributes
estimatedActivity
object
Show child attributes
averageTransactionAmount
integer<int64>
maximumTransactionAmount
integer<int64>
monthlyVolumeRange
string<enum>
The low value in each range is included. The high value in each range is excluded.
Possible values:
under-10k,
10k-50k,
50k-100k,
100k-250k,
250k-500k,
500k-1m,
1m-5m,
over-5m
rtp
object
Show child attributes
estimatedActivity
object
Show child attributes
averageTransactionAmount
integer<int64>
maximumTransactionAmount
integer<int64>
monthlyVolumeRange
string<enum>
The low value in each range is included. The high value in each range is excluded.
Possible values:
under-10k,
10k-50k,
50k-100k,
100k-250k,
250k-500k,
500k-1m,
1m-5m,
over-5m
status
string<enum>
deprecated
Possible values:
approved,
rejected,
pendingReview,
pending,
notRequested
volumeByCustomerType
object
Show child attributes
businessToBusinessPercentage
integer<int32>
required
consumerToBusinessPercentage
integer<int32>
required
volumeShareByCustomerType
object
Show child attributes
business
integer<int32>
consumer
integer<int32>
p2p
integer<int32>