Set billing details
Replaces the billing details as a whole — send every field, not just the ones that changed. The address is written as given and replaces any address taken from a card. Surrounding spaces are trimmed and the country is upper-cased.
legal_name,email,address.line1,address.cityand a two-letteraddress.countryare required; otherwise 400INCOMPLETE_PROFILE, whose message names what is missing.entity_typeisbusinessorindividual; anything else is taken asbusiness. An individual has no tax number: one on file is removed andtax_idis ignored.tax_idreplaces the number on file, filed under the type its country uses; an empty value removes it. A number for a country where none can be filed is 400TAX_ID_NOT_SUPPORTED.
Answers with the details as saved.
Requires the billing:profile:write scope.
Authorization
Request body required
entity_typestringlegal_namestring requiredemailstring requiredaddressobject requiredline1string requiredline2stringcitystring requiredstatestringpostal_codestringcountrystring required
tax_idstringIgnored for an individual.""removes the number on file.
Responses
200
The billing details as saved.
dataBillingProfileShow BillingProfile properties
entity_typestringlegal_namestringThe company or person invoices are made out to.emailstringWhere invoices and receipts are sent.addressBillingAddressShow BillingAddress properties
line1stringline2stringLeft out when empty.citystringstatestringLeft out when empty.postal_codestringcountrystringTwo-letter country code (ISO 3166-1 alpha-2).
tax_idstringtax_id_typestringWhat the number is filed as, e.g.eu_vat. Left out when there is no number.tax_id_supportedbooleanWhether a tax number can be filed for this country and entity type.completebooleanWhether enough is on file for a proper invoice.
400
The body is not JSON (INVALID_BODY), a required field is
missing (INCOMPLETE_PROFILE), a tax number was given for a
country where none can be filed (TAX_ID_NOT_SUPPORTED), or the
details were not accepted — usually a tax number that does not
match its country's format (PROFILE_REJECTED).
errorobject requiredcodestring requiredmessagestring requiredrequest_idstring
401
No API key was sent, or it is unknown, revoked or expired (UNAUTHORIZED).
errorobject requiredcodestring requiredmessagestring requiredrequest_idstring
403
The key lacks the scope this endpoint needs (FORBIDDEN).
errorobject requiredcodestring requiredmessagestring requiredrequest_idstring
429
Too many requests (RATE_LIMITED). Wait for Retry-After seconds.
Retry-AfterintegerSeconds to wait before retrying.
errorobject requiredcodestring requiredmessagestring requiredrequest_idstring
503
Payments are not enabled on this environment (PAYMENTS_DISABLED).
errorobject requiredcodestring requiredmessagestring requiredrequest_idstring
Example request
curl -X PUT 'https://evohub.io/api/v1/billing/profile' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{
"email": "finance@acme.example",
"tax_id": "IE1234567T",
"address": {
"city": "Dublin",
"line1": "1 Market Street",
"country": "IE",
"postal_code": "D02 XY45"
},
"legal_name": "Acme Ltd",
"entity_type": "business"
}'
